Commit e1e22d0d authored by Johannes Berg's avatar Johannes Berg Committed by Richard Weinberger

um: print register names in wait_for_stub

Since we're basically debugging the userspace (it runs in ptrace)
it's useful to dump out the registers - but they're not readable,
so if something goes wrong it's hard to say what. Print the names
of registers in the register dump so it's easier to look at.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent a15f1e41
...@@ -28,6 +28,54 @@ int is_skas_winch(int pid, int fd, void *data) ...@@ -28,6 +28,54 @@ int is_skas_winch(int pid, int fd, void *data)
return pid == getpgrp(); return pid == getpgrp();
} }
static const char *ptrace_reg_name(int idx)
{
#define R(n) case HOST_##n: return #n
switch (idx) {
#ifdef __x86_64__
R(BX);
R(CX);
R(DI);
R(SI);
R(DX);
R(BP);
R(AX);
R(R8);
R(R9);
R(R10);
R(R11);
R(R12);
R(R13);
R(R14);
R(R15);
R(ORIG_AX);
R(CS);
R(SS);
R(EFLAGS);
#elif defined(__i386__)
R(IP);
R(SP);
R(EFLAGS);
R(AX);
R(BX);
R(CX);
R(DX);
R(SI);
R(DI);
R(BP);
R(CS);
R(SS);
R(DS);
R(FS);
R(ES);
R(GS);
R(ORIG_AX);
#endif
}
return "";
}
static int ptrace_dump_regs(int pid) static int ptrace_dump_regs(int pid)
{ {
unsigned long regs[MAX_REG_NR]; unsigned long regs[MAX_REG_NR];
...@@ -37,8 +85,11 @@ static int ptrace_dump_regs(int pid) ...@@ -37,8 +85,11 @@ static int ptrace_dump_regs(int pid)
return -errno; return -errno;
printk(UM_KERN_ERR "Stub registers -\n"); printk(UM_KERN_ERR "Stub registers -\n");
for (i = 0; i < ARRAY_SIZE(regs); i++) for (i = 0; i < ARRAY_SIZE(regs); i++) {
printk(UM_KERN_ERR "\t%d - %lx\n", i, regs[i]); const char *regname = ptrace_reg_name(i);
printk(UM_KERN_ERR "\t%s\t(%2d): %lx\n", regname, i, regs[i]);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment