|
@@ -46,6 +46,8 @@
|
|
|
#include "qemu-common.h"
|
|
|
#include "qemu/datadir.h"
|
|
|
#include "qapi/error.h"
|
|
|
+#include "qapi/qapi-commands-machine.h"
|
|
|
+#include "qapi/type-helpers.h"
|
|
|
#include "trace.h"
|
|
|
#include "hw/hw.h"
|
|
|
#include "disas/disas.h"
|
|
@@ -1474,32 +1476,35 @@ void *rom_ptr_for_as(AddressSpace *as, hwaddr addr, size_t size)
|
|
|
return cbdata.rom;
|
|
|
}
|
|
|
|
|
|
-void hmp_info_roms(Monitor *mon, const QDict *qdict)
|
|
|
+HumanReadableText *qmp_x_query_roms(Error **errp)
|
|
|
{
|
|
|
Rom *rom;
|
|
|
+ g_autoptr(GString) buf = g_string_new("");
|
|
|
|
|
|
QTAILQ_FOREACH(rom, &roms, next) {
|
|
|
if (rom->mr) {
|
|
|
- monitor_printf(mon, "%s"
|
|
|
- " size=0x%06zx name=\"%s\"\n",
|
|
|
- memory_region_name(rom->mr),
|
|
|
- rom->romsize,
|
|
|
- rom->name);
|
|
|
+ g_string_append_printf(buf, "%s"
|
|
|
+ " size=0x%06zx name=\"%s\"\n",
|
|
|
+ memory_region_name(rom->mr),
|
|
|
+ rom->romsize,
|
|
|
+ rom->name);
|
|
|
} else if (!rom->fw_file) {
|
|
|
- monitor_printf(mon, "addr=" TARGET_FMT_plx
|
|
|
- " size=0x%06zx mem=%s name=\"%s\"\n",
|
|
|
- rom->addr, rom->romsize,
|
|
|
- rom->isrom ? "rom" : "ram",
|
|
|
- rom->name);
|
|
|
+ g_string_append_printf(buf, "addr=" TARGET_FMT_plx
|
|
|
+ " size=0x%06zx mem=%s name=\"%s\"\n",
|
|
|
+ rom->addr, rom->romsize,
|
|
|
+ rom->isrom ? "rom" : "ram",
|
|
|
+ rom->name);
|
|
|
} else {
|
|
|
- monitor_printf(mon, "fw=%s/%s"
|
|
|
- " size=0x%06zx name=\"%s\"\n",
|
|
|
- rom->fw_dir,
|
|
|
- rom->fw_file,
|
|
|
- rom->romsize,
|
|
|
- rom->name);
|
|
|
+ g_string_append_printf(buf, "fw=%s/%s"
|
|
|
+ " size=0x%06zx name=\"%s\"\n",
|
|
|
+ rom->fw_dir,
|
|
|
+ rom->fw_file,
|
|
|
+ rom->romsize,
|
|
|
+ rom->name);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ return human_readable_text_from_str(buf);
|
|
|
}
|
|
|
|
|
|
typedef enum HexRecord HexRecord;
|