sim: aarch64: fix 64-bit immediate shifts
authorMike Frysinger <vapier@gentoo.org>
Sat, 1 May 2021 19:51:37 +0000 (15:51 -0400)
committerMike Frysinger <vapier@gentoo.org>
Sat, 1 May 2021 20:23:10 +0000 (16:23 -0400)
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
sim/aarch64/simulator.c

index 23736d6b842d96a3c9afb8c1cd38c74455b48de1..2d13cf1eda2480449d4fc31e89642e0568a0aa9c 100644 (file)
@@ -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.
index e0b428d26d9e474f87cb54dd9bb408f0cb8a59bd..a8391212c0647991b7b31da1a6cd870b3d583e55 100644 (file)
@@ -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);