diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-09-05 19:01:32 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-09-05 19:01:32 +0800 |
| commit | 365b581ca5c37305f9583cf08d0c25c4426f47e2 (patch) | |
| tree | 4a77be797bc192a5919728a7337937407075c119 /kernel/src | |
| parent | b4d9a57f193c64bca188a76e4f711cc168da9737 (diff) | |
migrate: limine -> bootloader_api
Diffstat (limited to 'kernel/src')
| -rw-r--r-- | kernel/src/io.rs | 2 | ||||
| -rw-r--r-- | kernel/src/io/input.rs | 0 | ||||
| -rw-r--r-- | kernel/src/io/output.rs | 2 | ||||
| -rw-r--r-- | kernel/src/io/output/render.rs | 0 | ||||
| -rw-r--r-- | kernel/src/io/output/serial.rs | 1 | ||||
| -rw-r--r-- | kernel/src/io/output/serial/uart_16550.rs | 15 | ||||
| -rw-r--r-- | kernel/src/io/render/fb.rs | 2 | ||||
| -rw-r--r-- | kernel/src/io/render/fb/graphic.rs | 0 | ||||
| -rw-r--r-- | kernel/src/io/render/fb/text.rs | 1 | ||||
| -rw-r--r-- | kernel/src/lib.rs | 4 | ||||
| -rw-r--r-- | kernel/src/main.rs | 16 | ||||
| -rw-r--r-- | kernel/src/pm.rs | 10 | ||||
| -rw-r--r-- | kernel/src/pm/panic.rs | 8 |
13 files changed, 61 insertions, 0 deletions
diff --git a/kernel/src/io.rs b/kernel/src/io.rs new file mode 100644 index 0000000..7d1a548 --- /dev/null +++ b/kernel/src/io.rs @@ -0,0 +1,2 @@ +pub mod input; +pub mod output; diff --git a/kernel/src/io/input.rs b/kernel/src/io/input.rs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/kernel/src/io/input.rs diff --git a/kernel/src/io/output.rs b/kernel/src/io/output.rs new file mode 100644 index 0000000..19bad9c --- /dev/null +++ b/kernel/src/io/output.rs @@ -0,0 +1,2 @@ +pub mod render; +pub mod serial; diff --git a/kernel/src/io/output/render.rs b/kernel/src/io/output/render.rs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/kernel/src/io/output/render.rs diff --git a/kernel/src/io/output/serial.rs b/kernel/src/io/output/serial.rs new file mode 100644 index 0000000..0fb7194 --- /dev/null +++ b/kernel/src/io/output/serial.rs @@ -0,0 +1 @@ +pub mod uart_16550; diff --git a/kernel/src/io/output/serial/uart_16550.rs b/kernel/src/io/output/serial/uart_16550.rs new file mode 100644 index 0000000..984854a --- /dev/null +++ b/kernel/src/io/output/serial/uart_16550.rs @@ -0,0 +1,15 @@ +pub enum SerialPortAddress { + Com1 = 0x3F8, + Com2 = 0x2F8, + Com3 = 0x3E8, + Com4 = 0x2E8, +} + +#[derive(Default)] +pub struct Uart16550 {} + +impl Uart16550 { + pub fn new() -> Self { + Self {} + } +} diff --git a/kernel/src/io/render/fb.rs b/kernel/src/io/render/fb.rs new file mode 100644 index 0000000..2924838 --- /dev/null +++ b/kernel/src/io/render/fb.rs @@ -0,0 +1,2 @@ +pub mod graphic; +pub mod text; diff --git a/kernel/src/io/render/fb/graphic.rs b/kernel/src/io/render/fb/graphic.rs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/kernel/src/io/render/fb/graphic.rs diff --git a/kernel/src/io/render/fb/text.rs b/kernel/src/io/render/fb/text.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/kernel/src/io/render/fb/text.rs @@ -0,0 +1 @@ + diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs new file mode 100644 index 0000000..2832ab2 --- /dev/null +++ b/kernel/src/lib.rs @@ -0,0 +1,4 @@ +#![no_std] + +pub mod io; +pub mod pm; diff --git a/kernel/src/main.rs b/kernel/src/main.rs new file mode 100644 index 0000000..bfa20e6 --- /dev/null +++ b/kernel/src/main.rs @@ -0,0 +1,16 @@ +#![no_std] +#![no_main] +#![feature(used_with_arg)] + +// extern crate alloc; + +use bootloader_api::{BootInfo, BootloaderConfig, entry_point}; +use kernel::pm::hcf; + +const CONFIG: BootloaderConfig = BootloaderConfig::new_default(); + +fn kmain(boot_info: &'static mut BootInfo) -> ! { + hcf() +} + +entry_point!(kmain); diff --git a/kernel/src/pm.rs b/kernel/src/pm.rs new file mode 100644 index 0000000..1b45b84 --- /dev/null +++ b/kernel/src/pm.rs @@ -0,0 +1,10 @@ +pub mod panic; + +pub fn hcf() -> ! { + unsafe { + core::arch::asm!("cli"); + loop { + core::arch::asm!("hlt"); + } + } +} diff --git a/kernel/src/pm/panic.rs b/kernel/src/pm/panic.rs new file mode 100644 index 0000000..6446cd9 --- /dev/null +++ b/kernel/src/pm/panic.rs @@ -0,0 +1,8 @@ +use core::panic::PanicInfo; + +use crate::pm::hcf; + +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + hcf() +} |
