On 4/3/26 16:31, Philippe Mathieu-Daudé wrote:
On 3/3/26 17:11, Anton Johansson via qemu development wrote:
Clarifies current CPU model names, assuming 32-bit HPPA runs a PA-7300LC
whereas 64-bit runs a PA-8700. The PA-8500 model is added, which will
later be used by the A400 machine. All CPU models are made into children
of the now abstract TYPE_HPPA_CPU base class.
References to "hppa/hppa64" models in test cases are also updated.
Reviewed-by: Helge Deller <[email protected]>
Signed-off-by: Anton Johansson <[email protected]>
---
target/hppa/cpu-qom.h | 8 +++++++-
hw/hppa/machine.c | 21 +++++++++++++--------
linux-user/hppa/elfload.c | 2 +-
target/hppa/cpu.c | 25 ++++++++++++++++++++-----
tests/qtest/machine-none-test.c | 2 +-
5 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index 714f3bbdaf..910a919923 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -207,7 +207,9 @@ static void hppa_cpu_initfn(Object *obj)
{
CPUHPPAState *env = cpu_env(CPU(obj));
- env->is_pa20 = !!object_dynamic_cast(obj, TYPE_HPPA64_CPU);
+ env->is_pa20 = !!object_dynamic_cast(obj, TYPE_HPPA_CPU_PA_8500) ||
+ !!object_dynamic_cast(obj, TYPE_HPPA_CPU_PA_8700);
Don't we have an architectural bit to test? Does this scale? Could we
propagate in per-CPU_TYPE class_init handler?
I just read the following patch. Maybe squash together for clarity?
+
}
#ifndef CONFIG_USER_ONLY
@@ -314,12 +321,20 @@ static const TypeInfo hppa_cpu_type_infos[] = {
.instance_size = sizeof(HPPACPU),
.instance_align = __alignof(HPPACPU),
.instance_init = hppa_cpu_initfn,
- .abstract = false,
+ .abstract = true,
.class_size = sizeof(HPPACPUClass),
.class_init = hppa_cpu_class_init,
},
{
- .name = TYPE_HPPA64_CPU,
+ .name = TYPE_HPPA_CPU_PA_7300LC,
+ .parent = TYPE_HPPA_CPU,
+ },
+ {
+ .name = TYPE_HPPA_CPU_PA_8500,
+ .parent = TYPE_HPPA_CPU,
+ },
+ {
+ .name = TYPE_HPPA_CPU_PA_8700,
.parent = TYPE_HPPA_CPU,
},
};