📄 pacfiq.s
字号:
/* ------------------------------------------------------------------------ *//* Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS *//* プロセッサ藐据步コンポ〖ネント (ARM gcc脱) *//* FIQ毋嘲ハンドラ *//* *//* Copyright (C) 1998-2002 by Project HOS *//* http://sourceforge.jp/projects/hos/ *//* ------------------------------------------------------------------------ */#include "pacarm.inc" .text .align 4 .global _HOS_FiqHandler/************************************************ FIQ ハンドラ*************************************************/ .extern hos_arm_sta_fiq /* FIQの介袋步借妄 */ .extern hos_arm_end_fiq /* FIQの姜位借妄 */ .extern kernel_sta_int /* 充り哈み倡幌借妄 */ .extern kernel_end_int /* 充り哈み姜位借妄 */ .extern kernel_exe_int /* 充り哈み借妄の悸乖 */ .extern kernel_int_sp /* 充り哈み脱スタックアドレス */ .extern kernel_int_cnt /* 充り哈みネスト搀眶 */ .extern kernel_int_ssp /* 充り哈み箕スタック锣闰 */ _HOS_FiqHandler: sub lr, lr, #4 /* リタ〖ンアドレス换叫 */ /* Systemモ〖ドに败乖してレジスタ锣闰 */ mov r13, #(I_Bit | F_Bit | Mode_SYS) msr cpsr_csxf, r13 stmfd sp!, {r1-r3, ip, lr} /* 绕脱レジスタ锣闰 */ /* FIQモ〖ドに提ってspsr瘦赂 */ mov r1, #(I_Bit | F_Bit | Mode_FIQ) msr cpsr_c, r1 mrs r1, spsr /* spsr 艰り叫し */ mov r2, lr /* 充り哈み牲耽黎瘦赂 */ /* USRモ〖ドに败乖 */ mov r3, #(I_Bit | F_Bit | 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_fiq /* FIQ倡幌借妄(充哈み戎规艰评) */ bl kernel_exe_int /* 充り哈み借妄悸乖 */ bl hos_arm_end_fiq /* FIQ姜位借妄 */ /* スタックの牲耽 */ ldr r0, =kernel_int_ssp ldr sp, [r0] /* スタックポインタを牲耽 */ /* 充り哈みネストカウントデクリメント */ ldr r0, =kernel_int_cnt mov r1, #0 str r1, [r0] /* 充り哈みネストカウンタクリア */ /* 觅变ディスパッチ悸乖 */ bl kernel_end_int /* 觅变ディスパッチ悸乖 */ /* 充り哈みからの牲耽 */ReturnInt: .extern 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_fiq /* FIQ倡幌借妄(充哈み戎规艰评) */ bl kernel_exe_int /* 充り哈み借妄悸乖 */ bl hos_arm_end_fiq /* FIQ姜位借妄 */ /* 充り哈みネストカウントデクリメント */ 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 + -