|
|
|
@ -363,21 +363,12 @@ private:
|
|
|
|
|
|
|
|
|
|
#ifdef ARCHITECTURE_arm64
|
|
|
|
|
|
|
|
|
|
static uint64_t GetRandomU64() {
|
|
|
|
|
uint64_t ret;
|
|
|
|
|
ASSERT(getrandom(&ret, sizeof(ret), 0) == 0);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void* ChooseVirtualBase(size_t virtual_size) {
|
|
|
|
|
constexpr uintptr_t Map39BitSize = (1ULL << 39);
|
|
|
|
|
constexpr uintptr_t Map36BitSize = (1ULL << 36);
|
|
|
|
|
|
|
|
|
|
// Seed the MT with some initial strong randomness.
|
|
|
|
|
//
|
|
|
|
|
// This is not a cryptographic application, we just want something more
|
|
|
|
|
// random than the current time.
|
|
|
|
|
std::mt19937_64 rng(GetRandomU64());
|
|
|
|
|
// This is not a cryptographic application, we just want something random.
|
|
|
|
|
std::mt19937_64 rng;
|
|
|
|
|
|
|
|
|
|
// We want to ensure we are allocating at an address aligned to the L2 block size.
|
|
|
|
|
// For Qualcomm devices, we must also allocate memory above 36 bits.
|
|
|
|
|