mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
7627dc802a
Provide a standard get_irqnr_preamble assembler macro for platforms to use, which retrieves the base address of the GIC CPU interface from gic_cpu_base_addr. Allow platforms to override this by defining HAVE_GET_IRQNR_PREAMBLE. Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Tested-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
57 lines
1.4 KiB
ArmAsm
57 lines
1.4 KiB
ArmAsm
/* arch/arm/mach-tegra/include/mach/entry-macro.S
|
|
*
|
|
* Copyright (C) 2009 Palm, Inc.
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
#include <mach/iomap.h>
|
|
#include <mach/io.h>
|
|
|
|
#if defined(CONFIG_ARM_GIC)
|
|
#define HAVE_GET_IRQNR_PREAMBLE
|
|
#include <asm/hardware/entry-macro-gic.S>
|
|
|
|
/* Uses the GIC interrupt controller built into the cpu */
|
|
#define ICTRL_BASE (IO_CPU_VIRT + 0x100)
|
|
|
|
.macro disable_fiq
|
|
.endm
|
|
|
|
.macro get_irqnr_preamble, base, tmp
|
|
movw \base, #(ICTRL_BASE & 0x0000ffff)
|
|
movt \base, #((ICTRL_BASE & 0xffff0000) >> 16)
|
|
.endm
|
|
|
|
.macro arch_ret_to_user, tmp1, tmp2
|
|
.endm
|
|
#else
|
|
/* legacy interrupt controller for AP16 */
|
|
.macro disable_fiq
|
|
.endm
|
|
|
|
.macro get_irqnr_preamble, base, tmp
|
|
@ enable imprecise aborts
|
|
cpsie a
|
|
@ EVP base at 0xf010f000
|
|
mov \base, #0xf0000000
|
|
orr \base, #0x00100000
|
|
orr \base, #0x0000f000
|
|
.endm
|
|
|
|
.macro arch_ret_to_user, tmp1, tmp2
|
|
.endm
|
|
|
|
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
|
ldr \irqnr, [\base, #0x20] @ EVT_IRQ_STS
|
|
cmp \irqnr, #0x80
|
|
.endm
|
|
#endif
|