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 pub fdt: usize,
32 pub pg_start: usize,
34 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}