1 #ifndef __MONO_SGENGC_H__
2 #define __MONO_SGENGC_H__
5 #define ARCH_NUM_REGS 8
6 #define ARCH_STORE_REGS(ptr) \
7 __asm__ __volatile__( \
8 "mov %%ecx, 0x00(%0)\n" \
9 "mov %%edx, 0x04(%0)\n" \
10 "mov %%ebx, 0x08(%0)\n" \
11 "mov %%edi, 0x0c(%0)\n" \
12 "mov %%esi, 0x10(%0)\n" \
13 "mov %%ebp, 0x14(%0)\n" \
15 : "0" (cur_thread_regs) \
19 #elif defined(__x86_64__)
20 #define ARCH_NUM_REGS 16
21 #define ARCH_STORE_REGS(ptr) \
22 __asm__ __volatile__( \
23 "movq %%rcx, 0x00(%0)\n" \
24 "movq %%rdx, 0x08(%0)\n" \
25 "movq %%rbx, 0x10(%0)\n" \
26 "movq %%rdi, 0x18(%0)\n" \
27 "movq %%rsi, 0x20(%0)\n" \
28 "movq %%rbp, 0x28(%0)\n" \
29 "movq %%r8, 0x30(%0)\n" \
30 "movq %%r9, 0x38(%0)\n" \
31 "movq %%r10, 0x40(%0)\n" \
32 "movq %%r11, 0x48(%0)\n" \
33 "movq %%r12, 0x50(%0)\n" \
34 "movq %%r13, 0x58(%0)\n" \
35 "movq %%r14, 0x60(%0)\n" \
36 "movq %%r15, 0x68(%0)\n" \
38 : "0" (cur_thread_regs) \
44 #endif /* __MONO_SGENGC_H__ */