powerpc/booke64: Use SPRG_TLB_EXFRAME on bolted handlers
While bolted handlers (including e6500) do not need to deal with a TLB miss recursively causing another TLB miss, nested TLB misses can still happen with crit/mc/debug exceptions -- so we still need to honor SPRG_TLB_EXFRAME. We don't need to spend time modifying it in the TLB miss fastpath, though -- the special level exception will handle that. Signed-off-by: Scott Wood <scottwood@freescale.com> Cc: Mihai Caraman <mihai.caraman@freescale.com> Cc: kvm-ppc@vger.kernel.org
This commit is contained in:
@@ -172,16 +172,6 @@ exc_##label##_book3e:
|
||||
ld r9,EX_TLB_R9(r12); \
|
||||
ld r8,EX_TLB_R8(r12); \
|
||||
mtlr r16;
|
||||
#define TLB_MISS_PROLOG_STATS_BOLTED \
|
||||
mflr r10; \
|
||||
std r8,PACA_EXTLB+EX_TLB_R8(r13); \
|
||||
std r9,PACA_EXTLB+EX_TLB_R9(r13); \
|
||||
std r10,PACA_EXTLB+EX_TLB_LR(r13);
|
||||
#define TLB_MISS_RESTORE_STATS_BOLTED \
|
||||
ld r16,PACA_EXTLB+EX_TLB_LR(r13); \
|
||||
ld r9,PACA_EXTLB+EX_TLB_R9(r13); \
|
||||
ld r8,PACA_EXTLB+EX_TLB_R8(r13); \
|
||||
mtlr r16;
|
||||
#define TLB_MISS_STATS_D(name) \
|
||||
addi r9,r13,MMSTAT_DSTATS+name; \
|
||||
bl .tlb_stat_inc;
|
||||
|
@@ -45,10 +45,12 @@
|
||||
*
|
||||
* Expected inputs (TLB exception type):
|
||||
* r10 = saved CR
|
||||
* r12 = extlb pointer
|
||||
* r13 = PACA_POINTER
|
||||
* *(r13 + PACA_EX##type + EX_TLB_R10) = saved r10
|
||||
* *(r13 + PACA_EX##type + EX_TLB_R11) = saved r11
|
||||
* SPRN_SPRG_GEN_SCRATCH = saved r13
|
||||
* *(r12 + EX_TLB_R10) = saved r10
|
||||
* *(r12 + EX_TLB_R11) = saved r11
|
||||
* *(r12 + EX_TLB_R13) = saved r13
|
||||
* SPRN_SPRG_GEN_SCRATCH = saved r12
|
||||
*
|
||||
* Only the bolted version of TLB miss exception handlers is supported now.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user