Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
c04c808
[feat] functions essential to hypervisor implementation (#29)
hky1999 Oct 19, 2024
abdea81
[feat]Adapting for rk3588. (#28)
luodeb Oct 22, 2024
f95d7e7
[refactor] aarch64 el2 support (#31)
hky1999 Oct 23, 2024
230e431
[feat] support irq handling routine from arceos-umhv (#33)
hky1999 Nov 20, 2024
46c3a88
[feat] update allocator version to support alloc_pages_at (#34)
hky1999 Dec 17, 2024
1ce8e38
adapt hypervisor for a1000b and fix the bug of smp startup on a1000 (…
buhenxihuan Dec 31, 2024
aa2dacf
Rebase to arceos-org/arceos main
hky1999 Jan 1, 2025
3984835
[fix] clippy error in aarch64 boot_el2
hky1999 Jan 1, 2025
698f81c
[wip] add cpu_id in TaskInner, expose on_cpu api
hky1999 Dec 11, 2024
853870b
[wip] add ipi for aarch64
hky1999 Dec 11, 2024
be145dc
[wip] add ipi for x86_64
hky1999 Dec 12, 2024
3d0409d
[feat] add ipi support for riscv64, introduce riscv_plic
hky1999 Dec 18, 2024
1389f01
fix x86 ipi vector
aarkegz Dec 17, 2024
56bf973
modify axipi to support more callback functions, add "ipi" features t…
aarkegz Dec 18, 2024
e0dab0a
update `percpu`
aarkegz Dec 18, 2024
e00b8d9
add ipi-related stubs to dummy platform
aarkegz Dec 18, 2024
3ad223c
add stubs for riscv64
aarkegz Dec 18, 2024
e850d78
formatted
aarkegz Dec 18, 2024
fb25256
fixes after cherry-pick
aarkegz Dec 18, 2024
00d4311
fixes after rebase
aarkegz Jan 9, 2025
5795fc2
disable plic temporarily
aarkegz Jan 9, 2025
42c2aab
update some `Cargo.lock` entries
aarkegz Jan 9, 2025
ab6e5cf
Merge branch 'vmm' into vmm_inject_interrupt
aarkegz Jan 9, 2025
8ffa077
Merge branch 'vmm' into vmm_inject_interrupt
aarkegz Apr 13, 2025
534de36
debin/timer_api
luodeb Mar 31, 2025
d9c3195
fixes after merge debin/timer_api
aarkegz Apr 14, 2025
1341bed
update percpu
aarkegz Apr 14, 2025
35b7bc5
formatted
aarkegz Apr 14, 2025
659f7ac
remove a temp file
aarkegz Apr 17, 2025
247c447
Merge branch 'vmm' into vmm_irq_gicv3
aarkegz May 26, 2025
d8846a4
fixes for mistakes in #49
aarkegz May 26, 2025
1ad470f
`inject_interrupt` on GICv3 based on hVisor
aarkegz May 26, 2025
5633780
add sgi ipi interface for gicv3 driver
aarkegz May 26, 2025
4104125
fix missing irm field in `send_sgi_inner`
aarkegz May 26, 2025
9f8fa97
[wip] only init necessery gicr settings
hky1999 Jun 1, 2025
105477a
Merge branch 'vmm_irq_gicv3' into vmm_inject_interrupt_vgicv3
aarkegz Jun 5, 2025
863cd50
[wip] boot on qemu
hky1999 Jun 7, 2025
bce33b9
Merge branch 'vmm' into vmm_irq_gicv3
aarkegz Jun 7, 2025
e34f516
fixes after merge
aarkegz Jun 7, 2025
f44a68f
update gicv3_tester
aarkegz Jun 7, 2025
12d41ed
Merge remote-tracking branch 'origin/vmm_irq_gicv3' into vmm_inject_i…
aarkegz Jun 7, 2025
1d8c08b
Merge remote-tracking branch 'origin/rk3588_jd4_qemu' into vmm_inject…
aarkegz Jun 8, 2025
0048040
disable el2 time ticks to allow axvisor run correctly
aarkegz Jun 11, 2025
4b597c2
re-enabling `init_interrupt` when not in aarch64-hv mode
aarkegz Jun 24, 2025
5d3aff6
update `memory_addr`
aarkegz Jul 15, 2025
3cb30ce
some small fixes
aarkegz Jul 15, 2025
a8dc94e
rename `gicv3_tester` to `ticker`
aarkegz Jul 15, 2025
6a5f9e2
allow `init_interrupt` when building `hv` on `aarch64`, as timer is d…
aarkegz Jul 15, 2025
0e5dd38
fix type
aarkegz Jul 15, 2025
61945d6
reformatted
aarkegz Jul 15, 2025
adbe081
fix a compiler error caused by an update of `stvec::write` in `riscv`…
aarkegz Jul 15, 2025
7424be8
rename IPI-related functions in `axhal`, add dummy implementation for…
aarkegz Jul 15, 2025
c233d47
Merge remote-tracking branch 'origin/vmm_irq_gicv3' into vmm_irq_gicv3
aarkegz Jul 15, 2025
9f0a660
fix unit-test errors
aarkegz Jul 15, 2025
a61a28d
fix unit-test error
aarkegz Jul 15, 2025
9ae608e
fix missing docs
aarkegz Jul 15, 2025
7c117b8
GICv3 (physical and virtual) and RK3588 support (#67)
aarkegz Jul 15, 2025
d8410da
Merge branch 'vmm' into vmm_inject_interrupt
aarkegz Jul 16, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ qemu.log
rusty-tags.vi
/.project*
/.axconfig.*
zignore-*
60 changes: 47 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ members = [
"modules/axruntime",
"modules/axsync",
"modules/axtask",
"modules/axipi",

"api/axfeat",
"api/arceos_api",
Expand All @@ -29,6 +30,8 @@ members = [
"examples/httpserver",
"examples/httpserver",
"examples/shell",

"examples/ticker",
]

[workspace.package]
Expand Down Expand Up @@ -64,6 +67,7 @@ axruntime = { path = "modules/axruntime" }
axsync = { path = "modules/axsync" }
axtask = { path = "modules/axtask" }
axdma = { path = "modules/axdma" }
axipi = { path = "modules/axipi" }

allocator = { git = "https://github.com/arceos-org/allocator.git", tag = "v0.1.1" }

Expand Down
2 changes: 2 additions & 0 deletions api/arceos_api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ documentation = "https://arceos-org.github.io/arceos/arceos_api/index.html"
default = []

irq = ["axfeat/irq"]
ipi = ["dep:axipi", "axfeat/ipi"]
alloc = ["dep:axalloc", "axfeat/alloc"]
paging = ["dep:axmm", "axfeat/paging"]
dma = ["dep:axdma", "axfeat/dma"]
Expand Down Expand Up @@ -43,3 +44,4 @@ axdriver = { workspace = true, optional = true }
axfs = { workspace = true, optional = true }
axnet = { workspace = true, optional = true }
axdisplay = { workspace = true, optional = true }
axipi = { workspace = true, optional = true }
2 changes: 2 additions & 0 deletions api/arceos_api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,8 @@ pub mod modules {
pub use axdriver;
#[cfg(feature = "fs")]
pub use axfs;
#[cfg(feature = "ipi")]
pub use axipi;
#[cfg(feature = "paging")]
pub use axmm;
#[cfg(feature = "net")]
Expand Down
7 changes: 6 additions & 1 deletion api/arceos_posix_api/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,23 @@ typedef struct {{
impl bindgen::callbacks::ParseCallbacks for MyCallbacks {
fn include_file(&self, fname: &str) {
if !fname.contains("ax_pthread_mutex.h") {
println!("cargo:rerun-if-changed={}", fname);
println!("cargo:rerun-if-changed={fname}");
}
}
}

let target = std::env::var("TARGET").unwrap();
let mut builder = bindgen::Builder::default()
.header(in_file)
.clang_arg("-I./../../ulib/axlibc/include")
.parse_callbacks(Box::new(MyCallbacks))
.derive_default(true)
.size_t_is_usize(false)
.use_core();
if let Some(llvm_target) = target.strip_suffix("-softfloat") {
// remove "-softfloat" suffix for some targets
builder = builder.clang_arg(format!("--target={llvm_target}"));
}
for ty in allow_types {
builder = builder.allowlist_type(ty);
}
Expand Down
4 changes: 3 additions & 1 deletion api/axfeat/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ fp_simd = ["axhal/fp_simd"]

# Interrupts
irq = ["axhal/irq", "axruntime/irq", "axtask?/irq"]
ipi = ["irq", "dep:axipi", "axhal/ipi", "axruntime/ipi"]
gicv3 = ["axhal/gicv3"]

# Memory
Expand Down Expand Up @@ -61,7 +62,7 @@ driver-fxmac = ["axdriver?/fxmac"] # fxmac ethernet driver for PhytiumPi
driver-bcm2835-sdhci = ["axdriver?/bcm2835-sdhci"]

#Hypervisor support
hv = ["axhal/hv"]
hv = ["axhal/hv", "ipi"]

# Logging
log-level-off = ["axlog/log-level-off"]
Expand All @@ -82,4 +83,5 @@ axnet = { workspace = true, optional = true }
axdisplay = { workspace = true, optional = true }
axsync = { workspace = true, optional = true }
axtask = { workspace = true, optional = true }
axipi = { workspace = true, optional = true }
kspin = { version = "0.1", optional = true }
1 change: 1 addition & 0 deletions api/axfeat/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//! - `fp_simd`: Enable floating point and SIMD support.
//! - Interrupts:
//! - `irq`: Enable interrupt handling support.
//! - `ipi`: Enable Inter-Processor Interrupts (IPIs).
//! - Memory
//! - `alloc`: Enable dynamic memory allocation.
//! - `alloc-tlsf`: Use the TLSF allocator.
Expand Down
2 changes: 1 addition & 1 deletion configs/platforms/aarch64-qemu-virt.toml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ uart-irq = 1 # uint
gicc-paddr = 0x0801_0000 # uint
# GIC Distributor base address
gicd-paddr = 0x0800_0000 # uint
# GIC Rdistributor base address
# GIC Redistributor base address
gicr-paddr = 0x080a_0000

# PSCI
Expand Down
3 changes: 2 additions & 1 deletion configs/platforms/aarch64-rk3588j.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,5 @@ psci-method = "smc"
# compatible = "arm,pl031\0arm,primecell";
# };
# RTC (PL031) Address
# rtc-paddr = "0x901_0000"
# rtc-paddr = "0x901_0000"
nothing = "nothing" # str
2 changes: 1 addition & 1 deletion examples/helloworld/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ authors = ["Yuekai Jia <[email protected]>"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
axstd = { workspace = true, optional = true }
axstd = { workspace = true, features = ["irq"], optional = true }
10 changes: 10 additions & 0 deletions examples/ticker/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[package]
name = "arceos-ticker"
version = "0.1.0"
edition.workspace = true
authors = ["aarkegz <[email protected]>"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
axstd = { workspace = true, features = ["irq", "multitask", "paging"], optional = true }
26 changes: 26 additions & 0 deletions examples/ticker/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#![cfg_attr(feature = "axstd", no_std)]
#![cfg_attr(feature = "axstd", no_main)]

use core::time::Duration;

#[cfg(feature = "axstd")]
use axstd::os::arceos::api::time::ax_monotonic_time;
#[cfg(feature = "axstd")]
use axstd::os::arceos::modules;
#[cfg(feature = "axstd")]
use axstd::println;

#[cfg_attr(feature = "axstd", unsafe(no_mangle))]
fn main() {
#[cfg(feature = "axstd")]
{
println!("Ticking!");

println!("Current monotonic time: {:?}", ax_monotonic_time());

loop {
modules::axtask::sleep(Duration::from_millis(500));
println!("Current monotonic time: {:?}", ax_monotonic_time());
}
}
}
2 changes: 1 addition & 1 deletion modules/axalloc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ page-alloc-4g = ["allocator/page-alloc-4g"] # Support up to 4G memory capacity
log = "=0.4.21"
cfg-if = "1.0"
kspin = "0.1"
memory_addr = "0.3"
memory_addr = "0.4"
axerrno = "0.1"
allocator = { git = "https://github.com/arceos-org/allocator.git", tag ="v0.1.1", features = ["bitmap"] }
2 changes: 1 addition & 1 deletion modules/axdma/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ documentation = "https://arceos-org.github.io/arceos/axdma/index.html"
[dependencies]
log = "=0.4.21"
kspin = "0.1"
memory_addr = "0.3"
memory_addr = "0.4"
axerrno = "0.1"
allocator = { git = "https://github.com/arceos-org/allocator.git", tag = "v0.1.1" }
axalloc = { workspace = true }
Expand Down
Loading
Loading