This is currently based upon the %tick register, although at some point it should be moved to a per-CPU timer.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk --- openbios-devel/arch/sparc64/openbios.c | 6 ++++++ openbios-devel/forth/device/other.fs | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/openbios-devel/arch/sparc64/openbios.c b/openbios-devel/arch/sparc64/openbios.c index 7a76158..9ce3e53 100644 --- a/openbios-devel/arch/sparc64/openbios.c +++ b/openbios-devel/arch/sparc64/openbios.c @@ -561,6 +561,8 @@ static void init_memory(void) PUSH(virt + MEMORY_SIZE); }
+extern volatile uint64_t *obp_ticks_pointer; + static void arch_init( void ) { @@ -572,6 +574,10 @@ arch_init( void ) nvconf_init(); device_end();
+ /* Point to the Forth obp-ticks variable */ + fword("obp-ticks"); + obp_ticks_pointer = cell2pointer(POP()); + bind_func("platform-boot", boot ); bind_func("(go)", go); } diff --git a/openbios-devel/forth/device/other.fs b/openbios-devel/forth/device/other.fs index c033dfc..c67c829 100644 --- a/openbios-devel/forth/device/other.fs +++ b/openbios-devel/forth/device/other.fs @@ -93,21 +93,21 @@ defer (poke)
\ 5.3.7.3 Time
-[IFDEF] CONFIG_SPARC32 +[IFDEF] CONFIG_PPC
-\ OBP tick value updated by timer interrupt -variable obp-ticks +0 value dummy-msecs
: get-msecs ( -- n ) - obp-ticks @ + dummy-msecs dup 1+ to dummy-msecs ;
[ELSE]
-0 value dummy-msecs +\ OBP tick value updated by timer interrupt +variable obp-ticks
: get-msecs ( -- n ) - dummy-msecs dup 1+ to dummy-msecs + obp-ticks @ ;
[THEN]