[OpenBIOS] [PATCH] Tick counter

Olivier Danet odanet at caramail.com
Tue Feb 11 23:41:38 CET 2014


On 11/02/2014 21:02, Mark Cave-Ayland wrote:
> 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.
Your patch works great !

BTW, this should not change anything :

-    intregs->cpu_intregs[0].clear = ~0x17fff;
+    intregs->cpu_intregs[0].clear = 0xffffffff;

The per-CPU clear mask is marked as "reserved" for hard ints, bits 16 
and 14..0, so ~0x17fff should be enough.
(Sun4M sys. arch, page 31, §5.7.1.2)

Solaris 8 is very sensitive indeed. I have tried a genuine CD in an 
authentic SparcStation and it keeps hanging
during install ;-)


Olivier




More information about the OpenBIOS mailing list