diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2005-08-03 06:21:24 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-08-28 20:53:36 -0400 |
commit | aefd16b0c5a594b5feaba23954ad74061f45c8a5 (patch) | |
tree | 64c52d1e3f1ce58b178561f6d5815887b37a81ba | |
parent | ce21795275ab469b97384faa36462350af17eca0 (diff) |
[PATCH] ppc64: Remove redundant uses of physRpn_to_absRpn
physRpn_to_absRpn is a no-op on non-iSeries platforms, remove the two
redundant calls.
There's only one caller on iSeries so fold the logic in there so we can get
rid of it completely.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/ppc64/kernel/iSeries_htab.c | 5 | ||||
-rw-r--r-- | arch/ppc64/kernel/pSeries_lpar.c | 3 | ||||
-rw-r--r-- | arch/ppc64/mm/hash_native.c | 3 | ||||
-rw-r--r-- | include/asm-ppc64/abs_addr.h | 8 |
4 files changed, 6 insertions, 13 deletions
diff --git a/arch/ppc64/kernel/iSeries_htab.c b/arch/ppc64/kernel/iSeries_htab.c index b0250ae4a72a..2192055a90a0 100644 --- a/arch/ppc64/kernel/iSeries_htab.c +++ b/arch/ppc64/kernel/iSeries_htab.c | |||
@@ -41,6 +41,7 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
41 | unsigned long prpn, unsigned long vflags, | 41 | unsigned long prpn, unsigned long vflags, |
42 | unsigned long rflags) | 42 | unsigned long rflags) |
43 | { | 43 | { |
44 | unsigned long arpn; | ||
44 | long slot; | 45 | long slot; |
45 | hpte_t lhpte; | 46 | hpte_t lhpte; |
46 | int secondary = 0; | 47 | int secondary = 0; |
@@ -70,8 +71,10 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
70 | slot &= 0x7fffffffffffffff; | 71 | slot &= 0x7fffffffffffffff; |
71 | } | 72 | } |
72 | 73 | ||
74 | arpn = phys_to_abs(prpn << PAGE_SHIFT) >> PAGE_SHIFT; | ||
75 | |||
73 | lhpte.v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID; | 76 | lhpte.v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID; |
74 | lhpte.r = (physRpn_to_absRpn(prpn) << HPTE_R_RPN_SHIFT) | rflags; | 77 | lhpte.r = (arpn << HPTE_R_RPN_SHIFT) | rflags; |
75 | 78 | ||
76 | /* Now fill in the actual HPTE */ | 79 | /* Now fill in the actual HPTE */ |
77 | HvCallHpt_addValidate(slot, secondary, &lhpte); | 80 | HvCallHpt_addValidate(slot, secondary, &lhpte); |
diff --git a/arch/ppc64/kernel/pSeries_lpar.c b/arch/ppc64/kernel/pSeries_lpar.c index 56845543c891..0a3ddc9227c5 100644 --- a/arch/ppc64/kernel/pSeries_lpar.c +++ b/arch/ppc64/kernel/pSeries_lpar.c | |||
@@ -278,7 +278,6 @@ long pSeries_lpar_hpte_insert(unsigned long hpte_group, | |||
278 | unsigned long va, unsigned long prpn, | 278 | unsigned long va, unsigned long prpn, |
279 | unsigned long vflags, unsigned long rflags) | 279 | unsigned long vflags, unsigned long rflags) |
280 | { | 280 | { |
281 | unsigned long arpn = physRpn_to_absRpn(prpn); | ||
282 | unsigned long lpar_rc; | 281 | unsigned long lpar_rc; |
283 | unsigned long flags; | 282 | unsigned long flags; |
284 | unsigned long slot; | 283 | unsigned long slot; |
@@ -289,7 +288,7 @@ long pSeries_lpar_hpte_insert(unsigned long hpte_group, | |||
289 | if (vflags & HPTE_V_LARGE) | 288 | if (vflags & HPTE_V_LARGE) |
290 | hpte_v &= ~(1UL << HPTE_V_AVPN_SHIFT); | 289 | hpte_v &= ~(1UL << HPTE_V_AVPN_SHIFT); |
291 | 290 | ||
292 | hpte_r = (arpn << HPTE_R_RPN_SHIFT) | rflags; | 291 | hpte_r = (prpn << HPTE_R_RPN_SHIFT) | rflags; |
293 | 292 | ||
294 | /* Now fill in the actual HPTE */ | 293 | /* Now fill in the actual HPTE */ |
295 | /* Set CEC cookie to 0 */ | 294 | /* Set CEC cookie to 0 */ |
diff --git a/arch/ppc64/mm/hash_native.c b/arch/ppc64/mm/hash_native.c index a6abd3a979bf..7626bb59954d 100644 --- a/arch/ppc64/mm/hash_native.c +++ b/arch/ppc64/mm/hash_native.c | |||
@@ -51,7 +51,6 @@ long native_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
51 | unsigned long prpn, unsigned long vflags, | 51 | unsigned long prpn, unsigned long vflags, |
52 | unsigned long rflags) | 52 | unsigned long rflags) |
53 | { | 53 | { |
54 | unsigned long arpn = physRpn_to_absRpn(prpn); | ||
55 | hpte_t *hptep = htab_address + hpte_group; | 54 | hpte_t *hptep = htab_address + hpte_group; |
56 | unsigned long hpte_v, hpte_r; | 55 | unsigned long hpte_v, hpte_r; |
57 | int i; | 56 | int i; |
@@ -74,7 +73,7 @@ long native_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
74 | hpte_v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID; | 73 | hpte_v = (va >> 23) << HPTE_V_AVPN_SHIFT | vflags | HPTE_V_VALID; |
75 | if (vflags & HPTE_V_LARGE) | 74 | if (vflags & HPTE_V_LARGE) |
76 | va &= ~(1UL << HPTE_V_AVPN_SHIFT); | 75 | va &= ~(1UL << HPTE_V_AVPN_SHIFT); |
77 | hpte_r = (arpn << HPTE_R_RPN_SHIFT) | rflags; | 76 | hpte_r = (prpn << HPTE_R_RPN_SHIFT) | rflags; |
78 | 77 | ||
79 | hptep->r = hpte_r; | 78 | hptep->r = hpte_r; |
80 | /* Guarantee the second dword is visible before the valid bit */ | 79 | /* Guarantee the second dword is visible before the valid bit */ |
diff --git a/include/asm-ppc64/abs_addr.h b/include/asm-ppc64/abs_addr.h index 025527742fef..ab4320c1cf5b 100644 --- a/include/asm-ppc64/abs_addr.h +++ b/include/asm-ppc64/abs_addr.h | |||
@@ -56,14 +56,6 @@ static inline unsigned long phys_to_abs(unsigned long pa) | |||
56 | return chunk_to_addr(chunk) + (pa & MSCHUNKS_OFFSET_MASK); | 56 | return chunk_to_addr(chunk) + (pa & MSCHUNKS_OFFSET_MASK); |
57 | } | 57 | } |
58 | 58 | ||
59 | static inline unsigned long | ||
60 | physRpn_to_absRpn(unsigned long rpn) | ||
61 | { | ||
62 | unsigned long pa = rpn << PAGE_SHIFT; | ||
63 | unsigned long aa = phys_to_abs(pa); | ||
64 | return (aa >> PAGE_SHIFT); | ||
65 | } | ||
66 | |||
67 | /* A macro so it can take pointers or unsigned long. */ | 59 | /* A macro so it can take pointers or unsigned long. */ |
68 | #define abs_to_phys(aa) lmb_abs_to_phys((unsigned long)(aa)) | 60 | #define abs_to_phys(aa) lmb_abs_to_phys((unsigned long)(aa)) |
69 | 61 | ||