diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-12-11 12:01:24 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-12-11 12:01:24 +0000 |
commit | 9aaaebf0e2f93a70e725f9a4c0598bc636a78e38 (patch) | |
tree | 1b01465c2149c8812c9cbc6189d42a7f85df287f /demos/ARM7-LPC214x-GCC/chcore2.s | |
parent | b797fc9591a6ea6ae11495142218e82fed5a69b2 (diff) | |
download | ChibiOS-9aaaebf0e2f93a70e725f9a4c0598bc636a78e38.tar.gz ChibiOS-9aaaebf0e2f93a70e725f9a4c0598bc636a78e38.tar.bz2 ChibiOS-9aaaebf0e2f93a70e725f9a4c0598bc636a78e38.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@136 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/ARM7-LPC214x-GCC/chcore2.s')
-rw-r--r-- | demos/ARM7-LPC214x-GCC/chcore2.s | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/demos/ARM7-LPC214x-GCC/chcore2.s b/demos/ARM7-LPC214x-GCC/chcore2.s index 2a7888387..7c9d1d0d7 100644 --- a/demos/ARM7-LPC214x-GCC/chcore2.s +++ b/demos/ARM7-LPC214x-GCC/chcore2.s @@ -72,12 +72,25 @@ AbortHandler: .weak FiqHandler
.globl FiqHandler
FiqHandler:
+ b halt32
+
+.weak chSysHalt
#ifdef THUMB_NO_INTERWORKING
- ldr r0, =chSysHalt
+.code 16
+.globl chSysHalt
+chSysHalt:
+ mov r0, pc
bx r0
+.code 32
#else
- b chSysHalt
+.globl chSysHalt
+chSysHalt:
#endif
+halt32:
+ mrs r0, CPSR
+ orr r0, #I_BIT | F_BIT
+ msr CPSR_c, r0
+.loop: b .loop
#ifdef THUMB
.globl chSysLock
@@ -157,7 +170,7 @@ IrqCommon: #endif
cmp r0, #0 // Simply returns if a
ldmeqfd sp!, {r0-r3, r12, lr} // reschedule is not
- subeqs pc, lr, #4 // required.
+ subeqs pc, lr, #4 // required.
// Saves the IRQ mode registers in the system stack.
ldmfd sp!, {r0-r3, r12, lr} // IRQ stack now empty.
|