h8300 interrupt problem fix
PATCH 1/1 h8300 interrupt problem fix
Fixed problem that it was not got interruption at specified condition.
linux-2.6.0-test3/arch/h8300/platform/h8300h/ints.c renamed from arch/h8300/platform/h8300h/ints.c +6 -3
@@ -57,17 +57,20 @@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] &ADRR_MASK ))return NULL ; }
arch/h8300/platform/h8s/ints.c +6 -3
@@ -95,17 +95,20 @@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 ; }
Signature · 2 lines
Yoshinori Sato <[email protected]>
Sorry.
typo fixed.
linux-2.6.0-test3/arch/h8300/platform/h8300h/ints.c renamed from arch/h8300/platform/h8300h/ints.c +6 -3
@@ -57,17 +57,20 @@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 ; }
arch/h8300/platform/h8s/ints.c +6 -3
@@ -95,17 +95,20 @@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 ; }
Signature · 2 lines
Yoshinori Sato <[email protected]>