mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'pull-ppc-20221017' of https://gitlab.com/danielhb/qemu into staging
ppc patch queue for 2022-10-18: This queue contains improvements in the e500 and ppc4xx boards, changes in the maintainership of the project, a new QMP/HMP command and bug fixes: - Cedric is stepping back from qemu-ppc maintainership; - ppc4xx_sdram: QOMification and clean ups; - e500: add new types of flash and clean ups; - QMP/HMP: introduce dumpdtb command; - spapr_pci, booke doorbell interrupt and xvcmp* bit fixes; The 'dumpdtb' implementation is also making changes to RISC-V files that were acked by Alistair Francis and are being included in this queue. # -----BEGIN PGP SIGNATURE----- # # iHUEABYKAB0WIQQX6/+ZI9AYAK8oOBk82cqW3gMxZAUCY02qEgAKCRA82cqW3gMx # ZIadAQCYY9f+NFrSJBm3z4JjUaP+GmbgEjibjZW05diyKwbqzQEAjE1KXFCcd40D # 3Brs2Dm4YruaJCwb68vswVQAYteXaQ8= # =hl94 # -----END PGP SIGNATURE----- # gpg: Signature made Mon 17 Oct 2022 15:16:34 EDT # gpg: using EDDSA key 17EBFF9923D01800AF2838193CD9CA96DE033164 # gpg: Good signature from "Daniel Henrique Barboza <danielhb413@gmail.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 17EB FF99 23D0 1800 AF28 3819 3CD9 CA96 DE03 3164 * tag 'pull-ppc-20221017' of https://gitlab.com/danielhb/qemu: (38 commits) hw/riscv: set machine->fdt in spike_board_init() hw/riscv: set machine->fdt in sifive_u_machine_init() hw/ppc: set machine->fdt in spapr machine hw/ppc: set machine->fdt in pnv_reset() hw/ppc: set machine->fdt in pegasos2_machine_reset() hw/ppc: set machine->fdt in xilinx_load_device_tree() hw/ppc: set machine->fdt in sam460ex_load_device_tree() hw/ppc: set machine->fdt in bamboo_load_device_tree() hw/nios2: set machine->fdt in nios2_load_dtb() qmp/hmp, device_tree.c: introduce dumpdtb hw/ppc/spapr_pci.c: Use device_cold_reset() rather than device_legacy_reset() target/ppc: Fix xvcmp* clearing FI bit hw/ppc/e500: Remove if statement which is now always true hw/ppc/mpc8544ds: Add platform bus hw/ppc/mpc8544ds: Rename wrongly named method hw/ppc/e500: Reduce usage of sysbus API docs/system/ppc/ppce500: Add heading for networking chapter hw/gpio/meson: Introduce dedicated config switch for hw/gpio/mpc8xxx hw/ppc/meson: Allow e500 boards to be enabled separately ppc440_uc.c: Remove unneeded parenthesis ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
+5
-5
@@ -267,8 +267,8 @@ F: hw/openrisc/
|
||||
F: tests/tcg/openrisc/
|
||||
|
||||
PowerPC TCG CPUs
|
||||
M: Cédric Le Goater <clg@kaod.org>
|
||||
M: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||
R: Cédric Le Goater <clg@kaod.org>
|
||||
R: David Gibson <david@gibson.dropbear.id.au>
|
||||
R: Greg Kurz <groug@kaod.org>
|
||||
L: qemu-ppc@nongnu.org
|
||||
@@ -392,8 +392,8 @@ F: target/mips/kvm*
|
||||
F: target/mips/sysemu/
|
||||
|
||||
PPC KVM CPUs
|
||||
M: Cédric Le Goater <clg@kaod.org>
|
||||
M: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||
R: Cédric Le Goater <clg@kaod.org>
|
||||
R: David Gibson <david@gibson.dropbear.id.au>
|
||||
R: Greg Kurz <groug@kaod.org>
|
||||
S: Maintained
|
||||
@@ -1365,8 +1365,8 @@ F: include/hw/rtc/m48t59.h
|
||||
F: tests/avocado/ppc_prep_40p.py
|
||||
|
||||
sPAPR (pseries)
|
||||
M: Cédric Le Goater <clg@kaod.org>
|
||||
M: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||
R: Cédric Le Goater <clg@kaod.org>
|
||||
R: David Gibson <david@gibson.dropbear.id.au>
|
||||
R: Greg Kurz <groug@kaod.org>
|
||||
L: qemu-ppc@nongnu.org
|
||||
@@ -1387,7 +1387,7 @@ F: tests/avocado/ppc_pseries.py
|
||||
PowerNV (Non-Virtualized)
|
||||
M: Cédric Le Goater <clg@kaod.org>
|
||||
L: qemu-ppc@nongnu.org
|
||||
S: Maintained
|
||||
S: Odd Fixes
|
||||
F: docs/system/ppc/powernv.rst
|
||||
F: hw/ppc/pnv*
|
||||
F: hw/intc/pnv*
|
||||
@@ -2333,7 +2333,7 @@ T: git https://github.com/philmd/qemu.git fw_cfg-next
|
||||
XIVE
|
||||
M: Cédric Le Goater <clg@kaod.org>
|
||||
L: qemu-ppc@nongnu.org
|
||||
S: Supported
|
||||
S: Odd Fixes
|
||||
F: hw/*/*xive*
|
||||
F: include/hw/*/*xive*
|
||||
F: docs/*/*xive*
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Default configuration for ppc-softmmu
|
||||
|
||||
# For embedded PPCs:
|
||||
CONFIG_E500=y
|
||||
CONFIG_E500PLAT=y
|
||||
CONFIG_MPC8544DS=y
|
||||
CONFIG_PPC405=y
|
||||
CONFIG_PPC440=y
|
||||
CONFIG_VIRTEX=y
|
||||
|
||||
@@ -146,6 +146,9 @@ You can specify a real world SoC device that QEMU has built-in support but all
|
||||
these SoCs are e500v2 based MPC85xx series, hence you cannot test anything
|
||||
built for P4080 (e500mc), P5020 (e5500) and T2080 (e6500).
|
||||
|
||||
Networking
|
||||
----------
|
||||
|
||||
By default a VirtIO standard PCI networking device is connected as an ethernet
|
||||
interface at PCI address 0.1.0, but we can switch that to an e1000 NIC by:
|
||||
|
||||
|
||||
@@ -1800,3 +1800,18 @@ ERST
|
||||
.sub_table = hmp_info_cmds,
|
||||
.flags = "p",
|
||||
},
|
||||
|
||||
#if defined(CONFIG_FDT)
|
||||
{
|
||||
.name = "dumpdtb",
|
||||
.args_type = "filename:F",
|
||||
.params = "filename",
|
||||
.help = "dump the FDT in dtb format to 'filename'",
|
||||
.cmd = hmp_dumpdtb,
|
||||
},
|
||||
|
||||
SRST
|
||||
``dumpdtb`` *filename*
|
||||
Dump the FDT in dtb format to *filename*.
|
||||
ERST
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,9 @@ config PL061
|
||||
config GPIO_KEY
|
||||
bool
|
||||
|
||||
config GPIO_MPC8XXX
|
||||
bool
|
||||
|
||||
config GPIO_PWR
|
||||
bool
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
softmmu_ss.add(when: 'CONFIG_E500', if_true: files('mpc8xxx.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_GPIO_KEY', if_true: files('gpio_key.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_GPIO_MPC8XXX', if_true: files('mpc8xxx.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_GPIO_PWR', if_true: files('gpio_pwr.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_MAX7310', if_true: files('max7310.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_PL061', if_true: files('pl061.c'))
|
||||
|
||||
+7
-1
@@ -43,6 +43,8 @@
|
||||
|
||||
#include "boot.h"
|
||||
|
||||
#include <libfdt.h>
|
||||
|
||||
#define NIOS2_MAGIC 0x534f494e
|
||||
|
||||
static struct nios2_boot_info {
|
||||
@@ -81,6 +83,7 @@ static uint64_t translate_kernel_address(void *opaque, uint64_t addr)
|
||||
static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t ramsize,
|
||||
const char *kernel_cmdline, const char *dtb_filename)
|
||||
{
|
||||
MachineState *machine = MACHINE(qdev_get_machine());
|
||||
int fdt_size;
|
||||
void *fdt = NULL;
|
||||
int r;
|
||||
@@ -113,7 +116,10 @@ static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t ramsize,
|
||||
}
|
||||
|
||||
cpu_physical_memory_write(bi.fdt, fdt, fdt_size);
|
||||
g_free(fdt);
|
||||
|
||||
/* Set machine->fdt for 'dumpdtb' QMP/HMP command */
|
||||
machine->fdt = fdt;
|
||||
|
||||
return fdt_size;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
nios2_ss = ss.source_set()
|
||||
nios2_ss.add(files('boot.c'))
|
||||
nios2_ss.add(files('boot.c'), fdt)
|
||||
nios2_ss.add(when: 'CONFIG_NIOS2_10M50', if_true: files('10m50_devboard.c'))
|
||||
nios2_ss.add(when: 'CONFIG_NIOS2_GENERIC_NOMMU', if_true: files('generic_nommu.c'))
|
||||
|
||||
|
||||
@@ -124,6 +124,7 @@ config E500
|
||||
imply AT24C
|
||||
imply VIRTIO_PCI
|
||||
select ETSEC
|
||||
select GPIO_MPC8XXX
|
||||
select OPENPIC
|
||||
select PLATFORM_BUS
|
||||
select PPCE500_PCI
|
||||
@@ -132,6 +133,14 @@ config E500
|
||||
select FDT_PPC
|
||||
select DS1338
|
||||
|
||||
config E500PLAT
|
||||
bool
|
||||
select E500
|
||||
|
||||
config MPC8544DS
|
||||
bool
|
||||
select E500
|
||||
|
||||
config VIRTEX
|
||||
bool
|
||||
select PPC4XX
|
||||
|
||||
+14
-16
@@ -1007,25 +1007,23 @@ void ppce500_init(MachineState *machine)
|
||||
}
|
||||
|
||||
/* Platform Bus Device */
|
||||
if (pmc->has_platform_bus) {
|
||||
dev = qdev_new(TYPE_PLATFORM_BUS_DEVICE);
|
||||
dev->id = g_strdup(TYPE_PLATFORM_BUS_DEVICE);
|
||||
qdev_prop_set_uint32(dev, "num_irqs", pmc->platform_bus_num_irqs);
|
||||
qdev_prop_set_uint32(dev, "mmio_size", pmc->platform_bus_size);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
pms->pbus_dev = PLATFORM_BUS_DEVICE(dev);
|
||||
dev = qdev_new(TYPE_PLATFORM_BUS_DEVICE);
|
||||
dev->id = g_strdup(TYPE_PLATFORM_BUS_DEVICE);
|
||||
qdev_prop_set_uint32(dev, "num_irqs", pmc->platform_bus_num_irqs);
|
||||
qdev_prop_set_uint32(dev, "mmio_size", pmc->platform_bus_size);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
pms->pbus_dev = PLATFORM_BUS_DEVICE(dev);
|
||||
|
||||
s = SYS_BUS_DEVICE(pms->pbus_dev);
|
||||
for (i = 0; i < pmc->platform_bus_num_irqs; i++) {
|
||||
int irqn = pmc->platform_bus_first_irq + i;
|
||||
sysbus_connect_irq(s, i, qdev_get_gpio_in(mpicdev, irqn));
|
||||
}
|
||||
|
||||
memory_region_add_subregion(address_space_mem,
|
||||
pmc->platform_bus_base,
|
||||
sysbus_mmio_get_region(s, 0));
|
||||
s = SYS_BUS_DEVICE(pms->pbus_dev);
|
||||
for (i = 0; i < pmc->platform_bus_num_irqs; i++) {
|
||||
int irqn = pmc->platform_bus_first_irq + i;
|
||||
sysbus_connect_irq(s, i, qdev_get_gpio_in(mpicdev, irqn));
|
||||
}
|
||||
|
||||
memory_region_add_subregion(address_space_mem,
|
||||
pmc->platform_bus_base,
|
||||
&pms->pbus_dev->mmio);
|
||||
|
||||
/*
|
||||
* Smart firmware defaults ahead!
|
||||
*
|
||||
|
||||
@@ -27,7 +27,6 @@ struct PPCE500MachineClass {
|
||||
|
||||
int mpic_version;
|
||||
bool has_mpc8xxx_gpio;
|
||||
bool has_platform_bus;
|
||||
hwaddr platform_bus_base;
|
||||
hwaddr platform_bus_size;
|
||||
int platform_bus_first_irq;
|
||||
|
||||
@@ -86,7 +86,6 @@ static void e500plat_machine_class_init(ObjectClass *oc, void *data)
|
||||
pmc->fixup_devtree = e500plat_fixup_devtree;
|
||||
pmc->mpic_version = OPENPIC_MODEL_FSL_MPIC_42;
|
||||
pmc->has_mpc8xxx_gpio = true;
|
||||
pmc->has_platform_bus = true;
|
||||
pmc->platform_bus_base = 0xf00000000ULL;
|
||||
pmc->platform_bus_size = 128 * MiB;
|
||||
pmc->platform_bus_first_irq = 5;
|
||||
|
||||
+2
-4
@@ -71,12 +71,10 @@ ppc_ss.add(when: 'CONFIG_MAC_OLDWORLD', if_true: files('mac_oldworld.c'))
|
||||
# NewWorld PowerMac
|
||||
ppc_ss.add(when: 'CONFIG_MAC_NEWWORLD', if_true: files('mac_newworld.c'))
|
||||
# e500
|
||||
ppc_ss.add(when: 'CONFIG_E500PLAT', if_true: files('e500plat.c'))
|
||||
ppc_ss.add(when: 'CONFIG_MPC8544DS', if_true: files('mpc8544ds.c'))
|
||||
ppc_ss.add(when: 'CONFIG_E500', if_true: files(
|
||||
'e500.c',
|
||||
'mpc8544ds.c',
|
||||
'e500plat.c'
|
||||
))
|
||||
ppc_ss.add(when: 'CONFIG_E500', if_true: files(
|
||||
'mpc8544_guts.c',
|
||||
'ppce500_spin.c'
|
||||
))
|
||||
|
||||
+7
-2
@@ -14,6 +14,7 @@
|
||||
#include "sysemu/device_tree.h"
|
||||
#include "hw/ppc/openpic.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/units.h"
|
||||
#include "cpu.h"
|
||||
|
||||
static void mpc8544ds_fixup_devtree(void *fdt)
|
||||
@@ -36,7 +37,7 @@ static void mpc8544ds_init(MachineState *machine)
|
||||
ppce500_init(machine);
|
||||
}
|
||||
|
||||
static void e500plat_machine_class_init(ObjectClass *oc, void *data)
|
||||
static void mpc8544ds_machine_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
PPCE500MachineClass *pmc = PPCE500_MACHINE_CLASS(oc);
|
||||
@@ -45,6 +46,10 @@ static void e500plat_machine_class_init(ObjectClass *oc, void *data)
|
||||
pmc->pci_nr_slots = 2;
|
||||
pmc->fixup_devtree = mpc8544ds_fixup_devtree;
|
||||
pmc->mpic_version = OPENPIC_MODEL_FSL_MPIC_20;
|
||||
pmc->platform_bus_base = 0xFF800000ULL;
|
||||
pmc->platform_bus_size = 8 * MiB;
|
||||
pmc->platform_bus_first_irq = 5;
|
||||
pmc->platform_bus_num_irqs = 10;
|
||||
pmc->ccsrbar_base = 0xE0000000ULL;
|
||||
pmc->pci_mmio_base = 0xC0000000ULL;
|
||||
pmc->pci_mmio_bus_base = 0xC0000000ULL;
|
||||
@@ -63,7 +68,7 @@ static void e500plat_machine_class_init(ObjectClass *oc, void *data)
|
||||
static const TypeInfo mpc8544ds_info = {
|
||||
.name = TYPE_MPC8544DS_MACHINE,
|
||||
.parent = TYPE_PPCE500_MACHINE,
|
||||
.class_init = e500plat_machine_class_init,
|
||||
.class_init = mpc8544ds_machine_class_init,
|
||||
};
|
||||
|
||||
static void mpc8544ds_register_types(void)
|
||||
|
||||
@@ -331,6 +331,10 @@ static void pegasos2_machine_reset(MachineState *machine)
|
||||
|
||||
vof_build_dt(fdt, pm->vof);
|
||||
vof_client_open_store(fdt, pm->vof, "/chosen", "stdout", "/failsafe");
|
||||
|
||||
/* Set machine->fdt for 'dumpdtb' QMP/HMP command */
|
||||
machine->fdt = fdt;
|
||||
|
||||
pm->cpu->vhyp = PPC_VIRTUAL_HYPERVISOR(machine);
|
||||
}
|
||||
|
||||
|
||||
+7
-1
@@ -678,7 +678,13 @@ static void pnv_reset(MachineState *machine)
|
||||
qemu_fdt_dumpdtb(fdt, fdt_totalsize(fdt));
|
||||
cpu_physical_memory_write(PNV_FDT_ADDR, fdt, fdt_totalsize(fdt));
|
||||
|
||||
g_free(fdt);
|
||||
/*
|
||||
* Set machine->fdt for 'dumpdtb' QMP/HMP command. Free
|
||||
* the existing machine->fdt to avoid leaking it during
|
||||
* a reset.
|
||||
*/
|
||||
g_free(machine->fdt);
|
||||
machine->fdt = fdt;
|
||||
}
|
||||
|
||||
static ISABus *pnv_chip_power8_isa_create(PnvChip *chip, Error **errp)
|
||||
|
||||
+1
-7
@@ -167,13 +167,6 @@ struct Ppc405SoCState {
|
||||
DeviceState parent_obj;
|
||||
|
||||
/* Public */
|
||||
MemoryRegion ram_banks[2];
|
||||
hwaddr ram_bases[2], ram_sizes[2];
|
||||
bool do_dram_init;
|
||||
|
||||
MemoryRegion *dram_mr;
|
||||
hwaddr ram_size;
|
||||
|
||||
PowerPCCPU cpu;
|
||||
PPCUIC uic;
|
||||
Ppc405CpcState cpc;
|
||||
@@ -187,6 +180,7 @@ struct Ppc405SoCState {
|
||||
Ppc405PobState pob;
|
||||
Ppc4xxPlbState plb;
|
||||
Ppc4xxMalState mal;
|
||||
Ppc4xxSdramDdrState sdram;
|
||||
};
|
||||
|
||||
#endif /* PPC405_H */
|
||||
|
||||
+1
-12
@@ -271,25 +271,13 @@ static void boot_from_kernel(MachineState *machine, PowerPCCPU *cpu)
|
||||
static void ppc405_init(MachineState *machine)
|
||||
{
|
||||
Ppc405MachineState *ppc405 = PPC405_MACHINE(machine);
|
||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||
const char *kernel_filename = machine->kernel_filename;
|
||||
MemoryRegion *sysmem = get_system_memory();
|
||||
|
||||
if (machine->ram_size != mc->default_ram_size) {
|
||||
char *sz = size_to_str(mc->default_ram_size);
|
||||
error_report("Invalid RAM size, should be %s", sz);
|
||||
g_free(sz);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
object_initialize_child(OBJECT(machine), "soc", &ppc405->soc,
|
||||
TYPE_PPC405_SOC);
|
||||
object_property_set_uint(OBJECT(&ppc405->soc), "ram-size",
|
||||
machine->ram_size, &error_fatal);
|
||||
object_property_set_link(OBJECT(&ppc405->soc), "dram",
|
||||
OBJECT(machine->ram), &error_abort);
|
||||
object_property_set_bool(OBJECT(&ppc405->soc), "dram-init",
|
||||
kernel_filename != NULL, &error_abort);
|
||||
object_property_set_uint(OBJECT(&ppc405->soc), "sys-clk", 33333333,
|
||||
&error_abort);
|
||||
qdev_realize(DEVICE(&ppc405->soc), NULL, &error_fatal);
|
||||
@@ -349,6 +337,7 @@ static void ppc405_init(MachineState *machine)
|
||||
|
||||
/* Load ELF kernel and rootfs.cpio */
|
||||
} else if (kernel_filename && !machine->firmware) {
|
||||
ppc4xx_sdram_ddr_enable(&ppc405->soc.sdram);
|
||||
boot_from_kernel(machine, &ppc405->soc.cpu);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-19
@@ -1016,6 +1016,9 @@ static void ppc405_soc_instance_init(Object *obj)
|
||||
object_initialize_child(obj, "plb", &s->plb, TYPE_PPC4xx_PLB);
|
||||
|
||||
object_initialize_child(obj, "mal", &s->mal, TYPE_PPC4xx_MAL);
|
||||
|
||||
object_initialize_child(obj, "sdram", &s->sdram, TYPE_PPC4xx_SDRAM_DDR);
|
||||
object_property_add_alias(obj, "dram", OBJECT(&s->sdram), "dram");
|
||||
}
|
||||
|
||||
static void ppc405_reset(void *opaque)
|
||||
@@ -1073,16 +1076,17 @@ static void ppc405_soc_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(DEVICE(&s->cpu), PPC40x_INPUT_CINT));
|
||||
|
||||
/* SDRAM controller */
|
||||
/* XXX 405EP has no ECC interrupt */
|
||||
s->ram_bases[0] = 0;
|
||||
s->ram_sizes[0] = s->ram_size;
|
||||
memory_region_init_alias(&s->ram_banks[0], OBJECT(s),
|
||||
"ppc405.sdram0", s->dram_mr,
|
||||
s->ram_bases[0], s->ram_sizes[0]);
|
||||
|
||||
ppc4xx_sdram_init(env, qdev_get_gpio_in(DEVICE(&s->uic), 17), 1,
|
||||
s->ram_banks, s->ram_bases, s->ram_sizes,
|
||||
s->do_dram_init);
|
||||
/*
|
||||
* We use the 440 DDR SDRAM controller which has more regs and features
|
||||
* but it's compatible enough for now
|
||||
*/
|
||||
object_property_set_int(OBJECT(&s->sdram), "nbanks", 2, &error_abort);
|
||||
if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->sdram), &s->cpu, errp)) {
|
||||
return;
|
||||
}
|
||||
/* XXX 405EP has no ECC interrupt */
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdram), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->uic), 17));
|
||||
|
||||
/* External bus controller */
|
||||
if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->ebc), &s->cpu, errp)) {
|
||||
@@ -1157,14 +1161,6 @@ static void ppc405_soc_realize(DeviceState *dev, Error **errp)
|
||||
/* Uses UIC IRQs 9, 15, 17 */
|
||||
}
|
||||
|
||||
static Property ppc405_soc_properties[] = {
|
||||
DEFINE_PROP_LINK("dram", Ppc405SoCState, dram_mr, TYPE_MEMORY_REGION,
|
||||
MemoryRegion *),
|
||||
DEFINE_PROP_BOOL("dram-init", Ppc405SoCState, do_dram_init, 0),
|
||||
DEFINE_PROP_UINT64("ram-size", Ppc405SoCState, ram_size, 0),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
static void ppc405_soc_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
@@ -1172,7 +1168,6 @@ static void ppc405_soc_class_init(ObjectClass *oc, void *data)
|
||||
dc->realize = ppc405_soc_realize;
|
||||
/* Reason: only works as part of a ppc405 board/machine */
|
||||
dc->user_creatable = false;
|
||||
device_class_set_props(dc, ppc405_soc_properties);
|
||||
}
|
||||
|
||||
static const TypeInfo ppc405_types[] = {
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
void ppc4xx_l2sram_init(CPUPPCState *env);
|
||||
void ppc4xx_cpr_init(CPUPPCState *env);
|
||||
void ppc4xx_sdr_init(CPUPPCState *env);
|
||||
void ppc440_sdram_init(CPUPPCState *env, int nbanks,
|
||||
MemoryRegion *ram_memories,
|
||||
hwaddr *ram_bases, hwaddr *ram_sizes,
|
||||
int do_init);
|
||||
void ppc4xx_ahb_init(CPUPPCState *env);
|
||||
void ppc4xx_dma_init(CPUPPCState *env, int dcr_base);
|
||||
void ppc460ex_pcie_init(CPUPPCState *env);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user