powerpc/booke64: Use SPRG0/3 scratch for bolted TLB miss & crit int
Embedded.Hypervisor category defines GSPRG0..3 physical registers for guests. Avoid SPRG4-7 usage as scratch in host exception handlers, otherwise guest SPRG4-7 registers will be clobbered. For bolted TLB miss exception handlers, which is the version currently supported by KVM, use SPRN_SPRG_GEN_SCRATCH aka SPRG0 instead of SPRN_SPRG_TLB_SCRATCH aka SPRG6. Keep using TLB PACA slots to fit in one 64-byte cache line. For critical exception handlers use SPRG3 instead of SPRG7. Provide a routine to store and restore user-visible SPRGs. This will be subsequently used to restore VDSO information in SPRG3. Add EX_R13 to paca slots to free up SPRG3 and change the critical exception epilog to use it. Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

zatwierdzone przez
Benjamin Herrenschmidt

rodzic
79b5c8dbaa
commit
8b64a9dfb0
@@ -40,7 +40,7 @@
|
||||
**********************************************************************/
|
||||
|
||||
.macro tlb_prolog_bolted intnum addr
|
||||
mtspr SPRN_SPRG_TLB_SCRATCH,r13
|
||||
mtspr SPRN_SPRG_GEN_SCRATCH,r13
|
||||
mfspr r13,SPRN_SPRG_PACA
|
||||
std r10,PACA_EXTLB+EX_TLB_R10(r13)
|
||||
mfcr r10
|
||||
@@ -69,7 +69,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_EMB_HV)
|
||||
ld r15,PACA_EXTLB+EX_TLB_R15(r13)
|
||||
TLB_MISS_RESTORE_STATS_BOLTED
|
||||
ld r16,PACA_EXTLB+EX_TLB_R16(r13)
|
||||
mfspr r13,SPRN_SPRG_TLB_SCRATCH
|
||||
mfspr r13,SPRN_SPRG_GEN_SCRATCH
|
||||
.endm
|
||||
|
||||
/* Data TLB miss */
|
||||
|
Reference in New Issue
Block a user