diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2005-12-04 02:39:15 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-08 22:51:50 -0500 |
commit | 51fae6de24da57bc6cdaa1b253595c3513ecbf2d (patch) | |
tree | 27df7f07270fb79eae44783331faeb3af3d313ab /arch/powerpc/oprofile | |
parent | cd0ca2ce4b2f4a5132e7e230be8a510755c20870 (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.c | 4 | ||||
-rw-r--r-- | arch/powerpc/oprofile/op_model_rs64.c | 3 |
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); |