mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-06-05 09:13:43 -04:00
kern: kern::arm64 -> kern::arch::arm64
This commit is contained in:
parent
11f70759ce
commit
20b5268e90
47 changed files with 192 additions and 192 deletions
|
@ -20,7 +20,7 @@
|
|||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_k_page_table_entry.hpp>
|
||||
|
||||
namespace ams::kern::arm64::init {
|
||||
namespace ams::kern::arch::arm64::init {
|
||||
|
||||
class KInitialPageTable {
|
||||
public:
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <vapours.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_cpu_system_registers.hpp>
|
||||
|
||||
namespace ams::kern::arm64::cpu {
|
||||
namespace ams::kern::arch::arm64::cpu {
|
||||
|
||||
#if defined(ATMOSPHERE_CPU_ARM_CORTEX_A57) || defined(ATMOSPHERE_CPU_ARM_CORTEX_A53)
|
||||
constexpr inline size_t InstructionCacheLineSize = 0x40;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#pragma once
|
||||
#include <vapours.hpp>
|
||||
|
||||
namespace ams::kern::arm64::cpu {
|
||||
namespace ams::kern::arch::arm64::cpu {
|
||||
|
||||
#define MESOSPHERE_CPU_GET_SYSREG(name) \
|
||||
({ \
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace ams::kern {
|
|||
|
||||
}
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KDebug final : public KAutoObjectWithSlabHeapAndContainer<KDebug, KDebugBase> {
|
||||
MESOSPHERE_AUTOOBJECT_TRAITS(KDebug, KSynchronizationObject);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#pragma once
|
||||
#include <mesosphere/kern_common.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
struct KExceptionContext {
|
||||
u64 x[(30 - 0) + 1];
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
#include <mesosphere/kern_k_hardware_timer_base.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
namespace impl {
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
#include <mesosphere/kern_k_typed_address.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
struct GicDistributor {
|
||||
u32 ctlr;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <mesosphere/kern_k_interrupt_task.hpp>
|
||||
#include <mesosphere/kern_select_interrupt_controller.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KInterruptManager {
|
||||
NON_COPYABLE(KInterruptManager);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
namespace interrupt_name {
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <mesosphere/kern_k_page_group.hpp>
|
||||
#include <mesosphere/kern_k_page_table_manager.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KPageTable : public KPageTableBase {
|
||||
NON_COPYABLE(KPageTable);
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
#include <mesosphere/kern_k_typed_address.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
constexpr size_t L1BlockSize = 1_GB;
|
||||
constexpr size_t L2BlockSize = 2_MB;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <mesosphere/kern_k_memory_layout.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_k_page_table_entry.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
/* TODO: This seems worse than KInitialPageTable. Can we fulfill Nintendo's API using KInitialPageTable? */
|
||||
/* KInitialPageTable is significantly nicer, but doesn't have KPageTableImpl's traversal semantics. */
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <mesosphere/kern_common.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_k_page_table.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KProcessPageTable {
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <vapours.hpp>
|
||||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KNotAlignedSpinLock {
|
||||
private:
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <mesosphere/kern_select_cpu.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_k_page_table.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KSupervisorPageTable {
|
||||
private:
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace ams::kern {
|
|||
|
||||
}
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
class KThreadContext {
|
||||
public:
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#pragma once
|
||||
#include <mesosphere/kern_common.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
void UserspaceMemoryAccessFunctionAreaBegin();
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
#include <mesosphere/arch/arm64/init/kern_k_init_page_table.hpp>
|
||||
|
||||
namespace ams::kern::init {
|
||||
using ams::kern::arm64::PageTableEntry;
|
||||
using ams::kern::arm64::init::KInitialPageTable;
|
||||
using ams::kern::arm64::init::KInitialPageAllocator;
|
||||
using ams::kern::arch::arm64::PageTableEntry;
|
||||
using ams::kern::arch::arm64::init::KInitialPageTable;
|
||||
using ams::kern::arch::arm64::init::KInitialPageAllocator;
|
||||
}
|
||||
#else
|
||||
#error "Unknown architecture for KInitialPageTable"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include <mesosphere/arch/arm64/kern_k_exception_context.hpp>
|
||||
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KExceptionContext;
|
||||
using ams::kern::arch::arm64::KExceptionContext;
|
||||
}
|
||||
#else
|
||||
#error "Unknown board for KExceptionContext"
|
||||
|
|
|
@ -21,9 +21,9 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_spin_lock.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KAlignedSpinLock;
|
||||
using ams::kern::arm64::KNotAlignedSpinLock;
|
||||
using ams::kern::arm64::KSpinLock;
|
||||
using ams::kern::arch::arm64::KAlignedSpinLock;
|
||||
using ams::kern::arch::arm64::KNotAlignedSpinLock;
|
||||
using ams::kern::arch::arm64::KSpinLock;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include <mesosphere/arch/arm64/kern_k_thread_context.hpp>
|
||||
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KThreadContext;
|
||||
using ams::kern::arch::arm64::KThreadContext;
|
||||
}
|
||||
#else
|
||||
#error "Unknown board for KThreadContext"
|
||||
|
|
|
@ -39,10 +39,10 @@ namespace ams::kern {
|
|||
|
||||
#if defined(ATMOSPHERE_ARCH_ARM64)
|
||||
|
||||
namespace arm64 {
|
||||
namespace arch::arm64 {
|
||||
class KSupervisorPageTable;
|
||||
}
|
||||
using ams::kern::arm64::KSupervisorPageTable;
|
||||
using ams::kern::arch::arm64::KSupervisorPageTable;
|
||||
|
||||
#else
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
namespace ams::kern::cpu {
|
||||
|
||||
using namespace ams::kern::arm64::cpu;
|
||||
using namespace ams::kern::arch::arm64::cpu;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_debug.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KDebug;
|
||||
using ams::kern::arch::arm64::KDebug;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_hardware_timer.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KHardwareTimer;
|
||||
using ams::kern::arch::arm64::KHardwareTimer;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_interrupt_controller.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KInterruptController;
|
||||
using ams::kern::arch::arm64::KInterruptController;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_interrupt_manager.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KInterruptManager;
|
||||
using ams::kern::arch::arm64::KInterruptManager;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_interrupt_name.hpp>
|
||||
namespace ams::kern {
|
||||
using namespace ams::kern::arm64::interrupt_name;
|
||||
using namespace ams::kern::arch::arm64::interrupt_name;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
#include <mesosphere/arch/arm64/kern_k_supervisor_page_table.hpp>
|
||||
#include <mesosphere/arch/arm64/kern_k_process_page_table.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KPageTable;
|
||||
using ams::kern::arm64::KSupervisorPageTable;
|
||||
using ams::kern::arm64::KProcessPageTable;
|
||||
using ams::kern::arch::arm64::KPageTable;
|
||||
using ams::kern::arch::arm64::KSupervisorPageTable;
|
||||
using ams::kern::arch::arm64::KProcessPageTable;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <mesosphere/arch/arm64/kern_k_page_table_impl.hpp>
|
||||
namespace ams::kern {
|
||||
using ams::kern::arm64::KPageTableImpl;
|
||||
using ams::kern::arch::arm64::KPageTableImpl;
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64::cpu {
|
||||
namespace ams::kern::arch::arm64::cpu {
|
||||
|
||||
/* Declare prototype to be implemented in asm. */
|
||||
void SynchronizeAllCoresImpl(s32 *sync_var, s32 num_cores);
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ams::kern::arm64::cpu::SynchronizeAllCoresImpl(int *sync_var, int num_cores) */
|
||||
.section .text._ZN3ams4kern5arm643cpu23SynchronizeAllCoresImplEPii, "ax", %progbits
|
||||
.global _ZN3ams4kern5arm643cpu23SynchronizeAllCoresImplEPii
|
||||
.type _ZN3ams4kern5arm643cpu23SynchronizeAllCoresImplEPii, %function
|
||||
_ZN3ams4kern5arm643cpu23SynchronizeAllCoresImplEPii:
|
||||
/* ams::kern::arch::arm64::cpu::SynchronizeAllCoresImpl(int *sync_var, int num_cores) */
|
||||
.section .text._ZN3ams4kern4arch5arm643cpu23SynchronizeAllCoresImplEPii, "ax", %progbits
|
||||
.global _ZN3ams4kern4arch5arm643cpu23SynchronizeAllCoresImplEPii
|
||||
.type _ZN3ams4kern4arch5arm643cpu23SynchronizeAllCoresImplEPii, %function
|
||||
_ZN3ams4kern4arch5arm643cpu23SynchronizeAllCoresImplEPii:
|
||||
/* Loop until the sync var is less than num cores. */
|
||||
sevl
|
||||
1:
|
||||
|
@ -63,11 +63,11 @@ _ZN3ams4kern5arm643cpu23SynchronizeAllCoresImplEPii:
|
|||
ret
|
||||
|
||||
|
||||
/* ams::kern::arm64::cpu::ClearPageToZero(void *) */
|
||||
.section .text._ZN3ams4kern5arm643cpu19ClearPageToZeroImplEPv, "ax", %progbits
|
||||
.global _ZN3ams4kern5arm643cpu19ClearPageToZeroImplEPv
|
||||
.type _ZN3ams4kern5arm643cpu19ClearPageToZeroImplEPv, %function
|
||||
_ZN3ams4kern5arm643cpu19ClearPageToZeroImplEPv:
|
||||
/* ams::kern::arch::arm64::cpu::ClearPageToZero(void *) */
|
||||
.section .text._ZN3ams4kern4arch5arm643cpu19ClearPageToZeroImplEPv, "ax", %progbits
|
||||
.global _ZN3ams4kern4arch5arm643cpu19ClearPageToZeroImplEPv
|
||||
.type _ZN3ams4kern4arch5arm643cpu19ClearPageToZeroImplEPv, %function
|
||||
_ZN3ams4kern4arch5arm643cpu19ClearPageToZeroImplEPv:
|
||||
/* Efficiently clear the page using dc zva. */
|
||||
dc zva, x0
|
||||
add x8, x0, #0x040
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
namespace impl {
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
void KInterruptController::SetupInterruptLines(s32 core_id) const {
|
||||
const size_t ITLines = (core_id == 0) ? 32 * ((this->gicd->typer & 0x1F) + 1) : NumLocalInterrupts;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
/* Instantiate static members in specific translation unit. */
|
||||
KSpinLock KInterruptManager::s_lock;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
void KPageTable::Initialize(s32 core_id) {
|
||||
/* Nothing actually needed here. */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
void KPageTableImpl::InitializeForKernel(void *tb, KVirtualAddress start, KVirtualAddress end) {
|
||||
this->table = static_cast<L1PageTableEntry *>(tb);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
void KSupervisorPageTable::Initialize(s32 core_id) {
|
||||
/* Get the identity mapping ttbr0. */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
#include <mesosphere.hpp>
|
||||
|
||||
namespace ams::kern::arm64 {
|
||||
namespace ams::kern::arch::arm64 {
|
||||
|
||||
/* These are implemented elsewhere (asm). */
|
||||
void UserModeThreadStarter();
|
||||
|
@ -96,7 +96,7 @@ namespace ams::kern::arm64 {
|
|||
/* Determine LR and SP. */
|
||||
if (is_user) {
|
||||
/* Usermode thread. */
|
||||
this->lr = reinterpret_cast<uintptr_t>(::ams::kern::arm64::UserModeThreadStarter);
|
||||
this->lr = reinterpret_cast<uintptr_t>(::ams::kern::arch::arm64::UserModeThreadStarter);
|
||||
this->sp = SetupStackForUserModeThreadStarter(u_pc, k_sp, u_sp, arg, is_64_bit);
|
||||
} else {
|
||||
/* Kernel thread. */
|
||||
|
@ -108,7 +108,7 @@ namespace ams::kern::arm64 {
|
|||
this->sp = GetInteger(k_sp);
|
||||
} else {
|
||||
/* Generic Kernel thread. */
|
||||
this->lr = reinterpret_cast<uintptr_t>(::ams::kern::arm64::SupervisorModeThreadStarter);
|
||||
this->lr = reinterpret_cast<uintptr_t>(::ams::kern::arch::arm64::SupervisorModeThreadStarter);
|
||||
this->sp = SetupStackForSupervisorModeThreadStarter(u_pc, k_sp, arg);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ams::kern::arm64::SvcHandler64() */
|
||||
.section .text._ZN3ams4kern5arm6412SvcHandler64Ev, "ax", %progbits
|
||||
.global _ZN3ams4kern5arm6412SvcHandler64Ev
|
||||
.type _ZN3ams4kern5arm6412SvcHandler64Ev, %function
|
||||
_ZN3ams4kern5arm6412SvcHandler64Ev:
|
||||
/* ams::kern::arch::arm64::SvcHandler64() */
|
||||
.section .text._ZN3ams4kern4arch5arm6412SvcHandler64Ev, "ax", %progbits
|
||||
.global _ZN3ams4kern4arch5arm6412SvcHandler64Ev
|
||||
.type _ZN3ams4kern4arch5arm6412SvcHandler64Ev, %function
|
||||
_ZN3ams4kern4arch5arm6412SvcHandler64Ev:
|
||||
/* Create a KExceptionContext for the exception. */
|
||||
sub sp, sp, #0x120
|
||||
|
||||
|
@ -126,10 +126,10 @@ _ZN3ams4kern5arm6412SvcHandler64Ev:
|
|||
stp x26, x27, [sp, #(8 * 26)]
|
||||
stp x28, x29, [sp, #(8 * 28)]
|
||||
|
||||
/* Call ams::kern::arm64::HandleException(ams::kern::arm64::KExceptionContext *) */
|
||||
/* Call ams::kern::arch::arm64::HandleException(ams::kern::arch::arm64::KExceptionContext *) */
|
||||
mrs x18, tpidr_el1
|
||||
mov x0, sp
|
||||
bl _ZN3ams4kern5arm6415HandleExceptionEPNS1_17KExceptionContextE
|
||||
bl _ZN3ams4kern4arch5arm6415HandleExceptionEPNS2_17KExceptionContextE
|
||||
|
||||
/* Restore registers. */
|
||||
ldp x30, x8, [sp, #(8 * 30)]
|
||||
|
@ -189,11 +189,11 @@ _ZN3ams4kern5arm6412SvcHandler64Ev:
|
|||
add sp, sp, #0x120
|
||||
eret
|
||||
|
||||
/* ams::kern::arm64::SvcHandler32() */
|
||||
.section .text._ZN3ams4kern5arm6412SvcHandler32Ev, "ax", %progbits
|
||||
.global _ZN3ams4kern5arm6412SvcHandler32Ev
|
||||
.type _ZN3ams4kern5arm6412SvcHandler32Ev, %function
|
||||
_ZN3ams4kern5arm6412SvcHandler32Ev:
|
||||
/* ams::kern::arch::arm64::SvcHandler32() */
|
||||
.section .text._ZN3ams4kern4arch5arm6412SvcHandler32Ev, "ax", %progbits
|
||||
.global _ZN3ams4kern4arch5arm6412SvcHandler32Ev
|
||||
.type _ZN3ams4kern4arch5arm6412SvcHandler32Ev, %function
|
||||
_ZN3ams4kern4arch5arm6412SvcHandler32Ev:
|
||||
/* Ensure that our registers are 32-bit. */
|
||||
mov w0, w0
|
||||
mov w1, w1
|
||||
|
@ -299,10 +299,10 @@ _ZN3ams4kern5arm6412SvcHandler32Ev:
|
|||
stp xzr, xzr, [sp, #(8 * 28)]
|
||||
stp xzr, xzr, [sp, #(8 * 30)]
|
||||
|
||||
/* Call ams::kern::arm64::HandleException(ams::kern::arm64::KExceptionContext *) */
|
||||
/* Call ams::kern::arch::arm64::HandleException(ams::kern::arch::arm64::KExceptionContext *) */
|
||||
mrs x18, tpidr_el1
|
||||
mov x0, sp
|
||||
bl _ZN3ams4kern5arm6415HandleExceptionEPNS1_17KExceptionContextE
|
||||
bl _ZN3ams4kern4arch5arm6415HandleExceptionEPNS2_17KExceptionContextE
|
||||
|
||||
/* Restore registers. */
|
||||
ldp x17, x20, [sp, #(8 * 32)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue