aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2023-09-13 10:40:12 +0200
committerHelge Deller <deller@gmx.de>2023-09-15 17:34:38 +0200
commit6d1ef68ccafc7989e73b499b617f97d96ea34ac1 (patch)
tree9de9d5e0813291a030d14a81cf8f0432ed51c7b7
parent711212ac136daa954d51b3d7e3c0df54aa3da63d (diff)
downloadqemu-6d1ef68ccafc7989e73b499b617f97d96ea34ac1.zip
qemu-6d1ef68ccafc7989e73b499b617f97d96ea34ac1.tar.gz
qemu-6d1ef68ccafc7989e73b499b617f97d96ea34ac1.tar.bz2
target/hppa: Report and clear BTLBs via fw_cfg at startup
Report the new number of TLB entries (without BTLBs) to the guest and drop reporting of BTLB entries which weren't used at all. Clear all BTLB and TLB entries at machine reset. Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r--hw/hppa/machine.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 866e11d..cf28cb9 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -133,14 +133,10 @@ static FWCfgState *create_fw_cfg(MachineState *ms)
fw_cfg_add_file(fw_cfg, "/etc/firmware-min-version",
g_memdup(&val, sizeof(val)), sizeof(val));
- val = cpu_to_le64(HPPA_TLB_ENTRIES);
+ val = cpu_to_le64(HPPA_TLB_ENTRIES - HPPA_BTLB_ENTRIES);
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));
-
val = cpu_to_le64(HPA_POWER_BUTTON);
fw_cfg_add_file(fw_cfg, "/etc/power-button-addr",
g_memdup(&val, sizeof(val)), sizeof(val));
@@ -433,6 +429,10 @@ static void hppa_machine_reset(MachineState *ms, ShutdownCause reason)
cs->exception_index = -1;
cs->halted = 0;
+
+ /* clear any existing TLB and BTLB entries */
+ memset(cpu[i]->env.tlb, 0, sizeof(cpu[i]->env.tlb));
+ cpu[i]->env.tlb_last = HPPA_BTLB_ENTRIES;
}
/* already initialized by machine_hppa_init()? */