Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-integrator/include/mach/entry-macro.S
15162 views
1
/*
2
* arch/arm/mach-integrator/include/mach/entry-macro.S
3
*
4
* Low-level IRQ helper macros for Integrator 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
#include <mach/hardware.h>
11
#include <mach/platform.h>
12
#include <mach/irqs.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
/* FIXME: should not be using soo many LDRs here */
25
ldr \base, =IO_ADDRESS(INTEGRATOR_IC_BASE)
26
mov \irqnr, #IRQ_PIC_START
27
ldr \irqstat, [\base, #IRQ_STATUS] @ get masked status
28
ldr \base, =IO_ADDRESS(INTEGRATOR_HDR_BASE)
29
teq \irqstat, #0
30
ldreq \irqstat, [\base, #(INTEGRATOR_HDR_IC_OFFSET+IRQ_STATUS)]
31
moveq \irqnr, #IRQ_CIC_START
32
33
1001: tst \irqstat, #15
34
bne 1002f
35
add \irqnr, \irqnr, #4
36
movs \irqstat, \irqstat, lsr #4
37
bne 1001b
38
1002: tst \irqstat, #1
39
bne 1003f
40
add \irqnr, \irqnr, #1
41
movs \irqstat, \irqstat, lsr #1
42
bne 1002b
43
1003: /* EQ will be set if no irqs pending */
44
.endm
45
46
47