* Blue Swirl blauwirbel@gmail.com [070719 20:46]:
On 7/19/07, spectral@op.pl spectral@op.pl wrote:
Unhandled Exception 0x00000007 PC = 0xffd0a55c NPC = 0xffd09374 Stopping execution
So this is my report, I hope it can be of some use. I'll try to boot sparc version of OpenSolaris soon and I'l let you know how it went.
Thanks for the report. Exception 7 is unaligned access, support for detection of unaligned accesses in QEMU was improved recently.
The exception happens inside OpenBIOS: 0xffd0a55c is in lstore (kernel/forth.c:649). 644 645 static void lstore(void) 646 { 647 const u32 *aaddr = (u32 *)cell2pointer(POP()); 648 const u32 longval = POP(); 649 write_long(aaddr, longval); 650 }
Maybe write_long should handle unaligned addresses?
Possibly. But something is wrong.
Unaligned accesses should be done with unaligned-l@ ( addr -- quad ) instead of l@.
So either the pointer was calculated wrong or Solaris does not care about alignment in l@
If you change it, please make the change specific to sparc.
Stefan