aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/oprofile
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2005-12-04 02:39:15 -0500
committerPaul Mackerras <paulus@samba.org>2006-01-08 22:51:50 -0500
commit51fae6de24da57bc6cdaa1b253595c3513ecbf2d (patch)
tree27df7f07270fb79eae44783331faeb3af3d313ab /arch/powerpc/oprofile
parentcd0ca2ce4b2f4a5132e7e230be8a510755c20870 (diff)
[PATCH] powerpc: Add a is_kernel_addr() macro
There's a bunch of code that compares an address with KERNELBASE to see if it's a "kernel address", ie. >= KERNELBASE. The proper test is actually to compare with PAGE_OFFSET, since we're going to change KERNELBASE soon. So replace all of them with an is_kernel_addr() macro that does that. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/oprofile')
-rw-r--r--arch/powerpc/oprofile/op_model_power4.c4
-rw-r--r--arch/powerpc/oprofile/op_model_rs64.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/arch/powerpc/oprofile/op_model_power4.c b/arch/powerpc/oprofile/op_model_power4.c
index a3401b46f3ba..659a021da0c7 100644
--- a/arch/powerpc/oprofile/op_model_power4.c
+++ b/arch/powerpc/oprofile/op_model_power4.c
@@ -252,7 +252,7 @@ static unsigned long get_pc(struct pt_regs *regs)
252 return (unsigned long)__va(pc); 252 return (unsigned long)__va(pc);
253 253
254 /* Not sure where we were */ 254 /* Not sure where we were */
255 if (pc < KERNELBASE) 255 if (!is_kernel_addr(pc))
256 /* function descriptor madness */ 256 /* function descriptor madness */
257 return *((unsigned long *)kernel_unknown_bucket); 257 return *((unsigned long *)kernel_unknown_bucket);
258 258
@@ -264,7 +264,7 @@ static int get_kernel(unsigned long pc)
264 int is_kernel; 264 int is_kernel;
265 265
266 if (!mmcra_has_sihv) { 266 if (!mmcra_has_sihv) {
267 is_kernel = (pc >= KERNELBASE); 267 is_kernel = is_kernel_addr(pc);
268 } else { 268 } else {
269 unsigned long mmcra = mfspr(SPRN_MMCRA); 269 unsigned long mmcra = mfspr(SPRN_MMCRA);
270 is_kernel = ((mmcra & MMCRA_SIPR) == 0); 270 is_kernel = ((mmcra & MMCRA_SIPR) == 0);
diff --git a/arch/powerpc/oprofile/op_model_rs64.c b/arch/powerpc/oprofile/op_model_rs64.c
index e010b85996e8..5c909ee609fe 100644
--- a/arch/powerpc/oprofile/op_model_rs64.c
+++ b/arch/powerpc/oprofile/op_model_rs64.c
@@ -178,7 +178,6 @@ static void rs64_handle_interrupt(struct pt_regs *regs,
178 int val; 178 int val;
179 int i; 179 int i;
180 unsigned long pc = mfspr(SPRN_SIAR); 180 unsigned long pc = mfspr(SPRN_SIAR);
181 int is_kernel = (pc >= KERNELBASE);
182 181
183 /* set the PMM bit (see comment below) */ 182 /* set the PMM bit (see comment below) */
184 mtmsrd(mfmsr() | MSR_PMM); 183 mtmsrd(mfmsr() | MSR_PMM);
@@ -187,7 +186,7 @@ static void rs64_handle_interrupt(struct pt_regs *regs,
187 val = ctr_read(i); 186 val = ctr_read(i);
188 if (val < 0) { 187 if (val < 0) {
189 if (ctr[i].enabled) { 188 if (ctr[i].enabled) {
190 oprofile_add_pc(pc, is_kernel, i); 189 oprofile_add_pc(pc, is_kernel_addr(pc), i);
191 ctr_write(i, reset_value[i]); 190 ctr_write(i, reset_value[i]);
192 } else { 191 } else {
193 ctr_write(i, 0); 192 ctr_write(i, 0);