diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-01 01:27:10 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-01 01:27:10 +0000 |
commit | 4e290a0b714650097f10f9bfb06ab1ef6173afc1 (patch) | |
tree | e477a730def424afb2ca314bb9a17ce419c1747f /target-ppc/translate_init.c | |
parent | 3391c81801c867bc8f4dd6ce32766e4e8345813b (diff) |
Share input pins and internal interrupt controller between all PowerPC 40x.
Fix critical input interrupt generation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3299 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/translate_init.c')
-rw-r--r-- | target-ppc/translate_init.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 13069c53ec..2c33cd61c9 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -54,8 +54,7 @@ static inline void glue(glue(ppc, name),_irq_init) (CPUPPCState *env) \ void glue(glue(ppc, name),_irq_init) (CPUPPCState *env); #endif -PPC_IRQ_INIT_FN(401); -PPC_IRQ_INIT_FN(405); +PPC_IRQ_INIT_FN(40x); PPC_IRQ_INIT_FN(6xx); PPC_IRQ_INIT_FN(970); @@ -2482,7 +2481,8 @@ static void init_proc_401 (CPUPPCState *env) &spr_read_generic, &spr_write_generic, 0x00000000); init_excp_4xx_real(env); - /* XXX: TODO: allocate internal IRQ controller */ + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } /* PowerPC 401x2 */ @@ -2518,7 +2518,8 @@ static void init_proc_401x2 (CPUPPCState *env) env->nb_ways = 1; env->id_tlbs = 0; init_excp_4xx_softmmu(env); - /* XXX: TODO: allocate internal IRQ controller */ + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } /* PowerPC 401x3 */ @@ -2536,7 +2537,14 @@ static void init_proc_401x2 (CPUPPCState *env) static void init_proc_401x3 (CPUPPCState *env) { + gen_spr_40x(env); + gen_spr_401_403(env); + gen_spr_401(env); + gen_spr_401x2(env); + gen_spr_compress(env); init_excp_4xx_softmmu(env); + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } #endif /* TODO */ @@ -2573,7 +2581,8 @@ static void init_proc_IOP480 (CPUPPCState *env) env->nb_ways = 1; env->id_tlbs = 0; init_excp_4xx_softmmu(env); - /* XXX: TODO: allocate internal IRQ controller */ + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } /* PowerPC 403 */ @@ -2594,7 +2603,8 @@ static void init_proc_403 (CPUPPCState *env) gen_spr_403(env); gen_spr_403_real(env); init_excp_4xx_real(env); - /* XXX: TODO: allocate internal IRQ controller */ + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } /* PowerPC 403 GCX */ @@ -2630,7 +2640,8 @@ static void init_proc_403GCX (CPUPPCState *env) env->nb_ways = 1; env->id_tlbs = 0; init_excp_4xx_softmmu(env); - /* XXX: TODO: allocate internal IRQ controller */ + /* Allocate hardware IRQ controller */ + ppc40x_irq_init(env); } /* PowerPC 405 */ @@ -2667,7 +2678,7 @@ static void init_proc_405 (CPUPPCState *env) env->id_tlbs = 0; init_excp_4xx_softmmu(env); /* Allocate hardware IRQ controller */ - ppc405_irq_init(env); + ppc40x_irq_init(env); } /* PowerPC 440 EP */ |