Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / entry-macro.S
CommitLineData
6fa3eb70
S
1#include <mach/hardware.h>
2#include <linux/version.h>
3
4#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
5#include <asm/hardware/gic.h>
6#else
7#include <linux/irqchip/arm-gic.h>
8#endif
9
10#include "mt_reg_base.h"
11#include "irqs.h"
12
13/* leave disable_fiq as an empty macro */
14.macro disable_fiq
15.endm
16
17.macro get_irqnr_preamble, base, tmp
18 ldr \base, =GIC_CPU_BASE
19.endm
20
21.macro arch_ret_to_user, tmp1, tmp2
22.endm
23
24.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
25#if defined(CONFIG_FIQ) && !defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
26 ldr \irqstat, [\base, #GIC_CPU_AIAR] /* bits 12-10 = src CPU, 9-0 = int # */
27#else
28 ldr \irqstat, [\base, #GIC_CPU_INTACK] /* bits 12-10 = src CPU, 9-0 = int # */
29#endif
30 ldr \tmp, =NR_IRQS
31 bic \irqnr, \irqstat, #0x1c00
32
33 /* if (irqnr >= NR_IRQS) return NO_IRQ (0) */
34 cmp \irqnr, \tmp
35 movcs \tmp, #0
36 bcs BSYM(702f)
37
38 /* if (irqnr >= 27) return HAVE_IRQ (1) */
39 cmp \irqnr, #(27)
40 movcs \tmp, #1
41 bcs BSYM(702f)
42
43 /* if (irqnr == FIQ_DBG_SGI) return HAVE_IRQ (1) */
44 cmp \irqnr, #FIQ_DBG_SGI
45 moveq \tmp, #1
46 beq BSYM(702f)
47
48 /* otherwise, return NO_IRQ (0) */
49 mov \tmp, #0
50
51702:
52 cmp \tmp, #0
53 cmpeq \irqnr, \irqnr
54 .endm
55
56.macro test_for_ipi, irqnr, irqstat, base, tmp
57 bic \irqnr, \irqstat, #0x1c00
58 cmp \irqnr, #16
59#if defined(CONFIG_FIQ) && !defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
60 strcc \irqstat, [\base, #GIC_CPU_AEOI]
61#else
62 strcc \irqstat, [\base, #GIC_CPU_EOI]
63#endif
64 cmpcs \irqnr, \irqnr
65.endm
66
67.macro test_for_ltirq, irqnr, irqstat, base, tmp
68 bic \irqnr, \irqstat, #0x1c00
69 mov \tmp, #0
70 cmp \irqnr, #29
71 moveq \tmp, #1
72#if defined(CONFIG_FIQ) && !defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
73 streq \irqstat, [\base, #GIC_CPU_AEOI]
74#else
75 streq \irqstat, [\base, #GIC_CPU_EOI]
76#endif
77 cmp \tmp, #0
78.endm
79.macro test_for_wdtirq, irqnr, irqstat, base, tmp
80 bic \irqnr, \irqstat, #0x1c00
81 mov \tmp, #0
82 cmp \irqnr, #30
83 moveq \tmp, #1
84#if defined(CONFIG_FIQ) && !defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
85 streq \irqstat, [\base, #GIC_CPU_AEOI]
86#else
87 streq \irqstat, [\base, #GIC_CPU_EOI]
88#endif
89 cmp \tmp, #0
90.endm
91