diff options
author | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-13 06:06:13 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-13 06:06:13 +0100 |
commit | 6cb7ba7ed5e515a7ae4a286c25f8adf13b01349a (patch) | |
tree | 2ab4d12064b2ade1b546afacef7fbea756111c72 /sys | |
parent | c9f5d14ea6948355e760bb55b281640a3ebbca55 (diff) |
libmach: use correct kernel base, kprof: use kernel base from libmach (from applied/kprof patch)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/src/cmd/kprof.c | 14 | ||||
-rw-r--r-- | sys/src/libmach/8.c | 2 |
2 files changed, 11 insertions, 5 deletions
diff --git a/sys/src/cmd/kprof.c b/sys/src/cmd/kprof.c index e3cd5cb61..4dab86dc1 100644 --- a/sys/src/cmd/kprof.c +++ b/sys/src/cmd/kprof.c @@ -94,19 +94,25 @@ main(int argc, char *argv[]) exits(0); if (!textsym(&s, 0)) error(0, "no text symbols"); - tbase = s.value & ~(mach->pgsize-1); /* align down to page */ - print("KTZERO %.8llux\n", tbase); + + tbase = mach->kbase; + if(tbase != s.value & ~0xFFF) + print("warning: kbase %.8llux != tbase %.8llux\n", + tbase, s.value&~0xFFF); + print("KTZERO %.8llux PGSIZE %dKb\n", tbase, mach->pgsize/1024); /* * Accumulate counts for each function */ cp = 0; k = 0; - for (i = 0, j = (s.value-tbase)/PCRES+2; j < n; i++) { + for (i = 0, j = 2; j < n; i++) { name = s.name; /* save name */ if (!textsym(&s, i)) /* get next symbol */ break; + s.value -= tbase; + s.value /= PCRES; sum = 0; - while (j < n && j*PCRES < s.value-tbase) + while (j < n && j < s.value) sum += data[j++]; if (sum) { cp = realloc(cp, (k+1)*sizeof(struct COUNTER)); diff --git a/sys/src/libmach/8.c b/sys/src/libmach/8.c index 7ab7afcc9..112e1977c 100644 --- a/sys/src/libmach/8.c +++ b/sys/src/libmach/8.c @@ -68,7 +68,7 @@ Mach mi386 = "setSB", /* static base register name (bogus anyways) */ 0, /* static base register value */ 0x1000, /* page size */ - 0x80100000ULL, /* kernel base */ + 0xF0100000ULL, /* kernel base */ 0xF0000000ULL, /* kernel text mask */ 0x7FFFFFFFULL, /* user stack top */ 1, /* quantization of pc */ |