Page MenuHomeFreeBSD

D2701.id5849.diff
No OneTemporary

D2701.id5849.diff

Index: sys/arm64/arm64/db_interface.c
===================================================================
--- sys/arm64/arm64/db_interface.c
+++ sys/arm64/arm64/db_interface.c
@@ -157,11 +157,11 @@
*dst++ = *data++;
}
- dsb();
+ dsb(sy);
/* Clean D-cache and invalidate I-cache */
cpu_dcache_wb_range(addr, (vm_size_t)size);
cpu_icache_sync_range(addr, (vm_size_t)size);
- dsb();
+ dsb(sy);
isb();
return (0);
Index: sys/arm64/arm64/vfp.c
===================================================================
--- sys/arm64/arm64/vfp.c
+++ sys/arm64/arm64/vfp.c
@@ -120,7 +120,7 @@
td->td_pcb->pcb_fpcr = fpcr;
td->td_pcb->pcb_fpsr = fpsr;
- dsb();
+ dsb(sy);
vfp_disable();
}
critical_exit();
Index: sys/arm64/include/atomic.h
===================================================================
--- sys/arm64/include/atomic.h
+++ sys/arm64/include/atomic.h
@@ -29,13 +29,29 @@
#ifndef _MACHINE_ATOMIC_H_
#define _MACHINE_ATOMIC_H_
-#define isb() __asm __volatile("isb" : : : "memory")
-#define dsb() __asm __volatile("dsb sy" : : : "memory")
-#define dmb() __asm __volatile("dmb sy" : : : "memory")
+#define isb() __asm __volatile("isb" : : : "memory")
-#define mb() dmb()
-#define wmb() dmb()
-#define rmb() dmb()
+/*
+ * Options for DMB and DSB:
+ * oshld Outer Shareable, load
+ * oshst Outer Shareable, store
+ * osh Outer Shareable, all
+ * nshld Non-shareable, load
+ * nshst Non-shareable, store
+ * nsh Non-shareable, all
+ * ishld Inner Shareable, load
+ * ishst Inner Shareable, store
+ * ish Inner Shareable, all
+ * ld Full system, load
+ * st Full system, store
+ * sy Full system, all
+ */
+#define dsb(opt) __asm __volatile("dsb " __STRING(opt) : : : "memory")
+#define dmb(opt) __asm __volatile("dmb " __STRING(opt) : : : "memory")
+
+#define mb() dmb(sy) /* Full system memory barrier all */
+#define wmb() dmb(st) /* Full system memory barrier store */
+#define rmb() dmb(ld) /* Full system memory barrier load */
static __inline void
atomic_add_32(volatile uint32_t *p, uint32_t val)

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 20, 1:54 AM (16 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29991210
Default Alt Text
D2701.id5849.diff (2 KB)

Event Timeline