On 11/02/14 00:43, Olivier Danet wrote:
I had tested with NextSTEP, which, afaik, is the only user of this damn counter...
In OpenBIOS, the CPU "PSR.PIL" register masked all interrupts. Here is a version which enable the interrupt level 14, used by the timer. It is not optimal because the psr_get/set functions are also declared in arch/sparc32/psr.h, maybe it should be moved to include/arch/sparc32...
Aha so that was the part I was missing! Please find attached a squashed reworked version of your patch which makes the following changes:
- Fixes up psr.h and friends so we can use the constants/functions that are already there
- Change obp_ticks from int32_t obp_ticks to uint32_t *obp_ticks (this is so we can reference it in Forth too)
- Add an implementation of get-msecs in Forth which is surrounded by [IFDEF] CONFIG_SPARC32 ... [THEN] guards which references the value from the above pointer
This appears to work for me, and most importantly it doesn't appear to affect Solaris 8 boot (which is good, as Solaris is generally the most sensitive OS when changing things in OpenBIOS).
Welcome to OpenBIOS v1.1 built on Feb 11 2014 19:37 Type 'help' for detailed information
0 > get-msecs u. 1bd0 ok 0 > get-msecs u. 2ada ok 0 > get-msecs u. 389a ok 0 >
Can you test on NextStep and let me know if it looks okay to you too?
ATB,
Mark.