< prev index next >
src/hotspot/os_cpu/linux_x86/orderAccess_linux_x86.hpp
Print this page
*** 64,119 ****
// clobbered, so we must protect it around the CPUID.
__asm__ volatile ("xchg %%esi, %%ebx; cpuid; xchg %%esi, %%ebx " : "+a" (idx) : : "esi", "ecx", "edx", "memory");
#endif
}
- template<>
- struct OrderAccess::PlatformOrderedStore<1, RELEASE_X_FENCE>
- {
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm__ volatile ( "xchgb (%2),%0"
- : "=q" (v)
- : "0" (v), "r" (p)
- : "memory");
- }
- };
-
- template<>
- struct OrderAccess::PlatformOrderedStore<2, RELEASE_X_FENCE>
- {
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm__ volatile ( "xchgw (%2),%0"
- : "=r" (v)
- : "0" (v), "r" (p)
- : "memory");
- }
- };
-
- template<>
- struct OrderAccess::PlatformOrderedStore<4, RELEASE_X_FENCE>
- {
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm__ volatile ( "xchgl (%2),%0"
- : "=r" (v)
- : "0" (v), "r" (p)
- : "memory");
- }
- };
-
- #ifdef AMD64
- template<>
- struct OrderAccess::PlatformOrderedStore<8, RELEASE_X_FENCE>
- {
- template <typename T>
- void operator()(T v, volatile T* p) const {
- __asm__ volatile ( "xchgq (%2), %0"
- : "=r" (v)
- : "0" (v), "r" (p)
- : "memory");
- }
- };
- #endif // AMD64
-
#endif // OS_CPU_LINUX_X86_ORDERACCESS_LINUX_X86_HPP
--- 64,69 ----
< prev index next >