can now print device tree

This commit is contained in:
Bryan McShea
2024-01-26 18:55:51 -05:00
parent bdb29a6361
commit 3bf7735fe8
13 changed files with 233 additions and 597 deletions
+34
View File
@@ -0,0 +1,34 @@
// stolen from https://osblog.stephenmarz.com/index.html chapter 3 which I'm prolly gonna start
// following for now bc don't wanna learn x86_64 :)
use crate::{
arch::csr::{self, satp}, fdt::print_fdt, println
};
use super::asm::linker_static;
linker_static!(HEAP_START: usize, ".dword _heap_start");
static HEAP_SIZE: usize = 128 * 1024 * 1024;
pub struct Entry(u64);
pub struct Table {
pub entries: [Entry; 2usize.pow(9)],
}
pub fn init(fdt: usize) {
unsafe {
println!("heap start: 0x{:x}", HEAP_START);
print_fdt(fdt);
let table_start = HEAP_START as *mut Table;
csr::satp::write(satp::Satp {
mode: satp::Mode::Sv39,
asid: 0,
ppn: table_start,
});
let satp = csr::satp::read();
println!("satp: {satp:?}");
let x = *(0x9000_0000 as *mut u8);
println!("we got {x}");
}
}