int-handler.s

来自「这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自」· S 代码 · 共 114 行

S
114
字号
/* * int-handler.S * * Based on the cobalt handler. */#include <asm/asm.h>#include <asm/mipsregs.h>#include <asm/addrspace.h>#include <asm/regdef.h>#include <asm/stackframe.h>/* * galileo_handle_int - *      We check for the timer first, then check PCI ints A and D. *      Then check for serial IRQ and fall through. */		.align	5		.set	reorder		.set	noat		NESTED(galileo_handle_int, PT_SIZE, sp)		SAVE_ALL		CLI		.set	at		mfc0	t0,CP0_CAUSE		mfc0	t2,CP0_STATUS		and	t0,t2		andi	t1,t0,STATUSF_IP4 /* int2 hardware line (timer) */		bnez	t1,ll_galileo_irq		andi	t1,t0,STATUSF_IP2 /* int0 hardware line */		bnez	t1,ll_pci_intA		andi	t1,t0,STATUSF_IP5 /* int3 hardware line */		bnez	t1,ll_pci_intD		andi	t1,t0,STATUSF_IP6 /* int4 hardware line */		bnez	t1,ll_serial_irq		andi	t1,t0,STATUSF_IP7 /* compare int */		bnez	t1,ll_compare_irq		nop    /* wrong alarm or masked ... */		j	spurious_interrupt		nop		END(galileo_handle_int)		.align	5		.set	reorderll_galileo_irq:		li	a0,4		move	a1,sp		jal	do_IRQ		nop		j	ret_from_irq		nop		.align	5		.set	reorderll_compare_irq:		li 	a0,7		move	a1,sp		jal	do_IRQ		nop		j	ret_from_irq		nop		.align	5		.set	reorderll_pci_intA:		move	a0,sp		jal	pci_intA		nop		j	ret_from_irq		nop#if 0		.align	5		.set	reorderll_pci_intB:		move 	a0,sp		jal	pci_intB		nop		j	ret_from_irq		nop		.align	5		.set	reorderll_pci_intC:		move 	a0,sp		jal	pci_intC		nop		j	ret_from_irq		nop#endif		.align	5		.set	reorderll_pci_intD:		move 	a0,sp		jal	pci_intD		nop		j	ret_from_irq		nop		.align	5		.set	reorderll_serial_irq:		li	a0,6		move	a1,sp		jal	do_IRQ		nop		j	ret_from_irq		nop

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?