summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h')
-rw-r--r--freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h b/freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h
index b1f36997..56337103 100644
--- a/freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h
+++ b/freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h
@@ -54,7 +54,8 @@ ck_pr_stall(void)
return;
}
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__)
+#if __ARM_ARCH >= 7 || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__)
+#ifdef RTEMS_SMP
#define CK_ISB __asm __volatile("isb" : : "r" (0) : "memory")
#define CK_DMB __asm __volatile("dmb" : : "r" (0) : "memory")
#define CK_DSB __asm __volatile("dsb" : : "r" (0) : "memory")
@@ -64,6 +65,12 @@ ck_pr_stall(void)
#else
#define CK_DMB_ST __asm __volatile("dmb st" : : "r" (0) : "memory")
#endif /* __FreeBSD__ */
+#else /* !RTEMS_SMP */
+#define CK_ISB __asm __volatile("" : : "r" (0) : "memory")
+#define CK_DMB __asm __volatile("" : : "r" (0) : "memory")
+#define CK_DSB __asm __volatile("" : : "r" (0) : "memory")
+#define CK_DMB_ST __asm __volatile("" : : "r" (0) : "memory")
+#endif /* RTEMS_SMP */
#else
/* armv6 doesn't have dsb/dmb/isb, and no way to wait only for stores */
#define CK_ISB \