gpt4 book ai didi

raspberry-pi3 - ARMv8 从 el3 更改为 el1 安全

转载 作者:行者123 更新时间:2023-12-03 19:37:37 29 4
gpt4 key购买 nike

我正在尝试从 el3 更改为 el1 安全,但我一直让处理器卡在某个地方。我的代码在 Cortex-A53(树莓派 3)上运行。目前我只能从 EL3 降到 EL2。

/* Code to try jump to EL1 secure */
MSR SCTLR_EL1, XZR

MRS X0, SCR_EL3
ORR X0, X0, #(1<<10) // RW EL1 Execution state is AArch64.
MSR SCR_EL3, x0
MOV X0, #0b00101 // DAIF=0000
MSR SPSR_EL3, X0

ADR X0, read_core
MSR ELR_EL3, X0 // EL1 code.
ERET

读核心:
/* set stack poiter */
mov sp, #0x3F000000

/* Jump to kernel main entry point */
bl kernel_entry

有人可以指出我这里可能有什么问题吗?

提前谢谢

最佳答案

最后我设法放弃 rpi3 来保护 el1。如果有人有兴趣检查代码。

drop_el1_secure:

/* Try drop from el3 to el1 secure */

/*=============================================================*/
/* Enable FP/SIMD at EL1 */
/*=============================================================*/
mov x0, #3 << 20
msr cpacr_el1, x0 /* Enable FP/SIMD at EL1 */

/*=============================================================*/
/* Initialize sctlr_el1 */
/*=============================================================*/
mov x0, xzr
orr x0, x0, #(1 << 29) /* Checking http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0500d/CIHDIEBD.html */
orr x0, x0, #(1 << 28) /* Bits 29,28,23,22,20,11 should be 1 (res1 on documentation) */
orr x0, x0, #(1 << 23)
orr x0, x0, #(1 << 22)
orr x0, x0, #(1 << 20)
orr x0, x0, #(1 << 11)
msr sctlr_el1, x0

/*=============================================================*/
/* Initialize scr_el3 */
/*=============================================================*/
mrs x0, scr_el3
orr x0, x0, #(1<<10) /* Lower EL is 64bits */
msr scr_el3, x0

/*=============================================================*/
/* Initialize spsr_el3 */
/*=============================================================*/
mov x0, xzr
mov x0, #0b00101 /* EL1 */
orr x0, x0, #(1 << 8) /* Enable SError and External Abort. */
orr x0, x0, #(1 << 7) /* IRQ interrupt Process state mask. */
orr x0, x0, #(1 << 6) /* FIQ interrupt Process state mask. */
msr spsr_el3, x0

/*=============================================================*/
/* Initialize elr_el3 */
/*=============================================================*/
adr x0, el1_secure
msr elr_el3, x0

eret

el1_secure: bl call_kernel_main

关于raspberry-pi3 - ARMv8 从 el3 更改为 el1 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46194098/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com