summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/has/builtin-riscv-pause.c7
-rw-r--r--build/header.mk1
-rw-r--r--src/atomic.h2
3 files changed, 9 insertions, 1 deletions
diff --git a/build/has/builtin-riscv-pause.c b/build/has/builtin-riscv-pause.c
new file mode 100644
index 0000000..24b0675
--- /dev/null
+++ b/build/has/builtin-riscv-pause.c
@@ -0,0 +1,7 @@
+// Copyright © Tavian Barnes <tavianator@tavianator.com>
+// SPDX-License-Identifier: 0BSD
+
+int main(void) {
+ __builtin_riscv_pause();
+ return 0;
+}
diff --git a/build/header.mk b/build/header.mk
index 09454c5..76e9562 100644
--- a/build/header.mk
+++ b/build/header.mk
@@ -16,6 +16,7 @@ HEADERS := \
gen/has/acl-is-trivial-np.h \
gen/has/acl-trivial.h \
gen/has/aligned-alloc.h \
+ gen/has/builtin-riscv-pause.h \
gen/has/confstr.h \
gen/has/extattr-get-file.h \
gen/has/extattr-get-link.h \
diff --git a/src/atomic.h b/src/atomic.h
index 360de20..ad5303b 100644
--- a/src/atomic.h
+++ b/src/atomic.h
@@ -109,7 +109,7 @@
# define spin_loop() __builtin_ia32_pause()
#elif __has_builtin(__builtin_arm_yield)
# define spin_loop() __builtin_arm_yield()
-#elif __has_builtin(__builtin_riscv_pause)
+#elif BFS_HAS_BUILTIN_RISCV_PAUSE
# define spin_loop() __builtin_riscv_pause()
#else
# define spin_loop() ((void)0)