From f48daf582315f23c83def57c78a78492ef371269 Mon Sep 17 00:00:00 2001 From: Anton Korobeynikov Date: Mon, 3 Aug 2009 08:43:36 +0000 Subject: [PATCH] Unbreak win64 compilation callback. Since we're generating stubs by hands we don't follow the ABI and don't create a register spill area. Don't use this area in compilation callback! llvm-svn: 77968 --- .../X86/X86CompilationCallback_Win64.asm | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Target/X86/X86CompilationCallback_Win64.asm b/llvm/lib/Target/X86/X86CompilationCallback_Win64.asm index a11c5c3ce431..f321778db24b 100644 --- a/llvm/lib/Target/X86/X86CompilationCallback_Win64.asm +++ b/llvm/lib/Target/X86/X86CompilationCallback_Win64.asm @@ -15,17 +15,18 @@ extrn X86CompilationCallback2: PROC .code X86CompilationCallback proc - ; Save all int arg registers into register spill area. - mov [rsp+ 8], rcx - mov [rsp+16], rdx - mov [rsp+24], r8 - mov [rsp+32], r9 - push rbp ; Save RSP. mov rbp, rsp + ; Save all int arg registers + ; WARNING: We cannot use register spill area - we're generating stubs by hands! + push rcx + push rdx + push r8 + push r9 + ; Align stack on 16-byte boundary. and rsp, -16 @@ -52,15 +53,15 @@ X86CompilationCallback proc ; Restore RSP. mov rsp, rbp + ; Restore all int arg registers + sub rsp, 32 + pop r9 + pop r8 + pop rdx + pop rcx + ; Restore RBP. pop rbp - - ; Restore all int arg registers. - mov r9, [rsp+32] - mov r8, [rsp+24] - mov rdx, [rsp+16] - mov rcx, [rsp+ 8] - ret X86CompilationCallback endp