?? irq_rtx.s
字號(hào):
;/*----------------------------------------------------------------------------
; * R T L - K e r n e l
; *----------------------------------------------------------------------------
; * Name: IRQ_RTX.S
; * Purpose: Tick timer interrupt handler
; * Rev.: V3.00 / 17-mar-2006
; *----------------------------------------------------------------------------
; * This code is part of the RealView Run-Time Library.
; * Copyright (c) 2004-2006 KEIL - An ARM Company. All rights reserved.
; *---------------------------------------------------------------------------*/
PRESERVE8 ; 8-Byte aligned Stack
AREA IRQ_Area, CODE, READONLY
ARM
IMPORT os_runtask
IMPORT os_clock_interrupt0
EXPORT os_clock_interrupt
;/* Offsets from the 'struct OS_TCB' */
TCB_TSTACK EQU 36
;/*-------------------------- Tick time IRQ handler --------------------------*/
os_clock_interrupt
STMDB SP!,{R0-R1} ; Save Full Context
STMDB SP,{SP}^ ; User SP
NOP ; After User Bank Register Access
LDMDB SP,{R0}
MRS R1,SPSR ; User CPSR
SUB LR,LR,#0x4
STMDB R0!,{R1,LR} ; Push PC, CPSR
STMDB R0,{LR}^ ; Push User LR
SUB R0,R0,#0x4 ; Write back problem !!
STMDB R0!,{R2-R12} ; Push R12-R2
LDMIA SP!,{R2-R3}
STMDB R0!,{R2-R3} ; Push R1-R0
LDR R1, =os_clock_interrupt0
MOV LR, PC ; Return Address
BX R1
LDMIA R0!,{R4-R11,R12} ; Restore Reduced context
MSR SPSR_cxsf,R12
LDMIA R0!,{R12}
STMDB SP,{R0} ; Set User SP
LDMDB SP,{SP}^
NOP ; After User Bank Register Access
MOVS PC,R12 ; RETI
;/*--------------------------- os_set_env ------------------------------------*/
;/* Fix up runtime environment to fit idle task. It is called after the */
;/* idle task TCB initialization. "p_TCB" identifies the TCB to be used. */
; void os_set_env (P_TCB p_TCB);
EXPORT os_set_env
os_set_env
LDR R0,[R0,#TCB_TSTACK] ; p_TCB in R0
MOV SP,R0
ADD SP,SP,#40 ; ignore default context
BX LR
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -