+2002-07-08 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * config/tc-mips.c (macro): Shift the 32-bit address range
+ accessible with a lone "lui" down by 32768.
+
2002-07-08 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* config/tc-mips.c (load_address): Use non-trapping "daddu"
If we have 64-bit addresses, as an optimization, for
addresses which are 32-bit constants (e.g. kseg0/kseg1
addresses) we fall back to the 32-bit address generation
- mechanism since it is more efficient. This code should
+ mechanism since it is more efficient. Note that due to
+ the signed offset used by memory operations, the 32-bit
+ range is shifted down by 32768 here. This code should
probably attempt to generate 64-bit constants more
efficiently in general.
*/
if (HAVE_64BIT_ADDRESSES
&& !(offset_expr.X_op == O_constant
- && IS_SEXT_32BIT_NUM (offset_expr.X_add_number)))
+ && IS_SEXT_32BIT_NUM (offset_expr.X_add_number + 0x8000)))
{
p = NULL;