#include "jit/arm64/vixl/Cpu-vixl.h"
#include <algorithm>
#include "jit/arm64/vixl/Utils-vixl.h"
namespace vixl {
unsigned CPU::dcache_line_size_ = 1;
unsigned CPU::icache_line_size_ = 1;
void CPU::SetUp() {
uint32_t cache_type_register = GetCacheType();
static const int kDCacheLineSizeShift = 16;
static const int kICacheLineSizeShift = 0;
static const uint32_t kDCacheLineSizeMask = 0xf << kDCacheLineSizeShift;
static const uint32_t kICacheLineSizeMask = 0xf << kICacheLineSizeShift;
uint32_t dcache_line_size_power_of_two =
(cache_type_register & kDCacheLineSizeMask) >> kDCacheLineSizeShift;
uint32_t icache_line_size_power_of_two =
(cache_type_register & kICacheLineSizeMask) >> kICacheLineSizeShift;
dcache_line_size_ = 4 << dcache_line_size_power_of_two;
icache_line_size_ = 4 << icache_line_size_power_of_two;
const uint32_t conservative_line_size = 32;
dcache_line_size_ = std::min(dcache_line_size_, conservative_line_size);
icache_line_size_ = std::min(icache_line_size_, conservative_line_size);
}
}