1#[cfg(not(target_os = "none"))]
17#[macro_export]
18macro_rules! print {
19 ($($arg:tt)*) => ({ let _ = format_args!($($arg)*); });
20}
21
22#[cfg(not(target_os = "none"))]
23#[macro_export]
24macro_rules! println {
25 () => ({});
26 ($($arg:tt)*) => ({ let _ = format_args!($($arg)*); });
27}
28
29#[cfg(all(target_arch = "x86_64", target_os = "none"))]
32#[macro_export]
33macro_rules! print {
34 ($($arg:tt)*) => ({
35 $crate::serial::_serial_print(format_args!($($arg)*));
36 $crate::graphics::fbcon::_fbcon_print(format_args!($($arg)*));
37 $crate::print_capture::_capture_print(format_args!($($arg)*));
38 });
39}
40
41#[cfg(all(target_arch = "x86_64", target_os = "none"))]
42#[macro_export]
43macro_rules! println {
44 () => ($crate::print!("\n"));
45 ($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*)));
46}
47
48#[cfg(target_arch = "aarch64")]
54#[macro_export]
55macro_rules! print {
56 ($($arg:tt)*) => ({
57 use core::fmt::Write;
58 let mut _w = $crate::arch::aarch64::direct_uart::DirectUartWriter;
59 let _ = _w.write_fmt(format_args!($($arg)*));
60 });
61}
62
63#[cfg(target_arch = "aarch64")]
64#[macro_export]
65macro_rules! println {
66 () => ($crate::print!("\n"));
67 ($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*)));
68}
69
70#[cfg(target_arch = "riscv64")]
72#[macro_export]
73macro_rules! print {
74 ($($arg:tt)*) => ($crate::serial::_serial_print(format_args!($($arg)*)));
75}
76
77#[cfg(target_arch = "riscv64")]
78#[macro_export]
79macro_rules! println {
80 () => ($crate::print!("\n"));
81 ($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*)));
82}
83
84#[macro_export]
100macro_rules! kprint {
101 ($lit:literal) => {{
103 #[cfg(target_arch = "aarch64")]
104 $crate::arch::aarch64::direct_uart::direct_print_str($lit);
105 #[cfg(not(target_arch = "aarch64"))]
106 $crate::print!($lit);
107 }};
108 ($($arg:tt)*) => {{
110 #[cfg(not(target_arch = "aarch64"))]
111 $crate::print!($($arg)*);
112 }};
113}
114
115#[macro_export]
118macro_rules! kprintln {
119 () => {{
121 #[cfg(target_arch = "aarch64")]
122 $crate::arch::aarch64::direct_uart::direct_print_str("\n");
123 #[cfg(not(target_arch = "aarch64"))]
124 $crate::println!();
125 }};
126 ($lit:literal) => {{
128 #[cfg(target_arch = "aarch64")]
129 $crate::arch::aarch64::direct_uart::direct_print_str(concat!($lit, "\n"));
130 #[cfg(not(target_arch = "aarch64"))]
131 $crate::println!($lit);
132 }};
133 ($($arg:tt)*) => {{
135 #[cfg(not(target_arch = "aarch64"))]
136 $crate::println!($($arg)*);
137 }};
138}
139
140#[macro_export]
143macro_rules! kprint_num {
144 ($prefix:literal, $n:expr) => {{
145 #[cfg(target_arch = "aarch64")]
146 {
147 $crate::arch::aarch64::direct_uart::direct_print_str($prefix);
148 $crate::arch::aarch64::direct_uart::direct_print_num($n as u64);
149 $crate::arch::aarch64::direct_uart::direct_print_str("\n");
150 }
151 #[cfg(not(target_arch = "aarch64"))]
152 $crate::println!("{}{}", $prefix, $n);
153 }};
154}
155
156#[macro_export]
159macro_rules! kprint_rt {
160 ($s:expr) => {{
161 #[cfg(target_arch = "aarch64")]
162 $crate::arch::aarch64::direct_uart::direct_print_str($s);
163 #[cfg(not(target_arch = "aarch64"))]
164 $crate::print!("{}", $s);
165 }};
166}
167
168#[macro_export]
171macro_rules! kprint_u64 {
172 ($n:expr) => {{
173 #[cfg(target_arch = "aarch64")]
174 $crate::arch::aarch64::direct_uart::direct_print_num($n as u64);
175 #[cfg(not(target_arch = "aarch64"))]
176 $crate::print!("{}", $n);
177 }};
178}
179
180#[macro_export]
184macro_rules! boot_println {
185 () => { $crate::kprintln!(); };
186 ($s:literal) => { $crate::kprintln!($s); };
187 ($($arg:tt)*) => { $crate::kprintln!($($arg)*); };
188}
189
190#[macro_export]
192macro_rules! boot_print_num {
193 ($prefix:literal, $n:expr) => {
194 $crate::kprint_num!($prefix, $n);
195 };
196}