From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:60985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaJug-0002Vs-Pe for qemu-devel@nongnu.org; Mon, 12 Dec 2011 23:24:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RaJuf-0006KQ-JU for qemu-devel@nongnu.org; Mon, 12 Dec 2011 23:24:22 -0500 From: David Gibson Date: Tue, 13 Dec 2011 15:24:29 +1100 Message-Id: <1323750275-947-3-git-send-email-david@gibson.dropbear.id.au> In-Reply-To: <1323750275-947-1-git-send-email-david@gibson.dropbear.id.au> References: <1323750275-947-1-git-send-email-david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PATCH 2/8] monitor: add ability to dump SLB entries List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: agraf@suse.de Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org From: Nishanth Aravamudan When run with a PPC Book3S (server) CPU Currently 'info tlb' in the qemu monitor reports "dump_mmu: unimplemented". However, during bringup work, it can be quite handy to have the SLB entries, which are available in the CPUPPCState. This patch adds an implementation of info tlb for book3s, which dumps the SLB. Signed-off-by: Nishanth Aravamudan Signed-off-by: David Gibson --- target-ppc/helper.c | 32 +++++++++++++++++++++++++++----- 1 files changed, 27 insertions(+), 5 deletions(-) diff --git a/target-ppc/helper.c b/target-ppc/helper.c index 137a494..29c7050 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -1545,14 +1545,36 @@ static void mmubooke206_dump_mmu(FILE *f, fprintf_function cpu_fprintf, } } +static void mmubooks_dump_mmu(FILE *f, fprintf_function cpu_fprintf, + CPUState *env) +{ + int i; + uint64_t slbe, slbv; + + cpu_synchronize_state(env); + + cpu_fprintf(f, "SLB\tESID\t\t\tVSID\n"); + for (i = 0; i < env->slb_nr; i++) { + slbe = env->slb[i].esid; + slbv = env->slb[i].vsid; + if (slbe == 0 && slbv == 0) { + continue; + } + cpu_fprintf(f, "%d\t0x%016" PRIx64 "\t0x%016" PRIx64 "\n", + i, slbe, slbv); + } +} + void dump_mmu(FILE *f, fprintf_function cpu_fprintf, CPUState *env) { - switch (env->mmu_model) { - case POWERPC_MMU_BOOKE206: + if (env->mmu_model == POWERPC_MMU_BOOKE206) { mmubooke206_dump_mmu(f, cpu_fprintf, env); - break; - default: - cpu_fprintf(f, "%s: unimplemented\n", __func__); + } else { + if ((env->mmu_model & POWERPC_MMU_64B) != 0) { + mmubooks_dump_mmu(f, cpu_fprintf, env); + } else { + cpu_fprintf(f, "%s: unimplemented\n", __func__); + } } } -- 1.7.7.3