Hi Richard,
On 30/1/24 00:30, Richard Henderson wrote:
> To be used after all targets have populated the hook.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> include/hw/core/cpu.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index 2c284d6397..4385ce54c9 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -103,6 +103,8 @@ struct SysemuCPUOps;
> * @parse_features: Callback to parse command line arguments.
> * @reset_dump_flags: #CPUDumpFlags to use for reset logging.
> * @has_work: Callback for checking if there is work to do.
> + * @mmu_index: Callback for choosing softmmu mmu index;
> + * may be used internally by memory_rw_debug without TCG.
> * @memory_rw_debug: Callback for GDB memory access.
> * @dump_state: Callback for dumping state.
> * @query_cpu_fast:
> @@ -150,6 +152,7 @@ struct CPUClass {
> void (*parse_features)(const char *typename, char *str, Error **errp);
>
> bool (*has_work)(CPUState *cpu);
> + int (*mmu_index)(CPUState *cpu, bool ifetch);
Can the index ever be negative?
Would it be useful to also have a mmu_index_max() so we could
check mmu_index() is in range in the final cpu_mmu_index()?
> int (*memory_rw_debug)(CPUState *cpu, vaddr addr,
> uint8_t *buf, int len, bool is_write);
> void (*dump_state)(CPUState *cpu, FILE *, int flags);