📄 pacirq.s
字号:
; --------------------------------------------------------------------------- ; Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS ; プロセッサ藐据步コンポ〖ネント (ARM脱) ; IRQ毋嘲ハンドラ ; ; Copyright (C) 1998-2002 by Project HOS ; http://sourceforge.jp/projects/hos/ ; --------------------------------------------------------------------------- INCLUDE pacarm.inc AREA inthdr_code, CODE, READONLY EXPORT _HOS_IrqHandler; ----------------------------------------------; IRQ ハンドラ; ---------------------------------------------- IMPORT hos_arm_sta_irq ; IRQの介袋步借妄 IMPORT hos_arm_end_irq ; IRQの姜位借妄 IMPORT kernel_sta_int ; 充り哈み倡幌借妄 IMPORT kernel_end_int ; 充り哈み姜位借妄 IMPORT kernel_exe_int ; 充り哈み借妄の悸乖 IMPORT kernel_int_sp ; 充り哈み脱スタックアドレス IMPORT kernel_int_cnt ; 充り哈みネスト搀眶 IMPORT kernel_int_ssp ; 充り哈み箕スタック锣闰 _HOS_IrqHandler sub lr, lr, #4 ; リタ〖ンアドレス换叫 ; ---- Systemモ〖ドに败乖してレジスタ锣闰 mov r13, #I_Bit:OR:F_Bit:OR:Mode_SYS msr cpsr_csxf, r13 stmfd sp!, {r1-r3, ip, lr} ; 绕脱レジスタ锣闰 ; ---- IRQモ〖ドに提ってspsr瘦赂 mov r1, #I_Bit:OR:F_Bit:OR:Mode_IRQ msr cpsr_c, r1 mrs r1, spsr ; spsr 艰り叫し mov r2, lr ; 充り哈み牲耽黎瘦赂 ; ---- USRモ〖ドに败乖 mov r3, #I_Bit:OR:F_Bit:OR:Mode_USR msr cpsr_c, r3 ; ---- レジスタ锣闰 stmfd sp!, {r0-r2} ; a1, spsr_irq, lr_irq 瘦赂 ; ---- 驴脚充り哈みチェック ldr r0, =kernel_int_cnt ldr r1, [r0] ; 充り哈みネストカウンタ艰评 cmp r1, #0 add r1, r1, #1 ; 充り哈みネストカウンタインクリメント str r1, [r0] bne MultipleInt ; 驴脚充り哈みなら尸呆 ; ---- スタックの掐れ仑え ldr r0, =kernel_int_ssp str sp, [r0] ; スタックポインタを锣闰 ldr r0, =kernel_int_sp ldr sp, [r0] ; 充り哈み脱スタックを肋年 ; ---- 充り哈み借妄の倡幌 bl kernel_sta_int ; ---- 充り哈み借妄 bl hos_arm_sta_irq ; IRQ倡幌借妄(充哈み戎规艰评) bl kernel_exe_int ; 充り哈み借妄悸乖 bl hos_arm_end_irq ; IRQ姜位借妄 ; ---- スタックの牲耽 ldr r0, =kernel_int_ssp ldr sp, [r0] ; スタックポインタを牲耽 ; ---- 充り哈みネストカウントデクリメント ldr r0, =kernel_int_cnt mov r1, #0 str r1, [r0] ; 充り哈みネストカウンタクリア ; ---- 觅变ディスパッチ悸乖 bl kernel_end_int ; 觅变ディスパッチ悸乖 ; ---- 充り哈みからの牲耽ReturnInt IMPORT pac_arm_swi_ret ldmfd sp!, {r0-r2} ldr r3, =pac_arm_swi_ret stmia r3, {r0-r2} ; 充り哈み牲耽デ〖タ肋年 ldmfd sp!, {r1-r3, ip, lr} ; レジスタ牲耽 mov a1, #2 swi 0x10 ;---- 驴脚充り哈み借妄MultipleInt ; ---- 充り哈み借妄 bl hos_arm_sta_irq ; IRQ倡幌借妄(充哈み戎规艰评) bl kernel_exe_int ; 充り哈み借妄悸乖 bl hos_arm_end_irq ; IRQ姜位借妄 ; ---- 充り哈みネストカウントデクリメント ldr r0, =kernel_int_cnt ldr r1, [r0] sub r1, r1, #1 str r1, [r0] b ReturnInt END; --------------------------------------------------------------------------- ; Copyright (C) 1998-2002 by Project HOS ; ---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -