From: leroy christophe > Le 06/01/2015 13:08, David Laight a écrit : > >> On Tue, 2014-12-16 at 16:03 +0100, Christophe Leroy wrote: > >>> All accessed to PGD entries are done via 0(r11). > >>> By using lower part of swapper_pg_dir as load index to r11, we can remove > >>> the > >>> ori instruction. > >>> > >>> Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr> > >> Nice :) > >> Acked-by: Joakim Tjernlund <joakim.tjernl...@transmode.se> > >> > >>> --- > >>> arch/powerpc/kernel/head_8xx.S | 22 ++++++++++------------ > >>> 1 file changed, 10 insertions(+), 12 deletions(-) > >>> > >>> diff --git a/arch/powerpc/kernel/head_8xx.S > >>> b/arch/powerpc/kernel/head_8xx.S > >>> index ae05f28..aa45225 100644 > >>> --- a/arch/powerpc/kernel/head_8xx.S > >>> +++ b/arch/powerpc/kernel/head_8xx.S > >>> @@ -322,13 +322,12 @@ InstructionTLBMiss: > >>> mfspr r11, SPRN_M_TW/* Get level 1 table base address */ > >>> #ifdef CONFIG_MODULES > >>> beq 3f > >>> - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h > >>> - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l > >>> + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha > >>> 3: > >>> #endif > >>> /* Insert level 1 index */ > >>> rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) > >>> << 1, 29 > >>> - lwz r11, 0(r11)/* Get the level 1 entry */ > >>> + lwz r11, (swapper_pg_dir-PAGE_OFFSET)@l(r11)/* Get the level > >>> 1 entry */ > >>> > > On the face of it that fragment doesn't look right when CONFIG_MODULES is > > undefined. > > > > David > > > I'm not sure I understand what you mean. > > The other part of the patch adds the following: > + li r5, (swapper_pg_dir-PAGE_OFFSET)@l > + sub r4, r4, r5 > > r4 is the value put into SPRN_M_TW, so I don't see what may be wrong.
Ok, but it is completely non-obvious. You probably need to change some comments somewhere about what is held in SPRN_M_TW - since it is no longer the L1 base address, but that value offset by some 'random' amount. David _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev