From: Yoshinori Sato <ysato@users.sourceforge.jp>

Fixed problem that it was not got interruption at specified condition.



 25-akpm/arch/h8300/platform/h8300h/ints.c |    9 ++++++---
 25-akpm/arch/h8300/platform/h8s/ints.c    |    9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff -puN arch/h8300/platform/h8300h/ints.c~h8300-interrupt-fix arch/h8300/platform/h8300h/ints.c
--- 25/arch/h8300/platform/h8300h/ints.c~h8300-interrupt-fix	Wed Aug 27 12:56:11 2003
+++ 25-akpm/arch/h8300/platform/h8300h/ints.c	Wed Aug 27 12:56:11 2003
@@ -57,17 +57,20 @@ static int use_kmalloc;
 
 extern unsigned long *interrupt_redirect_table;
 
+#define CPU_VECTOR ((unsigned long *)0x000000)
+#define ADDR_MASK (0xffffff)
+
 static inline unsigned long *get_vector_address(void)
 {
-	unsigned long *rom_vector = (unsigned long *)0x000000;
+	unsigned long *rom_vector = CPU_VECTOR;
 	unsigned long base,tmp;
 	int vec_no;
 
-	base = rom_vector[EXT_IRQ0];
+	base = rom_vector[EXT_IRQ0] & ADDR_MASK;
 	
 	/* check romvector format */
 	for (vec_no = EXT_IRQ1; vec_no <= EXT_IRQ5; vec_no++) {
-		if ((base+(vec_no - EXT_IRQ0)*4) != rom_vector[vec_no])
+		if ((base+(vec_no - EXT_IRQ0)*4) != (rom_vector[vec_no] & ADDR_MASK))
 			return NULL;
 	}
 
diff -puN arch/h8300/platform/h8s/ints.c~h8300-interrupt-fix arch/h8300/platform/h8s/ints.c
--- 25/arch/h8300/platform/h8s/ints.c~h8300-interrupt-fix	Wed Aug 27 12:56:11 2003
+++ 25-akpm/arch/h8300/platform/h8s/ints.c	Wed Aug 27 12:56:11 2003
@@ -95,17 +95,20 @@ static int use_kmalloc;
 
 extern unsigned long *interrupt_redirect_table;
 
+#define CPU_VECTOR ((unsigned long *)0x000000)
+#define ADDR_MASK (0xffffff)
+
 static inline unsigned long *get_vector_address(void)
 {
-	volatile unsigned long *rom_vector = (unsigned long *)0x000000;
+	volatile unsigned long *rom_vector = CPU_VECTOR;
 	unsigned long base,tmp;
 	int vec_no;
 
-	base = rom_vector[EXT_IRQ0];
+	base = rom_vector[EXT_IRQ0] & ADDR_MASK;
 	
 	/* check romvector format */
 	for (vec_no = EXT_IRQ1; vec_no <= EXT_IRQ15; vec_no++) {
-		if ((base+(vec_no - EXT_IRQ0)*4) != rom_vector[vec_no])
+		if ((base+(vec_no - EXT_IRQ0)*4) != (rom_vector[vec_no] & ADDR_MASK))
 			return NULL;
 	}
 

_