diff options
author | Helge Deller <deller@gmx.de> | 2023-10-14 07:15:10 +0200 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2023-10-20 00:47:38 +0200 |
commit | bcd4dd4c22f2df17def72668c75cdf01fb47b6ff (patch) | |
tree | b14e1a97b7d4ccedadb4062afdce993bc3f6071b /hw/hppa | |
parent | ae759c96c3174ccbc1438b2b9ee265bee6a167a5 (diff) |
hw/hppa: Export machine name, BTLBs, power-button address via fw_cfg
Provide necessary info to SeaBIOS-hppa.
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'hw/hppa')
-rw-r--r-- | hw/hppa/machine.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index c6d8deffcf..de925259ea 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -118,11 +118,13 @@ static void fw_cfg_boot_set(void *opaque, const char *boot_device, fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]); } -static FWCfgState *create_fw_cfg(MachineState *ms) +static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus) { FWCfgState *fw_cfg; uint64_t val; const char qemu_version[] = QEMU_VERSION; + MachineClass *mc = MACHINE_GET_CLASS(ms); + int len; fw_cfg = fw_cfg_init_mem(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus); @@ -137,8 +139,20 @@ static FWCfgState *create_fw_cfg(MachineState *ms) fw_cfg_add_file(fw_cfg, "/etc/cpu/tlb_entries", g_memdup(&val, sizeof(val)), sizeof(val)); + val = cpu_to_le64(HPPA_BTLB_ENTRIES); + fw_cfg_add_file(fw_cfg, "/etc/cpu/btlb_entries", + g_memdup(&val, sizeof(val)), sizeof(val)); + + len = strlen(mc->name) + 1; + fw_cfg_add_file(fw_cfg, "/etc/hppa/machine", + g_memdup(mc->name, len), len); + val = cpu_to_le64(HPA_POWER_BUTTON); - fw_cfg_add_file(fw_cfg, "/etc/power-button-addr", + fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr", + g_memdup(&val, sizeof(val)), sizeof(val)); + + val = cpu_to_le64(CPU_HPA + 24); + fw_cfg_add_file(fw_cfg, "/etc/hppa/DebugOutputPort", g_memdup(&val, sizeof(val)), sizeof(val)); fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]); @@ -148,6 +162,8 @@ static FWCfgState *create_fw_cfg(MachineState *ms) g_memdup(qemu_version, sizeof(qemu_version)), sizeof(qemu_version)); + fw_cfg_add_extra_pci_roots(pci_bus, fw_cfg); + return fw_cfg; } @@ -250,7 +266,7 @@ static void machine_hppa_init(MachineState *machine) parallel_hds[0]); /* fw_cfg configuration interface */ - create_fw_cfg(machine); + create_fw_cfg(machine, pci_bus); /* SCSI disk setup. */ dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); |