//! hi

#![no_std]
#![feature(
    abi_x86_interrupt,
    // asm,
    asm_sym,
    alloc_error_handler,
    core_intrinsics,
    // global_asm,
    lang_items,
    llvm_asm,
    naked_functions
)]
#![feature(exclusive_range_pattern)]

#[cfg(target_arch = "aarch64")]
#[path = "arch/aarch64/mod.rs"]
pub mod arch;

#[cfg(target_arch = "x86_64")]
#[path = "arch/x86_64/mod.rs"]
pub mod arch;

#[cfg(target_arch = "riscv64")]
#[path = "arch/riscv/mod.rs"]
pub mod arch;

#[macro_use]
pub mod print;

#[macro_use]
pub extern crate log;

pub mod allocator;
pub mod boot_conf;
pub mod driver_traits;
pub mod experiments;
pub mod graphics;
pub mod keyboard;
pub mod kmain;
pub mod logger;
pub mod panic;
pub mod relib;
pub mod scheduler;
mod unicode_utils;
pub mod utils;
pub mod wasm;

pub extern crate alloc;
pub extern crate externc_libm as libm;

///////////////////////////////
pub mod kernel_state;
pub mod vga_e;
