summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/sparc64/pmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/sparc64/sparc64/pmap.c')
-rw-r--r--sys/sparc64/sparc64/pmap.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index be3226a..c083bbb 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -545,7 +545,6 @@ pmap_map_tsb(void)
pa = tsb_kernel_phys + i;
data = TD_V | TD_4M | TD_PA(pa) | TD_L | TD_CP | TD_CV |
TD_P | TD_W;
- /* XXX - cheetah */
stxa(AA_DMMU_TAR, ASI_DMMU, TLB_TAR_VA(va) |
TLB_TAR_CTX(TLB_CTX_KERNEL));
stxa_sync(0, ASI_DTLB_DATA_IN_REG, data);
@@ -555,7 +554,8 @@ pmap_map_tsb(void)
* Set the secondary context to be the kernel context (needed for
* FP block operations in the kernel).
*/
- stxa(AA_DMMU_SCXR, ASI_DMMU, TLB_CTX_KERNEL);
+ stxa(AA_DMMU_SCXR, ASI_DMMU, (ldxa(AA_DMMU_SCXR, ASI_DMMU) &
+ TLB_SCXR_PGSZ_MASK) | TLB_CTX_KERNEL);
flush(KERNBASE);
intr_restore(s);
@@ -1979,7 +1979,8 @@ pmap_activate(struct thread *td)
stxa(AA_DMMU_TSB, ASI_DMMU, pm->pm_tsb);
stxa(AA_IMMU_TSB, ASI_IMMU, pm->pm_tsb);
- stxa(AA_DMMU_PCXR, ASI_DMMU, context);
+ stxa(AA_DMMU_PCXR, ASI_DMMU, (ldxa(AA_DMMU_PCXR, ASI_DMMU) &
+ TLB_PCXR_PGSZ_MASK) | context);
flush(KERNBASE);
mtx_unlock_spin(&sched_lock);
OpenPOWER on IntegriCloud