mirror of https://github.com/rusefi/ChibiOS.git
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13761 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
9f4fea9677
commit
6d831b1378
|
@ -71,14 +71,14 @@ SCB_ICSR SET 0xE000ED04
|
|||
|
||||
EXTERN chThdExit
|
||||
EXTERN chSysHalt
|
||||
EXTERN chSchDoReschedule
|
||||
EXTERN chSchDoPreemption
|
||||
#if CH_DBG_STATISTICS
|
||||
EXTERN _stats_start_measure_crit_thd
|
||||
EXTERN _stats_stop_measure_crit_thd
|
||||
EXTERN __stats_start_measure_crit_thd
|
||||
EXTERN __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
EXTERN _dbg_check_unlock
|
||||
EXTERN _dbg_check_lock
|
||||
EXTERN __dbg_check_unlock
|
||||
EXTERN __dbg_check_lock
|
||||
#endif
|
||||
|
||||
THUMB
|
||||
|
@ -86,8 +86,8 @@ SCB_ICSR SET 0xE000ED04
|
|||
/*
|
||||
* Performs a context switch between two threads.
|
||||
*/
|
||||
PUBLIC _port_switch
|
||||
_port_switch:
|
||||
PUBLIC __port_switch
|
||||
__port_switch:
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r4, r8
|
||||
mov r5, r9
|
||||
|
@ -109,42 +109,42 @@ _port_switch:
|
|||
* Start a thread by invoking its work function.
|
||||
* If the work function returns @p chThdExit() is automatically invoked.
|
||||
*/
|
||||
PUBLIC _port_thread_start
|
||||
_port_thread_start:
|
||||
PUBLIC __port_thread_start
|
||||
__port_thread_start:
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies: b _zombies
|
||||
.zombies: b .zombies
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
* Exception handlers return here for context switching.
|
||||
*/
|
||||
PUBLIC _port_switch_from_isr
|
||||
PUBLIC _port_exit_from_isr
|
||||
_port_switch_from_isr:
|
||||
PUBLIC __port_switch_from_isr
|
||||
PUBLIC __port_exit_from_isr
|
||||
__port_switch_from_isr:
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_start_measure_crit_thd
|
||||
bl __stats_start_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_lock
|
||||
bl __dbg_check_lock
|
||||
#endif
|
||||
bl chSchDoReschedule
|
||||
bl chSchDoPreemption
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
_port_exit_from_isr:
|
||||
__port_exit_from_isr:
|
||||
ldr r2, =SCB_ICSR
|
||||
movs r3, #128
|
||||
#if CORTEX_ALTERNATE_SWITCH
|
||||
|
@ -155,8 +155,8 @@ _port_exit_from_isr:
|
|||
lsls r3, r3, #24
|
||||
str r3, [r2, #0]
|
||||
#endif
|
||||
waithere:
|
||||
b waithere
|
||||
.waithere:
|
||||
b .waithere
|
||||
|
||||
END
|
||||
|
||||
|
|
|
@ -67,21 +67,21 @@ SCB_ICSR EQU 0xE000ED04
|
|||
AREA |.text|, CODE, READONLY
|
||||
|
||||
IMPORT chThdExit
|
||||
IMPORT chSchDoReschedule
|
||||
IMPORT chSchDoPreemption
|
||||
#if CH_DBG_STATISTICS
|
||||
IMPORT _stats_start_measure_crit_thd
|
||||
IMPORT _stats_stop_measure_crit_thd
|
||||
IMPORT __stats_start_measure_crit_thd
|
||||
IMPORT __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
IMPORT _dbg_check_unlock
|
||||
IMPORT _dbg_check_lock
|
||||
IMPORT __dbg_check_unlock
|
||||
IMPORT __dbg_check_lock
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Performs a context switch between two threads.
|
||||
*/
|
||||
EXPORT _port_switch
|
||||
_port_switch PROC
|
||||
EXPORT __port_switch
|
||||
__port_switch PROC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r4, r8
|
||||
mov r5, r9
|
||||
|
@ -104,41 +104,41 @@ _port_switch PROC
|
|||
* Start a thread by invoking its work function.
|
||||
* If the work function returns @p chThdExit() is automatically invoked.
|
||||
*/
|
||||
EXPORT _port_thread_start
|
||||
_port_thread_start PROC
|
||||
EXPORT __port_thread_start
|
||||
__port_thread_start PROC
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies b _zombies
|
||||
.zombies b .zombies
|
||||
ENDP
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
* Exception handlers return here for context switching.
|
||||
*/
|
||||
EXPORT _port_switch_from_isr
|
||||
EXPORT _port_exit_from_isr
|
||||
_port_switch_from_isr PROC
|
||||
EXPORT __port_switch_from_isr
|
||||
EXPORT __port_exit_from_isr
|
||||
__port_switch_from_isr PROC
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_start_measure_crit_thd
|
||||
bl __stats_start_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_lock
|
||||
bl __dbg_check_lock
|
||||
#endif
|
||||
bl chSchDoReschedule
|
||||
bl chSchDoPreemption
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
_port_exit_from_isr
|
||||
ldr r2, =SCB_ICSR
|
||||
|
@ -151,7 +151,7 @@ _port_exit_from_isr
|
|||
lsls r3, r3, #24
|
||||
str r3, [r2, #0]
|
||||
#endif
|
||||
waithere b waithere
|
||||
.waithere b .waithere
|
||||
ENDP
|
||||
|
||||
END
|
||||
|
|
|
@ -71,17 +71,17 @@ ICSR_PENDSVSET SET 0x10000000
|
|||
SECTION .text:CODE:NOROOT(2)
|
||||
|
||||
EXTERN chThdExit
|
||||
EXTERN chSchDoReschedule
|
||||
EXTERN chSchDoPreemption
|
||||
#if CH_DBG_ENABLE_STACK_CHECK && PORT_ENABLE_GUARD_PAGES
|
||||
EXTERN _port_set_region
|
||||
EXTERN __port_set_region
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
EXTERN _stats_start_measure_crit_thd
|
||||
EXTERN _stats_stop_measure_crit_thd
|
||||
EXTERN __stats_start_measure_crit_thd
|
||||
EXTERN __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
EXTERN _dbg_check_unlock
|
||||
EXTERN _dbg_check_lock
|
||||
EXTERN __dbg_check_unlock
|
||||
EXTERN __dbg_check_lock
|
||||
#endif
|
||||
|
||||
THUMB
|
||||
|
@ -89,8 +89,8 @@ ICSR_PENDSVSET SET 0x10000000
|
|||
/*
|
||||
* Performs a context switch between two threads.
|
||||
*/
|
||||
PUBLIC _port_switch
|
||||
_port_switch:
|
||||
PUBLIC __port_switch
|
||||
__port_switch:
|
||||
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
|
||||
#if CORTEX_USE_FPU
|
||||
vpush {s16-s31}
|
||||
|
@ -116,16 +116,16 @@ _port_switch:
|
|||
* Start a thread by invoking its work function.
|
||||
* If the work function returns @p chThdExit() is automatically invoked.
|
||||
*/
|
||||
PUBLIC _port_thread_start
|
||||
_port_thread_start:
|
||||
PUBLIC __port_thread_start
|
||||
__port_thread_start:
|
||||
#if CH_DBG_ENABLE_STACK_CHECK && PORT_ENABLE_GUARD_PAGES
|
||||
bl _port_set_region
|
||||
bl __port_set_region
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY
|
||||
cpsie i
|
||||
|
@ -137,29 +137,29 @@ _port_thread_start:
|
|||
blx r4
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies: b _zombies
|
||||
.zombies: b .zombies
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
* Exception handlers return here for context switching.
|
||||
*/
|
||||
PUBLIC _port_switch_from_isr
|
||||
PUBLIC _port_exit_from_isr
|
||||
_port_switch_from_isr:
|
||||
PUBLIC __port_switch_from_isr
|
||||
PUBLIC __port_exit_from_isr
|
||||
__port_switch_from_isr:
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_start_measure_crit_thd
|
||||
bl __stats_start_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_lock
|
||||
bl __dbg_check_lock
|
||||
#endif
|
||||
bl chSchDoReschedule
|
||||
bl chSchDoPreemption
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
_port_exit_from_isr:
|
||||
__port_exit_from_isr:
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY
|
||||
mov r3, #LWRD SCB_ICSR
|
||||
movt r3, #HWRD SCB_ICSR
|
||||
|
|
|
@ -68,24 +68,24 @@ ICSR_PENDSVSET EQU 0x10000000
|
|||
AREA |.text|, CODE, READONLY
|
||||
|
||||
IMPORT chThdExit
|
||||
IMPORT chSchDoReschedule
|
||||
IMPORT chSchDoPreemption
|
||||
#if CH_DBG_ENABLE_STACK_CHECK && PORT_ENABLE_GUARD_PAGES
|
||||
IMPORT _port_set_region
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
IMPORT _stats_start_measure_crit_thd
|
||||
IMPORT _stats_stop_measure_crit_thd
|
||||
IMPORT __stats_start_measure_crit_thd
|
||||
IMPORT __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
IMPORT _dbg_check_unlock
|
||||
IMPORT _dbg_check_lock
|
||||
IMPORT __dbg_check_unlock
|
||||
IMPORT __dbg_check_lock
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Performs a context switch between two threads.
|
||||
*/
|
||||
EXPORT _port_switch
|
||||
_port_switch PROC
|
||||
EXPORT __port_switch
|
||||
__port_switch PROC
|
||||
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
|
||||
#if CORTEX_USE_FPU
|
||||
vpush {s16-s31}
|
||||
|
@ -112,16 +112,16 @@ _port_switch PROC
|
|||
* Start a thread by invoking its work function.
|
||||
* If the work function returns @p chThdExit() is automatically invoked.
|
||||
*/
|
||||
EXPORT _port_thread_start
|
||||
_port_thread_start PROC
|
||||
EXPORT __port_thread_start
|
||||
__port_thread_start PROC
|
||||
#if CH_DBG_ENABLE_STACK_CHECK && PORT_ENABLE_GUARD_PAGES
|
||||
bl _port_set_region
|
||||
bl __port_set_region
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY
|
||||
cpsie i
|
||||
|
@ -133,30 +133,30 @@ _port_thread_start PROC
|
|||
blx r4
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies b _zombies
|
||||
.zombies b .zombies
|
||||
ENDP
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
* Exception handlers return here for context switching.
|
||||
*/
|
||||
EXPORT _port_switch_from_isr
|
||||
EXPORT _port_exit_from_isr
|
||||
_port_switch_from_isr PROC
|
||||
EXPORT __port_switch_from_isr
|
||||
EXPORT __port_exit_from_isr
|
||||
__port_switch_from_isr PROC
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_start_measure_crit_thd
|
||||
bl __stats_start_measure_crit_thd
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_lock
|
||||
bl __dbg_check_lock
|
||||
#endif
|
||||
bl chSchDoReschedule
|
||||
bl chSchDoPreemption
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK
|
||||
bl _dbg_check_unlock
|
||||
bl __dbg_check_unlock
|
||||
#endif
|
||||
#if CH_DBG_STATISTICS
|
||||
bl _stats_stop_measure_crit_thd
|
||||
bl __stats_stop_measure_crit_thd
|
||||
#endif
|
||||
_port_exit_from_isr
|
||||
__port_exit_from_isr
|
||||
#if CORTEX_SIMPLIFIED_PRIORITY
|
||||
mov r3, #SCB_ICSR :AND: 0xFFFF
|
||||
movt r3, #SCB_ICSR :SHR: 16
|
||||
|
@ -166,7 +166,7 @@ _port_exit_from_isr
|
|||
#else
|
||||
svc #0
|
||||
#endif
|
||||
waithere b waithere
|
||||
.waithere b .waithere
|
||||
ENDP
|
||||
|
||||
END
|
||||
|
|
Loading…
Reference in New Issue