Commit eda20521 authored by Helge Deller's avatar Helge Deller
Browse files

parisc: BTLB: Clear possibly existing BTLB entries



Call PDC to remove all existing BTLB entries (which may exist from
some previous operating system runs) before switching to virtual mode.

Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 70bd68d5
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -180,10 +180,10 @@ $pgt_fill_loop:
	std		%dp,0x18(%r10)
#endif

#ifdef CONFIG_64BIT
	/* Get PDCE_PROC for monarch CPU. */
#define MEM_PDC_LO 0x388
#define MEM_PDC_HI 0x35C
#ifdef CONFIG_64BIT
	/* Get PDCE_PROC for monarch CPU. */
	ldw             MEM_PDC_LO(%r0),%r3
	ldw             MEM_PDC_HI(%r0),%r10
	depd            %r10, 31, 32, %r3        /* move to upper word */
@@ -270,6 +270,16 @@ stext_pdc_ret:
	mtctl		%r6,%cr30		/* restore task thread info */
#endif

#ifndef CONFIG_64BIT
	/* clear all BTLBs */
	ldi		PDC_BLOCK_TLB,%arg0
	load32          PA(stext_pdc_btlb_ret), %rp
	ldw             MEM_PDC_LO(%r0),%r3
	bv              (%r3)
	ldi		PDC_BTLB_PURGE_ALL,%arg1
stext_pdc_btlb_ret:
#endif

	/* PARANOID: clear user scratch/user space SR's */
	mtsp	%r0,%sr0
	mtsp	%r0,%sr1