From 73338c2d453e7a5928fa7f392e1bc2392dbba3cd Mon Sep 17 00:00:00 2001 From: Clément Sibille Date: Fri, 8 Oct 2021 08:17:14 +0200 Subject: Move x86-specific code into an arch/x86 module --- Makefile | 2 +- kernel/src/arch/mod.rs | 1 + kernel/src/arch/x86/io.rs | 14 ++++++++++++++ kernel/src/arch/x86/mod.rs | 1 + kernel/src/io.rs | 14 -------------- kernel/src/lib.rs | 5 +++-- kernel/src/serial.rs | 2 +- kernel/src/terminal.rs | 2 +- 8 files changed, 22 insertions(+), 19 deletions(-) create mode 100644 kernel/src/arch/mod.rs create mode 100644 kernel/src/arch/x86/io.rs create mode 100644 kernel/src/arch/x86/mod.rs delete mode 100644 kernel/src/io.rs diff --git a/Makefile b/Makefile index c5e8bdc..ef62203 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ all: target/kernel.o clean_run: | clean run run: target/kernel.o - qemu-system-i386 -kernel $< -machine type=pc-i440fx-3.1 -serial stdio + qemu-system-i386 -kernel $< -machine type=pc-i440fx-3.1 -serial mon:stdio target/boot.o: boot/boot.S mkdir -p target diff --git a/kernel/src/arch/mod.rs b/kernel/src/arch/mod.rs new file mode 100644 index 0000000..8581bb3 --- /dev/null +++ b/kernel/src/arch/mod.rs @@ -0,0 +1 @@ +pub(crate) mod x86; diff --git a/kernel/src/arch/x86/io.rs b/kernel/src/arch/x86/io.rs new file mode 100644 index 0000000..a647408 --- /dev/null +++ b/kernel/src/arch/x86/io.rs @@ -0,0 +1,14 @@ +pub unsafe fn out8(address: u16, value: u8) { + asm!( + "out dx, al", in("dx") address, in("al") value + ); +} + +pub unsafe fn in8(address: u16) -> u8 { + let result: u8; + asm!( + "in al, dx", in("dx") address, out("al") result + ); + + result +} diff --git a/kernel/src/arch/x86/mod.rs b/kernel/src/arch/x86/mod.rs new file mode 100644 index 0000000..af514a1 --- /dev/null +++ b/kernel/src/arch/x86/mod.rs @@ -0,0 +1 @@ +pub mod io; diff --git a/kernel/src/io.rs b/kernel/src/io.rs deleted file mode 100644 index a647408..0000000 --- a/kernel/src/io.rs +++ /dev/null @@ -1,14 +0,0 @@ -pub unsafe fn out8(address: u16, value: u8) { - asm!( - "out dx, al", in("dx") address, in("al") value - ); -} - -pub unsafe fn in8(address: u16) -> u8 { - let result: u8; - asm!( - "in al, dx", in("dx") address, out("al") result - ); - - result -} diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index b1c8cf2..c5e05a4 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -2,10 +2,11 @@ #![no_std] #![no_main] -use crate::terminal::Terminal; use core::panic::PanicInfo; -mod io; +use crate::terminal::Terminal; + +mod arch; mod serial; mod terminal; diff --git a/kernel/src/serial.rs b/kernel/src/serial.rs index 77c15cb..73cb247 100644 --- a/kernel/src/serial.rs +++ b/kernel/src/serial.rs @@ -1,4 +1,4 @@ -use crate::io::{in8, out8}; +use crate::arch::x86::io::{in8, out8}; use crate::serial::SerialError::SerialPortInitializationFailed; const COM1_PORT: u16 = 0x3F8; diff --git a/kernel/src/terminal.rs b/kernel/src/terminal.rs index 63c7d95..1045b09 100644 --- a/kernel/src/terminal.rs +++ b/kernel/src/terminal.rs @@ -1,4 +1,4 @@ -use crate::io; +use crate::arch::x86::io; use compiler_builtins::mem::memcpy; const VGA_BUFFER_POINTER: *mut u8 = 0xB8000 as *mut u8; -- cgit v1.2.3