Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/pmap.c
Show First 20 Lines • Show All 4,396 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
pmap_t oldpmap, pmap; | pmap_t oldpmap, pmap; | ||||
u_int hart; | u_int hart; | ||||
oldpmap = PCPU_GET(curpmap); | oldpmap = PCPU_GET(curpmap); | ||||
pmap = vmspace_pmap(td->td_proc->p_vmspace); | pmap = vmspace_pmap(td->td_proc->p_vmspace); | ||||
if (pmap == oldpmap) | if (pmap == oldpmap) | ||||
return; | return; | ||||
load_satp(pmap->pm_satp); | csr_write(satp, pmap->pm_satp); | ||||
hart = PCPU_GET(hart); | hart = PCPU_GET(hart); | ||||
#ifdef SMP | #ifdef SMP | ||||
CPU_SET_ATOMIC(hart, &pmap->pm_active); | CPU_SET_ATOMIC(hart, &pmap->pm_active); | ||||
CPU_CLR_ATOMIC(hart, &oldpmap->pm_active); | CPU_CLR_ATOMIC(hart, &oldpmap->pm_active); | ||||
#else | #else | ||||
CPU_SET(hart, &pmap->pm_active); | CPU_SET(hart, &pmap->pm_active); | ||||
CPU_CLR(hart, &oldpmap->pm_active); | CPU_CLR(hart, &oldpmap->pm_active); | ||||
▲ Show 20 Lines • Show All 368 Lines • Show Last 20 Lines |