Byungho Min | 8acd1ad | 2009-06-23 21:40:15 +0900 | [diff] [blame] | 1 | /* arch/arm/mach-s5pc100/include/mach/entry-macro.S |
| 2 | * |
| 3 | * Copyright 2009 Samsung Electronics Co. |
| 4 | * Byungho Min <bhmin@samsung.com> |
| 5 | * |
| 6 | * Based on mach-s3c6400/include/mach/entry-macro.S |
| 7 | * |
| 8 | * Low-level IRQ helper macros for the Samsung S5PC1XX series |
| 9 | * |
| 10 | * This file is licensed under the terms of the GNU General Public |
| 11 | * License version 2. This program is licensed "as is" without any |
| 12 | * warranty of any kind, whether express or implied. |
| 13 | */ |
| 14 | |
| 15 | #include <asm/hardware/vic.h> |
| 16 | #include <mach/map.h> |
| 17 | #include <plat/irqs.h> |
| 18 | |
| 19 | .macro disable_fiq |
| 20 | .endm |
| 21 | |
| 22 | .macro get_irqnr_preamble, base, tmp |
Marek Szyprowski | acc8470 | 2010-05-20 07:51:08 +0200 | [diff] [blame] | 23 | ldr \base, =VA_VIC0 |
Byungho Min | 8acd1ad | 2009-06-23 21:40:15 +0900 | [diff] [blame] | 24 | .endm |
| 25 | |
| 26 | .macro arch_ret_to_user, tmp1, tmp2 |
| 27 | .endm |
| 28 | |
| 29 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
| 30 | |
| 31 | @ check the vic0 |
Marek Szyprowski | acc8470 | 2010-05-20 07:51:08 +0200 | [diff] [blame] | 32 | mov \irqnr, # S5P_IRQ_OFFSET + 31 |
Byungho Min | 8acd1ad | 2009-06-23 21:40:15 +0900 | [diff] [blame] | 33 | ldr \irqstat, [ \base, # VIC_IRQ_STATUS ] |
| 34 | teq \irqstat, #0 |
| 35 | |
| 36 | @ otherwise try vic1 |
Marek Szyprowski | acc8470 | 2010-05-20 07:51:08 +0200 | [diff] [blame] | 37 | addeq \tmp, \base, #(VA_VIC1 - VA_VIC0) |
Byungho Min | 8acd1ad | 2009-06-23 21:40:15 +0900 | [diff] [blame] | 38 | addeq \irqnr, \irqnr, #32 |
| 39 | ldreq \irqstat, [ \tmp, # VIC_IRQ_STATUS ] |
| 40 | teqeq \irqstat, #0 |
| 41 | |
| 42 | @ otherwise try vic2 |
Marek Szyprowski | acc8470 | 2010-05-20 07:51:08 +0200 | [diff] [blame] | 43 | addeq \tmp, \base, #(VA_VIC2 - VA_VIC0) |
Byungho Min | 8acd1ad | 2009-06-23 21:40:15 +0900 | [diff] [blame] | 44 | addeq \irqnr, \irqnr, #32 |
| 45 | ldreq \irqstat, [ \tmp, # VIC_IRQ_STATUS ] |
| 46 | teqeq \irqstat, #0 |
| 47 | |
| 48 | clzne \irqstat, \irqstat |
| 49 | subne \irqnr, \irqnr, \irqstat |
| 50 | .endm |