diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-07-14 20:11:29 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-07-14 20:11:29 +0000 |
commit | 0b83afe90a89cf175d29951ab6f8f0e04eccee16 (patch) | |
tree | 939d0e1d7fd20dd4e5898408eba76c430d0b0a2c /c/src/lib/libbsp/sparc/leon3/timer/timer.c | |
parent | added ChangeLog entries for PR1117/1118/1119/1120 (diff) | |
download | rtems-0b83afe90a89cf175d29951ab6f8f0e04eccee16.tar.bz2 |
2006-07-13 Jerry Needell <jerry.needell@unh.edu>
* clock/ckinit.c, include/leon.h, timer/timer.c, amba/amba.c
fixed up merge from 4.6.6. Correct references to
LEON3_IrqCtrl_Regs_Map.mask[x] and LEON3_Timer_Regs_Map.timer[x].
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/timer/timer.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/timer/timer.c b/c/src/lib/libbsp/sparc/leon3/timer/timer.c index 04ff40d5aa..d9a0f8b6b3 100644 --- a/c/src/lib/libbsp/sparc/leon3/timer/timer.c +++ b/c/src/lib/libbsp/sparc/leon3/timer/timer.c @@ -22,28 +22,33 @@ #include <bsp.h> +extern rtems_configuration_table Configuration; + +#define LEON3_TIMER_INDEX \ + (Configuration.User_multiprocessing_table ? \ + (Configuration.User_multiprocessing_table)->maximum_nodes + \ + (Configuration.User_multiprocessing_table)->node - 1 : 1) + rtems_boolean Timer_driver_Find_average_overhead; rtems_boolean Timer_driver_Is_initialized = FALSE; extern volatile LEON3_Timer_Regs_Map *LEON3_Timer_Regs; - void Timer_initialize() { - /* * Timer runs long and accurate enough not to require an interrupt. */ if (LEON3_Timer_Regs) { if ( Timer_driver_Is_initialized == FALSE ) { /* approximately 1 us per countdown */ - LEON3_Timer_Regs->reload_t1 = 0xffffff; - LEON3_Timer_Regs->value_t1 = 0xffffff; + LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].reload = 0xffffff; + LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].value = 0xffffff; } else { Timer_driver_Is_initialized = TRUE; } - LEON3_Timer_Regs->conf_t1 = LEON3_GPTIMER_EN | LEON3_GPTIMER_LD; + LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].conf = LEON3_GPTIMER_EN | LEON3_GPTIMER_LD; } } @@ -53,10 +58,10 @@ void Timer_initialize() int Read_timer() { - uint32_t total; + rtems_unsigned32 total; if (LEON3_Timer_Regs) { - total = LEON3_Timer_Regs->value_t1; + total = LEON3_Timer_Regs->timer[LEON3_TIMER_INDEX].value; total = 0xffffff - total; @@ -65,7 +70,7 @@ int Read_timer() if ( total < LEAST_VALID ) return 0; /* below timer resolution */ - + return total - AVG_OVERHEAD; } return 0; |