[PATCH/committed] sim: aarch64: fix 64-bit immediate shifts

Message ID 20210501202349.19661-1-vapier@gentoo.org
State New
Headers show
Series
  • [PATCH/committed] sim: aarch64: fix 64-bit immediate shifts
Related show

Commit Message

Mike Frysinger via Gdb-patches May 1, 2021, 8:23 p.m.
Trying to shift immediates 63 bits fails on 32-bit systems since UL
is only 32-bits, not 64-bits.  Switch to ULL to guarantee at least
64-bits here.
---
 sim/aarch64/ChangeLog   | 4 ++++
 sim/aarch64/simulator.c | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

-- 
2.31.1

Patch

diff --git a/sim/aarch64/ChangeLog b/sim/aarch64/ChangeLog
index 23736d6b842d..2d13cf1eda24 100644
--- a/sim/aarch64/ChangeLog
+++ b/sim/aarch64/ChangeLog
@@ -1,3 +1,7 @@ 
+2021-05-01  Mike Frysinger  <vapier@gentoo.org>
+
+	* simulator.c (do_fcvtzu): Change UL to ULL.
+
 2021-04-26  Mike Frysinger  <vapier@gentoo.org>
 
 	* aclocal.m4, config.in, configure: Regenerate.
diff --git a/sim/aarch64/simulator.c b/sim/aarch64/simulator.c
index e0b428d26d9e..a8391212c064 100644
--- a/sim/aarch64/simulator.c
+++ b/sim/aarch64/simulator.c
@@ -8420,7 +8420,7 @@  do_fcvtzu (sim_cpu *cpu)
 	  uint64_t value = (uint64_t) d;
 
 	  /* Do not raise an exception if we have reached ULONG_MAX.  */
-	  if (value != (1UL << 63))
+	  if (value != (1ULL << 63))
 	    RAISE_EXCEPTIONS (d, value, DOUBLE, ULONG);
 
 	  aarch64_set_reg_u64 (cpu, rd, NO_SP, value);
@@ -8431,7 +8431,7 @@  do_fcvtzu (sim_cpu *cpu)
 	  uint64_t value = (uint64_t) f;
 
 	  /* Do not raise an exception if we have reached ULONG_MAX.  */
-	  if (value != (1UL << 63))
+	  if (value != (1ULL << 63))
 	    RAISE_EXCEPTIONS (f, value, FLOAT, ULONG);
 
 	  aarch64_set_reg_u64 (cpu, rd, NO_SP, value);