blob: f9b5481a01f711e4e5ca7e3afd1766b9e023e0b9 [file] [log] [blame]
Anton Korobeynikov5f287b92008-03-23 14:44:32 +00001extrn X86CompilationCallback2: PROC
2
3.code
4X86CompilationCallback proc
5 push rbp
6
7 ; Save RSP
8 mov rbp, rsp
9
10 ; Save all int arg registers
11 push rcx
12 push rdx
13 push r8
14 push r9
15
16 ; Align stack on 16-byte boundary.
17 and rsp, -16
18
19 ; Save all XMM arg registers
20 sub rsp, 64
21 movaps [rsp], xmm0
22 movaps [rsp+16], xmm1
23 movaps [rsp+32], xmm2
24 movaps [rsp+48], xmm3
25
26 ; JIT callee
27
28 ; Pass prev frame and return address
29 mov rcx, rbp
30 mov rdx, qword ptr [rbp+8]
31 call X86CompilationCallback2
32
33 ; Restore all XMM arg registers
34 movaps xmm3, [rsp+48]
35 movaps xmm2, [rsp+32]
36 movaps xmm1, [rsp+16]
37 movaps xmm0, [rsp]
38
39 ; Restore RSP
40 mov rsp, rbp
41
42 ; Restore all int arg registers
43 sub rsp, 32
44 pop r9
45 pop r8
46 pop rdx
47 pop rcx
48
49 ; Restore RBP
50 pop rbp
51 ret
52X86CompilationCallback endp
53
54End