src/hotspot/os_cpu/linux_arm/orderAccess_linux_arm.hpp
changeset 51996 84743156e780
parent 50429 83aec1d357d4
child 52351 0ecb4e520110
equal deleted inserted replaced
51995:f7babf9d1592 51996:84743156e780
    48 //    __asm__ __volatile__ ("dmb" : : : "memory");
    48 //    __asm__ __volatile__ ("dmb" : : : "memory");
    49 //    __asm__ __volatile__ ("dsb" : : : "memory");
    49 //    __asm__ __volatile__ ("dsb" : : : "memory");
    50 //
    50 //
    51 // inline void _OrderAccess_dsb() {
    51 // inline void _OrderAccess_dsb() {
    52 //    volatile intptr_t dummy = 0;
    52 //    volatile intptr_t dummy = 0;
    53 //    if (os::is_MP()) {
    53 //    __asm__ volatile (
    54 //      __asm__ volatile (
    54 //      "mcr p15, 0, %0, c7, c10, 4"
    55 //        "mcr p15, 0, %0, c7, c10, 4"
    55 //      : : "r" (dummy) : "memory");
    56 //        : : "r" (dummy) : "memory");
       
    57 //    }
       
    58 // }
    56 // }
    59 
    57 
    60 inline static void dmb_sy() {
    58 inline static void dmb_sy() {
    61    if (!os::is_MP()) {
       
    62      return;
       
    63    }
       
    64 #ifdef AARCH64
    59 #ifdef AARCH64
    65    __asm__ __volatile__ ("dmb sy" : : : "memory");
    60    __asm__ __volatile__ ("dmb sy" : : : "memory");
    66 #else
    61 #else
    67    if (VM_Version::arm_arch() >= 7) {
    62    if (VM_Version::arm_arch() >= 7) {
    68 #ifdef __thumb__
    63 #ifdef __thumb__
    80    }
    75    }
    81 #endif
    76 #endif
    82 }
    77 }
    83 
    78 
    84 inline static void dmb_st() {
    79 inline static void dmb_st() {
    85    if (!os::is_MP()) {
       
    86      return;
       
    87    }
       
    88 #ifdef AARCH64
    80 #ifdef AARCH64
    89    __asm__ __volatile__ ("dmb st" : : : "memory");
    81    __asm__ __volatile__ ("dmb st" : : : "memory");
    90 #else
    82 #else
    91    if (VM_Version::arm_arch() >= 7) {
    83    if (VM_Version::arm_arch() >= 7) {
    92 #ifdef __thumb__
    84 #ifdef __thumb__
   106 }
    98 }
   107 
    99 
   108 // Load-Load/Store barrier
   100 // Load-Load/Store barrier
   109 inline static void dmb_ld() {
   101 inline static void dmb_ld() {
   110 #ifdef AARCH64
   102 #ifdef AARCH64
   111    if (!os::is_MP()) {
       
   112      return;
       
   113    }
       
   114    __asm__ __volatile__ ("dmb ld" : : : "memory");
   103    __asm__ __volatile__ ("dmb ld" : : : "memory");
   115 #else
   104 #else
   116    dmb_sy();
   105    dmb_sy();
   117 #endif
   106 #endif
   118 }
   107 }