powerpc/xmon: Add ISA v3.0 SPRs to SPR dump
authorBalbir Singh <bsingharora@gmail.com>
Wed, 30 Aug 2017 11:45:09 +0000 (21:45 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 31 Aug 2017 04:26:45 +0000 (14:26 +1000)
Add support for printing the PIDR/TIDR for ISA 300 and PSSCR and PTCR
in ISA 3.0 hypervisor mode.

SPRN_PSSCR_PR is the privileged mode access and is used when we are
not in hypervisor mode.

Signed-off-by: Balbir Singh <bsingharora@gmail.com>
[mpe: Split out of larger patch]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/reg.h
arch/powerpc/xmon/xmon.c

index c36823d64ec9e166820f3a9d3022d0fecc384ac5..2c4366ada97632ecb8bc07edfdf8b1ddeb2749d3 100644 (file)
 #define SPRN_PMSR      0x355   /* Power Management Status Reg */
 #define SPRN_PMMAR     0x356   /* Power Management Memory Activity Register */
 #define SPRN_PSSCR     0x357   /* Processor Stop Status and Control Register (ISA 3.0) */
+#define SPRN_PSSCR_PR  0x337   /* PSSCR ISA 3.0, privileged mode access */
 #define SPRN_PMCR      0x374   /* Power Management Control Register */
 
 /* HFSCR and FSCR bit numbers are the same */
index 9d2c5e0ef305625365eb1dc2ed8c1808f1d53c04..33351c6704b1d0e0fe5138f24ccfed8f1af555e8 100644 (file)
@@ -1807,6 +1807,28 @@ static void dump_207_sprs(void)
 #endif
 }
 
+static void dump_300_sprs(void)
+{
+#ifdef CONFIG_PPC64
+       bool hv = mfmsr() & MSR_HV;
+
+       if (!cpu_has_feature(CPU_FTR_ARCH_300))
+               return;
+
+       printf("pidr   = %.16lx  tidr  = %.16lx\n",
+               mfspr(SPRN_PID), mfspr(SPRN_TIDR));
+       printf("asdr   = %.16lx  psscr = %.16lx\n",
+               mfspr(SPRN_ASDR), hv ? mfspr(SPRN_PSSCR)
+                                       : mfspr(SPRN_PSSCR_PR));
+
+       if (!hv)
+               return;
+
+       printf("ptcr   = %.16lx\n",
+               mfspr(SPRN_PTCR));
+#endif
+}
+
 static void dump_one_spr(int spr, bool show_unimplemented)
 {
        unsigned long val;
@@ -1860,6 +1882,7 @@ static void super_regs(void)
 
                dump_206_sprs();
                dump_207_sprs();
+               dump_300_sprs();
 
                return;
        }