base/asm-common.h: Decorate pseudoregister `nil' as `nil'.
[catacomb] / base / asm-common.h
index 44c223d..ebcba2c 100644 (file)
@@ -311,6 +311,7 @@ name:
 // R_r(decor) applies decoration decor to register r, which is an internal
 // register name.  The internal register names are: `ip', `a', `b', `c', `d',
 // `si', `di', `bp', `sp', `r8'--`r15'.
+#define R_nil(decor) nil
 #define R_ip(decor) _DECOR(ip, decor, ip)
 #define R_a(decor) _DECOR(abcd, decor, a)
 #define R_b(decor) _DECOR(abcd, decor, b)
@@ -345,6 +346,8 @@ name:
 // assembler-level register name, in place of any decoration that register
 // name has already.
 
+#define _REGFORM_nil(decor) R_nil(decor)
+
 #define _REGFORM_ip(decor) R_ip(decor)
 #define _REGFORM_eip(decor) R_ip(decor)
 
@@ -452,10 +455,20 @@ name:
 #endif
 #define WHOLE(reg) _REGFORM(reg, r)
 
+// Macros for some common registers.
+#define AX R_a(r)
+#define BX R_b(r)
+#define CX R_c(r)
+#define DX R_d(r)
+#define SI R_si(r)
+#define DI R_di(r)
+#define BP R_bp(r)
+#define SP R_sp(r)
+
 // Stack management and unwinding.
-.macro setfp   fp=R_bp(r), offset=0
+.macro setfp   fp=BP, offset=0
   .if \offset == 0
-       mov     \fp, R_sp(r)
+       mov     \fp, SP
 #if __ELF__
          .cfi_def_cfa_register \fp
 #endif
@@ -463,7 +476,7 @@ name:
          .seh_setframe \fp, 0
 #endif
   .else
-       lea     \fp, [R_sp(r) + \offset]
+       lea     \fp, [SP + \offset]
 #if __ELF__
          .cfi_def_cfa_register \fp
          .cfi_adjust_cfa_offset -\offset
@@ -478,14 +491,14 @@ name:
 
 .macro _dropfp fp, offset=0
   .if \offset == 0
-       mov     R_sp(r), \fp
+       mov     SP, \fp
 #if __ELF__
-         .cfi_def_cfa_register R_sp(r)
+         .cfi_def_cfa_register SP
 #endif
   .else
-       lea     R_sp(r), [\fp - \offset]
+       lea     SP, [\fp - \offset]
 #if __ELF__
-         .cfi_def_cfa_register R_sp(r)
+         .cfi_def_cfa_register SP
          .cfi_adjust_cfa_offset +\offset
 #endif
   .endif
@@ -494,7 +507,7 @@ name:
 .endm
 
 .macro stalloc n
-       sub     R_sp(r), \n
+       sub     SP, \n
 #if __ELF__
          .cfi_adjust_cfa_offset +\n
 #endif
@@ -504,7 +517,7 @@ name:
 .endm
 
 .macro stfree  n
-       add     R_sp(r), \n
+       add     SP, \n
 #if __ELF__
          .cfi_adjust_cfa_offset -\n
 #endif
@@ -530,14 +543,14 @@ name:
 .endm
 
 .macro savexmm r, offset
-       movdqa  [R_sp(r) + \offset], \r
+       movdqa  [SP + \offset], \r
 #if ABI_WIN && CPUFAM_AMD64
          .seh_savexmm \r, \offset
 #endif
 .endm
 
 .macro rstrxmm r, offset
-       movdqa  \r, [R_sp(r) + \offset]
+       movdqa  \r, [SP + \offset]
 .endm
 
 .macro endprologue
@@ -657,6 +670,8 @@ name:
 // Internal macros: `_REGFORM_r(decor)' applies decoration decor to register
 // name r.
 
+#define _REGFORM_nil(decor) nil
+
 #define _REGFORM_s0(decor) _DECOR(s, decor, 0)
 #define _REGFORM_s1(decor) _DECOR(s, decor, 1)
 #define _REGFORM_s2(decor) _DECOR(s, decor, 2)