From 20e192ab8df5502cd405ffd7fe5161985b8a2373 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 18 Sep 2007 00:56:54 +0000 Subject: [PATCH] gas/ 2007-09-17 H.J. Lu * config/tc-i386.c (baseindex): Removed. (build_modrm_byte): Check reg_num for RIP register instead of reg_type. (i386_index_check): Likewise. opcodes/ 2007-09-17 H.J. Lu * i386-opc.h (RegRip): New. * i386-reg.tbl (rip): Use RegRip for reg_num. * i386-tbl.h: Regenerated. --- gas/ChangeLog | 7 +++++++ gas/config/tc-i386.c | 5 ++--- opcodes/ChangeLog | 7 +++++++ opcodes/i386-opc.h | 1 + opcodes/i386-reg.tbl | 2 +- opcodes/i386-tbl.h | 2 +- 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index c62639e9ead..81b5fdc4d21 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2007-09-17 H.J. Lu + + * config/tc-i386.c (baseindex): Removed. + (build_modrm_byte): Check reg_num for RIP register instead of + reg_type. + (i386_index_check): Likewise. + 2007-09-17 H.J. Lu PR gas/5035 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 5453a00b316..17bde043b0c 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1098,7 +1098,6 @@ static const i386_operand_type disp32s = OPERAND_TYPE_DISP32S; static const i386_operand_type disp16_32 = OPERAND_TYPE_DISP16_32; static const i386_operand_type anydisp = OPERAND_TYPE_ANYDISP; -static const i386_operand_type baseindex = OPERAND_TYPE_BASEINDEX; static const i386_operand_type regxmm = OPERAND_TYPE_REGXMM; static const i386_operand_type imm8 = OPERAND_TYPE_IMM8; static const i386_operand_type imm8s = OPERAND_TYPE_IMM8S; @@ -4541,7 +4540,7 @@ build_modrm_byte (void) } } /* RIP addressing for 64bit mode. */ - else if (UINTS_EQUAL (i.base_reg->reg_type, baseindex)) + else if (i.base_reg->reg_num == RegRip) { i.rm.regmem = NO_BASE_REGISTER; i.types[op].bitfield.disp8 = 0; @@ -5977,7 +5976,7 @@ i386_index_check (const char *operand_string) || (i.prefix[ADDR_PREFIX] && !i.base_reg->reg_type.bitfield.reg32)) && (i.index_reg - || !UINTS_EQUAL (i.base_reg->reg_type, baseindex))) + || i.base_reg->reg_num != RegRip)) || (i.index_reg && (!i.index_reg->reg_type.bitfield.baseindex || (i.prefix[ADDR_PREFIX] == 0 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index a4abe953912..2fea362087a 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,10 @@ +2007-09-17 H.J. Lu + + * i386-opc.h (RegRip): New. + + * i386-reg.tbl (rip): Use RegRip for reg_num. + * i386-tbl.h: Regenerated. + 2007-09-17 Nick Clifton * po/es.po: Updated Spanish translation. diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h index 8a4f15b2942..00fbe1c3eba 100644 --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -443,6 +443,7 @@ typedef struct #define RegRex 0x1 /* Extended register. */ #define RegRex64 0x2 /* Extended 8 bit register. */ unsigned int reg_num; +#define RegRip ((unsigned int ) ~0) } reg_entry; diff --git a/opcodes/i386-reg.tbl b/opcodes/i386-reg.tbl index a5103e167f4..28debd7610b 100644 --- a/opcodes/i386-reg.tbl +++ b/opcodes/i386-reg.tbl @@ -189,7 +189,7 @@ xmm14, RegXMM, RegRex, 6 xmm15, RegXMM, RegRex, 7 // No type will make this register rejected for all purposes except // for addressing. This saves creating one extra type for RIP. -rip, BaseIndex, 0, 0 +rip, BaseIndex, 0, RegRip // fp regs. st(0), FloatReg|FloatAcc, 0, 0 st(1), FloatReg, 0, 1 diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h index 792a1864829..2f18422c966 100644 --- a/opcodes/i386-tbl.h +++ b/opcodes/i386-tbl.h @@ -13278,7 +13278,7 @@ const reg_entry i386_regtab[] = { "rip", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, - 0, 0 }, + 0, RegRip }, { "st(0)", { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 } }, -- 2.30.2