mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
target: Clean up how the dump_mmu() print
The various dump_mmu() take an fprintf()-like callback and a FILE * to pass to it, and so do their helper functions. Passing around callback and argument is rather tiresome. Most dump_mmu() are called only by the target's hmp_info_tlb(). These all pass monitor_printf() cast to fprintf_function and the current monitor cast to FILE *. SPARC's dump_mmu() gets also called from target/sparc/ldst_helper.c a few times #ifdef DEBUG_MMU. These calls pass fprintf() and stdout. The type-punning is technically undefined behaviour, but works in practice. Clean up: drop the callback, and call qemu_printf() instead. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20190417191805.28198-11-armbru@redhat.com>
This commit is contained in:
parent
0442428a89
commit
fad866daa8
18 changed files with 178 additions and 183 deletions
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/main-loop.h"
|
||||
#include "qemu/qemu-print.h"
|
||||
#include "qemu/units.h"
|
||||
#include "cpu.h"
|
||||
#include "exec/helper-proto.h"
|
||||
|
@ -740,8 +741,7 @@ int xtensa_get_physical_addr(CPUXtensaState *env, bool update_tlb,
|
|||
}
|
||||
}
|
||||
|
||||
static void dump_tlb(FILE *f, fprintf_function cpu_fprintf,
|
||||
CPUXtensaState *env, bool dtlb)
|
||||
static void dump_tlb(CPUXtensaState *env, bool dtlb)
|
||||
{
|
||||
unsigned wi, ei;
|
||||
const xtensa_tlb *conf =
|
||||
|
@ -780,13 +780,11 @@ static void dump_tlb(FILE *f, fprintf_function cpu_fprintf,
|
|||
|
||||
if (print_header) {
|
||||
print_header = false;
|
||||
cpu_fprintf(f, "Way %u (%d %s)\n", wi, sz, sz_text);
|
||||
cpu_fprintf(f,
|
||||
"\tVaddr Paddr ASID Attr RWX Cache\n"
|
||||
qemu_printf("Way %u (%d %s)\n", wi, sz, sz_text);
|
||||
qemu_printf("\tVaddr Paddr ASID Attr RWX Cache\n"
|
||||
"\t---------- ---------- ---- ---- --- -------\n");
|
||||
}
|
||||
cpu_fprintf(f,
|
||||
"\t0x%08x 0x%08x 0x%02x 0x%02x %c%c%c %-7s\n",
|
||||
qemu_printf("\t0x%08x 0x%08x 0x%02x 0x%02x %c%c%c %-7s\n",
|
||||
entry->vaddr,
|
||||
entry->paddr,
|
||||
entry->asid,
|
||||
|
@ -801,18 +799,18 @@ static void dump_tlb(FILE *f, fprintf_function cpu_fprintf,
|
|||
}
|
||||
}
|
||||
|
||||
void dump_mmu(FILE *f, fprintf_function cpu_fprintf, CPUXtensaState *env)
|
||||
void dump_mmu(CPUXtensaState *env)
|
||||
{
|
||||
if (xtensa_option_bits_enabled(env->config,
|
||||
XTENSA_OPTION_BIT(XTENSA_OPTION_REGION_PROTECTION) |
|
||||
XTENSA_OPTION_BIT(XTENSA_OPTION_REGION_TRANSLATION) |
|
||||
XTENSA_OPTION_BIT(XTENSA_OPTION_MMU))) {
|
||||
|
||||
cpu_fprintf(f, "ITLB:\n");
|
||||
dump_tlb(f, cpu_fprintf, env, false);
|
||||
cpu_fprintf(f, "\nDTLB:\n");
|
||||
dump_tlb(f, cpu_fprintf, env, true);
|
||||
qemu_printf("ITLB:\n");
|
||||
dump_tlb(env, false);
|
||||
qemu_printf("\nDTLB:\n");
|
||||
dump_tlb(env, true);
|
||||
} else {
|
||||
cpu_fprintf(f, "No TLB for this CPU core\n");
|
||||
qemu_printf("No TLB for this CPU core\n");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue