[OpenBIOS] Missing portid properties
Mark Cave-Ayland
mark.cave-ayland at siriusit.co.uk
Sat May 15 15:14:41 CEST 2010
Tarl Neustaedter wrote:
> 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.
After quite a bit of time studying the obp code, I think I see what's
happening here. On the surface, it looks as if
obp/cpu/sparc/registers9.fth only saves/restores the globals. However,
if you look deeper, it looks as if the default simple trap handler in
OpenBOOT references a global state area (indexed by window pointer) to
store the current state before invoking the handler. This area can then
be accessed from Forth using the standard functions.
So I believe the correct thing to do is to alter the window fill/spill
trap handlers so that they store the current CPU state in the global
area, and then add some code to OpenBIOS to allow this code to be
accessed from C and Forth. Does this sound right to everyone? If this is
the approach required, any ideas/help would be appreciated since SPARC
is not my native ASM ;)
ATB,
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