summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorriastradh <riastradh@NetBSD.org>2022-04-09 12:07:17 +0000
committerriastradh <riastradh@NetBSD.org>2022-04-09 12:07:17 +0000
commit4b86535e66bcd3b963eb5d5c7153bf2816be6c58 (patch)
tree0917d84d6a200fd5bc3ee99e7319417016540dac /common
parentada4ec3b9731eac4133a1d2cd45d9cd339255aea (diff)
x86: Omit needless store in membar_producer/exit.
On x86, every store is a store-release, so there is no need for any barrier. But this wasn't a barrier anyway; it was just a store, which was redundant with the store of the return address to the stack implied by CALL even if issuing a store made a difference.
Diffstat (limited to 'common')
-rw-r--r--common/lib/libc/arch/i386/atomic/atomic.S9
-rw-r--r--common/lib/libc/arch/x86_64/atomic/atomic.S9
2 files changed, 12 insertions, 6 deletions
diff --git a/common/lib/libc/arch/i386/atomic/atomic.S b/common/lib/libc/arch/i386/atomic/atomic.S
index fe29a5294a4..ea752023326 100644
--- a/common/lib/libc/arch/i386/atomic/atomic.S
+++ b/common/lib/libc/arch/i386/atomic/atomic.S
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic.S,v 1.31 2022/04/09 12:07:00 riastradh Exp $ */
+/* $NetBSD: atomic.S,v 1.32 2022/04/09 12:07:17 riastradh Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -188,8 +188,11 @@ ENTRY(_membar_consumer)
END(_membar_consumer)
ENTRY(_membar_producer)
- /* A store is enough */
- movl $0, -4(%esp)
+ /*
+ * Every store to normal memory is a store-release on x86, so
+ * there is never any need for explicit barriers to order
+ * anything-before-store.
+ */
ret
END(_membar_producer)
diff --git a/common/lib/libc/arch/x86_64/atomic/atomic.S b/common/lib/libc/arch/x86_64/atomic/atomic.S
index 1a627c221c7..4e845abca91 100644
--- a/common/lib/libc/arch/x86_64/atomic/atomic.S
+++ b/common/lib/libc/arch/x86_64/atomic/atomic.S
@@ -1,4 +1,4 @@
-/* $NetBSD: atomic.S,v 1.24 2022/04/09 12:07:00 riastradh Exp $ */
+/* $NetBSD: atomic.S,v 1.25 2022/04/09 12:07:17 riastradh Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -263,8 +263,11 @@ ENTRY(_membar_consumer)
END(_membar_consumer)
ENTRY(_membar_producer)
- /* A store is enough */
- movq $0, -8(%rsp)
+ /*
+ * Every store to normal memory is a store-release on x86, so
+ * there is never any need for explicit barriers to order
+ * anything-before-store.
+ */
ret
END(_membar_producer)