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

📄 entry-macro.s

📁 linux-2.6.15.6
💻 S
字号:
/* * include/asm-arm/arch-realview/entry-macro.S * * Low-level IRQ helper macros for RealView platforms * * This file is licensed under  the terms of the GNU General Public * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. */#include <asm/hardware/gic.h>		.macro	disable_fiq		.endm		/*		 * The interrupt numbering scheme is defined in the		 * interrupt controller spec.  To wit:		 *		 * Interrupts 0-15 are IPI		 * 16-28 are reserved		 * 29-31 are local.  We allow 30 to be used for the watchdog.		 * 32-1020 are global		 * 1021-1022 are reserved		 * 1023 is "spurious" (no interrupt)		 *		 * For now, we ignore all local interrupts so only return an interrupt if it's		 * between 30 and 1020.  The test_for_ipi routine below will pick up on IPIs.		 *		 * A simple read from the controller will tell us the number of the highest                 * priority enabled interrupt.  We then just need to check whether it is in the		 * valid range for an IRQ (30-1020 inclusive).		 */		.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp		ldr     \base, =IO_ADDRESS(REALVIEW_GIC_CPU_BASE)		ldr     \irqstat, [\base, #GIC_CPU_INTACK] /* bits 12-10 = src CPU, 9-0 = int # */		ldr	\tmp, =1021		bic     \irqnr, \irqstat, #0x1c00		cmp     \irqnr, #29		cmpcc	\irqnr, \irqnr		cmpne	\irqnr, \tmp		cmpcs	\irqnr, \irqnr		.endm		/* We assume that irqstat (the raw value of the IRQ acknowledge		 * register) is preserved from the macro above.		 * If there is an IPI, we immediately signal end of interrupt on the		 * controller, since this requires the original irqstat value which		 * we won't easily be able to recreate later.		 */		.macro test_for_ipi, irqnr, irqstat, base, tmp		bic	\irqnr, \irqstat, #0x1c00		cmp	\irqnr, #16		strcc	\irqstat, [\base, #GIC_CPU_EOI]		cmpcs	\irqnr, \irqnr		.endm		/* As above, this assumes that irqstat and base are preserved.. */		.macro test_for_ltirq, irqnr, irqstat, base, tmp		bic	\irqnr, \irqstat, #0x1c00		mov 	\tmp, #0		cmp	\irqnr, #29		moveq	\tmp, #1		streq	\irqstat, [\base, #GIC_CPU_EOI]		cmp	\tmp, #0		.endm

⌨️ 快捷键说明

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