Newer
Older
;;===-- X86CompilationCallback_Win64.asm - Implement Win64 JIT callback ---===
;;
;; The LLVM Compiler Infrastructure
;;
;; This file is distributed under the University of Illinois Open Source
;; License. See LICENSE.TXT for details.
;;
;;===----------------------------------------------------------------------===
;;
;; This file implements the JIT interfaces for the X86 target.
;;
;;===----------------------------------------------------------------------===
Anton Korobeynikov
committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
extrn X86CompilationCallback2: PROC
.code
X86CompilationCallback proc
push rbp
; Save RSP
mov rbp, rsp
; Save all int arg registers
push rcx
push rdx
push r8
push r9
; Align stack on 16-byte boundary.
and rsp, -16
; Save all XMM arg registers
sub rsp, 64
movaps [rsp], xmm0
movaps [rsp+16], xmm1
movaps [rsp+32], xmm2
movaps [rsp+48], xmm3
; JIT callee
; Pass prev frame and return address
mov rcx, rbp
mov rdx, qword ptr [rbp+8]
call X86CompilationCallback2
; Restore all XMM arg registers
movaps xmm3, [rsp+48]
movaps xmm2, [rsp+32]
movaps xmm1, [rsp+16]
movaps xmm0, [rsp]
; 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
ret
X86CompilationCallback endp
End