#![no_main] #![feature(custom_test_frameworks)] #![feature(abi_x86_interrupt)] #![feature(panic_info_message)] #![feature(asm)] #![test_runner(crate::testing::serial_test_runner)] #![reexport_test_harness_main = "test_main"] #![no_std] pub mod interrupts; pub mod io; pub mod testing; pub use io::qemu::{exit_qemu, QemuExitCode}; pub use io::vga_text::OStream; pub use io::{qemu, serial, vga_text}; pub use qemu::*; #[cfg(test)] #[no_mangle] pub extern "C" fn _start() -> ! { init(); test_main(); loop {} } #[cfg(test)] #[panic_handler] fn panic(info: &core::panic::PanicInfo) -> ! { testing::serial_panic(info) } pub fn init() { interrupts::gdt::init(); interrupts::idt::init(); }