fix: orangepi3 higher-half boot with uImage

This commit is contained in:
2021-10-11 18:36:08 +03:00
parent 2362ce6cd4
commit 7ac20b1841
4 changed files with 30 additions and 10 deletions
+10 -3
View File
@@ -8,7 +8,7 @@ use cortex_a::registers::{DAIF, SCTLR_EL1, VBAR_EL1, CurrentEL};
use tock_registers::interfaces::{ReadWriteable, Writeable, Readable};
#[no_mangle]
fn __aa64_bsp_main(fdt_base: usize) {
extern "C" fn __aa64_bsp_main(fdt_base: usize) {
// Disable FP instruction trapping
CPACR_EL1.modify(CPACR_EL1::FPEN::TrapNone);
@@ -34,8 +34,15 @@ fn __aa64_bsp_main(fdt_base: usize) {
machine::init_board().unwrap();
// let fdt = DeviceTree::from_phys(fdt_base + 0xFFFFFF8000000000).expect("Failed to obtain a device tree");
// fdt.dump();
if fdt_base != 0 {
debugln!("fdt_base = {:#x}", fdt_base);
let fdt = DeviceTree::from_phys(fdt_base + 0xFFFFFF8000000000);
if let Ok(fdt) = fdt {
fdt.dump();
} else {
debugln!("Failed to init FDT");
}
}
debugln!("Machine init finished");
+5
View File
@@ -77,3 +77,8 @@ __aa64_entry_upper:
bsp_stack_bottom:
.skip 32768
bsp_stack_top:
.section .data
.p2align 4
fdt_base_phys:
.skip 8