📄 pacint.s
字号:
/* ------------------------------------------------------------------------ *//* Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS *//* プロセッサ藐据步コンポ〖ネント (泣惟 SH4脱) *//* 充り哈みハンドラ *//* *//* *//* Copyright (C) 1998-2002 by Project HOS *//* http://sourceforge.jp/projects/hos/ *//* ------------------------------------------------------------------------ */ .global __exception_handler/* 办忍毋嘲ハンドラ */ .text .align 2__exception_handler: mov.l expevt_adr,r4 stc spc,r5 stc ssr,r6 mov.l exception_hdr_adr,r0 jsr @r0 mov.l @r4,r4 .align 2expevt_adr: .long 0xff000024 /* 办忍毋嘲レジスタ */exception_hdr_adr: .long _exception_hdr/* TLBミス毋嘲ハンドラ */ .text .org __exception_handler+0x300__tlb_mis_handler: bra __exception_handler nop/* 充り哈み毋嘲ハンドラ */ .text .org __exception_handler+0x500__interrupt_handler: stc.l ssr,@-r15 stc.l spc,@-r15 mov.l r4,@-r15 /* 充り哈み戎规 = ( 充り哈み祸据レジスタ >> 5 ) - 16 */ mov.l intevt_adr,r4 mov.l @r4,r4 shlr2 r4 shlr2 r4 shlr r4 add #-16,r4 /* レジスタ锣闰(r0-r1) */ mov.l r0,@-r15 mov.l r1,@-r15 /* 碰澈充り哈みのマスクを瘦赂 */ mov.l int_pri_tbl_adr,r0 mov.b @(r0,r4),r0 shll2 r0 shll2 r0 mov.l imsk_addr,r1 mov.l r0,@r1 /* レジスタ瘦赂(r2-r7,mach,macl,pr) */ mov.l r2,@-r15 mov.l r3,@-r15 mov.l r5,@-r15 mov.l r6,@-r15 mov.l r7,@-r15 sts.l mach,@-r15 sts.l macl,@-r15 sts.l pr,@-r15 /* 驴脚充り哈み冉年 */ mov.l int_cnt_addr,r1 mov.l @r1,r0 cmp/eq #0,r0 bf/s int_multi add #1,r0 /* 帽迫充り哈み箕 */ mov.l r0,@r1 /* 充り哈みネスト猛を肋年 */ /* スタック掐れ仑え */ mov.l save_sp_addr,r0 mov.l r15,@r0 /* 附哼のスタックを锣闰 */ mov.l int_sp_addr,r0 mov.l @r0,r15 /* 充り哈み脱スタックを肋年 */ mov.l r4,@-r15 /* 充り哈み戎规を锣闰 */ /* 充り哈み倡幌借妄钙び叫し */ mov.l sta_int_addr,r1 jsr @r1 nop /* 充り哈み悸乖借妄钙び叫し */ mov.l exe_int_addr,r1 jsr @r1 mov.l @r15+,r4 /* 充り哈み戎规を苞眶とする */ /* スタックの牲耽 */ mov.l save_sp_addr,r0 mov.l @r0,r15 /* 充り哈みカウンタのクリア */ mov.l int_cnt_addr,r1 xor r0,r0 mov.l r0,@r1 /* ベ〖スマスク猛に提す */ mov.l imsk_base_addr,r0 mov.l @r0,r1 mov.l imsk_addr,r0 mov.l r1,@r0 /* 充り哈み姜位借妄钙び叫し */ mov.l end_int_addr,r1 jsr @r1 nop /* レジスタ牲耽 */ lds.l @r15+,pr lds.l @r15+,macl lds.l @r15+,mach mov.l @r15+,r7 mov.l @r15+,r6 mov.l @r15+,r5 mov.l @r15+,r3 mov.l @r15+,r2 mov.l @r15+,r1 mov.l @r15+,r0 mov.l @r15+,r4 ldc.l @r15+,spc ldc.l @r15+,ssr rte nop /* 驴脚充り哈み借妄 */int_multi: mov.l r0,@r1 /* 充り哈みネスト猛を肋年 */ /* 充り哈み悸乖借妄钙び叫し */ mov.l exe_int_addr,r1 jsr @r1 /* 充り哈み戎规を苞眶とする */ nop /* 充り哈みカウンタの负换 */ mov.l int_cnt_addr,r1 mov.l @r1,r0 add #-1,r0 mov.l r0,@r1 /* レジスタ牲耽 */ lds.l @r15+,pr lds.l @r15+,macl lds.l @r15+,mach mov.l @r15+,r7 mov.l @r15+,r6 mov.l @r15+,r5 mov.l @r15+,r3 mov.l @r15+,r2 mov.l @r15+,r1 mov.l @r15+,r0 mov.l @r15+,r4 ldc.l @r15+,spc ldc.l @r15+,ssr rte nop .align 2imsk_addr: .long _hospac_sh_imsk /* 充り哈みマスク */imsk_base_addr: .long _hospac_sh_imsk_base /* 充り哈みマスクベ〖ス猛 */int_cnt_addr: .long _kernel_int_cnt /* 充り哈みネスト搀眶 */save_sp_addr: .long _kernel_int_ssp /* 充り哈み脱スタックポインタ锣闰 */int_sp_addr: .long _kernel_int_sp /* 充り哈み脱スタックポインタ */sta_int_addr: .long _kernel_sta_int /* 充り哈み倡幌借妄 */end_int_addr: .long _kernel_end_int /* 充り哈み姜位借妄 */exe_int_addr: .long _kernel_exe_int /* 充り哈み悸乖借妄 */int_pri_tbl_adr: .long _int_pri_tbl /* UB int_pri_tbl[] */ /* 充り哈み庭黎界疤のテ〖ブル */intevt_adr: .long 0xff000028 /* 充り哈み祸据レジスタ */ .end/* ------------------------------------------------------------------------ *//* Copyright (C) 1998-2002 by Project HOS *//* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -