diff options
author | peter <peter@FreeBSD.org> | 2004-09-29 01:59:10 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2004-09-29 01:59:10 +0000 |
commit | 52704bafb2931e9ad24865a7a3b3ad3a7c5752ce (patch) | |
tree | 25ab656c52074f85b8cb82d2be955b419a85d04c /sys | |
parent | 883b7abe1aed9fea97ea5a5671c271466e84a896 (diff) | |
download | FreeBSD-src-52704bafb2931e9ad24865a7a3b3ad3a7c5752ce.zip FreeBSD-src-52704bafb2931e9ad24865a7a3b3ad3a7c5752ce.tar.gz |
MFi386: rev 1.239 - invalidate tlb after pte update
Diffstat (limited to 'sys')
-rw-r--r-- | sys/amd64/amd64/mp_machdep.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 07855ce..efe8eac 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -539,12 +539,14 @@ start_all_aps(void) u_int32_t mpbioswarmvec; int apic_id, cpu, i; u_int64_t *pt4, *pt3, *pt2; + vm_offset_t va = boot_address + KERNBASE; mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN); /* install the AP 1st level boot code */ - pmap_kenter(boot_address + KERNBASE, boot_address); - bcopy(mptramp_start, (void *)((uintptr_t)boot_address + KERNBASE), bootMP_size); + pmap_kenter(va, boot_address); + pmap_invalidate_page(kernel_pmap, va); + bcopy(mptramp_start, (void *)va, bootMP_size); /* Locate the page tables, they'll be below the trampoline */ pt4 = (u_int64_t *)(uintptr_t)(mptramp_pagetables + KERNBASE); |