mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-12-23 10:52:13 +00:00
kern: reuse data cache code during init
This commit is contained in:
parent
308ddecc9c
commit
866771fdae
1 changed files with 34 additions and 32 deletions
|
@ -107,20 +107,8 @@ _ZN3ams4kern4init16JumpFromEL2ToEL1Ev:
|
||||||
/* We're going to want to ERET to our caller. */
|
/* We're going to want to ERET to our caller. */
|
||||||
msr elr_el2, x30
|
msr elr_el2, x30
|
||||||
|
|
||||||
/* Ensure that the cache is coherent. */
|
/* Flush the entire data cache and invalidate the entire TLB. */
|
||||||
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
bl _ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv
|
||||||
dsb sy
|
|
||||||
|
|
||||||
bl _ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv
|
|
||||||
dsb sy
|
|
||||||
|
|
||||||
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
|
||||||
dsb sy
|
|
||||||
|
|
||||||
/* Invalidate the entire TLB, and ensure instruction consistency. */
|
|
||||||
tlbi vmalle1is
|
|
||||||
dsb sy
|
|
||||||
isb
|
|
||||||
|
|
||||||
/* Setup system registers for deprivileging. */
|
/* Setup system registers for deprivileging. */
|
||||||
/* ACTLR_EL2: */
|
/* ACTLR_EL2: */
|
||||||
|
@ -166,20 +154,8 @@ _ZN3ams4kern4init19DisableMmuAndCachesEv:
|
||||||
/* The stack isn't set up, so we'll need to trash a register. */
|
/* The stack isn't set up, so we'll need to trash a register. */
|
||||||
mov x22, x30
|
mov x22, x30
|
||||||
|
|
||||||
/* Ensure that the cache is coherent. */
|
/* Flush the entire data cache and invalidate the entire TLB. */
|
||||||
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
bl _ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv
|
||||||
dsb sy
|
|
||||||
|
|
||||||
bl _ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv
|
|
||||||
dsb sy
|
|
||||||
|
|
||||||
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
|
||||||
dsb sy
|
|
||||||
|
|
||||||
/* Invalidate the entire TLB, and ensure instruction consistency. */
|
|
||||||
tlbi vmalle1is
|
|
||||||
dsb sy
|
|
||||||
isb
|
|
||||||
|
|
||||||
/* Invalidate the instruction cache, and ensure instruction consistency. */
|
/* Invalidate the instruction cache, and ensure instruction consistency. */
|
||||||
ic ialluis
|
ic ialluis
|
||||||
|
@ -199,13 +175,39 @@ _ZN3ams4kern4init19DisableMmuAndCachesEv:
|
||||||
mov x30, x22
|
mov x30, x22
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
/* ams::kern::arm64::cpu::FlushEntireDataCacheWithoutStack() */
|
||||||
|
.section .crt0.text._ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv, "ax", %progbits
|
||||||
|
.global _ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv
|
||||||
|
.type _ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv, %function
|
||||||
|
_ZN3ams4kern5arm643cpu32FlushEntireDataCacheWithoutStackEv:
|
||||||
|
/* The stack isn't set up, so we'll need to trash a register. */
|
||||||
|
mov x23, x30
|
||||||
|
|
||||||
|
/* Ensure that the cache is coherent. */
|
||||||
|
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
||||||
|
dsb sy
|
||||||
|
|
||||||
|
bl _ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv
|
||||||
|
dsb sy
|
||||||
|
|
||||||
|
bl _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
||||||
|
dsb sy
|
||||||
|
|
||||||
|
/* Invalidate the entire TLB, and ensure instruction consistency. */
|
||||||
|
tlbi vmalle1is
|
||||||
|
dsb sy
|
||||||
|
isb
|
||||||
|
|
||||||
|
mov x30, x23
|
||||||
|
ret
|
||||||
|
|
||||||
/* ams::kern::arm64::cpu::FlushEntireDataCacheLocalWithoutStack() */
|
/* ams::kern::arm64::cpu::FlushEntireDataCacheLocalWithoutStack() */
|
||||||
.section .crt0.text._ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv, "ax", %progbits
|
.section .crt0.text._ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv, "ax", %progbits
|
||||||
.global _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
.global _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv
|
||||||
.type _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv, %function
|
.type _ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv, %function
|
||||||
_ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv:
|
_ZN3ams4kern5arm643cpu37FlushEntireDataCacheLocalWithoutStackEv:
|
||||||
/* The stack isn't set up, so we'll need to trash a register. */
|
/* The stack isn't set up, so we'll need to trash a register. */
|
||||||
mov x23, x30
|
mov x24, x30
|
||||||
|
|
||||||
/* CacheLineIdAccessor clidr_el1; */
|
/* CacheLineIdAccessor clidr_el1; */
|
||||||
mrs x10, clidr_el1
|
mrs x10, clidr_el1
|
||||||
|
@ -231,7 +233,7 @@ begin_flush_cache_local_loop:
|
||||||
b begin_flush_cache_local_loop
|
b begin_flush_cache_local_loop
|
||||||
|
|
||||||
done_flush_cache_local_loop:
|
done_flush_cache_local_loop:
|
||||||
mov x30, x23
|
mov x30, x24
|
||||||
ret
|
ret
|
||||||
|
|
||||||
/* ams::kern::arm64::cpu::FlushEntireDataCacheSharedWithoutStack() */
|
/* ams::kern::arm64::cpu::FlushEntireDataCacheSharedWithoutStack() */
|
||||||
|
@ -240,7 +242,7 @@ done_flush_cache_local_loop:
|
||||||
.type _ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv, %function
|
.type _ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv, %function
|
||||||
_ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv:
|
_ZN3ams4kern5arm643cpu38FlushEntireDataCacheSharedWithoutStackEv:
|
||||||
/* The stack isn't set up, so we'll need to trash a register. */
|
/* The stack isn't set up, so we'll need to trash a register. */
|
||||||
mov x23, x30
|
mov x24, x30
|
||||||
|
|
||||||
/* CacheLineIdAccessor clidr_el1; */
|
/* CacheLineIdAccessor clidr_el1; */
|
||||||
mrs x10, clidr_el1
|
mrs x10, clidr_el1
|
||||||
|
@ -267,7 +269,7 @@ begin_flush_cache_shared_loop:
|
||||||
b begin_flush_cache_shared_loop
|
b begin_flush_cache_shared_loop
|
||||||
|
|
||||||
done_flush_cache_shared_loop:
|
done_flush_cache_shared_loop:
|
||||||
mov x30, x23
|
mov x30, x24
|
||||||
ret
|
ret
|
||||||
|
|
||||||
/* ams::kern::arm64::cpu::FlushEntireDataCacheImplWithoutStack() */
|
/* ams::kern::arm64::cpu::FlushEntireDataCacheImplWithoutStack() */
|
||||||
|
|
Loading…
Reference in a new issue