< prev index next >

src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp

Print this page

 54 #ifndef HWCAP_ATOMICS
 55 #define HWCAP_ATOMICS (1<<8)
 56 #endif
 57 
 58 #ifndef HWCAP_DCPOP
 59 #define HWCAP_DCPOP (1<<16)
 60 #endif
 61 
 62 #ifndef HWCAP_SHA3
 63 #define HWCAP_SHA3 (1 << 17)
 64 #endif
 65 
 66 #ifndef HWCAP_SHA512
 67 #define HWCAP_SHA512 (1 << 21)
 68 #endif
 69 
 70 #ifndef HWCAP_SVE
 71 #define HWCAP_SVE (1 << 22)
 72 #endif
 73 




 74 #ifndef HWCAP_PACA
 75 #define HWCAP_PACA (1 << 30)
 76 #endif
 77 
 78 #ifndef HWCAP_FPHP
 79 #define HWCAP_FPHP (1<<9)
 80 #endif
 81 
 82 #ifndef HWCAP_ASIMDHP
 83 #define HWCAP_ASIMDHP (1<<10)
 84 #endif
 85 
 86 #ifndef HWCAP2_SVE2
 87 #define HWCAP2_SVE2 (1 << 1)
 88 #endif
 89 
 90 #ifndef HWCAP2_SVEBITPERM
 91 #define HWCAP2_SVEBITPERM (1 << 4)
 92 #endif
 93 

126   static_assert(CPU_SHA3    == HWCAP_SHA3,    "Flag CPU_SHA3 must follow Linux HWCAP");
127   static_assert(CPU_SHA512  == HWCAP_SHA512,  "Flag CPU_SHA512 must follow Linux HWCAP");
128   static_assert(CPU_SVE     == HWCAP_SVE,     "Flag CPU_SVE must follow Linux HWCAP");
129   static_assert(CPU_PACA    == HWCAP_PACA,    "Flag CPU_PACA must follow Linux HWCAP");
130   static_assert(CPU_FPHP    == HWCAP_FPHP,    "Flag CPU_FPHP must follow Linux HWCAP");
131   static_assert(CPU_ASIMDHP == HWCAP_ASIMDHP, "Flag CPU_ASIMDHP must follow Linux HWCAP");
132   _features = auxv & (
133       HWCAP_FP      |
134       HWCAP_ASIMD   |
135       HWCAP_EVTSTRM |
136       HWCAP_AES     |
137       HWCAP_PMULL   |
138       HWCAP_SHA1    |
139       HWCAP_SHA2    |
140       HWCAP_CRC32   |
141       HWCAP_ATOMICS |
142       HWCAP_DCPOP   |
143       HWCAP_SHA3    |
144       HWCAP_SHA512  |
145       HWCAP_SVE     |

146       HWCAP_PACA    |
147       HWCAP_FPHP    |
148       HWCAP_ASIMDHP);
149 
150   if (auxv2 & HWCAP2_SVE2) _features |= CPU_SVE2;
151   if (auxv2 & HWCAP2_SVEBITPERM) _features |= CPU_SVEBITPERM;
152 
153   uint64_t ctr_el0;
154   uint64_t dczid_el0;
155   __asm__ (
156     "mrs %0, CTR_EL0\n"
157     "mrs %1, DCZID_EL0\n"
158     : "=r"(ctr_el0), "=r"(dczid_el0)
159   );
160 
161   _icache_line_size = (1 << (ctr_el0 & 0x0f)) * 4;
162   _dcache_line_size = (1 << ((ctr_el0 >> 16) & 0x0f)) * 4;
163 
164   if (!(dczid_el0 & 0x10)) {
165     _zva_length = 4 << (dczid_el0 & 0xf);

 54 #ifndef HWCAP_ATOMICS
 55 #define HWCAP_ATOMICS (1<<8)
 56 #endif
 57 
 58 #ifndef HWCAP_DCPOP
 59 #define HWCAP_DCPOP (1<<16)
 60 #endif
 61 
 62 #ifndef HWCAP_SHA3
 63 #define HWCAP_SHA3 (1 << 17)
 64 #endif
 65 
 66 #ifndef HWCAP_SHA512
 67 #define HWCAP_SHA512 (1 << 21)
 68 #endif
 69 
 70 #ifndef HWCAP_SVE
 71 #define HWCAP_SVE (1 << 22)
 72 #endif
 73 
 74 #ifndef HWCAP_SB
 75 #define HWCAP_SB (1 << 29)
 76 #endif
 77 
 78 #ifndef HWCAP_PACA
 79 #define HWCAP_PACA (1 << 30)
 80 #endif
 81 
 82 #ifndef HWCAP_FPHP
 83 #define HWCAP_FPHP (1<<9)
 84 #endif
 85 
 86 #ifndef HWCAP_ASIMDHP
 87 #define HWCAP_ASIMDHP (1<<10)
 88 #endif
 89 
 90 #ifndef HWCAP2_SVE2
 91 #define HWCAP2_SVE2 (1 << 1)
 92 #endif
 93 
 94 #ifndef HWCAP2_SVEBITPERM
 95 #define HWCAP2_SVEBITPERM (1 << 4)
 96 #endif
 97 

130   static_assert(CPU_SHA3    == HWCAP_SHA3,    "Flag CPU_SHA3 must follow Linux HWCAP");
131   static_assert(CPU_SHA512  == HWCAP_SHA512,  "Flag CPU_SHA512 must follow Linux HWCAP");
132   static_assert(CPU_SVE     == HWCAP_SVE,     "Flag CPU_SVE must follow Linux HWCAP");
133   static_assert(CPU_PACA    == HWCAP_PACA,    "Flag CPU_PACA must follow Linux HWCAP");
134   static_assert(CPU_FPHP    == HWCAP_FPHP,    "Flag CPU_FPHP must follow Linux HWCAP");
135   static_assert(CPU_ASIMDHP == HWCAP_ASIMDHP, "Flag CPU_ASIMDHP must follow Linux HWCAP");
136   _features = auxv & (
137       HWCAP_FP      |
138       HWCAP_ASIMD   |
139       HWCAP_EVTSTRM |
140       HWCAP_AES     |
141       HWCAP_PMULL   |
142       HWCAP_SHA1    |
143       HWCAP_SHA2    |
144       HWCAP_CRC32   |
145       HWCAP_ATOMICS |
146       HWCAP_DCPOP   |
147       HWCAP_SHA3    |
148       HWCAP_SHA512  |
149       HWCAP_SVE     |
150       HWCAP_SB      |
151       HWCAP_PACA    |
152       HWCAP_FPHP    |
153       HWCAP_ASIMDHP);
154 
155   if (auxv2 & HWCAP2_SVE2) _features |= CPU_SVE2;
156   if (auxv2 & HWCAP2_SVEBITPERM) _features |= CPU_SVEBITPERM;
157 
158   uint64_t ctr_el0;
159   uint64_t dczid_el0;
160   __asm__ (
161     "mrs %0, CTR_EL0\n"
162     "mrs %1, DCZID_EL0\n"
163     : "=r"(ctr_el0), "=r"(dczid_el0)
164   );
165 
166   _icache_line_size = (1 << (ctr_el0 & 0x0f)) * 4;
167   _dcache_line_size = (1 << ((ctr_el0 >> 16) & 0x0f)) * 4;
168 
169   if (!(dczid_el0 & 0x10)) {
170     _zva_length = 4 << (dczid_el0 & 0xf);
< prev index next >