[rtems commit] arm/raspberrypi: remove duplicate setup of IRQ handler in the main ARM exception table.

Pavel Pisa ppisa at rtems.org
Sun Oct 2 08:47:07 UTC 2016


Module:    rtems
Branch:    4.11
Commit:    acb488ff5932931bfe6a2efa758788e273fa6948
Changeset: http://git.rtems.org/rtems/commit/?id=acb488ff5932931bfe6a2efa758788e273fa6948

Author:    Pavel Pisa <pisa at cmp.felk.cvut.cz>
Date:      Sat Jul 23 12:07:10 2016 +0200

arm/raspberrypi: remove duplicate setup of IRQ handler in the main ARM exception table.

Exception table setup is processed by common CPU architecture support.
For ARM architecture, it can be found in the file

rtems/c/src/lib/libbsp/arm/shared/start/start.S

and ends by bsp_vector_table_copy_done label.
The actual tabel content can be found at

  bsp_start_vector_table_begin

For ARMv7-A and even other variant with hypervisor mode support,
it is even not necessary to copy table to address 0 at all
because CP15 register can be used to specify alternative
table start address

  arm_cp15_set_vector_base_address(&)bsp_start_vector_table_begin;

ARMv7-M have register to set exception table base as well.

Updates #2783

---

 c/src/lib/libbsp/arm/raspberrypi/include/irq.h |  4 ----
 c/src/lib/libbsp/arm/raspberrypi/irq/irq.c     | 17 -----------------
 2 files changed, 21 deletions(-)

diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h
index 8436c2d..7ccfd3b 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h
+++ b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h
@@ -62,9 +62,5 @@
 
 #define BSP_IRQ_COUNT               (BCM2835_INTC_TOTAL_IRQ)
 
-
-void raspberrypi_set_exception_handler(Arm_symbolic_exception_name exception,
-                                         void (*handler)(void));
-
 #endif /* ASM */
 #endif /* LIBBSP_ARM_RASPBERRYPI_IRQ_H */
diff --git a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
index 07ef9e5..ce5b363 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
@@ -29,22 +29,6 @@
 #include <bsp/mmu.h>
 
 /*
-** This sets the main exception vectors
-*/
-void raspberrypi_set_exception_handler(
-                        Arm_symbolic_exception_name exception,
-                        void (*handler)(void)
-                                       )
-{
-    if ((unsigned) exception < MAX_EXCEPTIONS)
-    {
-        uint32_t *table = (uint32_t *) bsp_section_vector_begin + MAX_EXCEPTIONS;
-        table [exception] = (uint32_t) handler;
-
-    }
-}
-
-/*
 ** Determine the source of the interrupt and dispatch the correct handler.
 */
 void bsp_interrupt_dispatch(void)
@@ -119,7 +103,6 @@ void bsp_interrupt_handler_default(rtems_vector_number vector)
 
 rtems_status_code bsp_interrupt_facility_initialize(void)
 {
-   raspberrypi_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt);
    BCM2835_REG(BCM2835_IRQ_DISABLE1) = 0xffffffff;
    BCM2835_REG(BCM2835_IRQ_DISABLE2) = 0xffffffff;
    BCM2835_REG(BCM2835_IRQ_DISABLE_BASIC) = 0xffffffff;




More information about the vc mailing list