mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	kernel: Various threading fixes to support 64-bit addressing.
This commit is contained in:
		@@ -341,8 +341,8 @@ std::tuple<u32, u32, bool> GetFreeThreadLocalSlot(std::vector<std::bitset<8>>& t
 | 
			
		||||
 * @param entry_point Address of entry point for execution
 | 
			
		||||
 * @param arg User argument for thread
 | 
			
		||||
 */
 | 
			
		||||
static void ResetThreadContext(ARM_Interface::ThreadContext& context, u32 stack_top,
 | 
			
		||||
                               u32 entry_point, u32 arg) {
 | 
			
		||||
static void ResetThreadContext(ARM_Interface::ThreadContext& context, VAddr stack_top,
 | 
			
		||||
                               VAddr entry_point, u64 arg) {
 | 
			
		||||
    memset(&context, 0, sizeof(ARM_Interface::ThreadContext));
 | 
			
		||||
 | 
			
		||||
    context.cpu_registers[0] = arg;
 | 
			
		||||
@@ -477,7 +477,7 @@ void Thread::BoostPriority(s32 priority) {
 | 
			
		||||
    current_priority = priority;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SharedPtr<Thread> SetupMainThread(u32 entry_point, s32 priority) {
 | 
			
		||||
SharedPtr<Thread> SetupMainThread(VAddr entry_point, s32 priority) {
 | 
			
		||||
    DEBUG_ASSERT(!GetCurrentThread());
 | 
			
		||||
 | 
			
		||||
    // Initialize new "main" thread
 | 
			
		||||
 
 | 
			
		||||
@@ -171,8 +171,8 @@ public:
 | 
			
		||||
    u32 thread_id;
 | 
			
		||||
 | 
			
		||||
    u32 status;
 | 
			
		||||
    u32 entry_point;
 | 
			
		||||
    u32 stack_top;
 | 
			
		||||
    VAddr entry_point;
 | 
			
		||||
    VAddr stack_top;
 | 
			
		||||
 | 
			
		||||
    s32 nominal_priority; ///< Nominal thread priority, as set by the emulated application
 | 
			
		||||
    s32 current_priority; ///< Current thread priority, can be temporarily changed
 | 
			
		||||
@@ -216,7 +216,7 @@ private:
 | 
			
		||||
 * @param priority The priority to give the main thread
 | 
			
		||||
 * @return A shared pointer to the main thread
 | 
			
		||||
 */
 | 
			
		||||
SharedPtr<Thread> SetupMainThread(u32 entry_point, s32 priority);
 | 
			
		||||
SharedPtr<Thread> SetupMainThread(VAddr entry_point, s32 priority);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns whether there are any threads that are ready to run.
 | 
			
		||||
@@ -232,13 +232,13 @@ void Reschedule();
 | 
			
		||||
 * Arbitrate the highest priority thread that is waiting
 | 
			
		||||
 * @param address The address for which waiting threads should be arbitrated
 | 
			
		||||
 */
 | 
			
		||||
Thread* ArbitrateHighestPriorityThread(u32 address);
 | 
			
		||||
Thread* ArbitrateHighestPriorityThread(VAddr address);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Arbitrate all threads currently waiting.
 | 
			
		||||
 * @param address The address for which waiting threads should be arbitrated
 | 
			
		||||
 */
 | 
			
		||||
void ArbitrateAllThreads(u32 address);
 | 
			
		||||
void ArbitrateAllThreads(VAddr address);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Gets the current thread
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user