summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2016-05-19 10:24:46 +0200
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2016-10-02 10:40:33 +0200
commitc6e0201443080114d18ed10a1a319ce655efd917 (patch)
tree790cfc499bbf279c400786e68d86cb87b5bfbc0f /c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
parentbsps/arm: CP15 support for flush prefetch buffer and table base control. (diff)
downloadrtems-c6e0201443080114d18ed10a1a319ce655efd917.tar.bz2
arm/raspberrypi: ensure that RTEMS application image can be started by U-boot.
The current versions of U-boot start kernel/RTEMS application image with instruction and data caches enabled and it sets exception base register to new address after its self-relocation. ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */ mcr p15, 0, r0, c12, c0, 0 /* Set VBAR */ Included changes in bsp_start_hook_0 restore default state to allow RTEMS image to run after startup from newer U-boot version on Raspberry Pi. Clear interrupt enable registers in interrupt controller to ensure that RTEMS starts from well defined state. Updates #2783
Diffstat (limited to 'c/src/lib/libbsp/arm/raspberrypi/irq/irq.c')
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/irq/irq.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
index 4132ef9693..07ef9e5b90 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
@@ -120,5 +120,9 @@ 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;
+ BCM2835_REG(BCM2835_IRQ_FIQ_CTRL) = 0;
return RTEMS_SUCCESSFUL;
}