diff options
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 24 |
2 files changed, 12 insertions, 18 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 1771741..bf3c845 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2002-07-12 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i386.c (process_suffix): Merge CODE_64BIT JumpByte + case with non CODE_64BIT case. Don't warn on "qword ptr" if + not CODE_64BIT. + 2002-07-11 Alan Modra <amodra@bigpond.net.au> * config/tc-ppc.c (ppc_elf_frob_symbol): Delete. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 2711fee..c7dbfbd 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2228,8 +2228,10 @@ process_suffix () size prefix, except for instructions that will ignore this prefix anyway. */ if (i.suffix != QWORD_MNEM_SUFFIX - && (i.suffix == LONG_MNEM_SUFFIX) == (flag_code == CODE_16BIT) - && !(i.tm.opcode_modifier & IgnoreSize)) + && !(i.tm.opcode_modifier & IgnoreSize) + && ((i.suffix == LONG_MNEM_SUFFIX) == (flag_code == CODE_16BIT) + || (flag_code == CODE_64BIT + && (i.tm.opcode_modifier & JumpByte)))) { unsigned int prefix = DATA_PREFIX_OPCODE; if (i.tm.opcode_modifier & JumpByte) /* jcxz, loop */ @@ -2239,25 +2241,11 @@ process_suffix () return 0; } - if (i.suffix != QWORD_MNEM_SUFFIX && (flag_code == CODE_64BIT) - && !(i.tm.opcode_modifier & IgnoreSize) - && (i.tm.opcode_modifier & JumpByte)) - { - if (!add_prefix (ADDR_PREFIX_OPCODE)) - return 0; - } - /* Set mode64 for an operand. */ if (i.suffix == QWORD_MNEM_SUFFIX + && flag_code == CODE_64BIT && (i.tm.opcode_modifier & NoRex64) == 0) - { - i.rex |= REX_MODE64; - if (flag_code < CODE_64BIT) - { - as_bad (_("64bit operations available only in 64bit modes.")); - return 0; - } - } + i.rex |= REX_MODE64; /* Size floating point instruction. */ if (i.suffix == LONG_MNEM_SUFFIX) |