git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git]
/
include
/
asm-arm
/
arch-s3c2410
/
entry-macro.S
diff --git
a/include/asm-arm/arch-s3c2410/entry-macro.S
b/include/asm-arm/arch-s3c2410/entry-macro.S
index
e09a6b8
..
894c35c
100644
(file)
--- a/
include/asm-arm/arch-s3c2410/entry-macro.S
+++ b/
include/asm-arm/arch-s3c2410/entry-macro.S
@@
-18,6
+18,8
@@
#define INTPND (0x10)
#define INTOFFSET (0x14)
#define INTPND (0x10)
#define INTOFFSET (0x14)
+#define EXTINTPEND (0xa8)
+#define EXTINTMASK (0xa4)
#include <asm/hardware.h>
#include <asm/arch/irqs.h>
#include <asm/hardware.h>
#include <asm/arch/irqs.h>
@@
-26,23
+28,37
@@
mov \base, #S3C24XX_VA_IRQ
mov \base, #S3C24XX_VA_IRQ
+ ldr \irqstat, [ \base, #INTPND]
+ bics \irqnr, \irqstat, #3<<4 @@ only an GPIO IRQ
+ beq 2000f
+
@@ try the interrupt offset register, since it is there
@@ 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
ldr \irqnr, [ \base, #INTOFFSET ]
mov \tmp, #1
tst \irqstat, \tmp, lsl \irqnr
+ addne \irqnr, \irqnr, #IRQ_EINT0
bne 1001f
@@ the number specified is not a valid irq, so try
@@ and work it out for ourselves
bne 1001f
@@ the number specified is not a valid irq, so try
@@ and work it out for ourselves
- mov \irqnr, #0 @@ start here
+ mov \irqnr, #IRQ_EINT0 @@ start here
+ b 3000f
- @@ work out which irq (if any) we got
+2000:
+ @@ load the GPIO interrupt register, and check it
+
+ add \tmp, \base, #S3C24XX_VA_GPIO - S3C24XX_VA_IRQ
+ ldr \irqstat, [ \tmp, # EXTINTPEND ]
+ ldr \irqnr, [ \tmp, # EXTINTMASK ]
+ bics \irqstat, \irqstat, \irqnr
+ beq 1001f
+ mov \irqnr, #(IRQ_EINT4 - 4)
+
+ @@ work out which irq (if any) we got
+3000:
movs \tmp, \irqstat, lsl#16
addeq \irqnr, \irqnr, #16
moveq \irqstat, \irqstat, lsr#16
movs \tmp, \irqstat, lsl#16
addeq \irqnr, \irqnr, #16
moveq \irqstat, \irqstat, lsr#16
@@
-59,9
+75,9
@@
addeq \irqnr, \irqnr, #1
@@ we have the value
addeq \irqnr, \irqnr, #1
@@ we have the value
+ movs \irqnr, \irqnr
+
1001:
1001:
- adds \irqnr, \irqnr, #IRQ_EINT0
-1002:
@@ exit here, Z flag unset if IRQ
.endm
@@ exit here, Z flag unset if IRQ
.endm