Split out libtock_core
diff --git a/Cargo.toml b/Cargo.toml index 2fcb4bf..50c20ef 100644 --- a/Cargo.toml +++ b/Cargo.toml
@@ -10,6 +10,7 @@ [dependencies] core = { package = "async-support", path = "async-support" } +libtock-core = { path = "core" } libtock_codegen = { path = "codegen" } linked_list_allocator = { optional = true, version = "=0.6.5", default-features = false } futures = { version = "0.3.1", default-features = false, features = ["unstable", "cfg-target-has-atomic"] } @@ -52,4 +53,5 @@ members = [ "async-support", "codegen", + "core" ]
diff --git a/core/Cargo.toml b/core/Cargo.toml new file mode 100644 index 0000000..6f300f4 --- /dev/null +++ b/core/Cargo.toml
@@ -0,0 +1,9 @@ +[package] +name = "libtock-core" +version = "0.1.0" +authors = ["torfmaster <briefe@kebes.de>", "Woyten <woyten.tielesch@online.de>"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies]
diff --git a/src/callback.rs b/core/src/callback.rs similarity index 100% rename from src/callback.rs rename to core/src/callback.rs
diff --git a/core/src/debug/mod.rs b/core/src/debug/mod.rs new file mode 100644 index 0000000..1f30644 --- /dev/null +++ b/core/src/debug/mod.rs
@@ -0,0 +1,5 @@ +#[cfg_attr(target_arch = "arm", path = "platform_arm.rs")] +#[cfg_attr(target_arch = "riscv32", path = "platform_riscv32.rs")] +mod platform; + +pub use platform::*;
diff --git a/core/src/debug/platform.rs b/core/src/debug/platform.rs new file mode 100644 index 0000000..6be01d8 --- /dev/null +++ b/core/src/debug/platform.rs
@@ -0,0 +1,3 @@ +pub fn get_stack_pointer() -> usize { + panic!("Not implemented yet") +}
diff --git a/core/src/debug/platform_arm.rs b/core/src/debug/platform_arm.rs new file mode 100644 index 0000000..46211b3 --- /dev/null +++ b/core/src/debug/platform_arm.rs
@@ -0,0 +1,5 @@ +pub fn get_stack_pointer() -> usize { + let stack_pointer; + unsafe { asm!("mov $0, sp" : "=r"(stack_pointer) : : : "volatile") }; + stack_pointer +}
diff --git a/core/src/debug/platform_riscv32.rs b/core/src/debug/platform_riscv32.rs new file mode 100644 index 0000000..7f4a4e0 --- /dev/null +++ b/core/src/debug/platform_riscv32.rs
@@ -0,0 +1,5 @@ +pub fn get_stack_pointer() -> usize { + let stack_pointer; + unsafe { asm!("mv $0, sp" : "=r"(stack_pointer) : : : "volatile") }; + stack_pointer +}
diff --git a/src/entry_point/mod.rs b/core/src/entry_point/mod.rs similarity index 97% rename from src/entry_point/mod.rs rename to core/src/entry_point/mod.rs index 09044bd..d63b174 100644 --- a/src/entry_point/mod.rs +++ b/core/src/entry_point/mod.rs
@@ -57,10 +57,6 @@ #[cfg_attr(target_arch = "riscv32", path = "start_item_riscv32.rs")] #[cfg_attr(target_arch = "arm", path = "start_item_arm.rs")] -#[cfg_attr( - not(any(target_arch = "arm", target_arch = "riscv32")), - path = "start_item_mock.rs" -)] mod start_item; /// The header encoded at the beginning of .text by the linker script. It is
diff --git a/src/entry_point/start_item_mock.rs b/core/src/entry_point/start_item.rs similarity index 100% rename from src/entry_point/start_item_mock.rs rename to core/src/entry_point/start_item.rs
diff --git a/src/entry_point/start_item_arm.rs b/core/src/entry_point/start_item_arm.rs similarity index 100% rename from src/entry_point/start_item_arm.rs rename to core/src/entry_point/start_item_arm.rs
diff --git a/src/entry_point/start_item_riscv32.rs b/core/src/entry_point/start_item_riscv32.rs similarity index 100% rename from src/entry_point/start_item_riscv32.rs rename to core/src/entry_point/start_item_riscv32.rs
diff --git a/src/lang_items.rs b/core/src/lang_items.rs similarity index 96% rename from src/lang_items.rs rename to core/src/lang_items.rs index 5a28186..6bbb257 100644 --- a/src/lang_items.rs +++ b/core/src/lang_items.rs
@@ -55,7 +55,7 @@ unsafe fn report_panic() -> ! { // Signal a panic using the LowLevelDebug capsule (if available). - super::debug::low_level_status_code(1); + let _ = syscalls::command1_insecure(8, 1, 1); loop { syscalls::raw::yieldk();
diff --git a/core/src/lib.rs b/core/src/lib.rs new file mode 100644 index 0000000..c8ffa54 --- /dev/null +++ b/core/src/lib.rs
@@ -0,0 +1,14 @@ +#![feature(asm, lang_items, naked_functions)] +#![cfg_attr(any(target_arch = "arm", target_arch = "riscv32"), no_std)] + +mod entry_point; +#[cfg(any(target_arch = "arm", target_arch = "riscv32"))] +mod lang_items; + +pub mod callback; +pub mod debug; +pub mod memop; +pub mod result; +pub mod shared_memory; +pub mod syscalls; +pub mod unwind_symbols;
diff --git a/src/memop.rs b/core/src/memop.rs similarity index 100% rename from src/memop.rs rename to core/src/memop.rs
diff --git a/src/result.rs b/core/src/result.rs similarity index 100% rename from src/result.rs rename to core/src/result.rs
diff --git a/src/shared_memory.rs b/core/src/shared_memory.rs similarity index 100% rename from src/shared_memory.rs rename to core/src/shared_memory.rs
diff --git a/src/syscalls/mod.rs b/core/src/syscalls/mod.rs similarity index 97% rename from src/syscalls/mod.rs rename to core/src/syscalls/mod.rs index c0289e5..833c356 100644 --- a/src/syscalls/mod.rs +++ b/core/src/syscalls/mod.rs
@@ -1,9 +1,5 @@ #[cfg_attr(target_arch = "riscv32", path = "platform_riscv32.rs")] #[cfg_attr(target_arch = "arm", path = "platform_arm.rs")] -#[cfg_attr( - not(any(target_arch = "arm", target_arch = "riscv32")), - path = "platform_mock.rs" -)] mod platform; use crate::callback::CallbackSubscription;
diff --git a/src/syscalls/platform_mock.rs b/core/src/syscalls/platform.rs similarity index 100% rename from src/syscalls/platform_mock.rs rename to core/src/syscalls/platform.rs
diff --git a/src/syscalls/platform_arm.rs b/core/src/syscalls/platform_arm.rs similarity index 100% rename from src/syscalls/platform_arm.rs rename to core/src/syscalls/platform_arm.rs
diff --git a/src/syscalls/platform_riscv32.rs b/core/src/syscalls/platform_riscv32.rs similarity index 100% rename from src/syscalls/platform_riscv32.rs rename to core/src/syscalls/platform_riscv32.rs
diff --git a/src/unwind_symbols.rs b/core/src/unwind_symbols.rs similarity index 100% rename from src/unwind_symbols.rs rename to core/src/unwind_symbols.rs
diff --git a/src/debug/mod.rs b/src/debug/mod.rs index 4596aaa..3bae683 100644 --- a/src/debug/mod.rs +++ b/src/debug/mod.rs
@@ -3,6 +3,7 @@ mod low_level_debug; use crate::drivers; +use libtock_core::debug as core_debug; pub use low_level_debug::*; @@ -21,22 +22,15 @@ let _ = console.write(buffer); } -#[cfg(target_arch = "arm")] pub fn print_stack_pointer() { - let stack_pointer; - unsafe { asm!("mov $0, sp" : "=r"(stack_pointer) : : : "volatile") }; - let mut buffer = [b'\n'; 15]; buffer[0..4].clone_from_slice(b"SP: "); - write_as_hex(&mut buffer[4..15], stack_pointer); + write_as_hex(&mut buffer[4..15], core_debug::get_stack_pointer()); let drivers = unsafe { drivers::retrieve_drivers_unsafe() }; let mut console = drivers.console.create_console(); let _ = console.write(buffer); } -#[cfg(target_arch = "riscv32")] -pub fn print_stack_pointer() {} - #[inline(always)] /// Dumps address /// # Safety
diff --git a/src/lib.rs b/src/lib.rs index 0744a53..9ff7725 100644 --- a/src/lib.rs +++ b/src/lib.rs
@@ -1,18 +1,13 @@ -#![feature(asm, lang_items, naked_functions)] #![cfg_attr(feature = "alloc", feature(alloc_error_handler))] #![cfg_attr(any(target_arch = "arm", target_arch = "riscv32"), no_std)] #[cfg(feature = "alloc")] mod alloc; -mod entry_point; -#[cfg(any(target_arch = "arm", target_arch = "riscv32"))] -mod lang_items; pub mod adc; pub mod ble_composer; pub mod ble_parser; pub mod buttons; -pub mod callback; pub mod console; pub mod debug; pub mod drivers; @@ -20,16 +15,12 @@ pub mod futures; pub mod gpio; pub mod leds; -pub mod memop; -pub mod result; pub mod rng; pub mod sensors; -pub mod shared_memory; pub mod simple_ble; -pub mod syscalls; pub mod temperature; pub mod timer; -pub mod unwind_symbols; pub use drivers::retrieve_drivers; pub use libtock_codegen::main; +pub use libtock_core::*;