diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 30 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 6 |
2 files changed, 30 insertions, 6 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index a1e4be070..68406eb63 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -275,6 +275,20 @@ inline void ResponseBuilder::Push(u64 value) { | |||
| 275 | } | 275 | } |
| 276 | 276 | ||
| 277 | template <> | 277 | template <> |
| 278 | inline void ResponseBuilder::Push(float value) { | ||
| 279 | u32 integral; | ||
| 280 | std::memcpy(&integral, &value, sizeof(u32)); | ||
| 281 | Push(integral); | ||
| 282 | } | ||
| 283 | |||
| 284 | template <> | ||
| 285 | inline void ResponseBuilder::Push(double value) { | ||
| 286 | u64 integral; | ||
| 287 | std::memcpy(&integral, &value, sizeof(u64)); | ||
| 288 | Push(integral); | ||
| 289 | } | ||
| 290 | |||
| 291 | template <> | ||
| 278 | inline void ResponseBuilder::Push(bool value) { | 292 | inline void ResponseBuilder::Push(bool value) { |
| 279 | Push(static_cast<u8>(value)); | 293 | Push(static_cast<u8>(value)); |
| 280 | } | 294 | } |
| @@ -416,6 +430,22 @@ inline s64 RequestParser::Pop() { | |||
| 416 | } | 430 | } |
| 417 | 431 | ||
| 418 | template <> | 432 | template <> |
| 433 | inline float RequestParser::Pop() { | ||
| 434 | const u32 value = Pop<u32>(); | ||
| 435 | float real; | ||
| 436 | std::memcpy(&real, &value, sizeof(real)); | ||
| 437 | return real; | ||
| 438 | } | ||
| 439 | |||
| 440 | template <> | ||
| 441 | inline double RequestParser::Pop() { | ||
| 442 | const u64 value = Pop<u64>(); | ||
| 443 | float real; | ||
| 444 | std::memcpy(&real, &value, sizeof(real)); | ||
| 445 | return real; | ||
| 446 | } | ||
| 447 | |||
| 448 | template <> | ||
| 419 | inline bool RequestParser::Pop() { | 449 | inline bool RequestParser::Pop() { |
| 420 | return Pop<u8>() != 0; | 450 | return Pop<u8>() != 0; |
| 421 | } | 451 | } |
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 2e712c9cb..89f180bd9 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -68,12 +68,6 @@ void Thread::Stop() { | |||
| 68 | owner_process->FreeTLSSlot(tls_address); | 68 | owner_process->FreeTLSSlot(tls_address); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | void ExitCurrentThread() { | ||
| 72 | Thread* thread = GetCurrentThread(); | ||
| 73 | thread->Stop(); | ||
| 74 | Core::System::GetInstance().CurrentScheduler().RemoveThread(thread); | ||
| 75 | } | ||
| 76 | |||
| 77 | void Thread::WakeAfterDelay(s64 nanoseconds) { | 71 | void Thread::WakeAfterDelay(s64 nanoseconds) { |
| 78 | // Don't schedule a wakeup if the thread wants to wait forever | 72 | // Don't schedule a wakeup if the thread wants to wait forever |
| 79 | if (nanoseconds == -1) | 73 | if (nanoseconds == -1) |