aboutsummaryrefslogtreecommitdiff
path: root/gas/config
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 /gas/config
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.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-mips.c6
1 files changed, 4 insertions, 2 deletions
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;