diff --git a/Cargo.lock b/Cargo.lock index 6b54e24..0309d2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,16 +3,19 @@ version = 3 [[package]] -name = "autocfg" -version = "1.1.0" +name = "aarch64-cpu" +version = "9.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ac42a04a61c19fc8196dd728022a784baecc5d63d7e256c01ad1b3fbfab26287" +dependencies = [ + "tock-registers", +] [[package]] -name = "bare-metal" -version = "1.0.0" +name = "autocfg" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bit-iter" @@ -22,15 +25,15 @@ checksum = "23067a77080631c5d676e61865867f5e595a3f9a50bf6973e24fb7ce5c20ee91" [[package]] name = "bit_field" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" -version = "1.3.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "cfg-if" @@ -39,13 +42,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "cortex-a" -version = "7.3.1" +name = "critical-section" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccdecab196d8cc1753b637e2e0f4a427247a2781f7a2cdf438a03fa6488a1b54" -dependencies = [ - "tock-registers", -] +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "embedded-hal" @@ -61,15 +61,14 @@ dependencies = [ name = "executor" version = "0.1.0" dependencies = [ + "aarch64-cpu", "bit-iter", "cfg-if", - "cortex-a", "lazy_static", "log", "raw-cpuid", "riscv", "spin 0.9.3", - "tock-registers", "unicycle", "woke", "x86_64", @@ -109,40 +108,40 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" dependencies = [ - "nb 1.0.0", + "nb 1.1.0", ] [[package]] name = "nb" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" +checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" [[package]] name = "raw-cpuid" -version = "10.3.0" +version = "11.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738bc47119e3eeccc7e94c4a506901aea5e7b4944ecd0829cbebf4af04ceda12" +checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1" dependencies = [ "bitflags", ] [[package]] name = "riscv" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2856a701069e2d262b264750d382407d272d5527f7a51d3777d1805b4e2d3c" +checksum = "aa3145d2fae3778b1e31ec2e827b228bdc6abd9b74bb5705ba46dcb82069bc4f" dependencies = [ - "bare-metal", "bit_field", + "critical-section", "embedded-hal", ] [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "scopeguard" @@ -167,9 +166,9 @@ dependencies = [ [[package]] name = "tock-registers" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" +checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c" [[package]] name = "unicycle" @@ -192,21 +191,21 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "volatile" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ca98349dda8a60ae74e04fd90c7fb4d6a4fbe01e6d3be095478aa0b76f6c0c" +checksum = "442887c63f2c839b346c192d047a7c87e73d0689c9157b00b53dcc27dd5ea793" [[package]] name = "woke" -version = "0.0.2" +version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eafdab77c9ee549298ca6585107832aa89d77b14ba13cda220fec6105b17dbb1" +checksum = "f84a0acf95762131790eb4f458d5b9c8ae90dc521f8c5901906203764b261b0b" [[package]] name = "x86_64" -version = "0.14.9" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958cd5cb28e720db2f59ee9dc4235b5f82a183d079fb0e6caf43ad074cfdc66a" +checksum = "3b835097a84e4457323331ec5d6eb23d096066cbfb215d54096dcb4b2e85f500" dependencies = [ "bit_field", "bitflags", diff --git a/Cargo.toml b/Cargo.toml index 4ddea4e..fd53853 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "executor" version = "0.1.0" -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] @@ -14,20 +14,19 @@ lazy_static = { version = "1.4", features = ["spin_no_std"] } unicycle = { git = "https://github.com/pleasewhy/unicycle", rev = "904f1c061d4784a5642e092d308cf523a9270c6e", default-features = false } bit-iter = "1.0.0" spin = "0.9" -woke = "0.0.2" +woke = "0.0.4" log = "0.4" cfg-if = "1.0" # Bare-metal mode on x86_64 [target.'cfg(target_arch = "x86_64")'.dependencies] -raw-cpuid = "10.2.0" +raw-cpuid = "11.0.1" x86_64 = "0.14.8" # Bare-metal mode on riscv64 [target.'cfg(target_arch = "riscv64")'.dependencies] -riscv = "0.8" +riscv = "0.10.1" # Bare-metal mode on aarch64 [target.'cfg(target_arch = "aarch64")'.dependencies] -tock-registers = "0.7" -cortex-a = "7.2.0" +aarch64-cpu = "9.4.0" diff --git a/src/arch/aarch64/mod.rs b/src/arch/aarch64/mod.rs index 0a13fea..c34b7c6 100644 --- a/src/arch/aarch64/mod.rs +++ b/src/arch/aarch64/mod.rs @@ -1,6 +1,7 @@ +use aarch64_cpu::registers::*; use core::arch::global_asm; -use cortex_a::registers::*; -use tock_registers::interfaces::Readable; +use aarch64_cpu::asm; +use aarch64_cpu::registers::Readable; mod context; @@ -31,7 +32,7 @@ pub(crate) fn wait_for_interrupt() { if !enable { intr_on(); } - cortex_a::asm::wfi(); + asm::wfi(); if !enable { intr_off(); } diff --git a/src/lib.rs b/src/lib.rs index 78a4cbc..e6a3552 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,7 +3,6 @@ #![feature(get_mut_unchecked)] #![feature(generators, generator_trait)] #![feature(stmt_expr_attributes)] -#![feature(atomic_mut_ptr)] #![feature(box_into_inner)] #![feature(new_uninit)] // some interfaces is still under developing diff --git a/src/task_collection.rs b/src/task_collection.rs index 88b14df..3d5b9bd 100644 --- a/src/task_collection.rs +++ b/src/task_collection.rs @@ -148,7 +148,7 @@ impl TaskCollection { }); // SAFETY: no other Arc or Weak pointers let tc_clone = task_collection.clone(); - let mut tc = unsafe { Arc::get_mut_unchecked(&mut task_collection) }; + let tc = unsafe { Arc::get_mut_unchecked(&mut task_collection) }; for priority in 0..MAX_PRIORITY { tc.future_collections .push(Mutex::new(FutureCollection::new(priority))); diff --git a/src/waker_page.rs b/src/waker_page.rs index c1a99ba..0ad31a9 100644 --- a/src/waker_page.rs +++ b/src/waker_page.rs @@ -53,7 +53,7 @@ impl AtomicU64SC { #[inline(always)] #[allow(unused)] pub fn as_mut_ptr(&mut self) -> *mut u64 { - self.0.as_mut_ptr() + self.0.as_ptr() } }