aboutsummaryrefslogtreecommitdiffstats
path: root/demos/ARM7-LPC214x-GCC/chcore2.s
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-11 12:01:24 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-11 12:01:24 +0000
commit9aaaebf0e2f93a70e725f9a4c0598bc636a78e38 (patch)
tree1b01465c2149c8812c9cbc6189d42a7f85df287f /demos/ARM7-LPC214x-GCC/chcore2.s
parentb797fc9591a6ea6ae11495142218e82fed5a69b2 (diff)
downloadChibiOS-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.s19
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.