ARM: S3C2410: move mach-s3c2410/* into mach-s3c24xx/
This patch moves S3C2410 stuff into mach-s3c24xx/ directory so that we can merge the s3c24 series' directories to the just one mach-s3c24xx/ directory. And this patch is including following. - re-ordered alphabetically by option text at Kconfig and Makefile - removed unused option, MACH_N35 - fixed duplcated option name, S3C2410_DMA to S3C24XX_DMA which is in plat-s3c24xx/ Cc: Ben Dooks <ben-linux@fluff.org> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
78
arch/arm/mach-s3c24xx/include/mach/entry-macro.S
Normal file
78
arch/arm/mach-s3c24xx/include/mach/entry-macro.S
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* arch/arm/mach-s3c2410/include/mach/entry-macro.S
|
||||
*
|
||||
* Low-level IRQ helper macros for S3C2410-based 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.
|
||||
*/
|
||||
|
||||
/* We have a problem that the INTOFFSET register does not always
|
||||
* show one interrupt. Occasionally we get two interrupts through
|
||||
* the prioritiser, and this causes the INTOFFSET register to show
|
||||
* what looks like the logical-or of the two interrupt numbers.
|
||||
*
|
||||
* Thanks to Klaus, Shannon, et al for helping to debug this problem
|
||||
*/
|
||||
|
||||
#define INTPND (0x10)
|
||||
#define INTOFFSET (0x14)
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
.macro get_irqnr_preamble, base, tmp
|
||||
.endm
|
||||
|
||||
.macro arch_ret_to_user, tmp1, tmp2
|
||||
.endm
|
||||
|
||||
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
||||
|
||||
mov \base, #S3C24XX_VA_IRQ
|
||||
|
||||
@@ try the interrupt offset register, since it is there
|
||||
|
||||
ldr \irqstat, [ \base, #INTPND ]
|
||||
teq \irqstat, #0
|
||||
beq 1002f
|
||||
ldr \irqnr, [ \base, #INTOFFSET ]
|
||||
mov \tmp, #1
|
||||
tst \irqstat, \tmp, lsl \irqnr
|
||||
bne 1001f
|
||||
|
||||
@@ the number specified is not a valid irq, so try
|
||||
@@ and work it out for ourselves
|
||||
|
||||
mov \irqnr, #0 @@ start here
|
||||
|
||||
@@ work out which irq (if any) we got
|
||||
|
||||
movs \tmp, \irqstat, lsl#16
|
||||
addeq \irqnr, \irqnr, #16
|
||||
moveq \irqstat, \irqstat, lsr#16
|
||||
tst \irqstat, #0xff
|
||||
addeq \irqnr, \irqnr, #8
|
||||
moveq \irqstat, \irqstat, lsr#8
|
||||
tst \irqstat, #0xf
|
||||
addeq \irqnr, \irqnr, #4
|
||||
moveq \irqstat, \irqstat, lsr#4
|
||||
tst \irqstat, #0x3
|
||||
addeq \irqnr, \irqnr, #2
|
||||
moveq \irqstat, \irqstat, lsr#2
|
||||
tst \irqstat, #0x1
|
||||
addeq \irqnr, \irqnr, #1
|
||||
|
||||
@@ we have the value
|
||||
1001:
|
||||
adds \irqnr, \irqnr, #IRQ_EINT0
|
||||
1002:
|
||||
@@ exit here, Z flag unset if IRQ
|
||||
|
||||
.endm
|
||||
|
||||
/* currently don't need an disable_fiq macro */
|
||||
|
||||
.macro disable_fiq
|
||||
.endm
|
Reference in New Issue
Block a user