mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 12:21:18 +00:00
kern: implement 13.1.0 kernel changes
This commit is contained in:
parent
ebca23305e
commit
1d5f66be56
4 changed files with 10 additions and 2 deletions
|
@ -52,6 +52,10 @@ namespace ams::kern::arch::arm64::cpu {
|
|||
__asm__ __volatile__("dmb sy" ::: "memory");
|
||||
}
|
||||
|
||||
ALWAYS_INLINE void DataMemoryBarrierInnerShareable() {
|
||||
__asm__ __volatile__("dmb ish" ::: "memory");
|
||||
}
|
||||
|
||||
ALWAYS_INLINE void InstructionMemoryBarrier() {
|
||||
__asm__ __volatile__("isb" ::: "memory");
|
||||
}
|
||||
|
|
|
@ -74,6 +74,9 @@ namespace ams::kern {
|
|||
|
||||
/* Release an instance of the lock. */
|
||||
if ((--m_lock_count) == 0) {
|
||||
/* Perform a memory barrier here. */
|
||||
cpu::DataMemoryBarrierInnerShareable();
|
||||
|
||||
/* We're no longer going to hold the lock. Take note of what cores need scheduling. */
|
||||
const u64 cores_needing_scheduling = SchedulerType::UpdateHighestPriorityThreads();
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ namespace ams::svc {
|
|||
/* This is the highest SVC version supported by Atmosphere, to be updated on new kernel releases. */
|
||||
/* NOTE: Official kernel versions have SVC major = SDK major + 4, SVC minor = SDK minor. */
|
||||
constexpr inline u32 SupportedKernelMajorVersion = ConvertToSvcMajorVersion(13);
|
||||
constexpr inline u32 SupportedKernelMinorVersion = ConvertToSvcMinorVersion( 3);
|
||||
constexpr inline u32 SupportedKernelMinorVersion = ConvertToSvcMinorVersion( 4);
|
||||
|
||||
constexpr inline u32 SupportedKernelVersion = EncodeKernelVersion(SupportedKernelMajorVersion, SupportedKernelMinorVersion);
|
||||
|
||||
|
|
|
@ -126,7 +126,8 @@ _ZN3ams4kern10KScheduler12ScheduleImplEv:
|
|||
cmp x7, x18
|
||||
b.ne 1f
|
||||
|
||||
/* If they're the same, then we can just return as there's nothing to do. */
|
||||
/* If they're the same, then we can just issue a memory barrier and return. */
|
||||
dmb ish
|
||||
ret
|
||||
|
||||
0: /* The interrupt task thread is runnable. */
|
||||
|
|
Loading…
Reference in a new issue