diff options
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index b69efd3..c4aeb2a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2000-04-03 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (i386_immediate): Don't assume a constant + immediate is necessarily 16 bits when in 16 bit code mode. + (md_assemble): Instead set guess_suffix here after we have checked + registers. + 2000-04-02 Richard Henderson <rth@cygnus.com> * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 3a01bab..7efd6dd 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1331,6 +1331,9 @@ md_assemble (line) break; } } + else if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0)) + guess_suffix = WORD_MNEM_SUFFIX; + for (op = i.operands; --op >= 0; ) if ((i.types[op] & Imm) && i.op[op].imms->X_op == O_constant) @@ -2584,10 +2587,7 @@ i386_immediate (imm_start) if (exp->X_op == O_constant) { - int bigimm = Imm32; - if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0)) - bigimm = Imm16; - i.types[this_operand] |= bigimm; + i.types[this_operand] |= Imm32; /* Size it properly later. */ } #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) else if ( |