diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-01-04 22:58:38 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-01-04 22:58:38 +0000 |
commit | 9a64fbe4d89751524be0954f87dd514083295e99 (patch) | |
tree | 090826caf337daefaf5d8c06d2d97c85be76d3f4 /target-ppc/op_template.h | |
parent | efe160c502bc9ebb4d9e6fcb94cea708af73a2a1 (diff) | |
download | qemu-9a64fbe4d89751524be0954f87dd514083295e99.zip qemu-9a64fbe4d89751524be0954f87dd514083295e99.tar.gz qemu-9a64fbe4d89751524be0954f87dd514083295e99.tar.bz2 |
PowerPC system emulation (Jocelyn Mayer) - modified patch to use new TLB api
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@528 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/op_template.h')
-rw-r--r-- | target-ppc/op_template.h | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/target-ppc/op_template.h b/target-ppc/op_template.h index 4a849ff..5ba4dfc 100644 --- a/target-ppc/op_template.h +++ b/target-ppc/op_template.h @@ -18,56 +18,67 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* General purpose registers moves */ void OPPROTO glue(op_load_gpr_T0_gpr, REG)(void) { T0 = regs->gpr[REG]; + RETURN(); } void OPPROTO glue(op_load_gpr_T1_gpr, REG)(void) { T1 = regs->gpr[REG]; + RETURN(); } void OPPROTO glue(op_load_gpr_T2_gpr, REG)(void) { T2 = regs->gpr[REG]; + RETURN(); } void OPPROTO glue(op_store_T0_gpr_gpr, REG)(void) { regs->gpr[REG] = T0; + RETURN(); } void OPPROTO glue(op_store_T1_gpr_gpr, REG)(void) { regs->gpr[REG] = T1; + RETURN(); } void OPPROTO glue(op_store_T2_gpr_gpr, REG)(void) { regs->gpr[REG] = T2; + RETURN(); } #if REG <= 7 - +/* Condition register moves */ void OPPROTO glue(op_load_crf_T0_crf, REG)(void) { T0 = regs->crf[REG]; + RETURN(); } void OPPROTO glue(op_load_crf_T1_crf, REG)(void) { T1 = regs->crf[REG]; + RETURN(); } void OPPROTO glue(op_store_T0_crf_crf, REG)(void) { regs->crf[REG] = T0; + RETURN(); } void OPPROTO glue(op_store_T1_crf_crf, REG)(void) { regs->crf[REG] = T1; + RETURN(); } /* Floating point condition and status register moves */ @@ -117,8 +128,6 @@ void OPPROTO glue(op_clear_fpscr_fpscr, REG)(void) #endif /* REG <= 7 */ -/* float moves */ - /* floating point registers moves */ void OPPROTO glue(op_load_fpr_FT0_fpr, REG)(void) { @@ -156,4 +165,22 @@ void OPPROTO glue(op_store_FT2_fpr_fpr, REG)(void) RETURN(); } +#if REG <= 15 +/* Segment register moves */ +void OPPROTO glue(op_load_sr, REG)(void) +{ + T0 = env->sr[REG]; + RETURN(); +} + +void OPPROTO glue(op_store_sr, REG)(void) +{ +#if defined (DEBUG_OP) + dump_store_sr(REG); +#endif + env->sr[REG] = T0; + RETURN(); +} +#endif + #undef REG |