Print this page
11584 ::xcall would be useful
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

@@ -800,11 +800,11 @@
  */
 #define NSEC_SHIFT 5
 
 /*ARGSUSED*/
 static int
-scalehrtime_cmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
+scalehrtime_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
 {
         uint32_t nsec_scale;
         hrtime_t tsc = addr, hrt, tsc_last, base, mult = 1;
         unsigned int *tscp = (unsigned int *)&tsc;
         uintptr_t scalehrtimef;

@@ -902,11 +902,11 @@
  * macro. We have the names for each of these features in unix's text segment
  * so we do not have to duplicate them and instead just look them up.
  */
 /*ARGSUSED*/
 static int
-x86_featureset_cmd(uintptr_t addr, uint_t flags, int argc,
+x86_featureset_dcmd(uintptr_t addr, uint_t flags, int argc,
     const mdb_arg_t *argv)
 {
         void *fset;
         GElf_Sym sym;
         uintptr_t nptr;

@@ -1033,10 +1033,13 @@
 
         return (DCMD_OK);
 }
 #endif
 
+extern void xcall_help(void);
+extern int xcall_dcmd(uintptr_t, uint_t, int, const mdb_arg_t *);
+
 static const mdb_dcmd_t dcmds[] = {
         { "gate_desc", ":", "dump a gate descriptor", gate_desc },
         { "idt", ":[-v]", "dump an IDT", idt },
         { "ttrace", "[-x] [-t kthread]", "dump trap trace buffers", ttrace },
         { "vatopfn", ":[-a as]", "translate address to physical page",

@@ -1056,13 +1059,14 @@
             pfntomfn_dcmd },
         { "mfntopfn", ":", "convert hypervisor machine page to physical page",
             mfntopfn_dcmd },
         { "memseg_list", ":", "show memseg list", memseg_list },
         { "scalehrtime", ":[-a|-r]", "scale an unscaled high-res time",
-            scalehrtime_cmd, scalehrtime_help },
+            scalehrtime_dcmd, scalehrtime_help },
         { "x86_featureset", NULL, "dump the x86_featureset vector",
-                x86_featureset_cmd },
+                x86_featureset_dcmd },
+        { "xcall", ":", "print CPU cross-call state", xcall_dcmd, xcall_help },
 #ifdef _KMDB
         { "sysregs", NULL, "dump system registers", sysregs_dcmd },
 #endif
         { NULL }
 };