summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/shared/start/start.S
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-02-27 11:26:44 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-02-27 11:26:44 +0000
commit9647f7feac36cc41c25b852eb8ecdd728b5486d1 (patch)
tree3b331d67718faf43d1c38e7896cb2be5f108d328 /c/src/lib/libbsp/arm/shared/start/start.S
parent * bsp_specs: Added crtbegin.o and crtend.o to support global C++ (diff)
downloadrtems-9647f7feac36cc41c25b852eb8ecdd728b5486d1.tar.bz2
* README: Added NCS.
* Makefile.am, configure.ac, preinstall.am: Added BSP variants. * console/console-config.c, clock/clock-config.c, ssp/ssp.c: Fixed register settings. Cleanup. * include/bsp.h: Added network defines and functions. * include/lpc24xx.h: Added AHB and EMC defines. Fixed Ethernet status sizes. * include/system-clocks.h, misc/system-clocks.c: Added micro seconds delay function that uses Timer 1. Changed PLL setup. * network/network.c, startup/bspreset.c, startup/linkcmds.lpc2478, startup/linkcmds.lpc2478_ncs, startup/linkcmds.lpc2478_ncs_ram: New files. * startup/bspstart.c: Added EMC initialization. Changes for ROM boot.
Diffstat (limited to 'c/src/lib/libbsp/arm/shared/start/start.S')
-rw-r--r--c/src/lib/libbsp/arm/shared/start/start.S111
1 files changed, 56 insertions, 55 deletions
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S
index 2677222ffc..26e5c72747 100644
--- a/c/src/lib/libbsp/arm/shared/start/start.S
+++ b/c/src/lib/libbsp/arm/shared/start/start.S
@@ -27,14 +27,7 @@
/* Global symbols */
.globl start
-
-.globl Reset_Handler
-.globl Undefined_Handler
.globl SWI_Handler
-.globl Prefetch_Handler
-.globl Abort_Handler
-.globl IRQ_Handler
-.globl FIQ_Handler
/* Program Status Register definitions */
@@ -49,9 +42,61 @@
.equ PSR_F, 0x40
.equ PSR_T, 0x20
+.section ".entry"
+
+/*
+ * This is the exception vector table and the pointers to the default
+ * exceptions handlers.
+ */
+
+vector_block:
+
+ ldr pc, handler_addr_reset
+ ldr pc, handler_addr_undef
+ ldr pc, handler_addr_swi
+ ldr pc, handler_addr_prefetch
+ ldr pc, handler_addr_abort
+
+ /* Program signature checked by boot loader */
+ .word 0xb8a06f58
+
+ ldr pc, handler_addr_irq
+ ldr pc, handler_addr_fiq
+
+handler_addr_reset:
+
+ .word start
+
+handler_addr_undef:
+
+ .word twiddle
+
+handler_addr_swi:
+
+ .word twiddle
+
+handler_addr_prefetch:
+
+ .word twiddle
+
+handler_addr_abort:
+
+ .word twiddle
+
+handler_addr_reserved:
+
+ .word twiddle
+
+handler_addr_irq:
+
+ .word twiddle
+
+handler_addr_fiq:
+
+ .word twiddle
+
/* Start entry */
-.section ".entry"
start:
/*
@@ -112,7 +157,7 @@ start:
* vectors and the pointers to the default exception handlers.
*/
- mov r0, #0
+ ldr r0, =bsp_section_vector_start
adr r1, vector_block
ldmia r1!, {r2-r9}
stmia r0!, {r2-r9}
@@ -131,52 +176,8 @@ start:
/* Spin forever */
-twiddle:
-
- b twiddle
-
-/*
- * This is the exception vector table and the pointers to the default
- * exceptions handlers.
- */
-
-vector_block:
-
- ldr pc, Reset_Handler
- ldr pc, Undefined_Handler
- ldr pc, SWI_Handler
- ldr pc, Prefetch_Handler
- ldr pc, Abort_Handler
- nop
- ldr pc, IRQ_Handler
- ldr pc, FIQ_Handler
-
-Reset_Handler:
-
- b bsp_reset
-
-Undefined_Handler:
-
- b Undefined_Handler
-
SWI_Handler:
- b SWI_Handler
-
-Prefetch_Handler:
-
- b Prefetch_Handler
-
-Abort_Handler:
-
- b Abort_Handler
-
- nop
-
-IRQ_Handler:
-
- b IRQ_Handler
-
-FIQ_Handler:
+twiddle:
- b FIQ_Handler
+ b twiddle