On Sun, Aug 13, 2017 at 07:04:38PM +0200, BALATON Zoltan wrote: > Despite its name it is a 440 core CPU > > Signed-off-by: BALATON Zoltan <bala...@eik.bme.hu>
Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > --- > target/ppc/cpu-models.c | 3 +++ > target/ppc/cpu-models.h | 1 + > target/ppc/translate_init.c | 38 ++++++++++++++++++++++++++++++++++++++ > 3 files changed, 42 insertions(+) > > diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c > index 4d3e635..7c368fc 100644 > --- a/target/ppc/cpu-models.c > +++ b/target/ppc/cpu-models.c > @@ -348,6 +348,8 @@ > "PowerPC 440 EPb") > POWERPC_DEF("440EPX", CPU_POWERPC_440EPX, 440EP, > "PowerPC 440 EPX") > + POWERPC_DEF("460EXb", CPU_POWERPC_460EXb, 460EX, > + "PowerPC 460 EXb") > #if defined(TODO_USER_ONLY) > POWERPC_DEF("440GPb", CPU_POWERPC_440GPb, 440GP, > "PowerPC 440 GPb") > @@ -1238,6 +1240,7 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { > { "440GP", "440GPc" }, > { "440GR", "440GRa" }, > { "440GX", "440GXf" }, > + { "460EX", "460EXb" }, > > { "RCPU", "MPC5xx" }, > /* MPC5xx microcontrollers */ > diff --git a/target/ppc/cpu-models.h b/target/ppc/cpu-models.h > index b563c45..92f99c0 100644 > --- a/target/ppc/cpu-models.h > +++ b/target/ppc/cpu-models.h > @@ -241,6 +241,7 @@ enum { > CPU_POWERPC_440SP = 0x53221850, > CPU_POWERPC_440SP2 = 0x53221891, > CPU_POWERPC_440SPE = 0x53421890, > + CPU_POWERPC_460EXb = 0x130218A4, /* called 460 but 440 core > */ > /* PowerPC 460 family */ > #if 0 > /* Generic PowerPC 464 */ > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c > index 8fb407e..1e0d566 100644 > --- a/target/ppc/translate_init.c > +++ b/target/ppc/translate_init.c > @@ -3832,6 +3832,44 @@ POWERPC_FAMILY(440EP)(ObjectClass *oc, void *data) > POWERPC_FLAG_DE | POWERPC_FLAG_BUS_CLK; > } > > +POWERPC_FAMILY(460EX)(ObjectClass *oc, void *data) > +{ > + DeviceClass *dc = DEVICE_CLASS(oc); > + PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc); > + > + dc->desc = "PowerPC 460 EX"; > + pcc->init_proc = init_proc_440EP; > + pcc->check_pow = check_pow_nocheck; > + pcc->insns_flags = PPC_INSNS_BASE | PPC_STRING | > + PPC_FLOAT | PPC_FLOAT_FRES | PPC_FLOAT_FSEL | > + PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | > + PPC_FLOAT_STFIWX | > + PPC_DCR | PPC_DCRX | PPC_WRTEE | PPC_RFMCI | > + PPC_CACHE | PPC_CACHE_ICBI | > + PPC_CACHE_DCBZ | PPC_CACHE_DCBA | > + PPC_MEM_TLBSYNC | PPC_MFTB | > + PPC_BOOKE | PPC_4xx_COMMON | PPC_405_MAC | > + PPC_440_SPEC; > + pcc->msr_mask = (1ull << MSR_POW) | > + (1ull << MSR_CE) | > + (1ull << MSR_EE) | > + (1ull << MSR_PR) | > + (1ull << MSR_FP) | > + (1ull << MSR_ME) | > + (1ull << MSR_FE0) | > + (1ull << MSR_DWE) | > + (1ull << MSR_DE) | > + (1ull << MSR_FE1) | > + (1ull << MSR_IR) | > + (1ull << MSR_DR); > + pcc->mmu_model = POWERPC_MMU_BOOKE; > + pcc->excp_model = POWERPC_EXCP_BOOKE; > + pcc->bus_model = PPC_FLAGS_INPUT_BookE; > + pcc->bfd_mach = bfd_mach_ppc_403; > + pcc->flags = POWERPC_FLAG_CE | POWERPC_FLAG_DWE | > + POWERPC_FLAG_DE | POWERPC_FLAG_BUS_CLK; > +} > + > static void init_proc_440GP(CPUPPCState *env) > { > /* Time base */ -- 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
signature.asc
Description: PGP signature