[Kernel/Thread] Changed default stack location

This commit is contained in:
Gliniak 2020-08-01 08:13:54 +02:00 committed by Rick Gibbed
parent e8dde519cc
commit e9f1a534df
2 changed files with 9 additions and 6 deletions

View File

@ -226,7 +226,7 @@ void XThread::InitializeGuestObject() {
} }
bool XThread::AllocateStack(uint32_t size) { bool XThread::AllocateStack(uint32_t size) {
auto heap = memory()->LookupHeap(0x40000000); auto heap = memory()->LookupHeap(kStackAddressRangeBegin);
auto alignment = heap->page_size(); auto alignment = heap->page_size();
auto padding = heap->page_size() * 2; // Guard page size * 2 auto padding = heap->page_size() * 2; // Guard page size * 2
@ -234,10 +234,10 @@ bool XThread::AllocateStack(uint32_t size) {
auto actual_size = size + padding; auto actual_size = size + padding;
uint32_t address = 0; uint32_t address = 0;
if (!heap->AllocRange(0x40000000, 0x7F000000, actual_size, alignment, if (!heap->AllocRange(
kMemoryAllocationReserve | kMemoryAllocationCommit, kStackAddressRangeBegin, kStackAddressRangeEnd, actual_size,
kMemoryProtectRead | kMemoryProtectWrite, false, alignment, kMemoryAllocationReserve | kMemoryAllocationCommit,
&address)) { kMemoryProtectRead | kMemoryProtectWrite, false, &address)) {
return false; return false;
} }
@ -258,7 +258,7 @@ bool XThread::AllocateStack(uint32_t size) {
void XThread::FreeStack() { void XThread::FreeStack() {
if (stack_alloc_base_) { if (stack_alloc_base_) {
auto heap = memory()->LookupHeap(0x40000000); auto heap = memory()->LookupHeap(kStackAddressRangeBegin);
heap->Release(stack_alloc_base_); heap->Release(stack_alloc_base_);
stack_alloc_base_ = 0; stack_alloc_base_ = 0;

View File

@ -149,6 +149,9 @@ class XThread : public XObject, public cpu::Thread {
public: public:
static const XObject::Type kObjectType = XObject::Type::Thread; static const XObject::Type kObjectType = XObject::Type::Thread;
static constexpr uint32_t kStackAddressRangeBegin = 0x70000000;
static constexpr uint32_t kStackAddressRangeEnd = 0x7F000000;
struct CreationParams { struct CreationParams {
uint32_t stack_size; uint32_t stack_size;
uint32_t xapi_thread_startup; uint32_t xapi_thread_startup;