[sdks] Bump Android NDK, build tools and platform tools versions
[mono-project.git] / mono / utils / win64.asm
blob9222dbb9679e32ae5c3f33f0bc32f2883e46ca53
1 ifdef RAX
2 else
4 .386
5 .model flat, c
7 endif
9 .code
11 ifdef RAX
13 PUBLIC mono_context_get_current
15 mono_context_get_current PROC
16 ;rcx has the ctx ptr
17 mov [rcx + 00h], rax
18 mov [rcx + 08h], rcx
19 mov [rcx + 10h], rdx
20 mov [rcx + 18h], rbx
21 mov [rcx + 20h], rsp
22 mov [rcx + 28h], rbp
23 mov [rcx + 30h], rsi
24 mov [rcx + 38h], rdi
25 mov [rcx + 40h], r8
26 mov [rcx + 48h], r9
27 mov [rcx + 50h], r10
28 mov [rcx + 58h], r11
29 mov [rcx + 60h], r12
30 mov [rcx + 68h], r13
31 mov [rcx + 70h], r14
32 mov [rcx + 78h], r15
34 lea rax, __mono_current_ip
35 __mono_current_ip:
36 mov [rcx + 80h], rax
37 ret
39 mono_context_get_current endP
41 ; Implementation of __builtin_unwind_init under MSVC, dumping
42 ; nonvolatile registers into MonoBuiltinUnwindInfo *.
44 copy_stack_data_internal_win32_wrapper PROC PUBLIC
45 ;rcx MonoThreadInfo *
46 ;rdx MonoStackData *
47 ;r8 MonoBuiltinUnwindInfo *
48 ;r9 CopyStackDataFunc
50 movaps xmmword ptr [r8 + 00h], xmm6
51 movaps xmmword ptr [r8 + 10h], xmm7
52 movaps xmmword ptr [r8 + 20h], xmm8
53 movaps xmmword ptr [r8 + 30h], xmm9
54 movaps xmmword ptr [r8 + 40h], xmm10
55 movaps xmmword ptr [r8 + 50h], xmm11
56 movaps xmmword ptr [r8 + 60h], xmm12
57 movaps xmmword ptr [r8 + 70h], xmm13
58 movaps xmmword ptr [r8 + 80h], xmm14
59 movaps xmmword ptr [r8 + 90h], xmm15
61 mov qword ptr [r8 + 0A0h], rbx
62 mov qword ptr [r8 + 0A8h], rsi
63 mov qword ptr [r8 + 0B0h], rdi
64 mov qword ptr [r8 + 0B8h], r12
65 mov qword ptr [r8 + 0C0h], r13
66 mov qword ptr [r8 + 0C8h], r14
67 mov qword ptr [r8 + 0D0h], r15
68 mov qword ptr [r8 + 0D8h], rbp
70 ; tailcall, all parameters passed through to CopyStackDataFunc.
71 jmp r9
73 copy_stack_data_internal_win32_wrapper endP
75 endif
77 end