Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/x86/include Add a memory barrier on wrmsr, because ...



details:   https://anonhg.NetBSD.org/src/rev/82f6a9757477
branches:  trunk
changeset: 965221:82f6a9757477
user:      maxv <maxv%NetBSD.org@localhost>
date:      Sat Sep 07 11:09:03 2019 +0000

description:
Add a memory barrier on wrmsr, because some MSRs control memory access
rights (we don't use them though). Also add barriers on fninit and clts
for safety.

diffstat:

 sys/arch/x86/include/cpufunc.h |  7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diffs (35 lines):

diff -r dd7a3b883048 -r 82f6a9757477 sys/arch/x86/include/cpufunc.h
--- a/sys/arch/x86/include/cpufunc.h    Sat Sep 07 10:24:01 2019 +0000
+++ b/sys/arch/x86/include/cpufunc.h    Sat Sep 07 11:09:03 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpufunc.h,v 1.34 2019/07/05 17:08:55 maxv Exp $        */
+/*     $NetBSD: cpufunc.h,v 1.35 2019/09/07 11:09:03 maxv Exp $        */
 
 /*
  * Copyright (c) 1998, 2007, 2019 The NetBSD Foundation, Inc.
@@ -271,7 +271,7 @@
 static inline void
 fninit(void)
 {
-       __asm volatile ("fninit");
+       __asm volatile ("fninit" ::: "memory");
 }
 
 static inline void
@@ -303,7 +303,7 @@
 static inline void
 clts(void)
 {
-       __asm volatile ("clts");
+       __asm volatile ("clts" ::: "memory");
 }
 
 void   stts(void);
@@ -433,6 +433,7 @@
                "wrmsr"
                :
                : "a" (low), "d" (high), "c" (msr)
+               : "memory"
        );
 }
 



Home | Main Index | Thread Index | Old Index