From e571ffd6484806851a4a37cd791508cfce122d40 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 14 Oct 2014 12:37:35 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7395 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/rt/ports/ARM/chcore.h | 4 ++-- os/rt/ports/ARM/compilers/GCC/chcoreasm.s | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'os/rt/ports') 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) -- cgit v1.2.3