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}