Browse Source

kernel: Various threading fixes to support 64-bit addressing.

pull/15/merge
bunnei 8 years ago
parent
commit
c5ce5c06e4
  1. 6
      src/core/hle/kernel/thread.cpp
  2. 10
      src/core/hle/kernel/thread.h

6
src/core/hle/kernel/thread.cpp

@ -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 entry_point Address of entry point for execution
* @param arg User argument for thread * @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)); memset(&context, 0, sizeof(ARM_Interface::ThreadContext));
context.cpu_registers[0] = arg; context.cpu_registers[0] = arg;
@ -477,7 +477,7 @@ void Thread::BoostPriority(s32 priority) {
current_priority = priority; current_priority = priority;
} }
SharedPtr<Thread> SetupMainThread(u32 entry_point, s32 priority) {
SharedPtr<Thread> SetupMainThread(VAddr entry_point, s32 priority) {
DEBUG_ASSERT(!GetCurrentThread()); DEBUG_ASSERT(!GetCurrentThread());
// Initialize new "main" thread // Initialize new "main" thread

10
src/core/hle/kernel/thread.h

@ -171,8 +171,8 @@ public:
u32 thread_id; u32 thread_id;
u32 status; 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 nominal_priority; ///< Nominal thread priority, as set by the emulated application
s32 current_priority; ///< Current thread priority, can be temporarily changed s32 current_priority; ///< Current thread priority, can be temporarily changed
@ -216,7 +216,7 @@ private:
* @param priority The priority to give the main thread * @param priority The priority to give the main thread
* @return A shared pointer to 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. * 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 * Arbitrate the highest priority thread that is waiting
* @param address The address for which waiting threads should be arbitrated * @param address The address for which waiting threads should be arbitrated
*/ */
Thread* ArbitrateHighestPriorityThread(u32 address);
Thread* ArbitrateHighestPriorityThread(VAddr address);
/** /**
* Arbitrate all threads currently waiting. * Arbitrate all threads currently waiting.
* @param address The address for which waiting threads should be arbitrated * @param address The address for which waiting threads should be arbitrated
*/ */
void ArbitrateAllThreads(u32 address);
void ArbitrateAllThreads(VAddr address);
/** /**
* Gets the current thread * Gets the current thread

Loading…
Cancel
Save