Blame view

kernel/linux-rt-4.4.41/arch/arm/include/asm/entry-macro-multi.S 687 Bytes
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  #include <asm/assembler.h>
  
  /*
   * Interrupt handling.  Preserves r7, r8, r9
   */
  	.macro	arch_irq_handler_default
  	get_irqnr_preamble r6, lr
  1:	get_irqnr_and_base r0, r2, r6, lr
  	movne	r1, sp
  	@
  	@ routine called with r0 = irq number, r1 = struct pt_regs *
  	@
  	badrne	lr, 1b
  	bne	asm_do_IRQ
  
  #ifdef CONFIG_SMP
  	/*
  	 * XXX
  	 *
  	 * this macro assumes that irqstat (r2) and base (r6) are
  	 * preserved from get_irqnr_and_base above
  	 */
  	ALT_SMP(test_for_ipi r0, r2, r6, lr)
  	ALT_UP_B(9997f)
  	movne	r1, sp
  	badrne	lr, 1b
  	bne	do_IPI
  #endif
  9997:
  	.endm
  
  	.macro	arch_irq_handler, symbol_name
  	.align	5
  	.global \symbol_name
  \symbol_name:
  	mov	r8, lr
  	arch_irq_handler_default
  	ret	r8
  	.endm