[PATCH] powerpc/fsl-booke: Fix settlbcam for 64-bit

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE5446d

2 messages, 2 authors, 2011-10-12 · open the first message on its own page

[PATCH] powerpc/fsl-booke: Fix settlbcam for 64-bit

From: Becky Bruce <hidden>
Date: 2011-10-12 18:22:08

From: Becky Bruce <redacted>

Currently, it does a cntlzd on the size and then subtracts it from
21.... this doesn't take into account the varying size of a "long".
Just use __ilog instead (and subtract the 10 we have to subtract
to get to the tsize encoding).

Signed-off-by: Becky Bruce <redacted>
---
 arch/powerpc/mm/fsl_booke_mmu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c
index f7802c8..54897c0 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -111,7 +111,7 @@ static void settlbcam(int index, unsigned long virt, phys_addr_t phys,
 	unsigned int tsize, lz;
 
 	asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (size));
-	tsize = 21 - lz;
+	tsize = __ilog2(size) - 10;
 
 #ifdef CONFIG_SMP
 	if ((flags & _PAGE_NO_CACHE) == 0)
-- 
1.5.6.5

Re: [PATCH] powerpc/fsl-booke: Fix settlbcam for 64-bit

From: Kumar Gala <hidden>
Date: 2011-10-12 18:32:58

On Oct 12, 2011, at 1:22 PM, Becky Bruce wrote:
quoted hunk
From: Becky Bruce <redacted>
=20
Currently, it does a cntlzd on the size and then subtracts it from
21.... this doesn't take into account the varying size of a "long".
Just use __ilog instead (and subtract the 10 we have to subtract
to get to the tsize encoding).
=20
Signed-off-by: Becky Bruce <redacted>
---
arch/powerpc/mm/fsl_booke_mmu.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c =
b/arch/powerpc/mm/fsl_booke_mmu.c
quoted hunk
index f7802c8..54897c0 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -111,7 +111,7 @@ static void settlbcam(int index, unsigned long =
virt, phys_addr_t phys,
	unsigned int tsize, lz;
=20
	asm (PPC_CNTLZL "%0,%1" : "=3Dr" (lz) : "r" (size));
-	tsize =3D 21 - lz;
+	tsize =3D __ilog2(size) - 10;
If you do this you don't need 'lz' or the asm() statement.
=20
#ifdef CONFIG_SMP
	if ((flags & _PAGE_NO_CACHE) =3D=3D 0)
--=20
1.5.6.5
=20
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help