diff --git a/redox-rt/src/arch/x86_64.rs b/redox-rt/src/arch/x86_64.rs
index 73db7cea29c999a6339e1a1ae2292b06a0d87d0b..b5e921f8cf3d7c9816f1c8a5dcd49f500268184d 100644
--- a/redox-rt/src/arch/x86_64.rs
+++ b/redox-rt/src/arch/x86_64.rs
@@ -126,8 +126,8 @@ asmfunction!(__relibc_internal_fork_ret: ["
     mov rsi, [rsp + 8]
     call {child_hook}
 
-    ldmxcsr [rsp+16]
-    fldcw [rsp+24]
+    ldmxcsr [rsp + 16]
+    fldcw [rsp + 24]
 
     xor rax, rax
 
@@ -152,14 +152,10 @@ asmfunction!(__relibc_internal_rlct_clone_ret: ["
     pop r8
     pop r9
 
-    sub rsp, 8
-
-    mov DWORD PTR [rsp], 0x00001F80
-    ldmxcsr [rsp]
-    mov WORD PTR [rsp], 0x037F
-    fldcw [rsp]
-
-    add rsp, 8
+    mov DWORD PTR [rsp - 8], 0x00001F80
+    ldmxcsr [rsp - 8]
+    mov WORD PTR [rsp - 8], 0x037F
+    fldcw [rsp - 8]
 
     # Call entry point
     call rax
@@ -275,7 +271,7 @@ asmfunction!(__relibc_internal_sigentry: ["
 
     add rsp, 16
 
-    fxrstor64 [rsp]
+    fxrstor64 [rsp + 16 * 16]
 
     cmp byte ptr [rip + {supports_avx}], 0
     je 6f