[OpenBIOS] OpenSolaris starts to live on SPARC64

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Tue Apr 6 10:50:45 CEST 2010


Artyom Tarasenko wrote:

> ok, 2.6 confirms that there is a problem with 80 characters limit:
> ...
> 
> obp_devread(fd 0xffd9e740, buf 0xe110, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9e740, hi 0, lo 15065088) = 0
> obp_devread(fd 0xffd9e740, buf 0xe110, nbytes 8192) = 8192
> obp_devclose(0xffd9e740) = 1
> obp_fortheval_v2( ['] find-device catch if 2drop true else
> current-device device-end then swap l!)
> Unhandled Exception 0x00000007
> PC = 0xffd05580 NPC = 0xffd05024
> Stopping execution

Definitely time for you to build a cross-gdb :)  I notice a comment in 
obp_fortheval_v2 that reads:


   // for now, move something to the stack so we
   // don't get a stack underrun.
   //
   // FIXME: find out why solaris doesnt put its stuff on the stack
   //
   fword("0");
   fword("0");


So perhaps the OpenBIOS marshalling code for romvec doesn't handle 
passing Forth stack parameters correctly? Try searching for Sun romvec 
documentation to see what you can find about how parameters are passed 
to/from the BIOS.

> 2.5.1 :
> 
> obp_devread(fd 0xffd9eb94, buf 0xf00a0778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275275776) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00a2778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275283968) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00a4778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275292160) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00a6778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275316736) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00a8778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275324928) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00aa778, nbytes 8192) = 8192
> obp_devseek(fd 0xffd9eb94, hi 0, lo 275333120) = 0
> obp_devread(fd 0xffd9eb94, buf 0xf00ac778, nbytes 8192) = 8192
> 
> And then it just hangs. I don't see the "krtld: error during initial
> load/link phase" message.

Again, you'll need a cross-gdb to check this. At least you can then 
break into OpenBIOS and find out at which point you're getting stuck in 
a loop.


HTH,

Mark.

-- 
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs



More information about the OpenBIOS mailing list