0
0
mirror of https://github.com/Ishan09811/pine.git synced 2025-04-24 08:55:10 +00:00

some fixes

This commit is contained in:
Ishan09811 2024-07-25 21:52:36 +05:30 committed by GitHub
parent 1ced510b4d
commit 0dd6c15343
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 4 additions and 3 deletions

View File

@ -9,13 +9,14 @@
#include "types/KThread.h"
#include "types/KProcess.h"
#include "scheduler.h"
#include "os.h"
namespace skyline::kernel {
Scheduler::CoreContext::CoreContext(u8 id, i8 preemptionPriority) : id(id), preemptionPriority(preemptionPriority) {}
Scheduler::Scheduler(const DeviceState &state) : state(state) {
// Don't restart syscalls: we want futexes to fail and their predicates rechecked
if (state.process->is64bit()) {
if (!skyline::kernel::isJitEnabled) {
signal::SetGuestSignalHandler({Scheduler::YieldSignal, Scheduler::PreemptionSignal}, Scheduler::GuestSignalHandler, false);
signal::SetHostSignalHandler({Scheduler::YieldSignal, Scheduler::PreemptionSignal}, Scheduler::HostSignalHandler, false);
} else {

View File

@ -1218,7 +1218,7 @@ namespace skyline::kernel::svc {
auto &context{*reinterpret_cast<ThreadContext *>(ctx.x0)};
context = {}; // Zero-initialize the contents of the context as not all fields are set
if (state.process->is64bit()) {
if (!skyline::kernel::isJitEnabled) {
auto &targetContext{dynamic_cast<type::KNceThread *>(thread.get())->ctx};
for (size_t i{}; i < targetContext.gpr.regs.size(); i++)
context.gpr[i] = targetContext.gpr.regs[i];

View File

@ -122,7 +122,7 @@ namespace skyline::kernel::type {
size_t tid{threads.size() + 1}; //!< The first thread is HOS-1 rather than HOS-0, this is to match the HOS kernel's behaviour
auto thread{[&]() -> std::shared_ptr<KThread> {
if (is64bit())
if (!skyline::kernel::isJitEnabled)
return NewHandle<KNceThread>(std::ref(*this), tid, entry, argument, stackTop, priority ? *priority : state.process->npdm.meta.mainThreadPriority, idealCore ? *idealCore : state.process->npdm.meta.idealCore).item;
else
return NewHandle<KJit32Thread>(std::ref(*this), tid, entry, argument, stackTop, priority ? *priority : state.process->npdm.meta.mainThreadPriority, idealCore ? *idealCore : state.process->npdm.meta.idealCore).item;