aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2002-07-09 00:42:57 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2002-07-09 00:42:57 +0000
commit78d32a179d5eb83ddc7e68f7c40ec3556937a112 (patch)
treecb2f16ad84818ed348a427c992ffd2cc50e4612d
parentf2f8f9957e2ec908234141a4824c54d5d4fb8ad0 (diff)
downloadgdb-78d32a179d5eb83ddc7e68f7c40ec3556937a112.zip
gdb-78d32a179d5eb83ddc7e68f7c40ec3556937a112.tar.gz
gdb-78d32a179d5eb83ddc7e68f7c40ec3556937a112.tar.bz2
* config/tc-mips.c (macro): Shift the 32-bit address range
accessible with a lone "lui" down by 32768.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2fc3cfe..f57681c 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
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"
instead of "dadd" in address calculations.
(macro): Likewise.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 47f43b0..ba4480c 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -5497,13 +5497,15 @@ macro (ip)
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;