I want to define `BP' and `SP' as macros, but they'll expand in the
calls to `REGDEF_GPX86_COMMON', which will break things. They don't
expand directly in the body of `REGDEF_GPX86_XP' because `##' inhibits
this. Alas, this means we have to do this token-gluing in the interface
macros rather than the common core.
regmap_avx = 2*WORDSZ
regmap_size = 3*WORDSZ
regmap_avx = 2*WORDSZ
regmap_size = 3*WORDSZ
-#define REGDEF_GPX86_COMMON(rn, RN) \
- regsrc.e##rn = REGSRC_GP | REGIX_##RN; \
+#define REGDEF_GPX86_COMMON(rn, ix) \
+ regsrc.e##rn = REGSRC_GP | ix; \
regty.e##rn = REGF_32; \
regfmt.e##rn = REGF_HEX; \
regty.e##rn = REGF_32; \
regfmt.e##rn = REGF_HEX; \
- regsrc.r##rn = REGSRC_GP | REGIX_##RN; \
+ regsrc.r##rn = REGSRC_GP | ix; \
regty.r##rn = REGF_64; \
regfmt.r##rn = REGF_HEX
regty.r##rn = REGF_64; \
regfmt.r##rn = REGF_HEX
regsrc.rn##x = REGSRC_GP | REGIX_##RN##X; \
regty.rn##x = REGF_16; \
regfmt.rn##x = REGF_HEX; \
regsrc.rn##x = REGSRC_GP | REGIX_##RN##X; \
regty.rn##x = REGF_16; \
regfmt.rn##x = REGF_HEX; \
- REGDEF_GPX86_COMMON(rn##x, RN##X)
+ REGDEF_GPX86_COMMON(rn##x, REGIX_##RN##X)
REGDEF_GPX86_ABCD(a, A)
REGDEF_GPX86_ABCD(b, B)
REGDEF_GPX86_ABCD(c, C)
REGDEF_GPX86_ABCD(a, A)
REGDEF_GPX86_ABCD(b, B)
REGDEF_GPX86_ABCD(c, C)
regsrc.rn = REGSRC_GP | REGIX_##RN; \
regty.rn = REGF_16; \
regfmt.rn = REGF_HEX; \
regsrc.rn = REGSRC_GP | REGIX_##RN; \
regty.rn = REGF_16; \
regfmt.rn = REGF_HEX; \
- REGDEF_GPX86_COMMON(rn, RN)
+ REGDEF_GPX86_COMMON(rn, REGIX_##RN)
REGDEF_GPX86_XP(ip, IP)
REGDEF_GPX86_XP(si, SI)
REGDEF_GPX86_XP(di, DI)
REGDEF_GPX86_XP(ip, IP)
REGDEF_GPX86_XP(si, SI)
REGDEF_GPX86_XP(di, DI)