{
.name = "registers",
- .args_type = "cpustate_all:-a",
- .params = "[-a]",
- .help = "show the cpu registers (-a: all - show register info for all cpus)",
+ .args_type = "cpustate_all:-a,vcpu:i?",
+ .params = "[-a|vcpu]",
+ .help = "show the cpu registers (-a: show register info for all cpus;"
+ " vcpu: specific vCPU to query; show the current CPU's registers if"
+ " no argument is specified)",
.cmd = hmp_info_registers,
},
static void hmp_info_registers(Monitor *mon, const QDict *qdict)
{
bool all_cpus = qdict_get_try_bool(qdict, "cpustate_all", false);
+ int vcpu = qdict_get_try_int(qdict, "vcpu", -1);
CPUState *cs;
if (all_cpus) {
cpu_dump_state(cs, NULL, CPU_DUMP_FPU);
}
} else {
- cs = mon_get_cpu(mon);
+ cs = vcpu >= 0 ? qemu_get_cpu(vcpu) : mon_get_cpu(mon);
if (!cs) {
- monitor_printf(mon, "No CPU available\n");
+ if (vcpu >= 0) {
+ monitor_printf(mon, "CPU#%d not available\n", vcpu);
+ } else {
+ monitor_printf(mon, "No CPU available\n");
+ }
return;
}
+ monitor_printf(mon, "\nCPU#%d\n", cs->cpu_index);
cpu_dump_state(cs, NULL, CPU_DUMP_FPU);
}
}