Skip to content

Commit

Permalink
OS-7441 mdb: clean up ::sysregs duplication
Browse files Browse the repository at this point in the history
Reviewed by: John Levon <john.levon@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: John Levon <john.levon@joyent.com>
  • Loading branch information
hrosenfeld committed Feb 13, 2019
1 parent a34efbb commit 2a78db8
Show file tree
Hide file tree
Showing 9 changed files with 343 additions and 265 deletions.
3 changes: 2 additions & 1 deletion usr/src/cmd/mdb/i86pc/modules/unix/amd64/Makefile
Expand Up @@ -22,7 +22,7 @@
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright 2018 Joyent, Inc.
# Copyright 2019 Joyent, Inc.

MODULE = unix.so
MDBTGT = kvm
Expand All @@ -38,6 +38,7 @@ include ../../../../Makefile.module

CPPFLAGS += -DMP -D_MACHDEP
CPPFLAGS += -I../../../../common
CPPFLAGS += -I../../../../intel
CPPFLAGS += -I$(SRC)/uts/i86pc
CPPFLAGS += -I$(SRC)/uts/intel

Expand Down
78 changes: 15 additions & 63 deletions usr/src/cmd/mdb/i86pc/modules/unix/unix.c
Expand Up @@ -20,11 +20,12 @@
*/
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2018 Joyent, Inc.
* Copyright 2019 Joyent, Inc.
*/

#include <mdb/mdb_modapi.h>
#include <mdb/mdb_ctf.h>
#include <mdb/mdb_x86util.h>
#include <sys/cpuvar.h>
#include <sys/systm.h>
#include <sys/traptrace.h>
Expand Down Expand Up @@ -963,73 +964,24 @@ x86_featureset_dcmd(uintptr_t addr, uint_t flags, int argc,
static int
sysregs_dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
ulong_t cr0, cr2, cr3, cr4;
struct sysregs sregs = { 0 };
desctbr_t gdtr;
boolean_t longmode = B_FALSE;

static const mdb_bitmask_t cr0_flag_bits[] = {
{ "PE", CR0_PE, CR0_PE },
{ "MP", CR0_MP, CR0_MP },
{ "EM", CR0_EM, CR0_EM },
{ "TS", CR0_TS, CR0_TS },
{ "ET", CR0_ET, CR0_ET },
{ "NE", CR0_NE, CR0_NE },
{ "WP", CR0_WP, CR0_WP },
{ "AM", CR0_AM, CR0_AM },
{ "NW", CR0_NW, CR0_NW },
{ "CD", CR0_CD, CR0_CD },
{ "PG", CR0_PG, CR0_PG },
{ NULL, 0, 0 }
};

static const mdb_bitmask_t cr3_flag_bits[] = {
{ "PCD", CR3_PCD, CR3_PCD },
{ "PWT", CR3_PWT, CR3_PWT },
{ NULL, 0, 0, }
};

static const mdb_bitmask_t cr4_flag_bits[] = {
{ "VME", CR4_VME, CR4_VME },
{ "PVI", CR4_PVI, CR4_PVI },
{ "TSD", CR4_TSD, CR4_TSD },
{ "DE", CR4_DE, CR4_DE },
{ "PSE", CR4_PSE, CR4_PSE },
{ "PAE", CR4_PAE, CR4_PAE },
{ "MCE", CR4_MCE, CR4_MCE },
{ "PGE", CR4_PGE, CR4_PGE },
{ "PCE", CR4_PCE, CR4_PCE },
{ "OSFXSR", CR4_OSFXSR, CR4_OSFXSR },
{ "OSXMMEXCPT", CR4_OSXMMEXCPT, CR4_OSXMMEXCPT },
{ "VMXE", CR4_VMXE, CR4_VMXE },
{ "SMXE", CR4_SMXE, CR4_SMXE },
{ "PCIDE", CR4_PCIDE, CR4_PCIDE },
{ "OSXSAVE", CR4_OSXSAVE, CR4_OSXSAVE },
{ "SMEP", CR4_SMEP, CR4_SMEP },
{ "SMAP", CR4_SMAP, CR4_SMAP },
{ NULL, 0, 0 }
};

cr0 = kmdb_unix_getcr0();
cr2 = kmdb_unix_getcr2();
cr3 = kmdb_unix_getcr3();
cr4 = kmdb_unix_getcr4();

kmdb_unix_getgdtr(&gdtr);
#ifdef __amd64
longmode = B_TRUE;
#endif

mdb_printf("%%cr0 = 0x%lx <%b>\n", cr0, cr0, cr0_flag_bits);
mdb_printf("%%cr2 = 0x%lx <%a>\n", cr2, cr2);
sregs.sr_cr0 = kmdb_unix_getcr0();
sregs.sr_cr2 = kmdb_unix_getcr2();
sregs.sr_cr3 = kmdb_unix_getcr3();
sregs.sr_cr4 = kmdb_unix_getcr4();

if ((cr4 & CR4_PCIDE)) {
mdb_printf("%%cr3 = 0x%lx <pfn:0x%lx pcid:%lu>\n", cr3,
cr3 >> MMU_PAGESHIFT, cr3 & MMU_PAGEOFFSET);
} else {
mdb_printf("%%cr3 = 0x%lx <pfn:0x%lx flags:%b>\n", cr3,
cr3 >> MMU_PAGESHIFT, cr3, cr3_flag_bits);
}

mdb_printf("%%cr4 = 0x%lx <%b>\n", cr4, cr4, cr4_flag_bits);
kmdb_unix_getgdtr(&gdtr);
sregs.sr_gdtr.d_base = gdtr.dtr_base;
sregs.sr_gdtr.d_lim = gdtr.dtr_limit;

mdb_printf("%%gdtr.base = 0x%lx, %%gdtr.limit = 0x%hx\n",
gdtr.dtr_base, gdtr.dtr_limit);
mdb_x86_print_sysregs(&sregs, longmode);

return (DCMD_OK);
}
Expand Down
3 changes: 2 additions & 1 deletion usr/src/cmd/mdb/i86xpv/modules/unix/amd64/Makefile
Expand Up @@ -22,7 +22,7 @@
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright 2018 Joyent, Inc.
# Copyright 2019 Joyent, Inc.

MODULE = unix.so
MDBTGT = kvm
Expand All @@ -40,6 +40,7 @@ MODSRCS_DIR = ../../../../i86pc/modules/unix/

CPPFLAGS += -DMP -D_MACHDEP -D__xpv
CPPFLAGS += -I../../../../common
CPPFLAGS += -I../../../../intel
CPPFLAGS += -I$(SRC)/uts/common
CPPFLAGS += -I$(SRC)/uts/i86xpv
CPPFLAGS += -I$(SRC)/uts/i86pc
Expand Down
3 changes: 2 additions & 1 deletion usr/src/cmd/mdb/intel/Makefile.kmdb
Expand Up @@ -22,7 +22,7 @@
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright 2018 Joyent, Inc.
# Copyright 2019 Joyent, Inc.
#

PROMSRCS += \
Expand Down Expand Up @@ -66,6 +66,7 @@ KMDBLIBS = $(STANDLIBS) ../mdb_ks/kmod/mdb_ks
MAPFILE_SOURCES = \
$(MAPFILE_SOURCES_COMMON) \
../../kmdb/kmdb_dpi_isadep.h \
../../mdb/mdb_x86util.h \
$(MAPFILE_SOURCES_$(MACH))

%.o: ../../../../../uts/intel/promif/%.c
Expand Down
5 changes: 4 additions & 1 deletion usr/src/cmd/mdb/intel/amd64/Makefile.kmdb
Expand Up @@ -22,13 +22,16 @@
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright 2019 Joyent, Inc.
#

KMDBML += \
kaif_invoke.s \
kmdb_start.s

KMDBSRCS += \
kmdb_makecontext.c \
mdb_amd64util.c
mdb_amd64util.c \
mdb_x86util.c

SACPPFLAGS = -D__$(MACH64) -U__$(MACH)
3 changes: 2 additions & 1 deletion usr/src/cmd/mdb/intel/amd64/mdb/Makefile
Expand Up @@ -22,13 +22,14 @@
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright 2018 Joyent, Inc.
# Copyright 2019 Joyent, Inc.
#

SRCS = kvm_amd64dep.c \
kvm_isadep.c \
mdb_amd64util.c \
mdb_ia32util.c \
mdb_x86util.c \
mdb_bhyve.c \
proc_amd64dep.c

Expand Down

0 comments on commit 2a78db8

Please sign in to comment.