Merge git://git.infradead.org/~dedekind/ubi-2.6
[linux-2.6] / include / asm-arm / arch-ep93xx / entry-macro.S
1 /*
2  * linux/include/asm-arm/arch-ep93xx/entry-macro.S
3  * IRQ demultiplexing for EP93xx
4  *
5  * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or (at
10  * your option) any later version.
11  */
12 #include <asm/arch/ep93xx-regs.h>
13
14                 .macro  disable_fiq
15                 .endm
16
17                 .macro  get_irqnr_preamble, base, tmp
18                 .endm
19
20                 .macro  arch_ret_to_user, tmp1, tmp2
21                 .endm
22
23                 .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
24                 ldr     \base, =(EP93XX_AHB_VIRT_BASE)
25                 orr     \base, \base, #0x000b0000
26                 mov     \irqnr, #0
27                 ldr     \irqstat, [\base]               @ lower 32 interrupts
28                 cmp     \irqstat, #0
29                 bne     1001f
30
31                 eor     \base, \base, #0x00070000
32                 ldr     \irqstat, [\base]               @ upper 32 interrupts
33                 cmp     \irqstat, #0
34                 beq     1002f
35                 mov     \irqnr, #0x20
36
37 1001:
38                 movs    \tmp, \irqstat, lsl #16
39                 movne   \irqstat, \tmp
40                 addeq   \irqnr, \irqnr, #16
41
42                 movs    \tmp, \irqstat, lsl #8
43                 movne   \irqstat, \tmp
44                 addeq   \irqnr, \irqnr, #8
45
46                 movs    \tmp, \irqstat, lsl #4
47                 movne   \irqstat, \tmp
48                 addeq   \irqnr, \irqnr, #4
49
50                 movs    \tmp, \irqstat, lsl #2
51                 movne   \irqstat, \tmp
52                 addeq   \irqnr, \irqnr, #2
53
54                 movs    \tmp, \irqstat, lsl #1
55                 addeq   \irqnr, \irqnr, #1
56                 orrs    \base, \base, #1
57
58 1002:
59                 .endm