pie_boot_if/
lib.rs

1#![no_std]
2
3use core::{fmt::Debug, mem::MaybeUninit};
4
5#[repr(C, align(64))]
6#[derive(Clone)]
7pub struct EarlyBootArgs {
8    pub args: [usize; 4],
9    pub virt_entry: *mut (),
10    pub kimage_addr_lma: *mut (),
11    pub kimage_addr_vma: *mut (),
12    pub kcode_end: *mut (),
13}
14
15impl EarlyBootArgs {
16    pub const fn new() -> Self {
17        unsafe { MaybeUninit::zeroed().assume_init() }
18    }
19}
20
21impl Default for EarlyBootArgs {
22    fn default() -> Self {
23        Self::new()
24    }
25}
26
27#[repr(align(64))]
28#[derive(Clone)]
29pub struct BootArgs {
30    /// 设备树物理地址
31    pub fdt: usize,
32    /// 页表开始物理地址
33    pub pg_start: usize,
34    /// 页表结束物理地址
35    pub pg_end: usize,
36}
37
38impl Debug for BootArgs {
39    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
40        f.debug_struct("BootArgs")
41            .field("fdt", &(self.fdt as *mut u8))
42            .field("pg_start", &(self.pg_start as *mut u8))
43            .field("pg_end", &(self.pg_end as *mut u8))
44            .finish()
45    }
46}
47
48impl BootArgs {
49    pub const fn new() -> Self {
50        unsafe { MaybeUninit::zeroed().assume_init() }
51    }
52}
53
54impl Default for BootArgs {
55    fn default() -> Self {
56        Self::new()
57    }
58}