Print this page
9441 kmdb should stash %cr3 in kdiregs
Reviewed by: John Levon <john.levon@joyent.com>
8956 Implement KPTI
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

@@ -22,11 +22,11 @@
 /*
  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 /*
- * Copyright (c) 2012, Joyent, Inc.  All rights reserved.
+ * Copyright (c) 2018, Joyent, Inc.  All rights reserved.
  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/types.h>

@@ -131,10 +131,14 @@
         { "rsp", KREG_RSP, MDB_TGT_R_EXPORT },
         { "esp", KREG_RSP, MDB_TGT_R_EXPORT | MDB_TGT_R_32 },
         { "sp",  KREG_RSP, MDB_TGT_R_EXPORT | MDB_TGT_R_16 },
         { "spl", KREG_RSP, MDB_TGT_R_EXPORT | MDB_TGT_R_8L },
         { "ss", KREG_SS, MDB_TGT_R_EXPORT },
+        { "gsbase", KREG_GSBASE, MDB_TGT_R_EXPORT },
+        { "kgsbase", KREG_KGSBASE, MDB_TGT_R_EXPORT },
+        { "cr2", KREG_CR2, MDB_TGT_R_EXPORT },
+        { "cr3", KREG_CR3, MDB_TGT_R_EXPORT },
         { NULL, 0, 0 }
 };
 
 void
 mdb_amd64_printregs(const mdb_tgt_gregset_t *gregs)

@@ -184,17 +188,18 @@
             (rflags & KREG_EFLAGS_ZF_MASK) ? "ZF" : "zf",
             (rflags & KREG_EFLAGS_AF_MASK) ? "AF" : "af",
             (rflags & KREG_EFLAGS_PF_MASK) ? "PF" : "pf",
             (rflags & KREG_EFLAGS_CF_MASK) ? "CF" : "cf");
 
-        mdb_printf("%24s%%cs = 0x%04x\t%%ds = 0x%04x\t%%es = 0x%04x\n",
-            " ", kregs[KREG_CS], kregs[KREG_DS], kregs[KREG_ES]);
-
-        mdb_printf("%%trapno = 0x%x\t\t%%fs = 0x%04x\t%%gs = 0x%04x\n",
-            kregs[KREG_TRAPNO], (kregs[KREG_FS] & 0xffff),
-            (kregs[KREG_GS] & 0xffff));
-        mdb_printf("   %%err = 0x%x\n", kregs[KREG_ERR]);
+        mdb_printf("%%cs = 0x%04x\t%%ds = 0x%04x\t"
+            "%%es = 0x%04x\t%%fs = 0x%04x\n", kregs[KREG_CS], kregs[KREG_DS],
+            kregs[KREG_ES], kregs[KREG_FS] & 0xffff);
+        mdb_printf("%%gs = 0x%04x\t%%gsbase = 0x%lx\t%%kgsbase = 0x%lx\n",
+            kregs[KREG_GS] & 0xffff, kregs[KREG_GSBASE], kregs[KREG_KGSBASE]);
+        mdb_printf("%%trapno = 0x%x\t%%err = 0x%x\t%%cr2 = 0x%lx\t"
+            "%%cr3 = 0x%lx\n", kregs[KREG_TRAPNO], kregs[KREG_ERR],
+            kregs[KREG_CR2], kregs[KREG_CR3]);
 }
 
 int
 mdb_amd64_kvm_stack_iter(mdb_tgt_t *t, const mdb_tgt_gregset_t *gsp,
     mdb_tgt_stack_f *func, void *arg)