Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-h720x/include/mach/entry-macro.S
17602 views
1
/*
2
* arch/arm/mach-h720x/include/mach/entry-macro.S
3
*
4
* Low-level IRQ helper macros for Hynix HMS720x 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
14
.macro get_irqnr_preamble, base, tmp
15
.endm
16
17
.macro arch_ret_to_user, tmp1, tmp2
18
.endm
19
20
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
21
#if defined (CONFIG_CPU_H7201) || defined (CONFIG_CPU_H7202)
22
@ we could use the id register on H7202, but this is not
23
@ properly updated when we come back from asm_do_irq
24
@ without a previous return from interrupt
25
@ (see loops below in irq_svc, irq_usr)
26
@ We see unmasked pending ints only, as the masked pending ints
27
@ are not visible here
28
29
mov \base, #0xf0000000 @ base register
30
orr \base, \base, #0x24000 @ irqbase
31
ldr \irqstat, [\base, #0x04] @ get interrupt status
32
#if defined (CONFIG_CPU_H7201)
33
ldr \tmp, =0x001fffff
34
#else
35
mvn \tmp, #0xc0000000
36
#endif
37
and \irqstat, \irqstat, \tmp @ mask out unused ints
38
mov \irqnr, #0
39
40
mov \tmp, #0xff00
41
orr \tmp, \tmp, #0xff
42
tst \irqstat, \tmp
43
addeq \irqnr, \irqnr, #16
44
moveq \irqstat, \irqstat, lsr #16
45
tst \irqstat, #255
46
addeq \irqnr, \irqnr, #8
47
moveq \irqstat, \irqstat, lsr #8
48
tst \irqstat, #15
49
addeq \irqnr, \irqnr, #4
50
moveq \irqstat, \irqstat, lsr #4
51
tst \irqstat, #3
52
addeq \irqnr, \irqnr, #2
53
moveq \irqstat, \irqstat, lsr #2
54
tst \irqstat, #1
55
addeq \irqnr, \irqnr, #1
56
moveq \irqstat, \irqstat, lsr #1
57
tst \irqstat, #1 @ bit 0 should be set
58
.endm
59
60
.macro irq_prio_table
61
.endm
62
63
#else
64
#error hynix processor selection missmatch
65
#endif
66
67
68