Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
a09e64fb | 2 | * arch/arm/mach-sa1100/include/mach/entry-macro.S |
1da177e4 LT |
3 | * |
4 | * Low-level IRQ helper macros for SA1100-based platforms | |
5 | * | |
6 | * This file is licensed under the terms of the GNU General Public | |
7 | * License version 2. This program is licensed "as is" without any | |
8 | * warranty of any kind, whether express or implied. | |
9 | */ | |
10 | ||
11 | .macro disable_fiq | |
12 | .endm | |
13 | ||
f80dff9d | 14 | .macro get_irqnr_preamble, base, tmp |
641e7912 RK |
15 | mov \base, #0xfa000000 @ ICIP = 0xfa050000 |
16 | add \base, \base, #0x00050000 | |
f80dff9d DW |
17 | .endm |
18 | ||
19 | .macro arch_ret_to_user, tmp1, tmp2 | |
20 | .endm | |
21 | ||
1da177e4 | 22 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
641e7912 RK |
23 | ldr \irqstat, [\base] @ get irqs |
24 | ldr \irqnr, [\base, #4] @ ICMR = 0xfa050004 | |
1da177e4 LT |
25 | ands \irqstat, \irqstat, \irqnr |
26 | mov \irqnr, #0 | |
27 | beq 1001f | |
28 | tst \irqstat, #0xff | |
29 | moveq \irqstat, \irqstat, lsr #8 | |
30 | addeq \irqnr, \irqnr, #8 | |
31 | tsteq \irqstat, #0xff | |
32 | moveq \irqstat, \irqstat, lsr #8 | |
33 | addeq \irqnr, \irqnr, #8 | |
34 | tsteq \irqstat, #0xff | |
35 | moveq \irqstat, \irqstat, lsr #8 | |
36 | addeq \irqnr, \irqnr, #8 | |
37 | tst \irqstat, #0x0f | |
38 | moveq \irqstat, \irqstat, lsr #4 | |
39 | addeq \irqnr, \irqnr, #4 | |
40 | tst \irqstat, #0x03 | |
41 | moveq \irqstat, \irqstat, lsr #2 | |
42 | addeq \irqnr, \irqnr, #2 | |
43 | tst \irqstat, #0x01 | |
44 | addeqs \irqnr, \irqnr, #1 | |
45 | 1001: | |
46 | .endm | |
47 |