Skip to main content

axplat_aarch64_dyn/
lib.rs

1#![cfg(target_arch = "aarch64")]
2#![no_std]
3#![feature(used_with_arg)]
4
5#[macro_use]
6extern crate axplat;
7extern crate alloc;
8
9use core::ptr::NonNull;
10
11use axplat::mem::phys_to_virt;
12use fdt_parser::Fdt;
13
14mod boot;
15mod console;
16mod driver;
17mod fdt;
18mod init;
19#[cfg(feature = "irq")]
20mod irq;
21mod mem;
22mod power;
23#[cfg(feature = "smp")]
24mod smp;
25mod time;
26
27pub mod config {
28    axconfig_macros::include_configs!(path_env = "AX_CONFIG_PATH", fallback = "axconfig.toml");
29}
30
31fn fdt() -> Fdt<'static> {
32    let paddr = somehal::boot_info()
33        .fdt
34        .expect("FDT is not available, please check the bootloader configuration");
35    let addr = phys_to_virt((paddr.as_ptr() as usize).into());
36
37    Fdt::from_ptr(NonNull::new(addr.as_mut_ptr()).unwrap()).expect("Failed to parse FDT")
38}