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

📄 int-handler.s

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 S
字号:
/* * arch/mips/cobalt/int-handler.S */#include <asm/asm.h>#include <asm/mipsconfig.h>#include <asm/mipsregs.h>#include <asm/cobalt.h>#include <asm/irq.h>#include <asm/regdef.h>#include <asm/stackframe.h>/* * cobalt_handle_int: Interrupt handler for the twenty-seven board. */		.align	5		.set	noreorder		NESTED(cobalt_handle_int, PT_SIZE, ra)		.set	noat		SAVE_ALL		REG_S	sp,PT_OR2(sp)		CLI		.set	at		mfc0	t0,CP0_CAUSE		mfc0	t1,CP0_STATUS		and	t0,t1		xor	t1,t0		mtc0	t1,CP0_STATUS	# mask all active ints		/* Such a kind of cascade is optimal for R5000 */		andi	t1,t0,STATUSF_IP2		bnez	t1,ll_galileo_irq		 andi	t1,t0,STATUSF_IP3		bnez	t1,ll_ethernet0_irq/* * This should be conditional, and not used for the cube-1, but * there is not a config flag that is useful. */			 andi	t1,t0,STATUSF_IP4		bnez	t1,ll_ethernet1_irq/* #endif  */		 andi	t1,t0,STATUSF_IP6		bnez	t1,ll_via_irq		 andi	t1,t0,STATUSF_IP5		bnez	t1,ll_serial_irq		 andi	t1,t0,STATUSF_IP7		bnez	t1,ll_pci_irq		  nop		/* wrong alarm ... */		j	spurious_interrupt		 nop		END(cobalt_handle_int)			.align	5		.set	reorderll_galileo_irq:	move	a0,sp		INC_INTR_COUNT(s1,s2)		jal	galileo_irq		  nop		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop		.align	5		.set	reorderll_via_irq:	move	a0,sp		INC_INTR_COUNT(s1,s2)		jal	via_irq		  nop		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop		.align	5		.set	reorderll_ethernet0_irq:		INC_INTR_COUNT(s1,s2)		mfc0	s0,CP0_STATUS		# mask interrupt		ori	t0,s0,(STATUSF_IP3 | STATUSF_IP4)		xori	t0,(STATUSF_IP3 | STATUSF_IP4)		mtc0	t0,CP0_STATUS		li	a0,4		move	a1,sp		jal     do_IRQ		  nop		mtc0	s0,CP0_STATUS		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop		.align	5		.set	reorderll_serial_irq:	li	a0,7		INC_INTR_COUNT(s1,s2)		move	a1,sp		jal     do_IRQ		  nop		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop		.align	5		.set	reorderll_ethernet1_irq:		INC_INTR_COUNT(s1,s2)		mfc0	s0,CP0_STATUS		# mask interrupt		ori	t0,s0, (STATUSF_IP3 | STATUSF_IP4)		xori	t0,(STATUSF_IP3 | STATUSF_IP4)		mtc0	t0,CP0_STATUS		li	a0,13		move	a1,sp		jal     do_IRQ		  nop		mtc0	s0,CP0_STATUS		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop	#	# This is pretty weird.  The "pci" interrupt on the hardware	# skematic is from the PCI side of the galileo, so we would	# only get interrupts here if WE write the control register	# that normally enables the cpu to send interrupts to the PCI.	#	# If you want to interrupt a PCI card, look elsewhere.	#		.align	5		.set	reorderll_pci_irq:	li	a0,7		INC_INTR_COUNT(s1,s2)		move	a1,sp		jal     do_IRQ		  nop		DEC_INTR_COUNT(s1,s2)		j	ret_from_irq		  nop

⌨️ 快捷键说明

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