| 
									
										
										
										
											2011-06-13 06:46:44 +01:00
										 |  |  | #include <asm/assembler.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Interrupt handling.  Preserves r7, r8, r9 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 	.macro	arch_irq_handler_default
 | 
					
						
							| 
									
										
										
										
											2011-06-26 10:34:02 +01:00
										 |  |  | 	get_irqnr_preamble r6, lr | 
					
						
							|  |  |  | 1:	get_irqnr_and_base r0, r2, r6, lr | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	movne	r1, sp | 
					
						
							|  |  |  | 	@
 | 
					
						
							|  |  |  | 	@ routine called with r0 = irq number, r1 = struct pt_regs *
 | 
					
						
							|  |  |  | 	@
 | 
					
						
							|  |  |  | 	adrne	lr, BSYM(1b) | 
					
						
							|  |  |  | 	bne	asm_do_IRQ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_SMP | 
					
						
							|  |  |  | 	/* | 
					
						
							|  |  |  | 	 * XXX | 
					
						
							|  |  |  | 	 * | 
					
						
							| 
									
										
										
										
											2011-06-26 10:34:02 +01:00
										 |  |  | 	 * this macro assumes that irqstat (r2) and base (r6) are | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	 * preserved from get_irqnr_and_base above | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2011-06-26 10:34:02 +01:00
										 |  |  | 	ALT_SMP(test_for_ipi r0, r2, r6, lr) | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	ALT_UP_B(9997f) | 
					
						
							| 
									
										
										
										
											2011-01-06 22:31:35 +00:00
										 |  |  | 	movne	r1, sp | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	adrne	lr, BSYM(1b) | 
					
						
							|  |  |  | 	bne	do_IPI | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 9997: | 
					
						
							|  |  |  | 	.endm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	.macro	arch_irq_handler, symbol_name | 
					
						
							|  |  |  | 	.align	5
 | 
					
						
							|  |  |  | 	.global \symbol_name | 
					
						
							|  |  |  | \symbol_name: | 
					
						
							| 
									
										
										
										
											2011-06-26 10:34:02 +01:00
										 |  |  | 	mov	r8, lr | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	arch_irq_handler_default | 
					
						
							| 
									
										
										
										
											2011-06-26 10:34:02 +01:00
										 |  |  | 	mov     pc, r8 | 
					
						
							| 
									
										
										
										
											2010-12-22 13:20:08 +01:00
										 |  |  | 	.endm |