|
|
* Blue Swirl <blauwirbel@xxxxxxxxx> [070719 20:46]:
> On 7/19/07, spectral@xxxxx <spectral@xxxxx> 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
--
coresystems GmbH â Brahmsstr. 16 â D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 â Fax: +49 761 7664613
Email: info@xxxxxxxxxxxxxx â http://www.coresystems.de/
|
|