diff options
Diffstat (limited to 'arch/arm/mach-exynos4/include/mach/entry-macro.S')
| -rw-r--r-- | arch/arm/mach-exynos4/include/mach/entry-macro.S | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/arch/arm/mach-exynos4/include/mach/entry-macro.S b/arch/arm/mach-exynos4/include/mach/entry-macro.S index 006a4f4c65c6..f5e9fd8e37b4 100644 --- a/arch/arm/mach-exynos4/include/mach/entry-macro.S +++ b/arch/arm/mach-exynos4/include/mach/entry-macro.S | |||
| @@ -17,12 +17,25 @@ | |||
| 17 | .endm | 17 | .endm |
| 18 | 18 | ||
| 19 | .macro get_irqnr_preamble, base, tmp | 19 | .macro get_irqnr_preamble, base, tmp |
| 20 | ldr \base, =gic_cpu_base_addr | 20 | mov \tmp, #0 |
| 21 | |||
| 22 | mrc p15, 0, \base, c0, c0, 5 | ||
| 23 | and \base, \base, #3 | ||
| 24 | cmp \base, #0 | ||
| 25 | beq 1f | ||
| 26 | |||
| 27 | ldr \tmp, =gic_bank_offset | ||
| 28 | ldr \tmp, [\tmp] | ||
| 29 | cmp \base, #1 | ||
| 30 | beq 1f | ||
| 31 | |||
| 32 | cmp \base, #2 | ||
| 33 | addeq \tmp, \tmp, \tmp | ||
| 34 | addne \tmp, \tmp, \tmp, LSL #1 | ||
| 35 | |||
| 36 | 1: ldr \base, =gic_cpu_base_addr | ||
| 21 | ldr \base, [\base] | 37 | ldr \base, [\base] |
| 22 | mrc p15, 0, \tmp, c0, c0, 5 | 38 | add \base, \base, \tmp |
| 23 | and \tmp, \tmp, #3 | ||
| 24 | cmp \tmp, #1 | ||
| 25 | addeq \base, \base, #EXYNOS4_GIC_BANK_OFFSET | ||
| 26 | .endm | 39 | .endm |
| 27 | 40 | ||
| 28 | .macro arch_ret_to_user, tmp1, tmp2 | 41 | .macro arch_ret_to_user, tmp1, tmp2 |
