Skip to content
Open
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
3c8920d
kernelx
LRache Aug 31, 2025
65329a7
kernelx
LRache Sep 2, 2025
7e653aa
kernelx: moved kernel code to /kernel
LRache Sep 14, 2025
aac1da9
docs: KXOS -> KernelX
LRache Sep 14, 2025
e73fa88
docs: mkdir
LRache Sep 14, 2025
63df68a
fixed: removed build dir
LRache Sep 14, 2025
92463c2
kernelx
LRache Sep 17, 2025
eb93151
test: glibc mkdir, open and write
LRache Sep 17, 2025
a4f5e7c
fixed: changed program path
LRache Sep 17, 2025
c82e556
fixed: fini all inode when panic
LRache Sep 17, 2025
7473931
feat: syscall dup2
LRache Sep 18, 2025
217c169
feat: menuconfig
LRache Sep 18, 2025
b44f62b
refactor
LRache Sep 22, 2025
5eff878
kernelx
LRache Sep 24, 2025
be27401
kernelx
LRache Sep 26, 2025
ac4469e
kernelx
LRache Sep 30, 2025
2034a24
kernelx
LRache Oct 5, 2025
049bbf4
kernelx
LRache Oct 10, 2025
941a571
kernelx
LRache Oct 11, 2025
688d0fd
kernelx signal
LRache Oct 12, 2025
beb6abb
kernelx
LRache Oct 15, 2025
2e60e3c
kernelx
LRache Oct 19, 2025
7fdf468
libfdt
LRache Oct 22, 2025
23bc241
kernelx
LRache Oct 22, 2025
8a0a99b
kernelx
LRache Oct 26, 2025
4deb4e5
kernelx
LRache Oct 29, 2025
556cf0b
kernelx
LRache Nov 2, 2025
8128c16
kernelx
LRache Nov 5, 2025
9fab9e0
kernelx
LRache Nov 12, 2025
8c6d202
kernelx
LRache Nov 16, 2025
199be87
lib lwext4_rust
LRache Nov 20, 2025
7e75d7a
kernelx
LRache Nov 20, 2025
6444833
kernelx
LRache Nov 23, 2025
7101f13
kernelx
LRache Nov 24, 2025
a99f31a
kernelx
LRache Nov 24, 2025
e0d29e6
swap-memory
LRache Nov 26, 2025
78c3ce6
feat: swap memory for anonymous area
LRache Nov 30, 2025
56a279c
feat: riscv SVADU extension
LRache Nov 30, 2025
c320b2f
feat: riscv svadu extension
LRache Dec 1, 2025
015eb02
kernelx
LRache Dec 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: riscv SVADU extension
  • Loading branch information
LRache committed Nov 30, 2025
commit 56a279c63c1ab9ace1053ce488bf43c48b7aaf33
20 changes: 18 additions & 2 deletions src/arch/riscv/fdt.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
use fdt::node::FdtNode;
use fdt::Fdt;
use alloc::vec::Vec;

use crate::kernel::parse_boot_args;
use crate::driver::Device;
use crate::driver::found_device;
use crate::kinfo;
use crate::klib::initcell::InitedCell;
use crate::kwarn;
use crate::{kinfo, kwarn};

static TIME_FREQ: InitedCell<u32> = InitedCell::uninit();
static SVADU_EXTENSION_ENABLED: InitedCell<bool> = InitedCell::uninit();

pub fn load_device_tree(fdt: *const u8) -> Result<(), ()> {
let data = unsafe { core::slice::from_raw_parts(fdt as *const u32, 2) };
Expand Down Expand Up @@ -36,6 +37,9 @@ pub fn load_device_tree(fdt: *const u8) -> Result<(), ()> {
load_soc_node(&child);
}

let cpu_node = fdt.find_node("/cpus").unwrap();
load_cpu_node(&cpu_node.children().next().unwrap());

let chosen_node = fdt.find_node("/chosen").unwrap();
if let Some(bootargs_prop) = chosen_node.property("bootargs") {
bootargs_prop.as_str().map(|bootargs| {
Expand Down Expand Up @@ -65,6 +69,18 @@ fn load_soc_node(child: &FdtNode) -> Option<()> {
Some(())
}

fn load_cpu_node(child: &FdtNode) {
let isa_support = child.property("riscv,isa").and_then(|p| p.as_str()).unwrap_or("");
let extensions: Vec<&str> = isa_support.split('_').collect();
if extensions.iter().find(|&&ext| ext == "svadu").is_some() {
SVADU_EXTENSION_ENABLED.init(true);
kinfo!("SVADU extension is enabled");
} else {
SVADU_EXTENSION_ENABLED.init(false);
kinfo!("SVADU extension is disabled");
};
}

pub fn time_frequency() -> u32 {
*TIME_FREQ
}