cpu: Directly use cpu_write_elf*() fallback handlers in place
No code directly accesses CPUClass::write_elf*() handlers out of hw/core/cpu.c (the rest are assignation in target/ code): $ git grep -F -- '->write_elf' hw/core/cpu.c:157: return (*cc->write_elf32_qemunote)(f, cpu, opaque); hw/core/cpu.c:171: return (*cc->write_elf32_note)(f, cpu, cpuid, opaque); hw/core/cpu.c:186: return (*cc->write_elf64_qemunote)(f, cpu, opaque); hw/core/cpu.c:200: return (*cc->write_elf64_note)(f, cpu, cpuid, opaque); hw/core/cpu.c:440: k->write_elf32_qemunote = cpu_common_write_elf32_qemunote; hw/core/cpu.c:441: k->write_elf32_note = cpu_common_write_elf32_note; hw/core/cpu.c:442: k->write_elf64_qemunote = cpu_common_write_elf64_qemunote; hw/core/cpu.c:443: k->write_elf64_note = cpu_common_write_elf64_note; target/arm/cpu.c:2304: cc->write_elf64_note = arm_cpu_write_elf64_note; target/arm/cpu.c:2305: cc->write_elf32_note = arm_cpu_write_elf32_note; target/i386/cpu.c:7425: cc->write_elf64_note = x86_cpu_write_elf64_note; target/i386/cpu.c:7426: cc->write_elf64_qemunote = x86_cpu_write_elf64_qemunote; target/i386/cpu.c:7427: cc->write_elf32_note = x86_cpu_write_elf32_note; target/i386/cpu.c:7428: cc->write_elf32_qemunote = x86_cpu_write_elf32_qemunote; target/ppc/translate_init.c.inc:10891: cc->write_elf64_note = ppc64_cpu_write_elf64_note; target/ppc/translate_init.c.inc:10892: cc->write_elf32_note = ppc32_cpu_write_elf32_note; target/s390x/cpu.c:522: cc->write_elf64_note = s390_cpu_write_elf64_note; Check the handler presence in place and remove the common fallback code. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210517105140.1062037-9-f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
cdba7e2f49
commit
5ef2d5a48c
@ -116,65 +116,6 @@ void cpu_exit(CPUState *cpu)
|
|||||||
qatomic_set(&cpu->icount_decr_ptr->u16.high, -1);
|
qatomic_set(&cpu->icount_decr_ptr->u16.high, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
|
||||||
|
|
||||||
return (*cc->write_elf32_qemunote)(f, cpu, opaque);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpu_common_write_elf32_qemunote(WriteCoreDumpFunction f,
|
|
||||||
CPUState *cpu, void *opaque)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cpu,
|
|
||||||
int cpuid, void *opaque)
|
|
||||||
{
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
|
||||||
|
|
||||||
return (*cc->write_elf32_note)(f, cpu, cpuid, opaque);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpu_common_write_elf32_note(WriteCoreDumpFunction f,
|
|
||||||
CPUState *cpu, int cpuid,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_write_elf64_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
|
||||||
|
|
||||||
return (*cc->write_elf64_qemunote)(f, cpu, opaque);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpu_common_write_elf64_qemunote(WriteCoreDumpFunction f,
|
|
||||||
CPUState *cpu, void *opaque)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cpu,
|
|
||||||
int cpuid, void *opaque)
|
|
||||||
{
|
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
|
||||||
|
|
||||||
return (*cc->write_elf64_note)(f, cpu, cpuid, opaque);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpu_common_write_elf64_note(WriteCoreDumpFunction f,
|
|
||||||
CPUState *cpu, int cpuid,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
|
static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@ -377,10 +318,6 @@ static void cpu_class_init(ObjectClass *klass, void *data)
|
|||||||
k->has_work = cpu_common_has_work;
|
k->has_work = cpu_common_has_work;
|
||||||
k->get_paging_enabled = cpu_common_get_paging_enabled;
|
k->get_paging_enabled = cpu_common_get_paging_enabled;
|
||||||
k->get_memory_mapping = cpu_common_get_memory_mapping;
|
k->get_memory_mapping = cpu_common_get_memory_mapping;
|
||||||
k->write_elf32_qemunote = cpu_common_write_elf32_qemunote;
|
|
||||||
k->write_elf32_note = cpu_common_write_elf32_note;
|
|
||||||
k->write_elf64_qemunote = cpu_common_write_elf64_qemunote;
|
|
||||||
k->write_elf64_note = cpu_common_write_elf64_note;
|
|
||||||
k->gdb_read_register = cpu_common_gdb_read_register;
|
k->gdb_read_register = cpu_common_gdb_read_register;
|
||||||
k->gdb_write_register = cpu_common_gdb_write_register;
|
k->gdb_write_register = cpu_common_gdb_write_register;
|
||||||
set_bit(DEVICE_CATEGORY_CPU, dc->categories);
|
set_bit(DEVICE_CATEGORY_CPU, dc->categories);
|
||||||
|
@ -54,6 +54,50 @@ int cpu_asidx_from_attrs(CPUState *cpu, MemTxAttrs attrs)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
|
||||||
|
void *opaque)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (!cc->write_elf32_qemunote) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return (*cc->write_elf32_qemunote)(f, cpu, opaque);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cpu,
|
||||||
|
int cpuid, void *opaque)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (!cc->write_elf32_note) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return (*cc->write_elf32_note)(f, cpu, cpuid, opaque);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_write_elf64_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
|
||||||
|
void *opaque)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (!cc->write_elf64_qemunote) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return (*cc->write_elf64_qemunote)(f, cpu, opaque);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cpu,
|
||||||
|
int cpuid, void *opaque)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (!cc->write_elf64_note) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return (*cc->write_elf64_note)(f, cpu, cpuid, opaque);
|
||||||
|
}
|
||||||
|
|
||||||
bool cpu_virtio_is_big_endian(CPUState *cpu)
|
bool cpu_virtio_is_big_endian(CPUState *cpu)
|
||||||
{
|
{
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user