1use crate::TrampolineStackVirtualAddress;
4use kernel_info::boot::KernelBootInfo;
5use kernel_qemu::qemu_trace;
6use kernel_vmem::addresses::VirtualAddress;
7
8pub fn trace_boot_info(
9    boot_info: &KernelBootInfo,
10    bi_ptr_va: VirtualAddress,
11    kernel_va: VirtualAddress,
12    trampoline_stack_va: TrampolineStackVirtualAddress,
13) {
14    qemu_trace!("Boot Info in UEFI Loader:\n");
15    qemu_trace!("   Kernel = {kernel_va:?}");
16    qemu_trace!("\n");
17    qemu_trace!(" Trampol. = {trampoline_stack_va:?}");
18    qemu_trace!("\n");
19    qemu_trace!(
20        "   BI ptr = {:018x} (@{} MiB)",
21        core::ptr::from_ref(boot_info) as usize,
22        core::ptr::from_ref(boot_info) as usize / 1024 / 1024
23    );
24    qemu_trace!("\n");
25    qemu_trace!("       VA = {bi_ptr_va:?}");
26    qemu_trace!("\n");
27    qemu_trace!(
28        " MMAP ptr = {:018x} (@{} MiB)",
29        boot_info.mmap.mmap_ptr,
30        boot_info.mmap.mmap_ptr / 1024 / 1024
31    );
32    qemu_trace!(", len = {}", boot_info.mmap.mmap_len);
33    qemu_trace!(", desc size = {}", boot_info.mmap.mmap_desc_size);
34    qemu_trace!(
35        ", desc version = {}",
36        usize::try_from(boot_info.mmap.mmap_desc_version).unwrap_or_default()
37    );
38    qemu_trace!(
39        ", rsdp addr = {}",
40        usize::try_from(boot_info.rsdp_addr).unwrap_or_default()
41    );
42    qemu_trace!("\n");
43    qemu_trace!(
44        "   FB ptr = {:018x} (@{} MiB)",
45        boot_info.fb.framebuffer_ptr,
46        boot_info.fb.framebuffer_ptr / 1024 / 1024
47    );
48    qemu_trace!(", size = {}", boot_info.fb.framebuffer_size);
49    qemu_trace!(", width = {}", boot_info.fb.framebuffer_width);
50    qemu_trace!(", height = {}", boot_info.fb.framebuffer_height);
51    qemu_trace!(", stride = {}", boot_info.fb.framebuffer_stride);
52    qemu_trace!(", format = ");
53    match boot_info.fb.framebuffer_format {
54        kernel_info::boot::BootPixelFormat::Rgb => qemu_trace!("RGB"),
55        kernel_info::boot::BootPixelFormat::Bgr => qemu_trace!("BGR"),
56        kernel_info::boot::BootPixelFormat::Bitmask => qemu_trace!("Bitmask"),
57        kernel_info::boot::BootPixelFormat::BltOnly => qemu_trace!("BltOnly"),
58    }
59    qemu_trace!("\n");
60}