summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/smp.h
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-05-01 21:36:47 +0000
committerjhb <jhb@FreeBSD.org>2006-05-01 21:36:47 +0000
commitca8d347695197fe6855a628e0325e9ab16820d5f (patch)
tree3a0d26aaaeb23a38ebdd2566fd5bdbc8c7bde43f /sys/amd64/include/smp.h
parent4db7dec298d4cc5de09e6704e4b98919f21bacaf (diff)
downloadFreeBSD-src-ca8d347695197fe6855a628e0325e9ab16820d5f.zip
FreeBSD-src-ca8d347695197fe6855a628e0325e9ab16820d5f.tar.gz
Add a new 'pmap_invalidate_cache()' to flush the CPU caches via the
wbinvd() instruction. This includes a new IPI so that all CPU caches on all CPUs are flushed for the SMP case. MFC after: 1 month
Diffstat (limited to 'sys/amd64/include/smp.h')
-rw-r--r--sys/amd64/include/smp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/amd64/include/smp.h b/sys/amd64/include/smp.h
index 94a7022..5a2d3aa 100644
--- a/sys/amd64/include/smp.h
+++ b/sys/amd64/include/smp.h
@@ -40,6 +40,7 @@ inthand_t
IDTVEC(invltlb), /* TLB shootdowns - global */
IDTVEC(invlpg), /* TLB shootdowns - 1 page */
IDTVEC(invlrng), /* TLB shootdowns - page range */
+ IDTVEC(invlcache), /* Write back and invalidate cache */
IDTVEC(ipi_intr_bitmap_handler), /* Bitmap based IPIs */
IDTVEC(cpustop), /* CPU stops & waits to be restarted */
IDTVEC(rendezvous); /* handle CPU rendezvous */
@@ -56,6 +57,7 @@ void ipi_bitmap_handler(struct trapframe frame);
u_int mp_bootaddress(u_int);
int mp_grab_cpu_hlt(void);
void mp_topology(void);
+void smp_cache_flush(void);
void smp_invlpg(vm_offset_t addr);
void smp_masked_invlpg(u_int mask, vm_offset_t addr);
void smp_invlpg_range(vm_offset_t startva, vm_offset_t endva);
OpenPOWER on IntegriCloud