aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2002-07-12 03:47:36 +0000
committerAlan Modra <amodra@gmail.com>2002-07-12 03:47:36 +0000
commit9146926ac3e07a1ae01e35ead53cc59e872138f1 (patch)
tree07155c3b83ce3df51e03516b3f96fe518b66b3c3
parentce66b723263cb4f4f2d39d7eb47566d36b6d142b (diff)
downloadgdb-9146926ac3e07a1ae01e35ead53cc59e872138f1.zip
gdb-9146926ac3e07a1ae01e35ead53cc59e872138f1.tar.gz
gdb-9146926ac3e07a1ae01e35ead53cc59e872138f1.tar.bz2
* 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.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-i386.c24
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)