pie-boot-loader-aarch64 0.1.22

Boot kernel code with mmu.
Documentation
use core::fmt::Write;

#[cfg(feature = "console")]
use crate::debug::write_byte;

#[cfg(not(feature = "console"))]
pub fn write_byte(_b: u8) {}

pub fn __print_str(s: &str) {
    for &b in s.as_bytes() {
        write_byte(b);
    }
}

#[macro_export]
macro_rules! early_err {
    ($f:expr) => {
        match $f {
            Ok(v) => v,
            Err(_e) => {
                println!("{}", _e);
                loop {}
            }
        }
    };
    ($f:expr, $msg:expr) => {
        match $f {
            Ok(v) => v,
            Err(_e) => {
                println!("{}:", $msg);
                println!("{}", _e);
                loop {}
            }
        }
    };
}

pub struct Stdout;

impl Write for Stdout {
    fn write_str(&mut self, s: &str) -> core::fmt::Result {
        __print_str(s);
        Ok(())
    }
}

pub fn __print(args: core::fmt::Arguments) {
    let _ = Stdout {}.write_fmt(args);
}