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); |
