diff --git a/Cargo.lock b/Cargo.lock index 47d52aea76921df01a1ffe0be5b360aeedcf2100..e0aa8ca8fd6a9e3509c22973d59f4b56811538f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,11 +4,12 @@ version = 3 [[package]] name = "aarch64" -version = "0.0.7" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d48df31899ce44f6ca081b39bcf4f9913e4435e3ec4287283451f71f1577ab3" +checksum = "bc85366f9bad15a101c93ca48d7907eba7610abe9fb9d7ab2fb55f74c8073baf" dependencies = [ - "cortex-a", + "aarch64-cpu", + "tock-registers", ] [[package]] @@ -17,7 +18,7 @@ version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb711c57d60565ba8f6523eb371e6243639617d817b4df1ae09af250af1af411" dependencies = [ - "tock-registers 0.8.1", + "tock-registers", ] [[package]] @@ -100,15 +101,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cortex-a" -version = "7.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdecfbb28672ad3664e71ae05a398a52df430d86d660691501b28968cc4467e6" -dependencies = [ - "tock-registers 0.7.0", -] - [[package]] name = "critical-section" version = "1.1.1" @@ -277,6 +269,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +[[package]] +name = "hermit-dtb" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e0de208fa9b99664812350b33072d0d9b3a63caaebb03eeb23316eeedfb8d0" + [[package]] name = "hermit-entry" version = "0.9.3" @@ -298,7 +296,7 @@ dependencies = [ "exclusive_cell", "generic_once_cell", "lock_api", - "tock-registers 0.8.1", + "tock-registers", "x86_64", ] @@ -336,9 +334,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.141" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libhermit-rs" @@ -354,6 +352,7 @@ dependencies = [ "float-cmp", "futures-lite", "hashbrown", + "hermit-dtb", "hermit-entry", "hermit-sync", "include-transformed", @@ -371,6 +370,7 @@ dependencies = [ "shell-words", "smoltcp", "time", + "tock-registers", "uart_16550", "x86", "x86_64", @@ -385,9 +385,9 @@ checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "36eb31c1778188ae1e64398743890d0877fef36d11521ac60406b42016e8c2cf" [[package]] name = "llvm-tools" @@ -717,9 +717,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.11" +version = "0.37.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +checksum = "a0661814f891c57c930a610266415528da53c4933e6dea5fb350cbfe048a9ece" dependencies = [ "bitflags 1.3.2", "errno", @@ -878,12 +878,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" -[[package]] -name = "tock-registers" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" - [[package]] name = "tock-registers" version = "0.8.1" diff --git a/Cargo.toml b/Cargo.toml index 7a0096a13598334bb4903b289048c93132529c56..945bd9c2c76440d46f48bb27f5b096255cba59dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,15 +116,16 @@ uart_16550 = "0.2" x86 = { version = "0.52", default-features = false } x86_64 = "0.14" +[target.'cfg(target_arch = "aarch64")'.dependencies] +hermit-dtb = { version = "0.1" } +aarch64 = { version = "0.0.10", default-features = false } +tock-registers = { version = "0.8.x", default-features = false } + [dev-dependencies] float-cmp = "0.9" num-traits = { version = "0.2", default-features = false } x86 = { version = "0.52", default-features = false } -[target.'cfg(target_arch = "aarch64")'.dependencies.aarch64] -version = "0.0.7" -default-features = false - [workspace] members = [ "xtask", diff --git a/src/arch/aarch64/kernel/processor.rs b/src/arch/aarch64/kernel/processor.rs index e28dc9e3565b0ec4941492b5ac293fe73e575dc9..680ff4e16335d3c5e719e1d3f57a613361274a68 100644 --- a/src/arch/aarch64/kernel/processor.rs +++ b/src/arch/aarch64/kernel/processor.rs @@ -1,5 +1,5 @@ use core::arch::asm; -use core::sync::atomic::spin_loop_hint; +use core::hint::spin_loop; extern "C" { static mut cpu_freq: u32; @@ -99,7 +99,7 @@ pub fn supports_2mib_pages() -> bool { pub fn udelay(usecs: u64) { let end = get_timestamp() + get_frequency() as u64 * usecs; while get_timestamp() < end { - spin_loop_hint(); + spin_loop(); } }