On 16/10/2020 13:19, BALATON Zoltan via wrote:
On Fri, 16 Oct 2020, Mark Cave-Ayland wrote:
On 16/10/2020 00:47, BALATON Zoltan via wrote:
This is the cut down version of the earlier series omitting unfinished
patches that I plan to rework later and rebased to Mark's qemu-macppc
branch. Compared to v7 the only change is the cast to (target_ulong)
from (uint32_t) as requested by Mark in patch 1.
FWIW the reason for suggesting the cast to target_ulong is so that the
same code works for both qemu-system-ppc and qemu-system-ppc64. For
qemu-system-ppc that should correctly drop the sign extension from 32-bit,
whilst still allowing someone to load a 64-bit ELF into qemu-system-ppc64
if requested.
Can you confirm that the sign extension behaviour is still correct for
both qemu-system-ppc and qemu-system-ppc64? If so I'm happy to give it a
R-B tag.
I've tried it now again with both ppc and ppc64: both OpenBIOS and a G3
beige ROM can be loaded with qemu-system-ppc but qemu-system-ppc64 fails
with OpenBIOS when casting to target_ulong (i think because target_ulong is
64 bit there but g3beige is still 32 bit but I haven't throughly debugged
it). But everything works with my original uint32_t cast, so ditch it and
use my original version. Should I resubmit or you can fix up? (I think I
wait until it's clear if this will be taken by David or you and send a
fixed version cc-ing David if this is decided to go through the PPC queue.)
Hmmm yes I see that qemu-system-ppc64 fails because target_ulong will always
represent a 64-bit quantity, even if you request a 32-bit CPU. Rather than
add some CPU-specific code let's keep the uint32_t cast for now as I would
hope it is unlikely someone would load an ELF in high memory, and perhaps the
sign-extended address bug will get fixed later.
With the cast reverted to uint32_t then for patches 1 and 2:
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
If you can send a v9 with the cast fixed I'll apply this to my qemu-macppc
branch right away.