git: 6095f4b04cf9 - main - amd64 kernel __storeload_barrier: quiet gcc -Warray-bounds

From: Ryan Libby <rlibby_at_FreeBSD.org>
Date: Sun, 23 Jun 2024 23:24:42 UTC
The branch main has been updated by rlibby:

URL: https://cgit.FreeBSD.org/src/commit/?id=6095f4b04cf9714a3b66fc5906fcfc5ec2a8ddd6

commit 6095f4b04cf9714a3b66fc5906fcfc5ec2a8ddd6
Author:     Ryan Libby <rlibby@FreeBSD.org>
AuthorDate: 2024-06-23 23:23:14 +0000
Commit:     Ryan Libby <rlibby@FreeBSD.org>
CommitDate: 2024-06-23 23:23:14 +0000

    amd64 kernel __storeload_barrier: quiet gcc -Warray-bounds
    
    Use a constant input operand instead of an output operand to tell the
    compiler about OFFSETOF_MONITORBUF.  If we tell it we are writing to
    *(u_int *)OFFSETOF_MONITORBUF, it rightly complains, but we aren't.  The
    memory clobber already covers the necessary semantics for the compiler.
    
    Reviewed by:    kib
    Sponsored by:   Dell EMC Isilon
    Differential Revision:  https://reviews.freebsd.org/D45694
---
 sys/amd64/include/atomic.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h
index facf6da844d3..75a88e03290e 100644
--- a/sys/amd64/include/atomic.h
+++ b/sys/amd64/include/atomic.h
@@ -295,8 +295,8 @@ static __inline void
 __storeload_barrier(void)
 {
 #if defined(_KERNEL)
-	__asm __volatile("lock; addl $0,%%gs:%0"
-	    : "+m" (*(u_int *)OFFSETOF_MONITORBUF) : : "memory", "cc");
+	__asm __volatile("lock; addl $0,%%gs:%c0"
+	    : : "i" (OFFSETOF_MONITORBUF) : "memory", "cc");
 #else /* !_KERNEL */
 	__asm __volatile("lock; addl $0,-8(%%rsp)" : : : "memory", "cc");
 #endif /* _KERNEL*/