mirror of https://github.com/xemu-project/xemu.git
cpu: Move CPUClass::asidx_from_attrs to SysemuCPUOps
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210517105140.1062037-20-f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
715e3c1afb
commit
faf39e8283
|
@ -72,8 +72,8 @@ int cpu_asidx_from_attrs(CPUState *cpu, MemTxAttrs attrs)
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (cc->asidx_from_attrs) {
|
if (cc->sysemu_ops->asidx_from_attrs) {
|
||||||
ret = cc->asidx_from_attrs(cpu, attrs);
|
ret = cc->sysemu_ops->asidx_from_attrs(cpu, attrs);
|
||||||
assert(ret < cpu->num_ases && ret >= 0);
|
assert(ret < cpu->num_ases && ret >= 0);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -109,8 +109,6 @@ struct SysemuCPUOps;
|
||||||
* associated memory transaction attributes to use for the access.
|
* associated memory transaction attributes to use for the access.
|
||||||
* CPUs which use memory transaction attributes should implement this
|
* CPUs which use memory transaction attributes should implement this
|
||||||
* instead of get_phys_page_debug.
|
* instead of get_phys_page_debug.
|
||||||
* @asidx_from_attrs: Callback to return the CPU AddressSpace to use for
|
|
||||||
* a memory access with the specified memory transaction attributes.
|
|
||||||
* @gdb_read_register: Callback for letting GDB read a register.
|
* @gdb_read_register: Callback for letting GDB read a register.
|
||||||
* @gdb_write_register: Callback for letting GDB write a register.
|
* @gdb_write_register: Callback for letting GDB write a register.
|
||||||
* @gdb_num_core_regs: Number of core registers accessible to GDB.
|
* @gdb_num_core_regs: Number of core registers accessible to GDB.
|
||||||
|
@ -152,7 +150,6 @@ struct CPUClass {
|
||||||
hwaddr (*get_phys_page_debug)(CPUState *cpu, vaddr addr);
|
hwaddr (*get_phys_page_debug)(CPUState *cpu, vaddr addr);
|
||||||
hwaddr (*get_phys_page_attrs_debug)(CPUState *cpu, vaddr addr,
|
hwaddr (*get_phys_page_attrs_debug)(CPUState *cpu, vaddr addr,
|
||||||
MemTxAttrs *attrs);
|
MemTxAttrs *attrs);
|
||||||
int (*asidx_from_attrs)(CPUState *cpu, MemTxAttrs attrs);
|
|
||||||
int (*gdb_read_register)(CPUState *cpu, GByteArray *buf, int reg);
|
int (*gdb_read_register)(CPUState *cpu, GByteArray *buf, int reg);
|
||||||
int (*gdb_write_register)(CPUState *cpu, uint8_t *buf, int reg);
|
int (*gdb_write_register)(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
* struct SysemuCPUOps: System operations specific to a CPU class
|
* struct SysemuCPUOps: System operations specific to a CPU class
|
||||||
*/
|
*/
|
||||||
typedef struct SysemuCPUOps {
|
typedef struct SysemuCPUOps {
|
||||||
|
/**
|
||||||
|
* @asidx_from_attrs: Callback to return the CPU AddressSpace to use for
|
||||||
|
* a memory access with the specified memory transaction attributes.
|
||||||
|
*/
|
||||||
|
int (*asidx_from_attrs)(CPUState *cpu, MemTxAttrs attrs);
|
||||||
/**
|
/**
|
||||||
* @get_crash_info: Callback for reporting guest crash information in
|
* @get_crash_info: Callback for reporting guest crash information in
|
||||||
* GUEST_PANICKED events.
|
* GUEST_PANICKED events.
|
||||||
|
|
|
@ -1948,6 +1948,7 @@ static gchar *arm_gdb_arch_name(CPUState *cs)
|
||||||
#include "hw/core/sysemu-cpu-ops.h"
|
#include "hw/core/sysemu-cpu-ops.h"
|
||||||
|
|
||||||
static const struct SysemuCPUOps arm_sysemu_ops = {
|
static const struct SysemuCPUOps arm_sysemu_ops = {
|
||||||
|
.asidx_from_attrs = arm_asidx_from_attrs,
|
||||||
.write_elf32_note = arm_cpu_write_elf32_note,
|
.write_elf32_note = arm_cpu_write_elf32_note,
|
||||||
.write_elf64_note = arm_cpu_write_elf64_note,
|
.write_elf64_note = arm_cpu_write_elf64_note,
|
||||||
.virtio_is_big_endian = arm_cpu_virtio_is_big_endian,
|
.virtio_is_big_endian = arm_cpu_virtio_is_big_endian,
|
||||||
|
@ -1993,7 +1994,6 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
cc->gdb_write_register = arm_cpu_gdb_write_register;
|
cc->gdb_write_register = arm_cpu_gdb_write_register;
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
cc->get_phys_page_attrs_debug = arm_cpu_get_phys_page_attrs_debug;
|
cc->get_phys_page_attrs_debug = arm_cpu_get_phys_page_attrs_debug;
|
||||||
cc->asidx_from_attrs = arm_asidx_from_attrs;
|
|
||||||
cc->sysemu_ops = &arm_sysemu_ops;
|
cc->sysemu_ops = &arm_sysemu_ops;
|
||||||
#endif
|
#endif
|
||||||
cc->gdb_num_core_regs = 26;
|
cc->gdb_num_core_regs = 26;
|
||||||
|
|
|
@ -6718,6 +6718,7 @@ static Property x86_cpu_properties[] = {
|
||||||
#include "hw/core/sysemu-cpu-ops.h"
|
#include "hw/core/sysemu-cpu-ops.h"
|
||||||
|
|
||||||
static const struct SysemuCPUOps i386_sysemu_ops = {
|
static const struct SysemuCPUOps i386_sysemu_ops = {
|
||||||
|
.asidx_from_attrs = x86_asidx_from_attrs,
|
||||||
.get_crash_info = x86_cpu_get_crash_info,
|
.get_crash_info = x86_cpu_get_crash_info,
|
||||||
.write_elf32_note = x86_cpu_write_elf32_note,
|
.write_elf32_note = x86_cpu_write_elf32_note,
|
||||||
.write_elf64_note = x86_cpu_write_elf64_note,
|
.write_elf64_note = x86_cpu_write_elf64_note,
|
||||||
|
@ -6754,7 +6755,6 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
||||||
cc->get_paging_enabled = x86_cpu_get_paging_enabled;
|
cc->get_paging_enabled = x86_cpu_get_paging_enabled;
|
||||||
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
cc->asidx_from_attrs = x86_asidx_from_attrs;
|
|
||||||
cc->get_memory_mapping = x86_cpu_get_memory_mapping;
|
cc->get_memory_mapping = x86_cpu_get_memory_mapping;
|
||||||
cc->get_phys_page_attrs_debug = x86_cpu_get_phys_page_attrs_debug;
|
cc->get_phys_page_attrs_debug = x86_cpu_get_phys_page_attrs_debug;
|
||||||
cc->sysemu_ops = &i386_sysemu_ops;
|
cc->sysemu_ops = &i386_sysemu_ops;
|
||||||
|
|
Loading…
Reference in New Issue