aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xentrace
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-05-27 08:19:47 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-05-27 08:19:47 +0100
commitf4f16d740c0b400b75d7ce223f55d08b61445220 (patch)
tree5b7f2015628f7942481da4595b7d24727e006ed6 /tools/xentrace
parente779c5d7a3731fe160755923c8428307aebcbfc6 (diff)
downloadxen-f4f16d740c0b400b75d7ce223f55d08b61445220.tar.gz
xen-f4f16d740c0b400b75d7ce223f55d08b61445220.tar.bz2
xen-f4f16d740c0b400b75d7ce223f55d08b61445220.zip
xenctx: Add --kernel-start option, to set the user/kernel split
Used when displaying stack traces. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Diffstat (limited to 'tools/xentrace')
-rw-r--r--tools/xentrace/xenctx.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c
index c67171ca7e..0797c521c9 100644
--- a/tools/xentrace/xenctx.c
+++ b/tools/xentrace/xenctx.c
@@ -65,15 +65,16 @@ struct symbol {
guest_word_t kernel_stext, kernel_etext, kernel_sinittext, kernel_einittext, kernel_hypercallpage;
+#if defined (__i386__)
+unsigned long long kernel_start = 0xc0000000;
+#else
+unsigned long long kernel_start = 0xffffffff80000000UL;
+#endif
+
static int is_kernel_text(guest_word_t addr)
{
-#if defined (__i386__) || defined (__x86_64__)
if (symbol_table == NULL)
- return (addr > ((guest_word_size == 4) ? 0xc000000 : 0xffffffff80000000ULL));
-#elif defined (__ia64__)
- if (symbol_table == NULL)
- return (addr > 0xa000000000000000UL);
-#endif
+ return (addr > kernel_start);
if (addr >= kernel_stext &&
addr <= kernel_etext)
@@ -909,6 +910,8 @@ static void usage(void)
printf(" -s SYMTAB, --symbol-table=SYMTAB\n");
printf(" read symbol table from SYMTAB.\n");
printf(" --stack-trace print a complete stack trace.\n");
+ printf(" -k, --kernel-start\n");
+ printf(" set user/kernel split. (default 0xc0000000)\n");
#ifdef __ia64__
printf(" -r LIST, --regs=LIST display more registers.\n");
printf(" -a --all same as --regs=tlb,cr,ar,br,bk\n");
@@ -920,7 +923,7 @@ static void usage(void)
int main(int argc, char **argv)
{
int ch;
- static const char *sopts = "fs:ha"
+ static const char *sopts = "fs:hak:"
#ifdef __ia64__
"r:"
#endif
@@ -929,6 +932,7 @@ int main(int argc, char **argv)
{"stack-trace", 0, NULL, 'S'},
{"symbol-table", 1, NULL, 's'},
{"frame-pointers", 0, NULL, 'f'},
+ {"kernel-start", 1, NULL, 'k'},
#ifdef __ia64__
{"regs", 1, NULL, 'r'},
#endif
@@ -988,6 +992,9 @@ int main(int argc, char **argv)
disp_all = 1;
break;
#endif
+ case 'k':
+ kernel_start = strtoull(optarg, NULL, 0);
+ break;
case 'h':
usage();
exit(-1);