mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 20:31:14 +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");
|
__asm__ __volatile__("dmb sy" ::: "memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE void DataMemoryBarrierInnerShareable() {
|
||||||
|
__asm__ __volatile__("dmb ish" ::: "memory");
|
||||||
|
}
|
||||||
|
|
||||||
ALWAYS_INLINE void InstructionMemoryBarrier() {
|
ALWAYS_INLINE void InstructionMemoryBarrier() {
|
||||||
__asm__ __volatile__("isb" ::: "memory");
|
__asm__ __volatile__("isb" ::: "memory");
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,9 @@ namespace ams::kern {
|
||||||
|
|
||||||
/* Release an instance of the lock. */
|
/* Release an instance of the lock. */
|
||||||
if ((--m_lock_count) == 0) {
|
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. */
|
/* We're no longer going to hold the lock. Take note of what cores need scheduling. */
|
||||||
const u64 cores_needing_scheduling = SchedulerType::UpdateHighestPriorityThreads();
|
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. */
|
/* 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. */
|
/* NOTE: Official kernel versions have SVC major = SDK major + 4, SVC minor = SDK minor. */
|
||||||
constexpr inline u32 SupportedKernelMajorVersion = ConvertToSvcMajorVersion(13);
|
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);
|
constexpr inline u32 SupportedKernelVersion = EncodeKernelVersion(SupportedKernelMajorVersion, SupportedKernelMinorVersion);
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,8 @@ _ZN3ams4kern10KScheduler12ScheduleImplEv:
|
||||||
cmp x7, x18
|
cmp x7, x18
|
||||||
b.ne 1f
|
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
|
ret
|
||||||
|
|
||||||
0: /* The interrupt task thread is runnable. */
|
0: /* The interrupt task thread is runnable. */
|
||||||
|
|
Loading…
Reference in a new issue