From e275090f9f712a8d9dda4e309ce38bb520778016 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Tue, 29 Oct 2019 18:38:27 +0000 Subject: [PATCH] base/regdump.h: Pass cooked register index to `REGDEF_GPX86_COMMON'. 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. --- base/regdump.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/base/regdump.h b/base/regdump.h index f5b33068..db968642 100644 --- a/base/regdump.h +++ b/base/regdump.h @@ -271,11 +271,11 @@ struct regmap { 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; \ - regsrc.r##rn = REGSRC_GP | REGIX_##RN; \ + regsrc.r##rn = REGSRC_GP | ix; \ regty.r##rn = REGF_64; \ regfmt.r##rn = REGF_HEX @@ -289,7 +289,7 @@ struct regmap { 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) @@ -312,7 +312,7 @@ REGDEF_GPX86_ABCD(d, D) 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) -- 2.11.0