File tree Expand file tree Collapse file tree 1 file changed +4
-7
lines changed Expand file tree Collapse file tree 1 file changed +4
-7
lines changed Original file line number Diff line number Diff line change 26
26
#endif
27
27
28
28
#if defined(__i386__ )
29
- #define __FULLBX "ebx"
29
+ #define __SAVE_GPRBX "mov {%%ebx, %%eax |eax, ebx};"
30
+ #define __RESTORE_GPRBX "mov {%%eax, %%ebx |ebx, eax};"
30
31
#define __TMPGPR "eax"
31
32
#else
32
33
// When in 64-bit target, the 32-bit operands generate a 32-bit result,
33
34
// zero-extended to a 64-bit result in the destination general-purpose,
34
35
// It means "mov x %ebx" will clobber the higher 32 bits of rbx, so we
35
36
// should preserve the 64-bit register rbx.
36
- #define __FULLBX "rbx"
37
+ #define __SAVE_GPRBX "mov {%%rbx, %%rax |rax, rbx};"
38
+ #define __RESTORE_GPRBX "mov {%%rax, %%rbx |rbx, rax};"
37
39
#define __TMPGPR "rax"
38
40
#endif
39
41
40
- #define __MOVEGPR (__r1 , __r2 ) "mov {%%"__r1 ", %%"__r2 "|"__r2 ", "__r1"};"
41
-
42
- #define __SAVE_GPRBX __MOVEGPR(__FULLBX, __TMPGPR)
43
- #define __RESTORE_GPRBX __MOVEGPR(__TMPGPR, __FULLBX)
44
-
45
42
#define __SSC_MARK (__Tag ) \
46
43
__asm__ __volatile__( __SAVE_GPRBX \
47
44
"mov {%0, %%ebx|ebx, %0}; " \
You can’t perform that action at this time.
0 commit comments