From ce2248135a651d313f87d838e965477b5e4d6131 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 1 May 2021 15:51:37 -0400 Subject: [PATCH] sim: aarch64: fix 64-bit immediate shifts 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(-) diff --git a/sim/aarch64/ChangeLog b/sim/aarch64/ChangeLog index 23736d6b842..2d13cf1eda2 100644 --- a/sim/aarch64/ChangeLog +++ b/sim/aarch64/ChangeLog @@ -1,3 +1,7 @@ +2021-05-01 Mike Frysinger + + * simulator.c (do_fcvtzu): Change UL to ULL. + 2021-04-26 Mike Frysinger * aclocal.m4, config.in, configure: Regenerate. diff --git a/sim/aarch64/simulator.c b/sim/aarch64/simulator.c index e0b428d26d9..a8391212c06 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); -- 2.30.2