[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