aboutsummaryrefslogtreecommitdiffstats
path: root/os/rt
diff options
context:
space:
mode:
Diffstat (limited to 'os/rt')
-rw-r--r--os/rt/ports/ARM/chcore.h4
-rw-r--r--os/rt/ports/ARM/compilers/GCC/chcoreasm.s22
2 files changed, 17 insertions, 9 deletions
diff --git a/os/rt/ports/ARM/chcore.h b/os/rt/ports/ARM/chcore.h
index bcf27d719..daaea7e02 100644
--- a/os/rt/ports/ARM/chcore.h
+++ b/os/rt/ports/ARM/chcore.h
@@ -307,7 +307,7 @@ struct context {
#if CH_DBG_ENABLE_STACK_CHECK
#define port_switch(ntp, otp) { \
- register struct intctx *r13 asm ("r13"); \
+ register struct port_intctx *r13 asm ("r13"); \
if ((stkalign_t *)(r13 - 1) < otp->p_stklimit) \
chSysHalt("stack overflow"); \
_port_switch_thumb(ntp, otp); \
@@ -320,7 +320,7 @@ struct context {
#if CH_DBG_ENABLE_STACK_CHECK
#define port_switch(ntp, otp) { \
- register struct intctx *r13 asm ("r13"); \
+ register struct port_intctx *r13 asm ("r13"); \
if ((stkalign_t *)(r13 - 1) < otp->p_stklimit) \
chSysHalt("stack overflow"); \
_port_switch_arm(ntp, otp); \
diff --git a/os/rt/ports/ARM/compilers/GCC/chcoreasm.s b/os/rt/ports/ARM/compilers/GCC/chcoreasm.s
index 7c33135bf..18a0772e7 100644
--- a/os/rt/ports/ARM/compilers/GCC/chcoreasm.s
+++ b/os/rt/ports/ARM/compilers/GCC/chcoreasm.s
@@ -219,22 +219,22 @@ _port_irq_common:
bx r0
.code 16
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_lock
+ bl _dbg_check_lock
#endif
bl chSchDoReschedule
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_unlock
+ bl _dbg_check_unlock
#endif
mov lr, pc
bx lr
.code 32
#else /* !defined(THUMB_NO_INTERWORKING) */
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_lock
+ bl _dbg_check_lock
#endif
bl chSchDoReschedule
#if CH_DBG_SYSTEM_STATE_CHECK
- bl dbg_check_unlock
+ bl _dbg_check_unlock
#endif
#endif /* !defined(THUMB_NO_INTERWORKING) */
@@ -258,9 +258,17 @@ _port_irq_common:
.globl _port_thread_start
_port_thread_start:
#if CH_DBG_SYSTEM_STATE_CHECK
- mov r0, #0
- ldr r1, =dbg_lock_cnt
- str r0, [r1]
+#if defined(THUMB_NO_INTERWORKING)
+ add r0, pc, #1
+ bx r0
+ .code 16
+#endif
+ bl _dbg_check_unlock
+#if defined(THUMB_NO_INTERWORKING)
+ mov lr, pc
+ bx lr
+ .code 32
+#endif
#endif
msr CPSR_c, #MODE_SYS
#if defined(THUMB_NO_INTERWORKING)