On 11/19/09 8:30 PM, Nick Couchman wrote:
More likely the address given to fetch was not aligned: static void fetch(void) { const ucell *aaddr = (ucell *)cell2pointer(POP()); PUSH(read_ucell(aaddr)); }
Here QEMU can help, enable DEBUG_PCALL in target-sparc/op_helper.c and recompile. Then run QEMU with -d int and /tmp/qemu.log will contain the register dump at the time of the exception.
I enabled DEBUG_PCALL as well as DEBUG_UNALIGNED in target-sparc/op_helper.c. Output for qemu was:
0 > boot cdrom [sparc64] Booting file 'cdrom' with parameters '' Not a bootable ELF image Not a Linux kernel image Not a bootable a.out image Loading FCode image... Loaded 7420 bytes entry point is 0x4000 Evaluating FCode... Unaligned access to 0x0000000000000014 from 0x00000000ffd10d9c Unhandled Exception 0x0000000000000034
This still very much looks like it's using the size of a string as an address somewhere :-(
Stefan