mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #208 from lioncash/statics
Add static to some variables
This commit is contained in:
		
						commit
						112768f436
					
				@ -16,8 +16,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Core {
 | 
					namespace Core {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u64             g_last_ticks    = 0;        ///< Last CPU ticks
 | 
					static u64         last_ticks = 0;        ///< Last CPU ticks
 | 
				
			||||||
ARM_Disasm*     g_disasm        = nullptr;  ///< ARM disassembler
 | 
					static ARM_Disasm* disasm     = nullptr;  ///< ARM disassembler
 | 
				
			||||||
ARM_Interface*     g_app_core = nullptr;  ///< ARM11 application core
 | 
					ARM_Interface*     g_app_core = nullptr;  ///< ARM11 application core
 | 
				
			||||||
ARM_Interface*     g_sys_core = nullptr;  ///< ARM11 system (OS) core
 | 
					ARM_Interface*     g_sys_core = nullptr;  ///< ARM11 system (OS) core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -49,7 +49,7 @@ void Stop() {
 | 
				
			|||||||
int Init() {
 | 
					int Init() {
 | 
				
			||||||
    NOTICE_LOG(MASTER_LOG, "initialized OK");
 | 
					    NOTICE_LOG(MASTER_LOG, "initialized OK");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_disasm = new ARM_Disasm();
 | 
					    disasm = new ARM_Disasm();
 | 
				
			||||||
    g_sys_core = new ARM_Interpreter();
 | 
					    g_sys_core = new ARM_Interpreter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (Settings::values.cpu_core) {
 | 
					    switch (Settings::values.cpu_core) {
 | 
				
			||||||
@ -62,13 +62,13 @@ int Init() {
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_last_ticks = Core::g_app_core->GetTicks();
 | 
					    last_ticks = Core::g_app_core->GetTicks();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Shutdown() {
 | 
					void Shutdown() {
 | 
				
			||||||
    delete g_disasm;
 | 
					    delete disasm;
 | 
				
			||||||
    delete g_app_core;
 | 
					    delete g_app_core;
 | 
				
			||||||
    delete g_sys_core;
 | 
					    delete g_sys_core;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -71,17 +71,17 @@ public:
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Lists all thread ids that aren't deleted/etc.
 | 
					// Lists all thread ids that aren't deleted/etc.
 | 
				
			||||||
std::vector<Handle> g_thread_queue;
 | 
					static std::vector<Handle> thread_queue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Lists only ready thread ids.
 | 
					// Lists only ready thread ids.
 | 
				
			||||||
Common::ThreadQueueList<Handle> g_thread_ready_queue;
 | 
					static Common::ThreadQueueList<Handle> thread_ready_queue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Handle g_current_thread_handle;
 | 
					static Handle current_thread_handle;
 | 
				
			||||||
Thread* g_current_thread;
 | 
					static Thread* current_thread;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Gets the current thread
 | 
					/// Gets the current thread
 | 
				
			||||||
inline Thread* GetCurrentThread() {
 | 
					inline Thread* GetCurrentThread() {
 | 
				
			||||||
    return g_current_thread;
 | 
					    return current_thread;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Gets the current thread handle
 | 
					/// Gets the current thread handle
 | 
				
			||||||
@ -91,8 +91,8 @@ Handle GetCurrentThreadHandle() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Sets the current thread
 | 
					/// Sets the current thread
 | 
				
			||||||
inline void SetCurrentThread(Thread* t) {
 | 
					inline void SetCurrentThread(Thread* t) {
 | 
				
			||||||
    g_current_thread = t;
 | 
					    current_thread = t;
 | 
				
			||||||
    g_current_thread_handle = t->GetHandle();
 | 
					    current_thread_handle = t->GetHandle();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Saves the current CPU context
 | 
					/// Saves the current CPU context
 | 
				
			||||||
@ -131,13 +131,13 @@ void ChangeReadyState(Thread* t, bool ready) {
 | 
				
			|||||||
    Handle handle = t->GetHandle();
 | 
					    Handle handle = t->GetHandle();
 | 
				
			||||||
    if (t->IsReady()) {
 | 
					    if (t->IsReady()) {
 | 
				
			||||||
        if (!ready) {
 | 
					        if (!ready) {
 | 
				
			||||||
            g_thread_ready_queue.remove(t->current_priority, handle);
 | 
					            thread_ready_queue.remove(t->current_priority, handle);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }  else if (ready) {
 | 
					    }  else if (ready) {
 | 
				
			||||||
        if (t->IsRunning()) {
 | 
					        if (t->IsRunning()) {
 | 
				
			||||||
            g_thread_ready_queue.push_front(t->current_priority, handle);
 | 
					            thread_ready_queue.push_front(t->current_priority, handle);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            g_thread_ready_queue.push_back(t->current_priority, handle);
 | 
					            thread_ready_queue.push_back(t->current_priority, handle);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        t->status = THREADSTATUS_READY;
 | 
					        t->status = THREADSTATUS_READY;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -195,7 +195,7 @@ Handle ArbitrateHighestPriorityThread(u32 arbiter, u32 address) {
 | 
				
			|||||||
    s32 priority = THREADPRIO_LOWEST;
 | 
					    s32 priority = THREADPRIO_LOWEST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Iterate through threads, find highest priority thread that is waiting to be arbitrated...
 | 
					    // Iterate through threads, find highest priority thread that is waiting to be arbitrated...
 | 
				
			||||||
    for (const auto& handle : g_thread_queue) {
 | 
					    for (const auto& handle : thread_queue) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // TODO(bunnei): Verify arbiter address...
 | 
					        // TODO(bunnei): Verify arbiter address...
 | 
				
			||||||
        if (!VerifyWait(handle, WAITTYPE_ARB, arbiter))
 | 
					        if (!VerifyWait(handle, WAITTYPE_ARB, arbiter))
 | 
				
			||||||
@ -218,7 +218,7 @@ Handle ArbitrateHighestPriorityThread(u32 arbiter, u32 address) {
 | 
				
			|||||||
void ArbitrateAllThreads(u32 arbiter, u32 address) {
 | 
					void ArbitrateAllThreads(u32 arbiter, u32 address) {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Iterate through threads, find highest priority thread that is waiting to be arbitrated...
 | 
					    // Iterate through threads, find highest priority thread that is waiting to be arbitrated...
 | 
				
			||||||
    for (const auto& handle : g_thread_queue) {
 | 
					    for (const auto& handle : thread_queue) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // TODO(bunnei): Verify arbiter address...
 | 
					        // TODO(bunnei): Verify arbiter address...
 | 
				
			||||||
        if (VerifyWait(handle, WAITTYPE_ARB, arbiter))
 | 
					        if (VerifyWait(handle, WAITTYPE_ARB, arbiter))
 | 
				
			||||||
@ -265,9 +265,9 @@ Thread* NextThread() {
 | 
				
			|||||||
    Thread* cur = GetCurrentThread();
 | 
					    Thread* cur = GetCurrentThread();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if (cur && cur->IsRunning()) {
 | 
					    if (cur && cur->IsRunning()) {
 | 
				
			||||||
        next = g_thread_ready_queue.pop_first_better(cur->current_priority);
 | 
					        next = thread_ready_queue.pop_first_better(cur->current_priority);
 | 
				
			||||||
    } else  {
 | 
					    } else  {
 | 
				
			||||||
        next = g_thread_ready_queue.pop_first();
 | 
					        next = thread_ready_queue.pop_first();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (next == 0) {
 | 
					    if (next == 0) {
 | 
				
			||||||
        return nullptr;
 | 
					        return nullptr;
 | 
				
			||||||
@ -306,9 +306,9 @@ void DebugThreadQueue() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    INFO_LOG(KERNEL, "0x%02X 0x%08X (current)", thread->current_priority, GetCurrentThreadHandle());
 | 
					    INFO_LOG(KERNEL, "0x%02X 0x%08X (current)", thread->current_priority, GetCurrentThreadHandle());
 | 
				
			||||||
    for (u32 i = 0; i < g_thread_queue.size(); i++) {
 | 
					    for (u32 i = 0; i < thread_queue.size(); i++) {
 | 
				
			||||||
        Handle handle = g_thread_queue[i];
 | 
					        Handle handle = thread_queue[i];
 | 
				
			||||||
        s32 priority = g_thread_ready_queue.contains(handle);
 | 
					        s32 priority = thread_ready_queue.contains(handle);
 | 
				
			||||||
        if (priority != -1) {
 | 
					        if (priority != -1) {
 | 
				
			||||||
            INFO_LOG(KERNEL, "0x%02X 0x%08X", priority, handle);
 | 
					            INFO_LOG(KERNEL, "0x%02X 0x%08X", priority, handle);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -326,8 +326,8 @@ Thread* CreateThread(Handle& handle, const char* name, u32 entry_point, s32 prio
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    handle = Kernel::g_object_pool.Create(thread);
 | 
					    handle = Kernel::g_object_pool.Create(thread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_thread_queue.push_back(handle);
 | 
					    thread_queue.push_back(handle);
 | 
				
			||||||
    g_thread_ready_queue.prepare(priority);
 | 
					    thread_ready_queue.prepare(priority);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    thread->status = THREADSTATUS_DORMANT;
 | 
					    thread->status = THREADSTATUS_DORMANT;
 | 
				
			||||||
    thread->entry_point = entry_point;
 | 
					    thread->entry_point = entry_point;
 | 
				
			||||||
@ -405,16 +405,16 @@ Result SetThreadPriority(Handle handle, s32 priority) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Change thread priority
 | 
					    // Change thread priority
 | 
				
			||||||
    s32 old = thread->current_priority;
 | 
					    s32 old = thread->current_priority;
 | 
				
			||||||
    g_thread_ready_queue.remove(old, handle);
 | 
					    thread_ready_queue.remove(old, handle);
 | 
				
			||||||
    thread->current_priority = priority;
 | 
					    thread->current_priority = priority;
 | 
				
			||||||
    g_thread_ready_queue.prepare(thread->current_priority);
 | 
					    thread_ready_queue.prepare(thread->current_priority);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Change thread status to "ready" and push to ready queue
 | 
					    // Change thread status to "ready" and push to ready queue
 | 
				
			||||||
    if (thread->IsRunning()) {
 | 
					    if (thread->IsRunning()) {
 | 
				
			||||||
        thread->status = (thread->status & ~THREADSTATUS_RUNNING) | THREADSTATUS_READY;
 | 
					        thread->status = (thread->status & ~THREADSTATUS_RUNNING) | THREADSTATUS_READY;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (thread->IsReady()) {
 | 
					    if (thread->IsReady()) {
 | 
				
			||||||
        g_thread_ready_queue.push_back(thread->current_priority, handle);
 | 
					        thread_ready_queue.push_back(thread->current_priority, handle);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace SRV {
 | 
					namespace SRV {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Handle g_event_handle = 0;
 | 
					static Handle g_event_handle = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void Initialize(Service::Interface* self) {
 | 
					static void Initialize(Service::Interface* self) {
 | 
				
			||||||
    DEBUG_LOG(OSHLE, "called");
 | 
					    DEBUG_LOG(OSHLE, "called");
 | 
				
			||||||
 | 
				
			|||||||
@ -11,38 +11,38 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Memory {
 | 
					namespace Memory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8*    g_base                   = NULL;         ///< The base pointer to the auto-mirrored arena.
 | 
					u8* g_base                      = nullptr;   ///< The base pointer to the auto-mirrored arena.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MemArena g_arena;                               ///< The MemArena class
 | 
					static MemArena arena;                       ///< The MemArena class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8* g_exefs_code                = NULL;         ///< ExeFS:/.code is loaded here
 | 
					u8* g_exefs_code                = nullptr;   ///< ExeFS:/.code is loaded here
 | 
				
			||||||
u8* g_system_mem                = NULL;         ///< System memory
 | 
					u8* g_system_mem                = nullptr;   ///< System memory
 | 
				
			||||||
u8* g_heap                      = NULL;         ///< Application heap (main memory)
 | 
					u8* g_heap                      = nullptr;   ///< Application heap (main memory)
 | 
				
			||||||
u8* g_heap_gsp                  = NULL;         ///< GSP heap (main memory)
 | 
					u8* g_heap_gsp                  = nullptr;   ///< GSP heap (main memory)
 | 
				
			||||||
u8* g_vram                      = NULL;         ///< Video memory (VRAM) pointer
 | 
					u8* g_vram                      = nullptr;   ///< Video memory (VRAM) pointer
 | 
				
			||||||
u8* g_shared_mem                = NULL;         ///< Shared memory
 | 
					u8* g_shared_mem                = nullptr;   ///< Shared memory
 | 
				
			||||||
u8* g_kernel_mem;                              ///< Kernel memory
 | 
					u8* g_kernel_mem;                              ///< Kernel memory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8* g_physical_bootrom          = NULL;         ///< Bootrom physical memory
 | 
					static u8* physical_bootrom     = nullptr;   ///< Bootrom physical memory
 | 
				
			||||||
u8* g_uncached_bootrom          = NULL;
 | 
					static u8* uncached_bootrom     = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8* g_physical_exefs_code       = NULL;         ///< Phsical ExeFS:/.code is loaded here
 | 
					static u8* physical_exefs_code  = nullptr;   ///< Phsical ExeFS:/.code is loaded here
 | 
				
			||||||
u8* g_physical_system_mem       = NULL;         ///< System physical memory
 | 
					static u8* physical_system_mem  = nullptr;   ///< System physical memory
 | 
				
			||||||
u8* g_physical_fcram            = NULL;         ///< Main physical memory (FCRAM)
 | 
					static u8* physical_fcram       = nullptr;   ///< Main physical memory (FCRAM)
 | 
				
			||||||
u8* g_physical_heap_gsp         = NULL;         ///< GSP heap physical memory
 | 
					static u8* physical_heap_gsp    = nullptr;   ///< GSP heap physical memory
 | 
				
			||||||
u8* g_physical_vram             = NULL;         ///< Video physical memory (VRAM)
 | 
					static u8* physical_vram        = nullptr;   ///< Video physical memory (VRAM)
 | 
				
			||||||
u8* g_physical_shared_mem       = NULL;         ///< Physical shared memory
 | 
					static u8* physical_shared_mem  = nullptr;   ///< Physical shared memory
 | 
				
			||||||
u8* g_physical_kernel_mem;                      ///< Kernel memory
 | 
					static u8* physical_kernel_mem;              ///< Kernel memory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// We don't declare the IO region in here since its handled by other means.
 | 
					// We don't declare the IO region in here since its handled by other means.
 | 
				
			||||||
static MemoryView g_views[] = {
 | 
					static MemoryView g_views[] = {
 | 
				
			||||||
    {&g_exefs_code, &g_physical_exefs_code, EXEFS_CODE_VADDR,       EXEFS_CODE_SIZE,    0},
 | 
					    {&g_exefs_code, &physical_exefs_code, EXEFS_CODE_VADDR,       EXEFS_CODE_SIZE,    0},
 | 
				
			||||||
    {&g_vram,       &g_physical_vram,       VRAM_VADDR,             VRAM_SIZE,          0},
 | 
					    {&g_vram,       &physical_vram,       VRAM_VADDR,             VRAM_SIZE,          0},
 | 
				
			||||||
    {&g_heap,       &g_physical_fcram,      HEAP_VADDR,             HEAP_SIZE,          MV_IS_PRIMARY_RAM},
 | 
					    {&g_heap,       &physical_fcram,      HEAP_VADDR,             HEAP_SIZE,          MV_IS_PRIMARY_RAM},
 | 
				
			||||||
    {&g_shared_mem, &g_physical_shared_mem, SHARED_MEMORY_VADDR,    SHARED_MEMORY_SIZE, 0},
 | 
					    {&g_shared_mem, &physical_shared_mem, SHARED_MEMORY_VADDR,    SHARED_MEMORY_SIZE, 0},
 | 
				
			||||||
    {&g_system_mem, &g_physical_system_mem, SYSTEM_MEMORY_VADDR,    SYSTEM_MEMORY_SIZE,    0},
 | 
					    {&g_system_mem, &physical_system_mem, SYSTEM_MEMORY_VADDR,    SYSTEM_MEMORY_SIZE,    0},
 | 
				
			||||||
    {&g_kernel_mem, &g_physical_kernel_mem, KERNEL_MEMORY_VADDR,    KERNEL_MEMORY_SIZE, 0},
 | 
					    {&g_kernel_mem, &physical_kernel_mem, KERNEL_MEMORY_VADDR,    KERNEL_MEMORY_SIZE, 0},
 | 
				
			||||||
    {&g_heap_gsp,   &g_physical_heap_gsp,   HEAP_GSP_VADDR,         HEAP_GSP_SIZE,      0},
 | 
					    {&g_heap_gsp,   &physical_heap_gsp,   HEAP_GSP_VADDR,         HEAP_GSP_SIZE,      0},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*static MemoryView views[] =
 | 
					/*static MemoryView views[] =
 | 
				
			||||||
@ -69,18 +69,18 @@ void Init() {
 | 
				
			|||||||
            g_views[i].size = FCRAM_SIZE;
 | 
					            g_views[i].size = FCRAM_SIZE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_base = MemoryMap_Setup(g_views, kNumMemViews, flags, &g_arena);
 | 
					    g_base = MemoryMap_Setup(g_views, kNumMemViews, flags, &arena);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOTICE_LOG(MEMMAP, "initialized OK, RAM at %p (mirror at 0 @ %p)", g_heap,
 | 
					    NOTICE_LOG(MEMMAP, "initialized OK, RAM at %p (mirror at 0 @ %p)", g_heap,
 | 
				
			||||||
        g_physical_fcram);
 | 
					        physical_fcram);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Shutdown() {
 | 
					void Shutdown() {
 | 
				
			||||||
    u32 flags = 0;
 | 
					    u32 flags = 0;
 | 
				
			||||||
    MemoryMap_Shutdown(g_views, kNumMemViews, flags, &g_arena);
 | 
					    MemoryMap_Shutdown(g_views, kNumMemViews, flags, &arena);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_arena.ReleaseSpace();
 | 
					    arena.ReleaseSpace();
 | 
				
			||||||
    g_base = NULL;
 | 
					    g_base = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOTICE_LOG(MEMMAP, "shutdown OK");
 | 
					    NOTICE_LOG(MEMMAP, "shutdown OK");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -12,9 +12,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Memory {
 | 
					namespace Memory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::map<u32, MemoryBlock> g_heap_map;
 | 
					static std::map<u32, MemoryBlock> heap_map;
 | 
				
			||||||
std::map<u32, MemoryBlock> g_heap_gsp_map;
 | 
					static std::map<u32, MemoryBlock> heap_gsp_map;
 | 
				
			||||||
std::map<u32, MemoryBlock> g_shared_map;
 | 
					static std::map<u32, MemoryBlock> shared_map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Convert a physical address to virtual address
 | 
					/// Convert a physical address to virtual address
 | 
				
			||||||
VAddr PhysicalToVirtualAddress(const PAddr addr) {
 | 
					VAddr PhysicalToVirtualAddress(const PAddr addr) {
 | 
				
			||||||
@ -194,11 +194,11 @@ u32 MapBlock_Heap(u32 size, u32 operation, u32 permissions) {
 | 
				
			|||||||
    block.operation     = operation;
 | 
					    block.operation     = operation;
 | 
				
			||||||
    block.permissions   = permissions;
 | 
					    block.permissions   = permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_heap_map.size() > 0) {
 | 
					    if (heap_map.size() > 0) {
 | 
				
			||||||
        const MemoryBlock last_block = g_heap_map.rbegin()->second;
 | 
					        const MemoryBlock last_block = heap_map.rbegin()->second;
 | 
				
			||||||
        block.address = last_block.address + last_block.size;
 | 
					        block.address = last_block.address + last_block.size;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    g_heap_map[block.GetVirtualAddress()] = block;
 | 
					    heap_map[block.GetVirtualAddress()] = block;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return block.GetVirtualAddress();
 | 
					    return block.GetVirtualAddress();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -217,11 +217,11 @@ u32 MapBlock_HeapGSP(u32 size, u32 operation, u32 permissions) {
 | 
				
			|||||||
    block.operation     = operation;
 | 
					    block.operation     = operation;
 | 
				
			||||||
    block.permissions   = permissions;
 | 
					    block.permissions   = permissions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_heap_gsp_map.size() > 0) {
 | 
					    if (heap_gsp_map.size() > 0) {
 | 
				
			||||||
        const MemoryBlock last_block = g_heap_gsp_map.rbegin()->second;
 | 
					        const MemoryBlock last_block = heap_gsp_map.rbegin()->second;
 | 
				
			||||||
        block.address = last_block.address + last_block.size;
 | 
					        block.address = last_block.address + last_block.size;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    g_heap_gsp_map[block.GetVirtualAddress()] = block;
 | 
					    heap_gsp_map[block.GetVirtualAddress()] = block;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return block.GetVirtualAddress();
 | 
					    return block.GetVirtualAddress();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user