[OpenBIOS] Latest SPARC64 & Milax update
Tarl Neustaedter
Tarl.Neustaedter at Sun.COM
Fri Jan 1 21:02:36 CET 2010
Mark Cave-Ayland wrote:
> [...]
> Stepping through with the debugger shows that it is now dying in the
> very last line of exec-file which reads:
>
> " to load-base init-program" evaluate
>
> So it looks as if we're very nearly there. My guess would be that
> OpenBIOS is dying somewhere within init-program. Does anyone know
> anything about what init-program should be doing under SPARC64? Has it
> ever been tested before?
In Sun's openboot, that's in go.fth (lives in obp/ach/sun4u/go.fth), and
it does an execute-buffer on whatever's in load-base, followed by
initializing the registers, trap-table and stack for the client
interface. Specifically (I can include this because it has been
open-sourced):
: (init-program) ( -- )
cif-64 \ 64-Bit IEEE 1275 Client Interface
init-c-stack \ Erase any previous C stack state
\ Zero all the general registers.
0w
0 to %g0 0 to %o0 0 to %l0 0 to %i0
0 to %g1 0 to %o1 0 to %l1 0 to %i1
0 to %g2 0 to %o2 0 to %l2 0 to %i2
0 to %g3 0 to %o3 0 to %l3 0 to %i3
0 to %g4 0 to %o4 0 to %l4 0 to %i4
0 to %g5 0 to %o5 0 to %l5 0 to %i5
0 to %g6 0 to %o6 0 to %l6 0 to %i6
0 to %g7 0 to %o7 0 to %l7 0 to %i7
cif-func() to %o4 \ IEEE 1275 Client Services Handler
%o6@ to %o6 \ C stack pointer
trap-table to %tba \ Set trap table
h# 0 to %y h# 4 to %fprs
h# 16 to %pstate h# 0d to %pil
7 to %cleanwin 0 to %otherwin
0 to %wstate 0 to %canrestore
6 to %cansave 0 to %cwp
h# 16 8 lshift to %tstate-c
load-base set-pc
[ifdef] SUN4V
\ Since we are initializing a stack, make sure we clear out previous saved
\ state indications. This affects ultra4v/savecpu.fth:restore-cpu-state,
\ which is invoked shortly after this.
0 to full-save?
[then]
sp@ saved-sp ! rp@ saved-rp ! \ Needed for later callbacks
into Forth
state-valid on restartable? on
true to already-go?
[ifdef] Starcat?
RELEASE-SLAVE-INVALID release-slaves? l!
[then]
;
\ ..... other stuff ....
: init-program ( -- )
load-base file-size @ 'execute-buffer execute (init-program)
;
More information about the OpenBIOS
mailing list