diff options
author | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-04 02:55:33 +0000 |
---|---|---|
committer | j_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-04 02:55:33 +0000 |
commit | 056401eae60953822098ff1dc30860364c9681be (patch) | |
tree | d6ec477e5ebd870c5cd091c7543034ab9c0ac883 /target-ppc/translate_init.c | |
parent | 7a51ad822f533472cab908d2622578d51eb97dc6 (diff) |
PowerPC 601 need specific callbacks for its BATs setup.
Implement PowerPC 601 HID0 register, needed for little-endian mode support.
As a consequence, we need to merge hflags coming from MSR with other ones.
Use little-endian mode from hflags instead of MSR during code translation.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3524 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/translate_init.c')
-rw-r--r-- | target-ppc/translate_init.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 0d648de0c1..eae228b26a 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -314,6 +314,15 @@ static void spr_write_601_rtcl (void *opaque, int sprn) { gen_op_store_601_rtcl(); } + +static void spr_write_hid0_601 (void *opaque, int sprn) +{ + DisasContext *ctx = opaque; + + gen_op_store_hid0_601(); + /* Must stop the translation as endianness may have changed */ + GEN_STOP(ctx); +} #endif /* Unified bats */ @@ -3259,7 +3268,7 @@ static void init_proc_601 (CPUPPCState *env) /* XXX : not implemented */ spr_register(env, SPR_HID0, "HID0", SPR_NOACCESS, SPR_NOACCESS, - &spr_read_generic, &spr_write_generic, + &spr_read_generic, &spr_write_hid0_601, 0x80010080); /* XXX : not implemented */ spr_register(env, SPR_HID1, "HID1", |