[OpenBIOS] Missing portid properties

Tarl Neustaedter tarl-b2 at tarl.net
Mon May 3 22:07:29 CEST 2010


On 2010-5-3 8:16 AM, Mark Cave-Ayland wrote:
> Tarl Neustaedter wrote:
>
>> Those are all SPARC registers. What it's doing is copying the 
>> registers to a buffer, presumably to be restored later.
>>
>> It looks like the trap registers (%tstate, %tnpc, %tt) are prefixed 
>> by %tl-c - which is presumably the trap-level pointer.
>
> Another thought about this: surely the act of invoking normal 
> functions within OpenBIOS is enough to cause the register window to 
> shift. Does that mean that the CIF needs to take a snapshot of the 
> registers upon entry and then map this snapshot to forth words such as 
> %g0, %g1 etc.? Otherwise it all seems a bit useless.

This all involves stuff from (assuming you have access to the 
open-sourced OBP sources) obp/cpu/sparc/fentry9.fth .

forth-entry is how Solaris calls into OBP's client-interface. Notice it 
stashing registers away on stack.

return-to-c is how forth returns from a client-interface call, restoring 
stuff.

The actual register definitions are in obp/cpu/sparc/register9.fth - 
notice it defines them with out-regs, local-regs, and global-regs, which 
are complex constructs allocating space from the heap and setting up 
use-actions for them referring to the cpu-state blocks. References to 
%o7 ect. refer to these variables rather than the live registers.

Unfortunately, this is black magic that I don't understand - I've not 
dived into the guts of our forth/c interface much before.




More information about the OpenBIOS mailing list