mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 12:21:18 +00:00
Mention that Nintendo copy-pasted some startup code from arm-trusted-firmware
This commit is contained in:
parent
5681622f65
commit
663c446439
3 changed files with 40 additions and 6 deletions
|
@ -417,7 +417,7 @@ uint32_t user_decrypt_rsa_private_key(smc_args_t *args) {
|
||||||
}
|
}
|
||||||
is_personalized = (int)args->X[3];
|
is_personalized = (int)args->X[3];
|
||||||
user_address = (void *)args->X[4];
|
user_address = (void *)args->X[4];
|
||||||
size = = (size_t)args->X[5];
|
size = (size_t)args->X[5];
|
||||||
wrapped_key[0] = args->X[6];
|
wrapped_key[0] = args->X[6];
|
||||||
wrapped_key[1] = args->X[7];
|
wrapped_key[1] = args->X[7];
|
||||||
|
|
||||||
|
@ -609,4 +609,4 @@ uint32_t user_unwrap_aes_wrapped_titlekey(smc_args_t *args) {
|
||||||
|
|
||||||
args->X[1] = sealed_titlekey[0];
|
args->X[1] = sealed_titlekey[0];
|
||||||
args->X[2] = sealed_titlekey[1];
|
args->X[2] = sealed_titlekey[1];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
.align 4
|
.align 6
|
||||||
.section .text.cold.start, "ax", %progbits
|
.section .text.cold.start, "ax", %progbits
|
||||||
.global __start_cold
|
.global __start_cold
|
||||||
__start_cold:
|
__start_cold:
|
||||||
|
/* Nintendo copy-pasted https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/nvidia/tegra/common/aarch64/tegra_helpers.S#L312 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
/* The following comments are mine. */
|
||||||
/* mask all interrupts */
|
/* mask all interrupts */
|
||||||
msr daifset, daif
|
msr daifset, daif
|
||||||
|
|
||||||
|
@ -25,6 +32,10 @@ __start_cold:
|
||||||
bic x0, x0, #1
|
bic x0, x0, #1
|
||||||
msr cpuactlr_el1, x0
|
msr cpuactlr_el1, x0
|
||||||
|
|
||||||
|
.rept 7
|
||||||
|
nop /* wait long enough for the write to cpuactlr_el1 to have completed */
|
||||||
|
.endr
|
||||||
|
|
||||||
/* if the OS lock is set, disable it and request a warm reset */
|
/* if the OS lock is set, disable it and request a warm reset */
|
||||||
mrs x0, oslsr_el1
|
mrs x0, oslsr_el1
|
||||||
ands x0, x0, #2
|
ands x0, x0, #2
|
||||||
|
@ -39,7 +50,13 @@ __start_cold:
|
||||||
msr rmr_el3, x0
|
msr rmr_el3, x0
|
||||||
isb
|
isb
|
||||||
dsb
|
dsb
|
||||||
wfi
|
/* Nintendo forgot to copy-paste the branch instruction below. */
|
||||||
|
_reset_wfi:
|
||||||
|
wfi
|
||||||
|
b _reset_wfi
|
||||||
|
.rept 65
|
||||||
|
nop /* guard against speculative excecution */
|
||||||
|
.endr
|
||||||
|
|
||||||
_set_lock_and_sp:
|
_set_lock_and_sp:
|
||||||
/* set the OS lock */
|
/* set the OS lock */
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
.align 4
|
.align 6
|
||||||
.section .text.warm.start, "ax", %progbits
|
.section .text.warm.start, "ax", %progbits
|
||||||
.global __start_warm
|
.global __start_warm
|
||||||
__start_warm:
|
__start_warm:
|
||||||
|
/* Nintendo copy-pasted https://github.com/ARM-software/arm-trusted-firmware/blob/master/plat/nvidia/tegra/common/aarch64/tegra_helpers.S#L312 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
/* The following comments are mine. */
|
||||||
/* mask all interrupts */
|
/* mask all interrupts */
|
||||||
msr daifset, daif
|
msr daifset, daif
|
||||||
|
|
||||||
|
@ -25,6 +32,10 @@ __start_warm:
|
||||||
bic x0, x0, #1
|
bic x0, x0, #1
|
||||||
msr cpuactlr_el1, x0
|
msr cpuactlr_el1, x0
|
||||||
|
|
||||||
|
.rept 7
|
||||||
|
nop /* wait long enough for the write to cpuactlr_el1 to have completed */
|
||||||
|
.endr
|
||||||
|
|
||||||
/* if the OS lock is set, disable it and request a warm reset */
|
/* if the OS lock is set, disable it and request a warm reset */
|
||||||
mrs x0, oslsr_el1
|
mrs x0, oslsr_el1
|
||||||
ands x0, x0, #2
|
ands x0, x0, #2
|
||||||
|
@ -39,7 +50,13 @@ __start_warm:
|
||||||
msr rmr_el3, x0
|
msr rmr_el3, x0
|
||||||
isb
|
isb
|
||||||
dsb
|
dsb
|
||||||
wfi
|
/* Nintendo forgot to copy-paste the branch instruction below. */
|
||||||
|
_reset_wfi:
|
||||||
|
wfi
|
||||||
|
b _reset_wfi
|
||||||
|
.rept 65
|
||||||
|
nop /* guard against speculative excecution */
|
||||||
|
.endr
|
||||||
|
|
||||||
_set_lock_and_sp:
|
_set_lock_and_sp:
|
||||||
/* set the OS lock */
|
/* set the OS lock */
|
||||||
|
|
Loading…
Reference in a new issue