mirror of
https://github.com/Ishan09811/pine.git
synced 2025-04-24 08:55:10 +00:00
some fixes
This commit is contained in:
parent
1ced510b4d
commit
0dd6c15343
@ -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 {
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user