Follow exactly the steps in architecture manual for correctly invalidating

TLB entries instead of trying to cut corners.
This commit is contained in:
Nathan Whitehorn 2010-10-04 16:07:48 +00:00
parent 9d00444d9c
commit 94363f5311
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=213407
2 changed files with 4 additions and 4 deletions

View File

@ -425,9 +425,9 @@ tlbie(vm_offset_t va)
{
mtx_lock_spin(&tlbie_mtx);
__asm __volatile("ptesync");
__asm __volatile("tlbie %0" :: "r"(va));
__asm __volatile("tlbsync");
powerpc_sync();
__asm __volatile("eieio; tlbsync; ptesync");
mtx_unlock_spin(&tlbie_mtx);
}

View File

@ -211,14 +211,14 @@ TLBIE(uint64_t vpn) {
mfmsr %0; \
mr %1, %0; \
insrdi %1,%5,1,0; \
mtmsrd %1; \
mtmsrd %1; isync; \
ptesync; \
\
sld %1,%2,%4; \
or %1,%1,%3; \
tlbie %1; \
\
mtmsrd %0; \
mtmsrd %0; isync; \
eieio; \
tlbsync; \
ptesync;"