You should also see the problem if you use v7 of Charlie's checksum
Can you please give a pointer to this test code?
I'm happy to try it on real hardware.
It is quite easy to show that carry is always set after executing lddInteresting.
on an unaligned address. That is also why I know for sure that the
problem is not seen with ldw on unaligned addresses.
In general I think it's quite important to differentiate between
running on qemu or running on physical hardware.
Qemu just recently got 64-bit support, and it's not yet behaving
like real hardware. One thing I noticed is, that read hardware
does not seem to jump into the exception handler twice, while
qemu does. So, if you run into an exception (e.g. unaligned ldd)
then if a second exception happens in the fault handler (e.g. second
unaligned ldd to resolve wrongly-coded code lookup), you will
get different behaviour between hardware and emulation.
This is also the reason why qemu still fails to emulate newerI don't use modules in my testing, so I'll leave that alone for
64-bit Linux kernels which uses kernel modules.