hotspot/src/cpu/ppc/vm/assembler_ppc.hpp
changeset 39444 2eae9b74c1f3
parent 39259 14a1c9c7f909
child 41334 8b28be7b8613
equal deleted inserted replaced
39443:ca6dfb34e46c 39444:2eae9b74c1f3
   704     TWI_OPCODE     = (3u  << OPCODE_SHIFT),
   704     TWI_OPCODE     = (3u  << OPCODE_SHIFT),
   705     TD_OPCODE      = (31u << OPCODE_SHIFT |   68u << 1),
   705     TD_OPCODE      = (31u << OPCODE_SHIFT |   68u << 1),
   706     TW_OPCODE      = (31u << OPCODE_SHIFT |    4u << 1),
   706     TW_OPCODE      = (31u << OPCODE_SHIFT |    4u << 1),
   707 
   707 
   708     // Atomics.
   708     // Atomics.
       
   709     LBARX_OPCODE   = (31u << OPCODE_SHIFT |   52u << 1),
       
   710     LHARX_OPCODE   = (31u << OPCODE_SHIFT |  116u << 1),
   709     LWARX_OPCODE   = (31u << OPCODE_SHIFT |   20u << 1),
   711     LWARX_OPCODE   = (31u << OPCODE_SHIFT |   20u << 1),
   710     LDARX_OPCODE   = (31u << OPCODE_SHIFT |   84u << 1),
   712     LDARX_OPCODE   = (31u << OPCODE_SHIFT |   84u << 1),
   711     LQARX_OPCODE   = (31u << OPCODE_SHIFT |  276u << 1),
   713     LQARX_OPCODE   = (31u << OPCODE_SHIFT |  276u << 1),
       
   714     STBCX_OPCODE   = (31u << OPCODE_SHIFT |  694u << 1),
       
   715     STHCX_OPCODE   = (31u << OPCODE_SHIFT |  726u << 1),
   712     STWCX_OPCODE   = (31u << OPCODE_SHIFT |  150u << 1),
   716     STWCX_OPCODE   = (31u << OPCODE_SHIFT |  150u << 1),
   713     STDCX_OPCODE   = (31u << OPCODE_SHIFT |  214u << 1),
   717     STDCX_OPCODE   = (31u << OPCODE_SHIFT |  214u << 1),
   714     STQCX_OPCODE   = (31u << OPCODE_SHIFT |  182u << 1)
   718     STQCX_OPCODE   = (31u << OPCODE_SHIFT |  182u << 1)
   715 
   719 
   716   };
   720   };
  1794   // Wait instructions for polling. Attention: May result in SIGILL.
  1798   // Wait instructions for polling. Attention: May result in SIGILL.
  1795   inline void wait();
  1799   inline void wait();
  1796   inline void waitrsv(); // >=Power7
  1800   inline void waitrsv(); // >=Power7
  1797 
  1801 
  1798   // atomics
  1802   // atomics
       
  1803   inline void lbarx_unchecked(Register d, Register a, Register b, int eh1 = 0); // >=Power 8
       
  1804   inline void lharx_unchecked(Register d, Register a, Register b, int eh1 = 0); // >=Power 8
  1799   inline void lwarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
  1805   inline void lwarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
  1800   inline void ldarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
  1806   inline void ldarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
  1801   inline void lqarx_unchecked(Register d, Register a, Register b, int eh1 = 0);
  1807   inline void lqarx_unchecked(Register d, Register a, Register b, int eh1 = 0); // >=Power 8
  1802   inline bool lxarx_hint_exclusive_access();
  1808   inline bool lxarx_hint_exclusive_access();
       
  1809   inline void lbarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
       
  1810   inline void lharx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1803   inline void lwarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1811   inline void lwarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1804   inline void ldarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1812   inline void ldarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1805   inline void lqarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
  1813   inline void lqarx(  Register d, Register a, Register b, bool hint_exclusive_access = false);
       
  1814   inline void stbcx_( Register s, Register a, Register b);
       
  1815   inline void sthcx_( Register s, Register a, Register b);
  1806   inline void stwcx_( Register s, Register a, Register b);
  1816   inline void stwcx_( Register s, Register a, Register b);
  1807   inline void stdcx_( Register s, Register a, Register b);
  1817   inline void stdcx_( Register s, Register a, Register b);
  1808   inline void stqcx_( Register s, Register a, Register b);
  1818   inline void stqcx_( Register s, Register a, Register b);
  1809 
  1819 
  1810   // Instructions for adjusting thread priority for simultaneous
  1820   // Instructions for adjusting thread priority for simultaneous
  2167   // dcache write hint
  2177   // dcache write hint
  2168   inline void dcbtst(  Register s2);
  2178   inline void dcbtst(  Register s2);
  2169   inline void dcbtstct(Register s2, int ct);
  2179   inline void dcbtstct(Register s2, int ct);
  2170 
  2180 
  2171   // Atomics: use ra0mem to disallow R0 as base.
  2181   // Atomics: use ra0mem to disallow R0 as base.
       
  2182   inline void lbarx_unchecked(Register d, Register b, int eh1);
       
  2183   inline void lharx_unchecked(Register d, Register b, int eh1);
  2172   inline void lwarx_unchecked(Register d, Register b, int eh1);
  2184   inline void lwarx_unchecked(Register d, Register b, int eh1);
  2173   inline void ldarx_unchecked(Register d, Register b, int eh1);
  2185   inline void ldarx_unchecked(Register d, Register b, int eh1);
  2174   inline void lqarx_unchecked(Register d, Register b, int eh1);
  2186   inline void lqarx_unchecked(Register d, Register b, int eh1);
       
  2187   inline void lbarx( Register d, Register b, bool hint_exclusive_access);
       
  2188   inline void lharx( Register d, Register b, bool hint_exclusive_access);
  2175   inline void lwarx( Register d, Register b, bool hint_exclusive_access);
  2189   inline void lwarx( Register d, Register b, bool hint_exclusive_access);
  2176   inline void ldarx( Register d, Register b, bool hint_exclusive_access);
  2190   inline void ldarx( Register d, Register b, bool hint_exclusive_access);
  2177   inline void lqarx( Register d, Register b, bool hint_exclusive_access);
  2191   inline void lqarx( Register d, Register b, bool hint_exclusive_access);
       
  2192   inline void stbcx_(Register s, Register b);
       
  2193   inline void sthcx_(Register s, Register b);
  2178   inline void stwcx_(Register s, Register b);
  2194   inline void stwcx_(Register s, Register b);
  2179   inline void stdcx_(Register s, Register b);
  2195   inline void stdcx_(Register s, Register b);
  2180   inline void stqcx_(Register s, Register b);
  2196   inline void stqcx_(Register s, Register b);
  2181   inline void lfs(   FloatRegister d, int si16);
  2197   inline void lfs(   FloatRegister d, int si16);
  2182   inline void lfsx(  FloatRegister d, Register b);
  2198   inline void lfsx(  FloatRegister d, Register b);