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,32 **** /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* ! * Copyright (c) 2012, 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> --- 22,32 ---- /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* ! * 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,140 **** --- 131,144 ---- { "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,200 **** (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]); } int mdb_amd64_kvm_stack_iter(mdb_tgt_t *t, const mdb_tgt_gregset_t *gsp, mdb_tgt_stack_f *func, void *arg) --- 188,205 ---- (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("%%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)