From: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
To: "christophe.leroy@c-s.fr" <christophe.leroy@c-s.fr>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"paulus@samba.org" <paulus@samba.org>,
"scottwood@freescale.com" <scottwood@freescale.com>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 05/11] powerpc/8xx: Optimise access to swapper_pg_dir
Date: Mon, 5 Jan 2015 18:33:46 +0000 [thread overview]
Message-ID: <1420482826.25047.26.camel@transmode.se> (raw)
In-Reply-To: <20141216150338.D4F0A1A5E0A@localhost.localdomain>
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.
>=20
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Nice :)
Acked-by: Joakim Tjernlund <joakim.tjernlund@transmode.se>
>=20
> ---
> arch/powerpc/kernel/head_8xx.S | 22 ++++++++++------------
> 1 file changed, 10 insertions(+), 12 deletions(-)
>=20
> diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8x=
x.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 */
> =20
> /* Load the MI_TWC with the attributes for this "segment." */
> MTSPR_CPU6(SPRN_MI_TWC, r11, r3)/* Set segment attributes */
> @@ -376,12 +375,11 @@ DataStoreTLBMiss:
> andis. r11, r10, 0x8000
> mfspr r11, SPRN_M_TW/* Get level 1 table base address */
> 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:
> /* 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 */
> =20
> /* We have a pte table, so load fetch the pte from the table.
> */
> @@ -510,12 +508,11 @@ FixupDAR:/* Entry point for dcbx workaround. */
> mfspr r10, SPRN_SRR0
> andis. r11, r10, 0x8000/* Address >=3D 0x80000000 */
> mfspr r11, SPRN_M_TW/* Get level 1 table base address */
> - beq- 3f /* Branch if user space */
> - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h
> - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l
> + beq 3f
> + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha
> /* Insert level 1 index */
> 3: 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 */
> rlwinm r11, r11,0,0,19/* Extract page descriptor page address */
> /* Insert level 2 index */
> rlwimi r11, r10, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29
> @@ -670,8 +667,7 @@ start_here:
> * init's THREAD like the context switch code does, but th=
is is
> * easier......until someone changes init's static structu=
res.
> */
> - lis r6, swapper_pg_dir@h
> - ori r6, r6, swapper_pg_dir@l
> + lis r6, swapper_pg_dir@ha
> tophys(r6,r6)
> #ifdef CONFIG_8xx_CPU6
> lis r4, cpu6_errata_word@h
> @@ -850,6 +846,8 @@ _GLOBAL(set_context)
> stw r4, 0x4(r5)
> #endif
> =20
> + li r5, (swapper_pg_dir-PAGE_OFFSET)@l
> + sub r4, r4, r5
> #ifdef CONFIG_8xx_CPU6
> lis r6, cpu6_errata_word@h
> ori r6, r6, cpu6_errata_word@l=
WARNING: multiple messages have this Message-ID (diff)
From: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
To: "christophe.leroy@c-s.fr" <christophe.leroy@c-s.fr>
Cc: "scottwood@freescale.com" <scottwood@freescale.com>,
"paulus@samba.org" <paulus@samba.org>,
"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
"benh@kernel.crashing.org" <benh@kernel.crashing.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 05/11] powerpc/8xx: Optimise access to swapper_pg_dir
Date: Mon, 5 Jan 2015 18:33:46 +0000 [thread overview]
Message-ID: <1420482826.25047.26.camel@transmode.se> (raw)
In-Reply-To: <20141216150338.D4F0A1A5E0A@localhost.localdomain>
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.leroy@c-s.fr>
Nice :)
Acked-by: Joakim Tjernlund <joakim.tjernlund@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 */
>
> /* Load the MI_TWC with the attributes for this "segment." */
> MTSPR_CPU6(SPRN_MI_TWC, r11, r3)/* Set segment attributes */
> @@ -376,12 +375,11 @@ DataStoreTLBMiss:
> andis. r11, r10, 0x8000
> mfspr r11, SPRN_M_TW/* Get level 1 table base address */
> 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:
> /* 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 */
>
> /* We have a pte table, so load fetch the pte from the table.
> */
> @@ -510,12 +508,11 @@ FixupDAR:/* Entry point for dcbx workaround. */
> mfspr r10, SPRN_SRR0
> andis. r11, r10, 0x8000/* Address >= 0x80000000 */
> mfspr r11, SPRN_M_TW/* Get level 1 table base address */
> - beq- 3f /* Branch if user space */
> - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h
> - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l
> + beq 3f
> + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha
> /* Insert level 1 index */
> 3: 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 */
> rlwinm r11, r11,0,0,19/* Extract page descriptor page address */
> /* Insert level 2 index */
> rlwimi r11, r10, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29
> @@ -670,8 +667,7 @@ start_here:
> * init's THREAD like the context switch code does, but this is
> * easier......until someone changes init's static structures.
> */
> - lis r6, swapper_pg_dir@h
> - ori r6, r6, swapper_pg_dir@l
> + lis r6, swapper_pg_dir@ha
> tophys(r6,r6)
> #ifdef CONFIG_8xx_CPU6
> lis r4, cpu6_errata_word@h
> @@ -850,6 +846,8 @@ _GLOBAL(set_context)
> stw r4, 0x4(r5)
> #endif
>
> + li r5, (swapper_pg_dir-PAGE_OFFSET)@l
> + sub r4, r4, r5
> #ifdef CONFIG_8xx_CPU6
> lis r6, cpu6_errata_word@h
> ori r6, r6, cpu6_errata_word@l
next prev parent reply other threads:[~2015-01-05 18:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-16 15:03 [PATCH 05/11] powerpc/8xx: Optimise access to swapper_pg_dir Christophe Leroy
2014-12-16 15:03 ` Christophe Leroy
2015-01-05 18:33 ` Joakim Tjernlund [this message]
2015-01-05 18:33 ` Joakim Tjernlund
2015-01-06 12:08 ` David Laight
2015-01-06 12:08 ` David Laight
2015-01-06 13:27 ` leroy christophe
2015-01-06 13:27 ` leroy christophe
2015-01-06 14:41 ` David Laight
2015-01-06 14:41 ` David Laight
-- strict thread matches above, loose matches on Subject: below --
2015-04-20 5:26 Christophe Leroy
2015-04-20 5:26 ` Christophe Leroy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1420482826.25047.26.camel@transmode.se \
--to=joakim.tjernlund@transmode.se \
--cc=christophe.leroy@c-s.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
--cc=scottwood@freescale.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.