summaryrefslogtreecommitdiffstats
path: root/bsps/arm
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-06-01 07:11:12 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-06-27 08:58:16 +0200
commit7ee59313932398aa2781503d25154c56301b9b73 (patch)
treeefaeaf7fa038f3de1b58676deb16d52744c0b373 /bsps/arm
parentRemove unused CPU_MODES_INTERRUPT_LEVEL (diff)
downloadrtems-7ee59313932398aa2781503d25154c56301b9b73.tar.bz2
Remove Clock_driver_support_shutdown_hardware()
The aim of this clock driver hook was to stop clock tick interrupts at some late point in the exit() procedure. The use of atexit() pulls in malloc() which pulls in errno. It is incompatible with the intention of the CONFIGURE_DISABLE_NEWLIB_REENTRANCY configuration option. The exit() function must be called from thread context, so accompanied clock tick interrupts should cause no harm. On the contrary, someone may assume a normal operating system operation, e.g. working timeouts. Remove the Clock_driver_support_shutdown_hardware() clock driver hook. Close #3436.
Diffstat (limited to 'bsps/arm')
-rw-r--r--bsps/arm/beagle/clock/clock.c24
-rw-r--r--bsps/arm/csb336/clock/clockdrv.c13
-rw-r--r--bsps/arm/csb337/clock/clock.c5
-rw-r--r--bsps/arm/edb7312/clock/clockdrv.c11
-rw-r--r--bsps/arm/gumstix/clock/clock.c5
-rw-r--r--bsps/arm/raspberrypi/clock/clockdrv.c7
-rw-r--r--bsps/arm/rtl22xx/clock/clockdrv.c13
-rw-r--r--bsps/arm/shared/clock/clock-a9mpcore.c35
-rw-r--r--bsps/arm/shared/clock/clock-armv7m.c10
-rw-r--r--bsps/arm/shared/clock/clock-nxp-lpc.c20
-rw-r--r--bsps/arm/smdk2410/clock/clockdrv.c12
-rw-r--r--bsps/arm/tms570/clock/clock.c16
12 files changed, 0 insertions, 171 deletions
diff --git a/bsps/arm/beagle/clock/clock.c b/bsps/arm/beagle/clock/clock.c
index d8b2062e80..d42b051c98 100644
--- a/bsps/arm/beagle/clock/clock.c
+++ b/bsps/arm/beagle/clock/clock.c
@@ -290,34 +290,10 @@ static void beagle_clock_handler_install(rtems_interrupt_handler isr)
clock_isr = isr;
}
-static void beagle_clock_cleanup(void)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
-
- /* Disable timer */
- mmio_clear(timer->base + timer->regs->TCLR, OMAP3_TCLR_ST);
-
- /* Remove interrupt handler */
- sc = rtems_interrupt_handler_remove(
- timer->irq_nr,
- clock_isr,
- NULL
- );
- if (sc != RTEMS_SUCCESSFUL) {
- rtems_fatal_error_occurred(0xdeadbeef);
- }
- clock_isr = NULL;
-
- /* stop frclock */
- mmio_clear(fr_timer->base + fr_timer->regs->TCLR, OMAP3_TCLR_ST);
-}
-
#define Clock_driver_support_at_tick() beagle_clock_at_tick()
#define Clock_driver_support_initialize_hardware() beagle_clock_initialize()
#define Clock_driver_support_install_isr(isr) \
beagle_clock_handler_install(isr)
-#define Clock_driver_support_shutdown_hardware() beagle_clock_cleanup()
-
/* Include shared source clock driver code */
#include "../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/csb336/clock/clockdrv.c b/bsps/arm/csb336/clock/clockdrv.c
index ec566154e1..58f98d87be 100644
--- a/bsps/arm/csb336/clock/clockdrv.c
+++ b/bsps/arm/csb336/clock/clockdrv.c
@@ -82,19 +82,6 @@ rtems_irq_connect_data clock_isr_data = {
} while (0)
/**
- * Do whatever you need to shut the clock down and remove the
- * interrupt handler. Since this normally only gets called on
- * RTEMS shutdown, you may not need to do anything other than
- * remove the ISR.
- */
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- /* Disable timer */ \
- MC9328MXL_TMR1_TCTL = 0; \
- BSP_remove_rtems_irq_handler(&clock_isr_data); \
- } while (0)
-
-/**
* Enables clock interrupt.
*
* If the interrupt is always on, this can be a NOP.
diff --git a/bsps/arm/csb337/clock/clock.c b/bsps/arm/csb337/clock/clock.c
index 5611144112..69a3dafd81 100644
--- a/bsps/arm/csb337/clock/clock.c
+++ b/bsps/arm/csb337/clock/clock.c
@@ -103,11 +103,6 @@ static void Clock_driver_support_initialize_hardware(void)
(void) st_str; /* avoid set but not used warning */ \
} while (0)
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- BSP_remove_rtems_irq_handler(&clock_isr_data); \
- } while (0)
-
#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/edb7312/clock/clockdrv.c b/bsps/arm/edb7312/clock/clockdrv.c
index 26839f35ca..8c7cc4f26a 100644
--- a/bsps/arm/edb7312/clock/clockdrv.c
+++ b/bsps/arm/edb7312/clock/clockdrv.c
@@ -56,17 +56,6 @@ void Clock_isr(void * arg);
*EP7312_TC1EOI = 0xFFFFFFFF; \
} while (0)
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- rtems_status_code status = RTEMS_SUCCESSFUL; \
- status = rtems_interrupt_handler_remove( \
- BSP_TC1OI, \
- Clock_isr, \
- NULL \
- ); \
- assert(status == RTEMS_SUCCESSFUL); \
- } while (0)
-
#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/gumstix/clock/clock.c b/bsps/arm/gumstix/clock/clock.c
index 0c4e1f8758..c844f50a37 100644
--- a/bsps/arm/gumstix/clock/clock.c
+++ b/bsps/arm/gumstix/clock/clock.c
@@ -108,11 +108,6 @@ static void Clock_driver_support_initialize_hardware(void)
XSCALE_OS_TIMER_MR0 = XSCALE_OS_TIMER_TCR + period_num; \
} while (0)
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- BSP_remove_rtems_irq_handler(&clock_isr_data); \
- } while (0)
-
#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/raspberrypi/clock/clockdrv.c b/bsps/arm/raspberrypi/clock/clockdrv.c
index 2f6ec5b142..9954d41741 100644
--- a/bsps/arm/raspberrypi/clock/clockdrv.c
+++ b/bsps/arm/raspberrypi/clock/clockdrv.c
@@ -95,17 +95,10 @@ static void raspberrypi_clock_initialize_hardware(void)
rtems_timecounter_install(&raspberrypi_tc);
}
-static void raspberrypi_clock_cleanup(void)
-{
- bsp_interrupt_vector_disable(BCM2835_IRQ_ID_GPU_TIMER_M3);
-}
-
#define Clock_driver_support_at_tick() raspberrypi_clock_at_tick()
#define Clock_driver_support_initialize_hardware() raspberrypi_clock_initialize_hardware()
-#define Clock_driver_support_shutdown_hardware() raspberrypi_clock_cleanup()
-
#define Clock_driver_support_install_isr(clock_isr) \
raspberrypi_clock_handler_install_isr(clock_isr)
diff --git a/bsps/arm/rtl22xx/clock/clockdrv.c b/bsps/arm/rtl22xx/clock/clockdrv.c
index 84ab9c063b..0e8fa274a7 100644
--- a/bsps/arm/rtl22xx/clock/clockdrv.c
+++ b/bsps/arm/rtl22xx/clock/clockdrv.c
@@ -127,19 +127,6 @@ rtems_irq_connect_data clock_isr_data = {
} while (0)
/**
- * Do whatever you need to shut the clock down and remove the
- * interrupt handler. Since this normally only gets called on
- * RTEMS shutdown, you may not need to do anything other than
- * remove the ISR.
- */
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- /* Disable timer */ \
- T0TCR&=~0x02; \
- BSP_remove_rtems_irq_handler(&clock_isr_data); \
- } while (0)
-
-/**
* Enables clock interrupt.
*
* If the interrupt is always on, this can be a NOP.
diff --git a/bsps/arm/shared/clock/clock-a9mpcore.c b/bsps/arm/shared/clock/clock-a9mpcore.c
index a68a627c5b..05d3c0961d 100644
--- a/bsps/arm/shared/clock/clock-a9mpcore.c
+++ b/bsps/arm/shared/clock/clock-a9mpcore.c
@@ -169,38 +169,6 @@ CPU_Counter_ticks _CPU_Counter_read(void)
return gt->cntrlower;
}
-static void a9mpcore_clock_cleanup_isr(void *arg)
-{
- volatile a9mpcore_gt *gt = A9MPCORE_GT;
-
- (void) arg;
-
- gt->ctrl &= A9MPCORE_GT_CTRL_TMR_EN;
- gt->irqst = A9MPCORE_GT_IRQST_EFLG;
-}
-
-static void a9mpcore_clock_cleanup(void)
-{
- rtems_status_code sc;
-
- /*
- * The relevant registers / bits of the global timer are banked and chances
- * are on an SPM system, that we are executing on the wrong CPU to reset
- * them. Thus we will have the actual cleanup done with the next clock tick.
- * The ISR will execute on the right CPU for the cleanup.
- */
- sc = rtems_interrupt_handler_install(
- A9MPCORE_IRQ_GT,
- "Clock",
- RTEMS_INTERRUPT_REPLACE,
- a9mpcore_clock_cleanup_isr,
- NULL
- );
- if (sc != RTEMS_SUCCESSFUL) {
- bsp_fatal(BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE);
- }
-}
-
#define Clock_driver_support_at_tick() \
a9mpcore_clock_at_tick()
@@ -210,8 +178,5 @@ static void a9mpcore_clock_cleanup(void)
#define Clock_driver_support_install_isr(isr) \
a9mpcore_clock_handler_install()
-#define Clock_driver_support_shutdown_hardware() \
- a9mpcore_clock_cleanup()
-
/* Include shared source clock driver code */
#include "../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/shared/clock/clock-armv7m.c b/bsps/arm/shared/clock/clock-armv7m.c
index 2efe4c2654..7a51690562 100644
--- a/bsps/arm/shared/clock/clock-armv7m.c
+++ b/bsps/arm/shared/clock/clock-armv7m.c
@@ -88,22 +88,12 @@ RTEMS_SYSINIT_ITEM(
RTEMS_SYSINIT_ORDER_FIRST
);
-static void _ARMV7M_Clock_cleanup(void)
-{
- volatile ARMV7M_Systick *systick = _ARMV7M_Systick;
-
- systick->csr = 0;
-}
-
#define Clock_driver_support_initialize_hardware() \
_ARMV7M_Clock_initialize()
#define Clock_driver_support_install_isr(isr) \
_ARMV7M_Clock_handler_install()
-#define Clock_driver_support_shutdown_hardware() \
- _ARMV7M_Clock_cleanup()
-
/* Include shared source clock driver code */
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/shared/clock/clock-nxp-lpc.c b/bsps/arm/shared/clock/clock-nxp-lpc.c
index c551f75f68..feb7f83ff8 100644
--- a/bsps/arm/shared/clock/clock-nxp-lpc.c
+++ b/bsps/arm/shared/clock/clock-nxp-lpc.c
@@ -105,31 +105,11 @@ static void lpc_clock_initialize(void)
rtems_timecounter_install(&lpc_clock_tc);
}
-static void lpc_clock_cleanup(void)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
-
- /* Disable timer */
- lpc_clock->tcr = 0x0;
-
- /* Remove interrupt handler */
- sc = rtems_interrupt_handler_remove(
- LPC_CLOCK_INTERRUPT,
- (rtems_interrupt_handler) Clock_isr,
- NULL
- );
- if (sc != RTEMS_SUCCESSFUL) {
- rtems_fatal_error_occurred(0xdeadbeef);
- }
-}
-
#define Clock_driver_support_at_tick() lpc_clock_at_tick()
#define Clock_driver_support_initialize_hardware() lpc_clock_initialize()
#define Clock_driver_support_install_isr(isr) \
lpc_clock_handler_install()
-#define Clock_driver_support_shutdown_hardware() lpc_clock_cleanup()
-
/* Include shared source clock driver code */
#include "../../../shared/dev/clock/clockimpl.h"
diff --git a/bsps/arm/smdk2410/clock/clockdrv.c b/bsps/arm/smdk2410/clock/clockdrv.c
index 0430826254..6e32b7daed 100644
--- a/bsps/arm/smdk2410/clock/clockdrv.c
+++ b/bsps/arm/smdk2410/clock/clockdrv.c
@@ -76,18 +76,6 @@ rtems_irq_connect_data clock_isr_data = {
} while (0)
/**
- * Do whatever you need to shut the clock down and remove the
- * interrupt handler. Since this normally only gets called on
- * RTEMS shutdown, you may not need to do anything other than
- * remove the ISR.
- */
-#define Clock_driver_support_shutdown_hardware() \
- do { \
- /* Disable timer */ \
- BSP_remove_rtems_irq_handler(&clock_isr_data); \
- } while (0)
-
-/**
* Enables clock interrupt.
*
* If the interrupt is always on, this can be a NOP.
diff --git a/bsps/arm/tms570/clock/clock.c b/bsps/arm/tms570/clock/clock.c
index 2c1a54b70e..8290504396 100644
--- a/bsps/arm/tms570/clock/clock.c
+++ b/bsps/arm/tms570/clock/clock.c
@@ -159,28 +159,12 @@ static void tms570_clock_driver_support_install_isr(
}
}
-/**
- * @brief disables RTI interrupt
- *
- * Called when closing clock driver
- *
- * @retval Void
- */
-static void tms570_clock_driver_support_shutdown_hardware( void )
-{
- /* turn off the timer interrupts */
- TMS570_RTI.CLEARINTENA = TMS570_RTI_CLEARINTENA_CLEAROVL0INT |
- TMS570_RTI_CLEARINTENA_CLEARINT0;
-}
-
#define Clock_driver_support_initialize_hardware \
tms570_clock_driver_support_initialize_hardware
#define Clock_driver_support_at_tick \
tms570_clock_driver_support_at_tick
#define Clock_driver_support_initialize_hardware \
tms570_clock_driver_support_initialize_hardware
-#define Clock_driver_support_shutdown_hardware \
- tms570_clock_driver_support_shutdown_hardware
#define Clock_driver_support_install_isr(Clock_isr) \
tms570_clock_driver_support_install_isr( Clock_isr )