Switching to real page sizes, not allocation granularity.
This commit is contained in:
parent
122114d1d1
commit
c67173fe36
|
@ -21,8 +21,13 @@ namespace xe {
|
|||
namespace memory {
|
||||
|
||||
// Returns the native page size of the system, in bytes.
|
||||
// This should be ~4KiB.
|
||||
size_t page_size();
|
||||
|
||||
// Returns the allocation granularity of the system, in bytes.
|
||||
// This is likely 64KiB.
|
||||
size_t allocation_granularity();
|
||||
|
||||
enum class PageAccess {
|
||||
kNoAccess = 0,
|
||||
kReadOnly = 1 << 0,
|
||||
|
|
|
@ -15,6 +15,16 @@ namespace xe {
|
|||
namespace memory {
|
||||
|
||||
size_t page_size() {
|
||||
static size_t value = 0;
|
||||
if (!value) {
|
||||
SYSTEM_INFO si;
|
||||
GetSystemInfo(&si);
|
||||
value = si.dwPageSize;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
size_t allocation_granularity() {
|
||||
static size_t value = 0;
|
||||
if (!value) {
|
||||
SYSTEM_INFO si;
|
||||
|
|
|
@ -50,8 +50,7 @@ ThreadState::ThreadState(Processor* processor, uint32_t thread_id,
|
|||
// only Protect() on system page granularity.
|
||||
stack_size = (stack_size + 0xFFF) & 0xFFFFF000;
|
||||
uint32_t stack_alignment = (stack_size & 0xF000) ? 0x1000 : 0x10000;
|
||||
uint32_t stack_padding =
|
||||
uint32_t(xe::memory::page_size()); // Host page size.
|
||||
uint32_t stack_padding = 64 * 1024; // 0x4...0x7F is 64k.
|
||||
uint32_t actual_stack_size = stack_padding + stack_size;
|
||||
bool top_down = false;
|
||||
switch (stack_type) {
|
||||
|
|
Loading…
Reference in New Issue