New test.
[mono.git] / mono / metadata / sgen-gc.h
1 #ifndef __MONO_SGENGC_H__
2 #define __MONO_SGENGC_H__
3
4 #ifdef __i386__
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" \
14                 : "=&a" (ptr)   \
15                 : "0" (cur_thread_regs) \
16                 : "memory"      \
17         )
18
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"        \
37                 : "=&a" (ptr)   \
38                 : "0" (cur_thread_regs) \
39                 : "memory"      \
40         )
41
42 #endif
43
44 #endif /* __MONO_SGENGC_H__ */
45