ppc4xx: Add more PLB registers

These registers are present in 440 SoCs (and maybe in others too) and
U-Boot accesses them when printing register info. We don't emulate
these but add them to avoid crashing when they are read or written.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
BALATON Zoltan 2017-09-16 16:02:41 +02:00 committed by David Gibson
parent 81bb29ace5
commit 4c46f372b0

View file

@ -105,9 +105,12 @@ ram_addr_t ppc405_set_bootinfo (CPUPPCState *env, ppc4xx_bd_info_t *bd,
/*****************************************************************************/ /*****************************************************************************/
/* Peripheral local bus arbitrer */ /* Peripheral local bus arbitrer */
enum { enum {
PLB0_BESR = 0x084, PLB3A0_ACR = 0x077,
PLB0_BEAR = 0x086, PLB4A0_ACR = 0x081,
PLB0_ACR = 0x087, PLB0_BESR = 0x084,
PLB0_BEAR = 0x086,
PLB0_ACR = 0x087,
PLB4A1_ACR = 0x089,
}; };
typedef struct ppc4xx_plb_t ppc4xx_plb_t; typedef struct ppc4xx_plb_t ppc4xx_plb_t;
@ -179,9 +182,12 @@ void ppc4xx_plb_init(CPUPPCState *env)
ppc4xx_plb_t *plb; ppc4xx_plb_t *plb;
plb = g_malloc0(sizeof(ppc4xx_plb_t)); plb = g_malloc0(sizeof(ppc4xx_plb_t));
ppc_dcr_register(env, PLB3A0_ACR, plb, &dcr_read_plb, &dcr_write_plb);
ppc_dcr_register(env, PLB4A0_ACR, plb, &dcr_read_plb, &dcr_write_plb);
ppc_dcr_register(env, PLB0_ACR, plb, &dcr_read_plb, &dcr_write_plb); ppc_dcr_register(env, PLB0_ACR, plb, &dcr_read_plb, &dcr_write_plb);
ppc_dcr_register(env, PLB0_BEAR, plb, &dcr_read_plb, &dcr_write_plb); ppc_dcr_register(env, PLB0_BEAR, plb, &dcr_read_plb, &dcr_write_plb);
ppc_dcr_register(env, PLB0_BESR, plb, &dcr_read_plb, &dcr_write_plb); ppc_dcr_register(env, PLB0_BESR, plb, &dcr_read_plb, &dcr_write_plb);
ppc_dcr_register(env, PLB4A1_ACR, plb, &dcr_read_plb, &dcr_write_plb);
qemu_register_reset(ppc4xx_plb_reset, plb); qemu_register_reset(ppc4xx_plb_reset, plb);
} }