|
@@ -62,7 +62,7 @@
|
|
|
__visible DEFINE_PER_CPU(unsigned long, rsp_scratch);
|
|
|
|
|
|
/* Prints also some state that isn't saved in the pt_regs */
|
|
|
-void __show_regs(struct pt_regs *regs, int all)
|
|
|
+void __show_regs(struct pt_regs *regs, enum show_regs_mode mode)
|
|
|
{
|
|
|
unsigned long cr0 = 0L, cr2 = 0L, cr3 = 0L, cr4 = 0L, fs, gs, shadowgs;
|
|
|
unsigned long d0, d1, d2, d3, d6, d7;
|
|
@@ -87,9 +87,17 @@ void __show_regs(struct pt_regs *regs, int all)
|
|
|
printk(KERN_DEFAULT "R13: %016lx R14: %016lx R15: %016lx\n",
|
|
|
regs->r13, regs->r14, regs->r15);
|
|
|
|
|
|
- if (!all)
|
|
|
+ if (mode == SHOW_REGS_SHORT)
|
|
|
return;
|
|
|
|
|
|
+ if (mode == SHOW_REGS_USER) {
|
|
|
+ rdmsrl(MSR_FS_BASE, fs);
|
|
|
+ rdmsrl(MSR_KERNEL_GS_BASE, shadowgs);
|
|
|
+ printk(KERN_DEFAULT "FS: %016lx GS: %016lx\n",
|
|
|
+ fs, shadowgs);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
asm("movl %%ds,%0" : "=r" (ds));
|
|
|
asm("movl %%cs,%0" : "=r" (cs));
|
|
|
asm("movl %%es,%0" : "=r" (es));
|