⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pacint.s

📁 itron
💻 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	2
expevt_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	2
imsk_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 + -