61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/*
 | 
						|
 * arch/arm/mach-ixp2000/include/mach/entry-macro.S
 | 
						|
 *
 | 
						|
 * Low-level IRQ helper macros for IXP2000-based 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 <mach/irqs.h>
 | 
						|
 | 
						|
		.macro  disable_fiq
 | 
						|
		.endm
 | 
						|
 | 
						|
		.macro  get_irqnr_preamble, base, tmp
 | 
						|
		.endm
 | 
						|
 | 
						|
		.macro  arch_ret_to_user, tmp1, tmp2
 | 
						|
		.endm
 | 
						|
 | 
						|
		.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
 | 
						|
 | 
						|
		mov	\irqnr, #0x0              @clear out irqnr as default
 | 
						|
                mov	\base, #0xfe000000
 | 
						|
		orr	\base, \base, #0x00e00000
 | 
						|
		orr	\base, \base, #0x08
 | 
						|
		ldr	\irqstat, [\base]         @ get interrupts
 | 
						|
 | 
						|
		cmp	\irqstat, #0
 | 
						|
		beq	1001f
 | 
						|
 | 
						|
		clz     \irqnr, \irqstat
 | 
						|
		mov     \base, #31
 | 
						|
		subs    \irqnr, \base, \irqnr
 | 
						|
 | 
						|
		/*
 | 
						|
		 * We handle PCIA and PCIB here so we don't have an
 | 
						|
		 * extra layer of code just to check these two bits.
 | 
						|
		 */
 | 
						|
		cmp	\irqnr, #IRQ_IXP2000_PCI
 | 
						|
		bne	1001f
 | 
						|
 | 
						|
		mov	\base, #0xfe000000
 | 
						|
		orr	\base, \base, #0x00c00000
 | 
						|
		orr	\base, \base, #0x00000100
 | 
						|
		orr	\base, \base, #0x00000058
 | 
						|
		ldr	\irqstat, [\base]
 | 
						|
 | 
						|
		mov	\tmp, #(1<<26)
 | 
						|
		tst	\irqstat, \tmp
 | 
						|
		movne	\irqnr, #IRQ_IXP2000_PCIA
 | 
						|
		bne	1001f
 | 
						|
 | 
						|
		mov	\tmp, #(1<<27)
 | 
						|
		tst	\irqstat, \tmp
 | 
						|
		movne	\irqnr, #IRQ_IXP2000_PCIB
 | 
						|
 | 
						|
1001:
 | 
						|
		.endm
 | 
						|
 |