diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-04-16 20:09:45 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-04-16 20:09:45 +0000 |
commit | 8ecc7913525ecb6a1a41ceceac93d485a544054f (patch) | |
tree | c23ccf196aa6cf9436dcda3c80decad4c1540a92 /target-ppc/translate_init.c | |
parent | 3142255c62f3e69a1fa75427426a3e64b6349fbd (diff) |
Add callbacks to allow dynamic change of PowerPC clocks (to be improved)
Fix embedded PowerPC watchdog and timers
Fix PowerPC 405 SPR
Add generic PowerPC 405 core instanciation code + resets support.
Implement simple peripherals shared by most PowerPC 405 implementations
PowerPC 405 EC & EP microcontrollers preliminary support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2690 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/translate_init.c')
-rw-r--r-- | target-ppc/translate_init.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 215bdcbe6f..cb40dfbdde 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -344,6 +344,15 @@ static void spr_write_40x_pit (void *opaque, int sprn) gen_op_store_40x_pit(); } +static void spr_write_40x_dbcr0 (void *opaque, int sprn) +{ + DisasContext *ctx = opaque; + + gen_op_store_40x_dbcr0(); + /* We must stop translation as we may have rebooted */ + RET_STOP(ctx); +} + static void spr_write_booke_tcr (void *opaque, int sprn) { gen_op_store_booke_tcr(); @@ -1175,7 +1184,7 @@ static void gen_spr_BookE (CPUPPCState *env) /* XXX : not implemented */ spr_register(env, SPR_BOOKE_DBSR, "DBSR", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, &spr_write_clear, 0x00000000); spr_register(env, SPR_BOOKE_DEAR, "DEAR", SPR_NOACCESS, SPR_NOACCESS, @@ -1651,13 +1660,13 @@ static void gen_spr_40x (CPUPPCState *env) /* XXX : not implemented */ spr_register(env, SPR_40x_DBCR0, "DBCR0", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, &spr_write_40x_dbcr0, 0x00000000); /* XXX : not implemented */ spr_register(env, SPR_40x_DBSR, "DBSR", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, - /* Last reset was system reset (system boot */ + &spr_read_generic, &spr_write_clear, + /* Last reset was system reset */ 0x00000300); /* XXX : not implemented */ spr_register(env, SPR_40x_IAC1, "IAC1", @@ -1751,17 +1760,6 @@ static void gen_spr_405 (CPUPPCState *env) &spr_read_ureg, SPR_NOACCESS, &spr_read_ureg, SPR_NOACCESS, 0x00000000); - /* Debug */ - /* XXX : not implemented */ - spr_register(env, SPR_40x_DAC2, "DAC2", - SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, - 0x00000000); - /* XXX : not implemented */ - spr_register(env, SPR_40x_IAC2, "IAC2", - SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, - 0x00000000); } /* SPR shared between PowerPC 401 & 403 implementations */ |