aboutsummaryrefslogtreecommitdiffstats
path: root/demos/ARM7-LPC214x-GCC/chcore.h
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-17 14:57:44 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-12-17 14:57:44 +0000
commit0bb20d36f4f1c8457416167b399d976d26660611 (patch)
tree9c7419af17e2c81944eaeb7aa230681c0936c707 /demos/ARM7-LPC214x-GCC/chcore.h
parent430010715e7a9af17185412273165674f3b58f20 (diff)
downloadChibiOS-0bb20d36f4f1c8457416167b399d976d26660611.tar.gz
ChibiOS-0bb20d36f4f1c8457416167b399d976d26660611.tar.bz2
ChibiOS-0bb20d36f4f1c8457416167b399d976d26660611.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@142 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/ARM7-LPC214x-GCC/chcore.h')
-rw-r--r--demos/ARM7-LPC214x-GCC/chcore.h31
1 files changed, 26 insertions, 5 deletions
diff --git a/demos/ARM7-LPC214x-GCC/chcore.h b/demos/ARM7-LPC214x-GCC/chcore.h
index 941036830..cc1113c18 100644
--- a/demos/ARM7-LPC214x-GCC/chcore.h
+++ b/demos/ARM7-LPC214x-GCC/chcore.h
@@ -92,7 +92,7 @@ extern void chSysUnlock(void);
#define INT_REQUIRED_STACK 0x10
#else /* !THUMB */
#define INT_REQUIRED_STACK 0
-#endif /* THUMB */
+#endif /* !THUMB */
#define StackAlign(n) ((((n) - 1) | 3) + 1)
#define UserStackSize(n) StackAlign(sizeof(Thread) + \
sizeof(struct intctx) + \
@@ -101,16 +101,37 @@ extern void chSysUnlock(void);
INT_REQUIRED_STACK)
#define WorkingArea(s, n) ULONG32 s[UserStackSize(n) >> 2];
+#ifdef THUMB
+#define chSysIRQEnterI() { \
+ asm(".code 32 \n\t" \
+ "stmfd sp!, {r0-r3, r12, lr} \n\t" \
+ "add r0, pc, #1 \n\t" \
+ "bx r0 \n\t" \
+ ".code 16 \n\t"); \
+}
+
+#define chSysIRQExitI() { \
+ VICVectAddr = 0; \
+ asm("ldr r0, =IrqCommon \n\t" \
+ "bx r0 \n\t"); \
+}
+#else /* !THUMB */
+#define chSysIRQEnterI() { \
+ asm("stmfd sp!, {r0-r3, r12, lr} \n\t"); \
+}
+
+#define chSysIRQExitI() { \
+ asm("b IrqCommon \n\t"); \
+}
+#endif /* !THUMB */
+
/* It requires zero bytes, but better be safe.*/
#define IDLE_THREAD_STACK_SIZE 8
void _IdleThread(void *p) __attribute__((noreturn));
-void chSysHalt(void) __attribute__((noreturn));
+void chSysHalt(void);
void chSysSwitchI(Context *oldp, Context *newp);
void chSysPuts(char *msg);
void threadstart(void);
-void DefFiqHandler(void);
-void DefIrqHandler(void);
-void SpuriousHandler(void);
#endif /* _CHCORE_H_ */