summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/timer/timer.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-07-14 20:11:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-07-14 20:11:29 +0000
commit0b83afe90a89cf175d29951ab6f8f0e04eccee16 (patch)
tree939d0e1d7fd20dd4e5898408eba76c430d0b0a2c /c/src/lib/libbsp/sparc/leon3/timer/timer.c
parentadded ChangeLog entries for PR1117/1118/1119/1120 (diff)
downloadrtems-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.c21
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;