diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-12-23 07:29:47 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-01-27 08:09:05 +0100 |
commit | 2145853b009e939dfbe14869b710133f50500a26 (patch) | |
tree | cb4504a3f442a83ea508a03b31aa8379b42790ed /c/src/lib/libbsp/m68k | |
parent | bsps/arm: Fix broken switch statement (diff) | |
download | rtems-2145853b009e939dfbe14869b710133f50500a26.tar.bz2 |
score: Fix simple timecounter support
Close #2502.
Diffstat (limited to 'c/src/lib/libbsp/m68k')
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf52235/clock/clock.c | 19 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c | 19 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5329/clock/clock.c | 19 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/uC5282/clock/clock.c | 51 |
4 files changed, 56 insertions, 52 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c b/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c index fdc1ed6111..4b5f4afc51 100644 --- a/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c +++ b/c/src/lib/libbsp/m68k/mcf52235/clock/clock.c @@ -32,18 +32,19 @@ static uint32_t mcf52235_tc_get_timecount(struct timecounter *tc) ); } -static void mcf52235_tc_tick(void) +static void mcf52235_tc_at_tick(rtems_timecounter_simple *tc) { - rtems_timecounter_simple_downcounter_tick(&mcf52235_tc, mcf52235_tc_get); + MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; } -/* - * Periodic interval timer interrupt handler - */ -#define Clock_driver_support_at_tick() \ - do { \ - MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; \ - } while (0) \ +static void mcf52235_tc_tick(void) +{ + rtems_timecounter_simple_downcounter_tick( + &mcf52235_tc, + mcf52235_tc_get, + mcf52235_tc_at_tick + ); +} /* * Attach clock interrupt handler diff --git a/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c b/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c index 743bd1ff94..ee97e5035c 100644 --- a/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c +++ b/c/src/lib/libbsp/m68k/mcf5225x/clock/clock.c @@ -32,18 +32,19 @@ static uint32_t mcf5225x_tc_get_timecount(struct timecounter *tc) ); } -static void mcf5225x_tc_tick(void) +static void mcf5225x_tc_at_tick(rtems_timecounter_simple *tc) { - rtems_timecounter_simple_downcounter_tick(&mcf5225x_tc, mcf5225x_tc_get); + MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; } -/* - * Periodic interval timer interrupt handler - */ -#define Clock_driver_support_at_tick() \ - do { \ - MCF_PIT1_PCSR |= MCF_PIT_PCSR_PIF; \ - } while (0) \ +static void mcf5225x_tc_tick(void) +{ + rtems_timecounter_simple_downcounter_tick( + &mcf5225x_tc, + mcf5225x_tc_get, + mcf5225x_tc_at_tick + ); +} /* * Attach clock interrupt handler diff --git a/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c b/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c index 94c5bb0b04..5741b3081d 100644 --- a/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c +++ b/c/src/lib/libbsp/m68k/mcf5329/clock/clock.c @@ -32,18 +32,19 @@ static uint32_t mcf5329_tc_get_timecount(struct timecounter *tc) ); } -static void mcf5329_tc_tick(void) +static void mcf5329_tc_at_tick(rtems_timecounter_simple *tc) { - rtems_timecounter_simple_downcounter_tick(&mcf5329_tc, mcf5329_tc_get); + MCF_PIT3_PCSR |= MCF_PIT_PCSR_PIF; } -/* - * Periodic interval timer interrupt handler - */ -#define Clock_driver_support_at_tick() \ - do { \ - MCF_PIT3_PCSR |= MCF_PIT_PCSR_PIF; \ - } while (0) \ +static void mcf5329_tc_tick(void) +{ + rtems_timecounter_simple_downcounter_tick( + &mcf5329_tc, + mcf5329_tc_get, + mcf5329_tc_at_tick + ); +} /* * Attach clock interrupt handler diff --git a/c/src/lib/libbsp/m68k/uC5282/clock/clock.c b/c/src/lib/libbsp/m68k/uC5282/clock/clock.c index 46e045cae3..1489d7efad 100644 --- a/c/src/lib/libbsp/m68k/uC5282/clock/clock.c +++ b/c/src/lib/libbsp/m68k/uC5282/clock/clock.c @@ -17,6 +17,17 @@ #include <mcf5282/mcf5282.h> /* + * CPU load counters + * Place in static RAM so updates don't hit the SDRAM + */ +#define IDLE_COUNTER __SRAMBASE.idle_counter +#define FILTERED_IDLE __SRAMBASE.filtered_idle +#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count +#define PITC_PER_TICK __SRAMBASE.pitc_per_tick +#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc +#define FILTER_SHIFT 6 + +/* * Use INTC0 base */ #define CLOCK_VECTOR (64+58) @@ -42,34 +53,24 @@ static uint32_t uC5282_tc_get_timecount(struct timecounter *tc) ); } -static void uC5282_tc_tick(void) +static void uC5282_tc_at_tick(rtems_timecounter_simple *tc) { - rtems_timecounter_simple_downcounter_tick(&uC5282_tc, uC5282_tc_get); + unsigned idle = IDLE_COUNTER; + IDLE_COUNTER = 0; + if (idle > MAX_IDLE_COUNT) + MAX_IDLE_COUNT = idle; + FILTERED_IDLE = idle + FILTERED_IDLE - (FILTERED_IDLE>>FILTER_SHIFT); + MCF5282_PIT3_PCSR |= MCF5282_PIT_PCSR_PIF; } -/* - * CPU load counters - * Place in static RAM so updates don't hit the SDRAM - */ -#define IDLE_COUNTER __SRAMBASE.idle_counter -#define FILTERED_IDLE __SRAMBASE.filtered_idle -#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count -#define PITC_PER_TICK __SRAMBASE.pitc_per_tick -#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc -#define FILTER_SHIFT 6 - -/* - * Periodic interval timer interrupt handler - */ -#define Clock_driver_support_at_tick() \ - do { \ - unsigned idle = IDLE_COUNTER; \ - IDLE_COUNTER = 0; \ - if (idle > MAX_IDLE_COUNT) \ - MAX_IDLE_COUNT = idle; \ - FILTERED_IDLE = idle + FILTERED_IDLE - (FILTERED_IDLE>>FILTER_SHIFT);\ - MCF5282_PIT3_PCSR |= MCF5282_PIT_PCSR_PIF; \ - } while (0) +static void uC5282_tc_tick(void) +{ + rtems_timecounter_simple_downcounter_tick( + &uC5282_tc, + uC5282_tc_get, + uC5282_tc_at_tick + ); +} /* * Attach clock interrupt handler |