hal_arm/
print.rs

1use core::fmt::{self, Write};
2
3use hal_api::Machinelike;
4
5#[allow(unused_macros)]
6macro_rules! print {
7    ($($arg:tt)*) => ({
8        use core::fmt::Write;
9        use $crate::print::Printer;
10        let mut printer = Printer;
11        printer.write_fmt(format_args!($($arg)*)).unwrap();
12    });
13}
14
15#[allow(unused_imports)]
16pub(crate) use print;
17
18#[allow(unused_macros)]
19macro_rules! println {
20    ($($arg:tt)*) => ({
21        use core::fmt::Write;
22        use $crate::print::Printer;
23        let mut printer = Printer;
24        printer.write_fmt(format_args!($($arg)*)).unwrap();
25        printer.write_str("\n").unwrap();
26    });
27}
28
29#[allow(unused_imports)]
30pub(crate) use println;
31
32pub struct Printer;
33
34impl Write for Printer {
35    fn write_str(&mut self, s: &str) -> fmt::Result {
36        crate::ArmMachine::print(s).map_err(|_| fmt::Error)?;
37        Ok(())
38    }
39}