|
From: | Philippe Mathieu-Daudé |
Subject: | Re: [PATCH v5 01/31] target/alpha: Remove 'ev67' CPU class |
Date: | Thu, 4 Jan 2024 19:03:56 +0100 |
User-agent: | Mozilla Thunderbird |
On 4/1/24 18:58, Philippe Mathieu-Daudé wrote:
On 15/11/23 00:55, Gavin Shan wrote:'ev67' CPU class will be returned to match everything, which makes no sense as mentioned in the comments. Remove the logic to fall back to 'ev67' CPU class to match everything. Signed-off-by: Gavin Shan <gshan@redhat.com> --- target/alpha/cpu.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index 39cf841b3e..91fe8ae095 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c@@ -141,11 +141,8 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model)typename = g_strdup_printf(ALPHA_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - - /* TODO: remove match everything nonsense */ - if (!oc || object_class_is_abstract(oc)) {- /* Default to ev67; no reason not to emulate insns by default. */- oc = object_class_by_name(ALPHA_CPU_TYPE_NAME("ev67")); + if (!oc || !object_class_dynamic_cast(oc, TYPE_ALPHA_CPU)) { + return NULL; }This breaks linux-user: qemu-alpha: unable to find CPU model 'any'
Thread 1 "qemu-alpha" hit Breakpoint 1, alpha_cpu_class_by_name (cpu_model=0x5555557202a0 "any") at target/alpha/cpu.c:123
123 { (gdb) bt#0 alpha_cpu_class_by_name (cpu_model=0x5555557202a0 "any") at target/alpha/cpu.c:123 #1 0x0000555555583956 in cpu_class_by_name (typename=typename@entry=0x555555674af8 "alpha-cpu", cpu_model=0x5555557202a0 "any")
at hw/core/cpu-common.c:156#2 0x00005555555904a1 in parse_cpu_option (cpu_option=<optimized out>) at cpu-target.c:257 #3 0x00005555555822e9 in main (argc=2, argv=0x7fffffffe318, envp=<optimized out>) at linux-user/main.c:784
in main(): 781 if (cpu_model == NULL) { 782 cpu_model = cpu_get_model(get_elf_eflags(execfd)); 783 } 784 cpu_type = parse_cpu_option(cpu_model); Having: $ cat linux-user/alpha/target_elf.h ... #ifndef ALPHA_TARGET_ELF_H #define ALPHA_TARGET_ELF_H static inline const char *cpu_get_model(uint32_t eflags) { return "any"; } #endif
[Prev in Thread] | Current Thread | [Next in Thread] |