[OpenBIOS] [Qemu-devel] Re: What is the current support state for Sparc emulation

Stefan Reinauer stepan at coresystems.de
Fri Jul 20 13:36:58 CEST 2007


* Blue Swirl <blauwirbel at gmail.com> [070719 20:46]:
> On 7/19/07, spectral at op.pl <spectral at 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 at . 

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 at coresystems.dehttp://www.coresystems.de/



More information about the OpenBIOS mailing list