diff --git a/target-ppc/helper.h b/target-ppc/helper.h index 1a69cf876c..2b4744d331 100644 --- a/target-ppc/helper.h +++ b/target-ppc/helper.h @@ -376,6 +376,7 @@ DEF_HELPER_0(load_601_rtcu, tl) #if !defined(CONFIG_USER_ONLY) #if defined(TARGET_PPC64) DEF_HELPER_1(store_asr, void, tl) +DEF_HELPER_0(load_purr, tl) #endif DEF_HELPER_1(store_sdr1, void, tl) DEF_HELPER_1(store_tbl, void, tl) diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c index bdb1f1732a..aa2e8ba415 100644 --- a/target-ppc/op_helper.c +++ b/target-ppc/op_helper.c @@ -86,6 +86,13 @@ target_ulong helper_load_atbu (void) return cpu_ppc_load_atbu(env); } +#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) +target_ulong helper_load_purr (void) +{ + return (target_ulong)cpu_ppc_load_purr(env); +} +#endif + target_ulong helper_load_601_rtcl (void) { return cpu_ppc601_load_rtcl(env); diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 7c08b1cb09..bca85d5073 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -251,6 +251,14 @@ static void spr_write_atbu (void *opaque, int sprn, int gprn) { gen_helper_store_atbu(cpu_gpr[gprn]); } + +#if defined(TARGET_PPC64) +__attribute__ (( unused )) +static void spr_read_purr (void *opaque, int gprn, int sprn) +{ + gen_helper_load_purr(cpu_gpr[gprn]); +} +#endif #endif #if !defined(CONFIG_USER_ONLY)