* [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs @ 2022-01-18 10:41 Cédric Le Goater 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Cédric Le Goater @ 2022-01-18 10:41 UTC (permalink / raw) To: qemu-ppc, qemu-devel; +Cc: Cédric Le Goater, Greg Kurz, David Gibson Hello, This is a follow up of "target/ppc: Finish removal of 401/403 CPUs". To "finish" the removal, we need to get rid of the 403 protection registers under CPUPPCState. This is done after having removed the last user of .load_state_old. This change breaks migration compatibility with very old versions of QEMU but it should not be a problem. Thanks, C. Cédric Le Goater (2): target/ppc: Remove last user of .load_state_old target/ppc: Finish removal of 401/403 CPUs target/ppc/cpu.h | 1 - target/ppc/helper.h | 1 - target/ppc/cpu-models.c | 1 - target/ppc/machine.c | 136 --------------------------------------- target/ppc/misc_helper.c | 9 --- target/ppc/translate.c | 16 +---- 6 files changed, 1 insertion(+), 163 deletions(-) -- 2.31.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old 2022-01-18 10:41 [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater @ 2022-01-18 10:41 ` Cédric Le Goater 2022-01-18 10:46 ` David Gibson 2022-01-18 11:13 ` Matheus K. Ferst 2022-01-18 10:41 ` [PATCH v2 2/2] target/ppc: Finish removal of 401/403 CPUs Cédric Le Goater 2022-01-18 12:02 ` [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater 2 siblings, 2 replies; 7+ messages in thread From: Cédric Le Goater @ 2022-01-18 10:41 UTC (permalink / raw) To: qemu-ppc, qemu-devel; +Cc: Cédric Le Goater, Greg Kurz, David Gibson This breaks migration compatibility from (very) old versions of QEMU. This should not be a problem for the pseries machine for which migration is only supported on recent QEMUs ( > 2.x). There is no clear status on what is supported or not for the other machines. Let's move forward and remove the .load_state_old handler. Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/machine.c | 112 ------------------------------------------- 1 file changed, 112 deletions(-) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 756d8de5d8dd..df547385ff1e 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env) pmu_update_summaries(env); } -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) -{ - PowerPCCPU *cpu = opaque; - CPUPPCState *env = &cpu->env; - unsigned int i, j; - target_ulong sdr1; - uint32_t fpscr, vscr; -#if defined(TARGET_PPC64) - int32_t slb_nr; -#endif - target_ulong xer; - - for (i = 0; i < 32; i++) { - qemu_get_betls(f, &env->gpr[i]); - } -#if !defined(TARGET_PPC64) - for (i = 0; i < 32; i++) { - qemu_get_betls(f, &env->gprh[i]); - } -#endif - qemu_get_betls(f, &env->lr); - qemu_get_betls(f, &env->ctr); - for (i = 0; i < 8; i++) { - qemu_get_be32s(f, &env->crf[i]); - } - qemu_get_betls(f, &xer); - cpu_write_xer(env, xer); - qemu_get_betls(f, &env->reserve_addr); - qemu_get_betls(f, &env->msr); - for (i = 0; i < 4; i++) { - qemu_get_betls(f, &env->tgpr[i]); - } - for (i = 0; i < 32; i++) { - union { - float64 d; - uint64_t l; - } u; - u.l = qemu_get_be64(f); - *cpu_fpr_ptr(env, i) = u.d; - } - qemu_get_be32s(f, &fpscr); - env->fpscr = fpscr; - qemu_get_sbe32s(f, &env->access_type); -#if defined(TARGET_PPC64) - qemu_get_betls(f, &env->spr[SPR_ASR]); - qemu_get_sbe32s(f, &slb_nr); -#endif - qemu_get_betls(f, &sdr1); - for (i = 0; i < 32; i++) { - qemu_get_betls(f, &env->sr[i]); - } - for (i = 0; i < 2; i++) { - for (j = 0; j < 8; j++) { - qemu_get_betls(f, &env->DBAT[i][j]); - } - } - for (i = 0; i < 2; i++) { - for (j = 0; j < 8; j++) { - qemu_get_betls(f, &env->IBAT[i][j]); - } - } - qemu_get_sbe32s(f, &env->nb_tlb); - qemu_get_sbe32s(f, &env->tlb_per_way); - qemu_get_sbe32s(f, &env->nb_ways); - qemu_get_sbe32s(f, &env->last_way); - qemu_get_sbe32s(f, &env->id_tlbs); - qemu_get_sbe32s(f, &env->nb_pids); - if (env->tlb.tlb6) { - /* XXX assumes 6xx */ - for (i = 0; i < env->nb_tlb; i++) { - qemu_get_betls(f, &env->tlb.tlb6[i].pte0); - qemu_get_betls(f, &env->tlb.tlb6[i].pte1); - qemu_get_betls(f, &env->tlb.tlb6[i].EPN); - } - } - for (i = 0; i < 4; i++) { - qemu_get_betls(f, &env->pb[i]); - } - for (i = 0; i < 1024; i++) { - qemu_get_betls(f, &env->spr[i]); - } - if (!cpu->vhyp) { - ppc_store_sdr1(env, sdr1); - } - qemu_get_be32s(f, &vscr); - ppc_store_vscr(env, vscr); - qemu_get_be64s(f, &env->spe_acc); - qemu_get_be32s(f, &env->spe_fscr); - qemu_get_betls(f, &env->msr_mask); - qemu_get_be32s(f, &env->flags); - qemu_get_sbe32s(f, &env->error_code); - qemu_get_be32s(f, &env->pending_interrupts); - qemu_get_be32s(f, &env->irq_input_state); - for (i = 0; i < POWERPC_EXCP_NB; i++) { - qemu_get_betls(f, &env->excp_vectors[i]); - } - qemu_get_betls(f, &env->excp_prefix); - qemu_get_betls(f, &env->ivor_mask); - qemu_get_betls(f, &env->ivpr_mask); - qemu_get_betls(f, &env->hreset_vector); - qemu_get_betls(f, &env->nip); - qemu_get_sbetl(f); /* Discard unused hflags */ - qemu_get_sbetl(f); /* Discard unused hflags_nmsr */ - qemu_get_sbe32(f); /* Discard unused mmu_idx */ - qemu_get_sbe32(f); /* Discard unused power_mode */ - - post_load_update_msr(env); - - return 0; -} - static int get_avr(QEMUFile *f, void *pv, size_t size, const VMStateField *field) { @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = { .version_id = 5, .minimum_version_id = 5, .minimum_version_id_old = 4, - .load_state_old = cpu_load_old, .pre_save = cpu_pre_save, .post_load = cpu_post_load, .fields = (VMStateField[]) { -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater @ 2022-01-18 10:46 ` David Gibson 2022-01-18 11:13 ` Matheus K. Ferst 1 sibling, 0 replies; 7+ messages in thread From: David Gibson @ 2022-01-18 10:46 UTC (permalink / raw) To: Cédric Le Goater; +Cc: qemu-ppc, qemu-devel, Greg Kurz [-- Attachment #1: Type: text/plain, Size: 5223 bytes --] On Tue, Jan 18, 2022 at 11:41:49AM +0100, Cédric le Goater wrote: > This breaks migration compatibility from (very) old versions of > QEMU. This should not be a problem for the pseries machine for which > migration is only supported on recent QEMUs ( > 2.x). There is no > clear status on what is supported or not for the other machines. Let's > move forward and remove the .load_state_old handler. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > target/ppc/machine.c | 112 ------------------------------------------- > 1 file changed, 112 deletions(-) > > diff --git a/target/ppc/machine.c b/target/ppc/machine.c > index 756d8de5d8dd..df547385ff1e 100644 > --- a/target/ppc/machine.c > +++ b/target/ppc/machine.c > @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env) > pmu_update_summaries(env); > } > > -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) > -{ > - PowerPCCPU *cpu = opaque; > - CPUPPCState *env = &cpu->env; > - unsigned int i, j; > - target_ulong sdr1; > - uint32_t fpscr, vscr; > -#if defined(TARGET_PPC64) > - int32_t slb_nr; > -#endif > - target_ulong xer; > - > - for (i = 0; i < 32; i++) { > - qemu_get_betls(f, &env->gpr[i]); > - } > -#if !defined(TARGET_PPC64) > - for (i = 0; i < 32; i++) { > - qemu_get_betls(f, &env->gprh[i]); > - } > -#endif > - qemu_get_betls(f, &env->lr); > - qemu_get_betls(f, &env->ctr); > - for (i = 0; i < 8; i++) { > - qemu_get_be32s(f, &env->crf[i]); > - } > - qemu_get_betls(f, &xer); > - cpu_write_xer(env, xer); > - qemu_get_betls(f, &env->reserve_addr); > - qemu_get_betls(f, &env->msr); > - for (i = 0; i < 4; i++) { > - qemu_get_betls(f, &env->tgpr[i]); > - } > - for (i = 0; i < 32; i++) { > - union { > - float64 d; > - uint64_t l; > - } u; > - u.l = qemu_get_be64(f); > - *cpu_fpr_ptr(env, i) = u.d; > - } > - qemu_get_be32s(f, &fpscr); > - env->fpscr = fpscr; > - qemu_get_sbe32s(f, &env->access_type); > -#if defined(TARGET_PPC64) > - qemu_get_betls(f, &env->spr[SPR_ASR]); > - qemu_get_sbe32s(f, &slb_nr); > -#endif > - qemu_get_betls(f, &sdr1); > - for (i = 0; i < 32; i++) { > - qemu_get_betls(f, &env->sr[i]); > - } > - for (i = 0; i < 2; i++) { > - for (j = 0; j < 8; j++) { > - qemu_get_betls(f, &env->DBAT[i][j]); > - } > - } > - for (i = 0; i < 2; i++) { > - for (j = 0; j < 8; j++) { > - qemu_get_betls(f, &env->IBAT[i][j]); > - } > - } > - qemu_get_sbe32s(f, &env->nb_tlb); > - qemu_get_sbe32s(f, &env->tlb_per_way); > - qemu_get_sbe32s(f, &env->nb_ways); > - qemu_get_sbe32s(f, &env->last_way); > - qemu_get_sbe32s(f, &env->id_tlbs); > - qemu_get_sbe32s(f, &env->nb_pids); > - if (env->tlb.tlb6) { > - /* XXX assumes 6xx */ > - for (i = 0; i < env->nb_tlb; i++) { > - qemu_get_betls(f, &env->tlb.tlb6[i].pte0); > - qemu_get_betls(f, &env->tlb.tlb6[i].pte1); > - qemu_get_betls(f, &env->tlb.tlb6[i].EPN); > - } > - } > - for (i = 0; i < 4; i++) { > - qemu_get_betls(f, &env->pb[i]); > - } > - for (i = 0; i < 1024; i++) { > - qemu_get_betls(f, &env->spr[i]); > - } > - if (!cpu->vhyp) { > - ppc_store_sdr1(env, sdr1); > - } > - qemu_get_be32s(f, &vscr); > - ppc_store_vscr(env, vscr); > - qemu_get_be64s(f, &env->spe_acc); > - qemu_get_be32s(f, &env->spe_fscr); > - qemu_get_betls(f, &env->msr_mask); > - qemu_get_be32s(f, &env->flags); > - qemu_get_sbe32s(f, &env->error_code); > - qemu_get_be32s(f, &env->pending_interrupts); > - qemu_get_be32s(f, &env->irq_input_state); > - for (i = 0; i < POWERPC_EXCP_NB; i++) { > - qemu_get_betls(f, &env->excp_vectors[i]); > - } > - qemu_get_betls(f, &env->excp_prefix); > - qemu_get_betls(f, &env->ivor_mask); > - qemu_get_betls(f, &env->ivpr_mask); > - qemu_get_betls(f, &env->hreset_vector); > - qemu_get_betls(f, &env->nip); > - qemu_get_sbetl(f); /* Discard unused hflags */ > - qemu_get_sbetl(f); /* Discard unused hflags_nmsr */ > - qemu_get_sbe32(f); /* Discard unused mmu_idx */ > - qemu_get_sbe32(f); /* Discard unused power_mode */ > - > - post_load_update_msr(env); > - > - return 0; > -} > - > static int get_avr(QEMUFile *f, void *pv, size_t size, > const VMStateField *field) > { > @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = { > .version_id = 5, > .minimum_version_id = 5, > .minimum_version_id_old = 4, > - .load_state_old = cpu_load_old, > .pre_save = cpu_pre_save, > .post_load = cpu_post_load, > .fields = (VMStateField[]) { -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater 2022-01-18 10:46 ` David Gibson @ 2022-01-18 11:13 ` Matheus K. Ferst 2022-01-18 11:23 ` Peter Maydell 1 sibling, 1 reply; 7+ messages in thread From: Matheus K. Ferst @ 2022-01-18 11:13 UTC (permalink / raw) To: Cédric Le Goater, qemu-ppc, qemu-devel; +Cc: Greg Kurz, David Gibson On 18/01/2022 07:41, Cédric Le Goater wrote: > This breaks migration compatibility from (very) old versions of > QEMU. This should not be a problem for the pseries machine for which > migration is only supported on recent QEMUs ( > 2.x). There is no > clear status on what is supported or not for the other machines. Let's > move forward and remove the .load_state_old handler. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- > target/ppc/machine.c | 112 ------------------------------------------- > 1 file changed, 112 deletions(-) > > diff --git a/target/ppc/machine.c b/target/ppc/machine.c > index 756d8de5d8dd..df547385ff1e 100644 > --- a/target/ppc/machine.c > +++ b/target/ppc/machine.c > @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env) > pmu_update_summaries(env); > } > > -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) > -{ > - PowerPCCPU *cpu = opaque; <snip> > - > static int get_avr(QEMUFile *f, void *pv, size_t size, > const VMStateField *field) > { > @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = { > .version_id = 5, > .minimum_version_id = 5, > .minimum_version_id_old = 4, > - .load_state_old = cpu_load_old, According to docs/devel/migration.rst, .minimum_version_id_old is ignored if no load_state_old handler is provided, I think we can drop it too. > .pre_save = cpu_pre_save, > .post_load = cpu_post_load, > .fields = (VMStateField[]) { > -- > 2.31.1 Thanks, Matheus K. Ferst Instituto de Pesquisas ELDORADO <http://www.eldorado.org.br/> Analista de Software Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old 2022-01-18 11:13 ` Matheus K. Ferst @ 2022-01-18 11:23 ` Peter Maydell 0 siblings, 0 replies; 7+ messages in thread From: Peter Maydell @ 2022-01-18 11:23 UTC (permalink / raw) To: Matheus K. Ferst Cc: Greg Kurz, David Gibson, qemu-ppc, Cédric Le Goater, qemu-devel On Tue, 18 Jan 2022 at 11:18, Matheus K. Ferst <matheus.ferst@eldorado.org.br> wrote: > > On 18/01/2022 07:41, Cédric Le Goater wrote: > > This breaks migration compatibility from (very) old versions of > > QEMU. This should not be a problem for the pseries machine for which > > migration is only supported on recent QEMUs ( > 2.x). There is no > > clear status on what is supported or not for the other machines. Let's > > move forward and remove the .load_state_old handler. > > > > Signed-off-by: Cédric Le Goater <clg@kaod.org> > > --- > > target/ppc/machine.c | 112 ------------------------------------------- > > 1 file changed, 112 deletions(-) > > > > diff --git a/target/ppc/machine.c b/target/ppc/machine.c > > index 756d8de5d8dd..df547385ff1e 100644 > > --- a/target/ppc/machine.c > > +++ b/target/ppc/machine.c > > @@ -23,117 +23,6 @@ static void post_load_update_msr(CPUPPCState *env) > > pmu_update_summaries(env); > > } > > > > -static int cpu_load_old(QEMUFile *f, void *opaque, int version_id) > > -{ > > - PowerPCCPU *cpu = opaque; > > <snip> > > > - > > static int get_avr(QEMUFile *f, void *pv, size_t size, > > const VMStateField *field) > > { > > @@ -808,7 +697,6 @@ const VMStateDescription vmstate_ppc_cpu = { > > .version_id = 5, > > .minimum_version_id = 5, > > .minimum_version_id_old = 4, > > - .load_state_old = cpu_load_old, > > According to docs/devel/migration.rst, .minimum_version_id_old is > ignored if no load_state_old handler is provided, I think we can drop it > too. Yes; the migration code only checks the field if load_state_old is non-NULL. -- PMM ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] target/ppc: Finish removal of 401/403 CPUs 2022-01-18 10:41 [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater @ 2022-01-18 10:41 ` Cédric Le Goater 2022-01-18 12:02 ` [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater 2 siblings, 0 replies; 7+ messages in thread From: Cédric Le Goater @ 2022-01-18 10:41 UTC (permalink / raw) To: qemu-ppc, qemu-devel Cc: Cédric Le Goater, Fabiano Rosas, Greg Kurz, David Gibson Commit c8f49e6b938e ("target/ppc: remove 401/403 CPUs") left a few things behind. Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20220117091541.1615807-1-clg@kaod.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- Changes in v2: - Removal of the 403 protection registers target/ppc/cpu.h | 1 - target/ppc/helper.h | 1 - target/ppc/cpu-models.c | 1 - target/ppc/machine.c | 24 ------------------------ target/ppc/misc_helper.c | 9 --------- target/ppc/translate.c | 16 +--------------- 6 files changed, 1 insertion(+), 51 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index f99cd0ea92fc..2560b70c5f10 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1133,7 +1133,6 @@ struct CPUPPCState { int nb_pids; /* Number of available PID registers */ int tlb_type; /* Type of TLB we're dealing with */ ppc_tlb_t tlb; /* TLB is optional. Allocate them only if needed */ - target_ulong pb[4]; /* 403 dedicated access protection registers */ bool tlb_dirty; /* Set to non-zero when modifying TLB */ bool kvm_sw_tlb; /* non-zero if KVM SW TLB API is active */ uint32_t tlb_need_flush; /* Delayed flush needed */ diff --git a/target/ppc/helper.h b/target/ppc/helper.h index f9c72dcd504d..d318837ea5cc 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -703,7 +703,6 @@ DEF_HELPER_FLAGS_2(store_hdecr, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(store_vtb, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(store_tbu40, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_2(store_hid0_601, void, env, tl) -DEF_HELPER_3(store_403_pbr, void, env, i32, tl) DEF_HELPER_FLAGS_1(load_40x_pit, TCG_CALL_NO_RWG, tl, env) DEF_HELPER_FLAGS_2(store_40x_pit, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(store_40x_tcr, TCG_CALL_NO_RWG, void, env, tl) diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c index c9fcb6119f40..96fec9c2e501 100644 --- a/target/ppc/cpu-models.c +++ b/target/ppc/cpu-models.c @@ -750,7 +750,6 @@ /* PowerPC CPU aliases */ PowerPCCPUAlias ppc_cpu_aliases[] = { - { "403", "403gc" }, { "405", "405d4" }, { "405cr", "405crc" }, { "405gp", "405gpd" }, diff --git a/target/ppc/machine.c b/target/ppc/machine.c index df547385ff1e..733a22d74407 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -598,25 +598,6 @@ static bool tlbemb_needed(void *opaque) return env->nb_tlb && (env->tlb_type == TLB_EMB); } -static bool pbr403_needed(void *opaque) -{ - PowerPCCPU *cpu = opaque; - uint32_t pvr = cpu->env.spr[SPR_PVR]; - - return (pvr & 0xffff0000) == 0x00200000; -} - -static const VMStateDescription vmstate_pbr403 = { - .name = "cpu/pbr403", - .version_id = 1, - .minimum_version_id = 1, - .needed = pbr403_needed, - .fields = (VMStateField[]) { - VMSTATE_UINTTL_ARRAY(env.pb, PowerPCCPU, 4), - VMSTATE_END_OF_LIST() - }, -}; - static const VMStateDescription vmstate_tlbemb = { .name = "cpu/tlb6xx", .version_id = 1, @@ -628,13 +609,8 @@ static const VMStateDescription vmstate_tlbemb = { env.nb_tlb, vmstate_tlbemb_entry, ppcemb_tlb_t), - /* 403 protection registers */ VMSTATE_END_OF_LIST() }, - .subsections = (const VMStateDescription*[]) { - &vmstate_pbr403, - NULL - } }; static const VMStateDescription vmstate_tlbmas_entry = { diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index c33f5f39b90b..1bcefa7c843c 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -226,15 +226,6 @@ void helper_store_hid0_601(CPUPPCState *env, target_ulong val) } } -void helper_store_403_pbr(CPUPPCState *env, uint32_t num, target_ulong value) -{ - if (likely(env->pb[num] != value)) { - env->pb[num] = value; - /* Should be optimized */ - tlb_flush(env_cpu(env)); - } -} - void helper_store_40x_dbcr0(CPUPPCState *env, target_ulong val) { /* Bits 26 & 27 affect single-stepping. */ diff --git a/target/ppc/translate.c b/target/ppc/translate.c index abbc3a5bb9f0..059956bc59b3 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -911,22 +911,8 @@ void spr_write_booke_tsr(DisasContext *ctx, int sprn, int gprn) } #endif -/* PowerPC 403 specific registers */ -/* PBL1 / PBU1 / PBL2 / PBU2 */ +/* PIR */ #if !defined(CONFIG_USER_ONLY) -void spr_read_403_pbr(DisasContext *ctx, int gprn, int sprn) -{ - tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env, - offsetof(CPUPPCState, pb[sprn - SPR_403_PBL1])); -} - -void spr_write_403_pbr(DisasContext *ctx, int sprn, int gprn) -{ - TCGv_i32 t0 = tcg_const_i32(sprn - SPR_403_PBL1); - gen_helper_store_403_pbr(cpu_env, t0, cpu_gpr[gprn]); - tcg_temp_free_i32(t0); -} - void spr_write_pir(DisasContext *ctx, int sprn, int gprn) { TCGv t0 = tcg_temp_new(); -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs 2022-01-18 10:41 [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater 2022-01-18 10:41 ` [PATCH v2 2/2] target/ppc: Finish removal of 401/403 CPUs Cédric Le Goater @ 2022-01-18 12:02 ` Cédric Le Goater 2 siblings, 0 replies; 7+ messages in thread From: Cédric Le Goater @ 2022-01-18 12:02 UTC (permalink / raw) To: qemu-ppc, qemu-devel; +Cc: Greg Kurz, David Gibson On 1/18/22 11:41, Cédric Le Goater wrote: > Hello, > > This is a follow up of "target/ppc: Finish removal of 401/403 CPUs". > > To "finish" the removal, we need to get rid of the 403 protection > registers under CPUPPCState. This is done after having removed the > last user of .load_state_old. This change breaks migration > compatibility with very old versions of QEMU but it should not be a > problem. > > Thanks, > > C. > > Cédric Le Goater (2): > target/ppc: Remove last user of .load_state_old > target/ppc: Finish removal of 401/403 CPUs Applied to ppc-7.0 Thanks, C. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-01-18 12:07 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-01-18 10:41 [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater 2022-01-18 10:41 ` [PATCH v2 1/2] target/ppc: Remove last user of .load_state_old Cédric Le Goater 2022-01-18 10:46 ` David Gibson 2022-01-18 11:13 ` Matheus K. Ferst 2022-01-18 11:23 ` Peter Maydell 2022-01-18 10:41 ` [PATCH v2 2/2] target/ppc: Finish removal of 401/403 CPUs Cédric Le Goater 2022-01-18 12:02 ` [PATCH v2 0/2] target/ppc: more cleanups around the 403 CPUs Cédric Le Goater
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).