📄 threadx_cpus.s
字号:
;/**************************************************************************/
;/* */
;/* only for 32bit mode and dosn't support interrupt nesting */
;/* */
;/* File name: threadX_cpu.s */
;/* Last modified Date: 2008-03-28 */
;/* Last Version: 0.01 */
;/* Descriptions: asm file for armtarget */
;/* QQ: 307102293 */
;/* ENAIL: wodexinxiang1949@163.com */
;/* */
;/**************************************************************************/
;/* Include necessary system files. */
INCLUDE option.inc
CODE32
AREA thread,CODE,READONLY
EXTERN __irq_handle
EXTERN __ptx_sys_statck
EXTERN __ptx_svc_statck
EXTERN __ptx_irq_statck
EXTERN __ptx_fiq_statck
EXTERN __ptx_about_statck
EXTERN __ptx_undef_statck
EXTERN _tx_thread_current_ptr
EXTERN _tx_thread_execute_ptr
EXTERN _tx_thread_system_stack_ptr
EXTERN __ptx_sys_statck
EXTERN __ptx_svc_statck
EXTERN __tx_thread_contex_save
EXTERN __tx_thread_contex_restore
EXTERN __tx_thread_preempt_check
GLOBAL __tx_thread_swi_disable_irq
GLOBAL __tx_thread_swi_enable_irq
GLOBAL __tx_thread_swi_schedule
GLOBAL __tx_thread_swi_system_return
GLOBAL __tx_initialize_low_level
GLOBAL __tx_thread_restore
GLOBAL __thread_irq_handle
GLOBAL __thread_swi_handle
;/**************************************************************************/
;/* */
;/* FUNCTION RELEASE */
;/* */
;/* __thread_swi_handle */
;/* 3.0a */
;/* AUTHOR */
;/* */
;/* */
;/* */
;/* DESCRIPTION */
;/* */
;/* This was called by swi vector. execute thread schedu here */
;/* */
;/* INPUT */
;/* */
;/* None */
;/* */
;/* OUTPUT */
;/* */
;/* None */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* CALLED BY */
;/* */
;/* swi vector */
;/* */
;/* RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/* */
;/**************************************************************************/
__thread_swi_handle
LDR SP, =__ptx_svc_statck
LDR SP, [SP]
CMP R0, #4
LDRLO PC, [PC, R0, LSL #2]
B .
SwiFunction
DCD __tx_thread_swi_disable_irq
DCD __tx_thread_swi_enable_irq
DCD __tx_thread_swi_schedule
DCD __tx_thread_swi_system_return
;/**************************************************************************/
;/* */
;/* FUNCTION RELEASE */
;/* */
;/* __tx_thread_swi_disable_irq */
;/* 3.0a */
;/* AUTHOR */
;/* */
;/* */
;/* */
;/* DESCRIPTION */
;/* */
;/* Disable interrupt, because irq havn't been managed, just irq was */
;/* disable */
;/* */
;/* INPUT */
;/* */
;/* None */
;/* */
;/* OUTPUT */
;/* */
;/* register of cpsr befor break */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* CALLED BY */
;/* */
;/* user codes */
;/* */
;/* RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/* */
;/**************************************************************************/
__tx_thread_swi_disable_irq
STMFD SP!, {LR}
MRS R0, SPSR
ORR R1, R0, #NO_IRQ ; 设置禁止中断标识
MSR SPSR_cxsf, R1
LDMFD SP!, {PC}^ ; 退出
;/**************************************************************************/
;/* */
;/* FUNCTION RELEASE */
;/* */
;/* __tx_thread_swi_disable_irq */
;/* 3.0a */
;/* AUTHOR */
;/* */
;/* */
;/* */
;/* DESCRIPTION */
;/* */
;/* Disable interrupt, because irq havn't been managed, just irq was */
;/* disable */
;/* */
;/* INPUT */
;/* */
;/* R1 register of cpsr befor break */
;/* */
;/* OUTPUT */
;/* */
;/* None */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* CALLED BY */
;/* */
;/* user codes */
;/* */
;/* RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/* */
;/**************************************************************************/
__tx_thread_swi_enable_irq
STMFD SP!, {LR}
MSR SPSR_cxsf, R1
LDMFD SP!, {PC}^ ; 退出
;/**************************************************************************/
;/* */
;/* FUNCTION RELEASE */
;/* */
;/* __tx_thread_swi_system_return */
;/* 3.0a */
;/* AUTHOR */
;/* */
;/* */
;/* */
;/* DESCRIPTION */
;/* */
;/* Save contex and switch to a new Thread, */
;/* */
;/* INPUT */
;/* */
;/* None */
;/* */
;/* OUTPUT */
;/* */
;/* None */
;/* */
;/* CALLS */
;/* */
;/* __tx_thread_contex_restore */ */
;/* */
;/* CALLED BY */
;/* */
;/* core */
;/* */
;/* RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/* */
;/**************************************************************************/
__tx_thread_swi_system_return
MRS R0, SPSR
MOV R1, LR
MSR CPSR_cxsf, #(Mode_SYS | NO_IRQ)
STMFD SP!, {R1} ; PC_pre
STMFD SP!, {R0-R12, LR} ; reg
STMFD SP!, {R0} ; cpsr
LDR R0, =_tx_thread_current_ptr
LDR R0, [R0]
STR SP, [R0, #8]
;LDR PC, =__tx_thread_restore
;/**************************************************************************/
;/* */
;/* FUNCTION RELEASE */
;/* */
;/* __tx_thread_restore */
;/* 3.0a */
;/* AUTHOR */
;/* */
;/* */
;/* */
;/* DESCRIPTION */
;/* */
;/* Exectu thread with high priority, */
;/* */
;/* INPUT */
;/* */
;/* None */
;/* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -