794d15b25d
The Marvell Discovery Duo (MV78xx0) is a family of ARM SoCs featuring (depending on the model) one or two Feroceon CPU cores with 512K of L2 cache and VFP coprocessors running at (depending on the model) between 800 MHz and 1.2 GHz, and features a DDR2 controller, two PCIe interfaces that can each run either in x4 or quad x1 mode, three USB 2.0 interfaces, two 3Gb/s SATA II interfaces, a SPI interface, two TWSI interfaces, a crypto accelerator, IDMA/XOR engines, a SPI interface, four UARTs, and depending on the model, two or four gigabit ethernet interfaces. This patch adds basic support for the platform, and allows booting on the MV78x00 development board, with functional UARTs, SATA, PCIe, GigE and USB ports. Signed-off-by: Stanislav Samsonov <samsonov@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
39 lines
992 B
ArmAsm
39 lines
992 B
ArmAsm
/*
|
|
* include/asm-arm/arch-mv78xx0/entry-macro.S
|
|
*
|
|
* Low-level IRQ helper macros for Marvell MV78xx0 platforms
|
|
*
|
|
* This file is licensed under the terms of the GNU General Public
|
|
* License version 2. This program is licensed "as is" without any
|
|
* warranty of any kind, whether express or implied.
|
|
*/
|
|
|
|
#include <asm/arch/mv78xx0.h>
|
|
|
|
.macro disable_fiq
|
|
.endm
|
|
|
|
.macro arch_ret_to_user, tmp1, tmp2
|
|
.endm
|
|
|
|
.macro get_irqnr_preamble, base, tmp
|
|
ldr \base, =IRQ_VIRT_BASE
|
|
.endm
|
|
|
|
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
|
@ check low interrupts
|
|
ldr \irqstat, [\base, #IRQ_CAUSE_LOW_OFF]
|
|
ldr \tmp, [\base, #IRQ_MASK_LOW_OFF]
|
|
mov \irqnr, #31
|
|
ands \irqstat, \irqstat, \tmp
|
|
|
|
@ if no low interrupts set, check high interrupts
|
|
ldreq \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF]
|
|
ldreq \tmp, [\base, #IRQ_MASK_HIGH_OFF]
|
|
moveq \irqnr, #63
|
|
andeqs \irqstat, \irqstat, \tmp
|
|
|
|
@ find first active interrupt source
|
|
clzne \irqstat, \irqstat
|
|
subne \irqnr, \irqnr, \irqstat
|
|
.endm
|