diff --git a/kernel/src/arch/mipsel/board/malta/consts.rs b/kernel/src/arch/mipsel/board/malta/consts.rs new file mode 100644 index 0000000..5f1f8f5 --- /dev/null +++ b/kernel/src/arch/mipsel/board/malta/consts.rs @@ -0,0 +1,3 @@ +/// board specific constants for malta +pub const MEMORY_END: usize = 0x8800_0000; +pub const KERNEL_HEAP_SIZE: usize = 0x00a0_0000; diff --git a/kernel/src/arch/mipsel/board/malta/mod.rs b/kernel/src/arch/mipsel/board/malta/mod.rs index d9b9d0b..05b27b7 100644 --- a/kernel/src/arch/mipsel/board/malta/mod.rs +++ b/kernel/src/arch/mipsel/board/malta/mod.rs @@ -6,6 +6,7 @@ pub mod serial; pub mod fb; #[path = "../../../../drivers/console/mod.rs"] pub mod console; +pub mod consts; /// Initialize serial port first pub fn init_serial_early() { diff --git a/kernel/src/arch/mipsel/board/malta/serial.rs b/kernel/src/arch/mipsel/board/malta/serial.rs index 2618e0d..b624729 100644 --- a/kernel/src/arch/mipsel/board/malta/serial.rs +++ b/kernel/src/arch/mipsel/board/malta/serial.rs @@ -83,7 +83,7 @@ impl Write for SerialPort { fn write(addr: usize, content: T) { let cell = (addr) as *mut T; - unsafe { write_volatile(cell, content) } + unsafe { write_volatile(cell, content); } } fn read(addr: usize) -> T { diff --git a/kernel/src/arch/mipsel/board/thinpad/consts.rs b/kernel/src/arch/mipsel/board/thinpad/consts.rs new file mode 100644 index 0000000..9a10cde --- /dev/null +++ b/kernel/src/arch/mipsel/board/thinpad/consts.rs @@ -0,0 +1,3 @@ +/// board specific constants for thinpad +pub const MEMORY_END: usize = 0x8080_0000; +pub const KERNEL_HEAP_SIZE: usize = 0x0020_0000; diff --git a/kernel/src/arch/mipsel/board/thinpad/mod.rs b/kernel/src/arch/mipsel/board/thinpad/mod.rs index a290559..358197f 100644 --- a/kernel/src/arch/mipsel/board/thinpad/mod.rs +++ b/kernel/src/arch/mipsel/board/thinpad/mod.rs @@ -1,10 +1,14 @@ use once::*; +use alloc::string::String; pub mod serial; #[path = "../../../../drivers/gpu/fb.rs"] pub mod fb; #[path = "../../../../drivers/console/mod.rs"] pub mod console; +pub mod consts; + +use fb::FramebufferInfo; /// Initialize serial port first pub fn init_serial_early() { @@ -31,6 +35,6 @@ pub fn probe_fb_info(width: u32, height: u32, depth: u32) -> Result<(Framebuffer pitch: 800, bus_addr: 0xa2000000, screen_size: 800 * 600, - } + }; Ok((fb_info, 0xa2000000)) } \ No newline at end of file diff --git a/kernel/src/arch/mipsel/board/thinpad/serial.rs b/kernel/src/arch/mipsel/board/thinpad/serial.rs index 3c59a0d..95c693d 100644 --- a/kernel/src/arch/mipsel/board/thinpad/serial.rs +++ b/kernel/src/arch/mipsel/board/thinpad/serial.rs @@ -4,7 +4,7 @@ use core::fmt::{Write, Result, Arguments}; use core::ptr::{read_volatile, write_volatile}; use spin::Mutex; -struct SerialPort { +pub struct SerialPort { base: usize } @@ -27,7 +27,7 @@ impl SerialPort { } /// non-blocking version of putchar() - fn putchar(&mut self, c: u8) { + pub fn putchar(&mut self, c: u8) { write(self.base + UART_DATA, c); } @@ -76,12 +76,12 @@ impl Write for SerialPort { fn write(addr: usize, content: T) { let cell = (addr) as *mut T; - write_volatile(cell, content); + unsafe { write_volatile(cell, content); } } fn read(addr: usize) -> T { let cell = (addr) as *const T; - read_volatile(cell); + unsafe { read_volatile(cell) } } diff --git a/kernel/src/arch/mipsel/boot/linker.ld b/kernel/src/arch/mipsel/boot/linker.ld index 8570468..7911721 100644 --- a/kernel/src/arch/mipsel/boot/linker.ld +++ b/kernel/src/arch/mipsel/boot/linker.ld @@ -4,7 +4,7 @@ OUTPUT_ARCH(riscv) ENTRY(_start) -BASE_ADDRESS = 0x80100000; +BASE_ADDRESS = 0x80000000; SECTIONS { diff --git a/kernel/src/arch/mipsel/consts.rs b/kernel/src/arch/mipsel/consts.rs index ab7bf18..1bc6aa5 100644 --- a/kernel/src/arch/mipsel/consts.rs +++ b/kernel/src/arch/mipsel/consts.rs @@ -1,11 +1,11 @@ /// Platform specific constants +/// -pub const KERNEL_OFFSET: usize = 0x80100000; +pub use super::board::consts::*; -pub const KERNEL_HEAP_SIZE: usize = 0x00a0_0000; +pub const KERNEL_OFFSET: usize = 0x80000000; pub const MEMORY_OFFSET: usize = 0x8000_0000; -pub const MEMORY_END: usize = 0x8800_0000; pub const USER_STACK_OFFSET: usize = 0x80000000 - USER_STACK_SIZE; pub const USER_STACK_SIZE: usize = 0x10000;