From 78d32a179d5eb83ddc7e68f7c40ec3556937a112 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Tue, 9 Jul 2002 00:42:57 +0000 Subject: [PATCH] * config/tc-mips.c (macro): Shift the 32-bit address range accessible with a lone "lui" down by 32768. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2fc3cfe5b39..f57681c9405 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-07-08 Maciej W. Rozycki + + * 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 * config/tc-mips.c (load_address): Use non-trapping "daddu" diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 47f43b058b6..ba4480cb4ab 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; -- 2.30.2