From d329e5f631bfc68749325545f752691aae26e48c Mon Sep 17 00:00:00 2001 From: Kelvin Lawson Date: Tue, 17 Sep 2013 19:33:58 +0100 Subject: [PATCH] ARM9: Don't use relative branches from interrupt vector table to support vector vectors a long way from the table in memory. --- ports/arm/platforms/dm36x/startup.s | 21 +++++++------------ .../arm/platforms/qemu_integratorcp/startup.s | 21 +++++++------------ 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/ports/arm/platforms/dm36x/startup.s b/ports/arm/platforms/dm36x/startup.s index 727d9cb..d8c325c 100644 --- a/ports/arm/platforms/dm36x/startup.s +++ b/ports/arm/platforms/dm36x/startup.s @@ -21,13 +21,13 @@ __interrupt_vector_table: B Reset_Handler /* Reset */ - B Null_Handler /* Undefined */ - B Null_Handler /* SWI */ - B Null_Handler /* Prefetch Abort */ - B Null_Handler /* Data Abort */ - B Null_Handler /* reserved */ - B IRQ_Handler /* IRQ */ - B Null_Handler /* FIQ */ + ldr PC,=null_handler /* Undefined */ + ldr PC,=null_handler /* SWI */ + ldr PC,=null_handler /* Prefetch Abort */ + ldr PC,=null_handler /* Data Abort */ + ldr PC,=null_handler /* reserved */ + ldr PC,=archIRQHandler/* IRQ */ + ldr PC,=null_handler /* FIQ */ Reset_Handler: @@ -45,10 +45,3 @@ Reset_Handler: B . - -IRQ_Handler: - B archIRQHandler - - -Null_Handler: - B null_handler diff --git a/ports/arm/platforms/qemu_integratorcp/startup.s b/ports/arm/platforms/qemu_integratorcp/startup.s index 727d9cb..d8c325c 100644 --- a/ports/arm/platforms/qemu_integratorcp/startup.s +++ b/ports/arm/platforms/qemu_integratorcp/startup.s @@ -21,13 +21,13 @@ __interrupt_vector_table: B Reset_Handler /* Reset */ - B Null_Handler /* Undefined */ - B Null_Handler /* SWI */ - B Null_Handler /* Prefetch Abort */ - B Null_Handler /* Data Abort */ - B Null_Handler /* reserved */ - B IRQ_Handler /* IRQ */ - B Null_Handler /* FIQ */ + ldr PC,=null_handler /* Undefined */ + ldr PC,=null_handler /* SWI */ + ldr PC,=null_handler /* Prefetch Abort */ + ldr PC,=null_handler /* Data Abort */ + ldr PC,=null_handler /* reserved */ + ldr PC,=archIRQHandler/* IRQ */ + ldr PC,=null_handler /* FIQ */ Reset_Handler: @@ -45,10 +45,3 @@ Reset_Handler: B . - -IRQ_Handler: - B archIRQHandler - - -Null_Handler: - B null_handler