From: Yoshinori Sato 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; } _