From f124168208a5927e9f1b9843094ec2bf2aad2edf Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Sat, 25 Mar 2017 20:32:02 -0700 Subject: Fix bug with cmn/adds where C flag was incorrectly set. sim/aarch64/ * simulator.c (set_flags_for_add32): Cast result to uint32_t in carry flag check. sim/testsuite/sim/aarch64/ * adds.s: Add checks for values -2 and 1, where C is not set. --- sim/aarch64/ChangeLog | 5 +++++ sim/aarch64/simulator.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'sim/aarch64') diff --git a/sim/aarch64/ChangeLog b/sim/aarch64/ChangeLog index 0bf305a..1d97291 100644 --- a/sim/aarch64/ChangeLog +++ b/sim/aarch64/ChangeLog @@ -1,3 +1,8 @@ +2017-03-25 Jim Wilson + + * simulator.c (set_flags_for_add32): Cast result to uint32_t in carry + flag check. + 2017-03-03 Jim Wilson * simulator.c (mul64hi): Shift carry left by 32. diff --git a/sim/aarch64/simulator.c b/sim/aarch64/simulator.c index 8a8df7a..f0668ad 100644 --- a/sim/aarch64/simulator.c +++ b/sim/aarch64/simulator.c @@ -1650,7 +1650,7 @@ set_flags_for_add32 (sim_cpu *cpu, int32_t value1, int32_t value2) if (result & (1 << 31)) flags |= N; - if (uresult != result) + if (uresult != (uint32_t)result) flags |= C; if (sresult != result) -- cgit v1.1