提交 2ef973a9 编写于 作者: C Christophe Leroy 提交者: Michael Ellerman

powerpc/8xx: Reduce DTLB miss handler by one insn

This reduces the DTLB miss handler hot path (user address path)
by one instruction by preserving r10.
Signed-off-by: NChristophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 346bcc4d
...@@ -465,23 +465,23 @@ DataStoreTLBMiss: ...@@ -465,23 +465,23 @@ DataStoreTLBMiss:
* kernel page tables. * kernel page tables.
*/ */
mfspr r10, SPRN_MD_EPN mfspr r10, SPRN_MD_EPN
rlwinm r10, r10, 16, 0xfff8 rlwinm r11, r10, 16, 0xfff8
cmpli cr0, r10, PAGE_OFFSET@h cmpli cr0, r11, PAGE_OFFSET@h
mfspr r11, SPRN_M_TW /* Get level 1 table */ mfspr r11, SPRN_M_TW /* Get level 1 table */
blt+ 3f blt+ 3f
rlwinm r11, r10, 16, 0xfff8
#ifndef CONFIG_PIN_TLB_IMMR #ifndef CONFIG_PIN_TLB_IMMR
cmpli cr0, r10, VIRT_IMMR_BASE@h cmpli cr0, r11, VIRT_IMMR_BASE@h
#endif #endif
_ENTRY(DTLBMiss_cmp) _ENTRY(DTLBMiss_cmp)
cmpli cr7, r10, (PAGE_OFFSET + 0x1800000)@h cmpli cr7, r11, (PAGE_OFFSET + 0x1800000)@h
lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha
#ifndef CONFIG_PIN_TLB_IMMR #ifndef CONFIG_PIN_TLB_IMMR
_ENTRY(DTLBMiss_jmp) _ENTRY(DTLBMiss_jmp)
beq- DTLBMissIMMR beq- DTLBMissIMMR
#endif #endif
blt cr7, DTLBMissLinear blt cr7, DTLBMissLinear
lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha
3: 3:
mfspr r10, SPRN_MD_EPN
/* Insert level 1 index */ /* Insert level 1 index */
rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29
...@@ -702,7 +702,7 @@ DTLBMissLinear: ...@@ -702,7 +702,7 @@ DTLBMissLinear:
/* Set 8M byte page and mark it valid */ /* Set 8M byte page and mark it valid */
li r11, MD_PS8MEG | MD_SVALID li r11, MD_PS8MEG | MD_SVALID
MTSPR_CPU6(SPRN_MD_TWC, r11, r3) MTSPR_CPU6(SPRN_MD_TWC, r11, r3)
rlwinm r10, r10, 16, 0x0f800000 /* 8xx supports max 256Mb RAM */ rlwinm r10, r10, 0, 0x0f800000 /* 8xx supports max 256Mb RAM */
ori r10, r10, 0xf0 | MD_SPS16K | _PAGE_SHARED | _PAGE_DIRTY | \ ori r10, r10, 0xf0 | MD_SPS16K | _PAGE_SHARED | _PAGE_DIRTY | \
_PAGE_PRESENT _PAGE_PRESENT
MTSPR_CPU6(SPRN_MD_RPN, r10, r11) /* Update TLB entry */ MTSPR_CPU6(SPRN_MD_RPN, r10, r11) /* Update TLB entry */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册