From: Oliver Kurth Date: Tue, 30 Apr 2019 20:24:25 +0000 (-0700) Subject: Common header file change not directly applicable to open-vm-tools. X-Git-Tag: stable-11.0.0~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ae954db584b7e3287a97f44d0eeb96d09ba2c68;p=thirdparty%2Fopen-vm-tools.git Common header file change not directly applicable to open-vm-tools. --- diff --git a/open-vm-tools/lib/include/vm_basic_asm_x86_common.h b/open-vm-tools/lib/include/vm_basic_asm_x86_common.h index f6fdbb339..5b3f4b65b 100644 --- a/open-vm-tools/lib/include/vm_basic_asm_x86_common.h +++ b/open-vm-tools/lib/include/vm_basic_asm_x86_common.h @@ -1,5 +1,5 @@ /********************************************************* - * Copyright (C) 2013-2018 VMware, Inc. All rights reserved. + * Copyright (C) 2013-2019 VMware, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published @@ -309,6 +309,63 @@ RDTSC_BARRIER(void) #endif } +static INLINE void +MFENCE(void) +{ +#ifdef __GNUC__ + __asm__ __volatile__( + "mfence" + ::: "memory" + ); +#elif defined _MSC_VER + _ReadWriteBarrier(); + _mm_mfence(); + _ReadWriteBarrier(); +#else +#error No compiler defined for MFENCE +#endif +} + + +static INLINE void +LFENCE(void) +{ +#ifdef __GNUC__ + __asm__ __volatile__( + "lfence" + : : : "memory" + ); +#elif defined _MSC_VER + _ReadWriteBarrier(); + _mm_lfence(); + _ReadWriteBarrier(); +#else +#error No compiler defined for LFENCE +#endif +} + + +static INLINE void +SFENCE(void) +{ +#ifdef __GNUC__ + __asm__ __volatile__( + "sfence" + : : : "memory" + ); +#elif defined _MSC_VER + _ReadWriteBarrier(); +#if defined VM_X86_32 + __asm sfence; +#else + _mm_sfence(); +#endif + _ReadWriteBarrier(); +#else +#error No compiler defined for SFENCE +#endif +} + /* * Memory Barriers