Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / arm / mach-ks8695 / include / mach / entry-macro.S
diff --git a/kernel/arch/arm/mach-ks8695/include/mach/entry-macro.S b/kernel/arch/arm/mach-ks8695/include/mach/entry-macro.S
new file mode 100644 (file)
index 0000000..8315b34
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * arch/arm/mach-ks8695/include/mach/entry-macro.S
+ *
+ * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk>
+ * Copyright (C) 2006 Simtec Electronics
+ *
+ * Low-level IRQ helper macros for KS8695
+ *
+ * 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 <mach/hardware.h>
+#include <mach/regs-irq.h>
+
+       .macro  get_irqnr_preamble, base, tmp
+               ldr     \base, =KS8695_IRQ_VA                   @ Base address of interrupt controller
+       .endm
+
+       .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
+               ldr     \irqstat, [\base, #KS8695_INTMS]        @ Mask Status register
+
+               teq     \irqstat, #0
+               beq     1001f
+
+               mov     \irqnr, #0
+
+               tst     \irqstat, #0xff
+               moveq   \irqstat, \irqstat, lsr #8
+               addeq   \irqnr, \irqnr, #8
+               tsteq   \irqstat, #0xff
+               moveq   \irqstat, \irqstat, lsr #8
+               addeq   \irqnr, \irqnr, #8
+               tsteq   \irqstat, #0xff
+               moveq   \irqstat, \irqstat, lsr #8
+               addeq   \irqnr, \irqnr, #8
+               tst     \irqstat, #0x0f
+               moveq   \irqstat, \irqstat, lsr #4
+               addeq   \irqnr, \irqnr, #4
+               tst     \irqstat, #0x03
+               moveq   \irqstat, \irqstat, lsr #2
+               addeq   \irqnr, \irqnr, #2
+               tst     \irqstat, #0x01
+               addeqs  \irqnr, \irqnr, #1
+1001:
+       .endm