[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 01/18] target/ppc: Improve syscall exception logging
From: |
David Gibson |
Subject: |
[PULL 01/18] target/ppc: Improve syscall exception logging |
Date: |
Thu, 7 May 2020 15:02:11 +1000 |
From: Nicholas Piggin <address@hidden>
system calls (at least in Linux) use registers r3-r8 for inputs, so
include those registers in the dump.
This also adds a mode for PAPR hcalls, which have a different calling
convention.
Signed-off-by: Nicholas Piggin <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
target/ppc/excp_helper.c | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 08bc885ca6..81ee19ebae 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -57,12 +57,29 @@ static void ppc_hw_interrupt(CPUPPCState *env)
#else /* defined(CONFIG_USER_ONLY) */
static inline void dump_syscall(CPUPPCState *env)
{
- qemu_log_mask(CPU_LOG_INT, "syscall r0=%016" PRIx64 " r3=%016" PRIx64
- " r4=%016" PRIx64 " r5=%016" PRIx64 " r6=%016" PRIx64
+ qemu_log_mask(CPU_LOG_INT, "syscall r0=%016" PRIx64
+ " r3=%016" PRIx64 " r4=%016" PRIx64 " r5=%016" PRIx64
+ " r6=%016" PRIx64 " r7=%016" PRIx64 " r8=%016" PRIx64
" nip=" TARGET_FMT_lx "\n",
ppc_dump_gpr(env, 0), ppc_dump_gpr(env, 3),
ppc_dump_gpr(env, 4), ppc_dump_gpr(env, 5),
- ppc_dump_gpr(env, 6), env->nip);
+ ppc_dump_gpr(env, 6), ppc_dump_gpr(env, 7),
+ ppc_dump_gpr(env, 8), env->nip);
+}
+
+static inline void dump_hcall(CPUPPCState *env)
+{
+ qemu_log_mask(CPU_LOG_INT, "hypercall r3=%016" PRIx64
+ " r4=%016" PRIx64 " r5=%016" PRIx64 " r6=%016" PRIx64
+ " r7=%016" PRIx64 " r8=%016" PRIx64 " r9=%016" PRIx64
+ " r10=%016" PRIx64 " r11=%016" PRIx64 " r12=%016" PRIx64
+ " nip=" TARGET_FMT_lx "\n",
+ ppc_dump_gpr(env, 3), ppc_dump_gpr(env, 4),
+ ppc_dump_gpr(env, 5), ppc_dump_gpr(env, 6),
+ ppc_dump_gpr(env, 7), ppc_dump_gpr(env, 8),
+ ppc_dump_gpr(env, 9), ppc_dump_gpr(env, 10),
+ ppc_dump_gpr(env, 11), ppc_dump_gpr(env, 12),
+ env->nip);
}
static int powerpc_reset_wakeup(CPUState *cs, CPUPPCState *env, int excp,
@@ -379,9 +396,14 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int
excp_model, int excp)
}
break;
case POWERPC_EXCP_SYSCALL: /* System call exception */
- dump_syscall(env);
lev = env->error_code;
+ if ((lev == 1) && cpu->vhyp) {
+ dump_hcall(env);
+ } else {
+ dump_syscall(env);
+ }
+
/*
* We need to correct the NIP which in this case is supposed
* to point to the next instruction
--
2.26.2
- [PULL 00/18] ppc-for-5.1 queue 20200507, David Gibson, 2020/05/07
- [PULL 03/18] ppc/spapr: tweak change system reset helper, David Gibson, 2020/05/07
- [PULL 01/18] target/ppc: Improve syscall exception logging,
David Gibson <=
- [PULL 04/18] ppc/pnv: Add support for NMI interface, David Gibson, 2020/05/07
- [PULL 02/18] spapr: Don't check capabilities removed between CAS calls, David Gibson, 2020/05/07
- [PULL 11/18] spapr: Don't allow unplug of NVLink2 devices, David Gibson, 2020/05/07
- [PULL 07/18] spapr: Drop CAS reboot flag, David Gibson, 2020/05/07
- [PULL 06/18] spapr/cas: Separate CAS handling from rebuilding the FDT, David Gibson, 2020/05/07
- [PULL 05/18] spapr: Simplify selection of radix/hash during CAS, David Gibson, 2020/05/07
- [PULL 09/18] target/ppc: Introduce a relocation bool in ppc_radix64_handle_mmu_fault(), David Gibson, 2020/05/07
- [PULL 15/18] target/ppc: Add support for Radix partition-scoped translation, David Gibson, 2020/05/07
- [PULL 08/18] target/ppc: Enforce that the root page directory size must be at least 5, David Gibson, 2020/05/07
- [PULL 16/18] spapr_nvdimm.c: make 'label-size' mandatory, David Gibson, 2020/05/07