112 __ ret(lr); 113 114 # undef __ 115 116 return start; 117 } 118 }; 119 120 121 void VM_Version::get_processor_features() { 122 _supports_cx8 = true; 123 _supports_atomic_getset4 = true; 124 _supports_atomic_getadd4 = true; 125 _supports_atomic_getset8 = true; 126 _supports_atomic_getadd8 = true; 127 128 getPsrInfo_stub(&_psr_info); 129 130 int dcache_line = VM_Version::dcache_line_size(); 131 132 if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) 133 FLAG_SET_DEFAULT(AllocatePrefetchDistance, 3*dcache_line); 134 if (FLAG_IS_DEFAULT(AllocatePrefetchStepSize)) 135 FLAG_SET_DEFAULT(AllocatePrefetchStepSize, dcache_line); 136 if (FLAG_IS_DEFAULT(PrefetchScanIntervalInBytes)) 137 FLAG_SET_DEFAULT(PrefetchScanIntervalInBytes, 3*dcache_line); 138 if (FLAG_IS_DEFAULT(PrefetchCopyIntervalInBytes)) 139 FLAG_SET_DEFAULT(PrefetchCopyIntervalInBytes, 3*dcache_line); 140 if (FLAG_IS_DEFAULT(SoftwarePrefetchHintDistance)) 141 FLAG_SET_DEFAULT(SoftwarePrefetchHintDistance, 3*dcache_line); 142 143 if (PrefetchCopyIntervalInBytes != -1 && 144 ((PrefetchCopyIntervalInBytes & 7) || (PrefetchCopyIntervalInBytes >= 32768))) { 145 warning("PrefetchCopyIntervalInBytes must be -1, or a multiple of 8 and < 32768"); 146 PrefetchCopyIntervalInBytes &= ~7; 147 if (PrefetchCopyIntervalInBytes >= 32768) 148 PrefetchCopyIntervalInBytes = 32760; 149 } 150 151 if (AllocatePrefetchDistance !=-1 && (AllocatePrefetchDistance & 7)) { | 112 __ ret(lr); 113 114 # undef __ 115 116 return start; 117 } 118 }; 119 120 121 void VM_Version::get_processor_features() { 122 _supports_cx8 = true; 123 _supports_atomic_getset4 = true; 124 _supports_atomic_getadd4 = true; 125 _supports_atomic_getset8 = true; 126 _supports_atomic_getadd8 = true; 127 128 getPsrInfo_stub(&_psr_info); 129 130 int dcache_line = VM_Version::dcache_line_size(); 131 132 // publish data cache line flush size via generic field 133 _data_cache_line_flush_size = dcache_line; 134 135 if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) 136 FLAG_SET_DEFAULT(AllocatePrefetchDistance, 3*dcache_line); 137 if (FLAG_IS_DEFAULT(AllocatePrefetchStepSize)) 138 FLAG_SET_DEFAULT(AllocatePrefetchStepSize, dcache_line); 139 if (FLAG_IS_DEFAULT(PrefetchScanIntervalInBytes)) 140 FLAG_SET_DEFAULT(PrefetchScanIntervalInBytes, 3*dcache_line); 141 if (FLAG_IS_DEFAULT(PrefetchCopyIntervalInBytes)) 142 FLAG_SET_DEFAULT(PrefetchCopyIntervalInBytes, 3*dcache_line); 143 if (FLAG_IS_DEFAULT(SoftwarePrefetchHintDistance)) 144 FLAG_SET_DEFAULT(SoftwarePrefetchHintDistance, 3*dcache_line); 145 146 if (PrefetchCopyIntervalInBytes != -1 && 147 ((PrefetchCopyIntervalInBytes & 7) || (PrefetchCopyIntervalInBytes >= 32768))) { 148 warning("PrefetchCopyIntervalInBytes must be -1, or a multiple of 8 and < 32768"); 149 PrefetchCopyIntervalInBytes &= ~7; 150 if (PrefetchCopyIntervalInBytes >= 32768) 151 PrefetchCopyIntervalInBytes = 32760; 152 } 153 154 if (AllocatePrefetchDistance !=-1 && (AllocatePrefetchDistance & 7)) { |