Merge #190
190: Added i.MX RT 1050 board support r=valexandru a=valexandru
This adds the memory layout for building applications for the i.MX RT 1050 board support.
Co-authored-by: Vochescu Alexandru <alexvochescu@gmail.com>
diff --git a/core/Cargo.toml b/core/Cargo.toml
index 3f1723b..bfa9570 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -5,7 +5,8 @@
edition = "2018"
[features]
-alloc = [ "linked_list_allocator" ]
+alloc = ["alloc_init", "linked_list_allocator"]
+alloc_init = []
custom_panic_handler = []
custom_alloc_error_handler = []
diff --git a/core/src/alloc.rs b/core/src/alloc.rs
index 05e9669..f971849 100644
--- a/core/src/alloc.rs
+++ b/core/src/alloc.rs
@@ -4,7 +4,12 @@
use core::ptr::NonNull;
use linked_list_allocator::Heap;
-pub static mut HEAP: Heap = Heap::empty();
+static mut HEAP: Heap = Heap::empty();
+
+#[no_mangle]
+unsafe fn libtock_alloc_init(app_heap_start: usize, app_heap_size: usize) {
+ HEAP.init(app_heap_start, app_heap_size);
+}
struct TockAllocator;
diff --git a/core/src/entry_point/mod.rs b/core/src/entry_point/mod.rs
index 40bdb62..2ab2351 100644
--- a/core/src/entry_point/mod.rs
+++ b/core/src/entry_point/mod.rs
@@ -127,8 +127,8 @@
// Tell the kernel the new app heap break.
memop::set_brk(app_heap_end as *const u8);
- #[cfg(feature = "alloc")]
- crate::alloc::HEAP.init(app_heap_start, app_heap_size);
+ #[cfg(feature = "alloc_init")]
+ crate::libtock_alloc_init(app_heap_start, app_heap_size);
main(0, ptr::null());
diff --git a/core/src/lib.rs b/core/src/lib.rs
index f451950..3bdfe5b 100644
--- a/core/src/lib.rs
+++ b/core/src/lib.rs
@@ -8,6 +8,11 @@
#[cfg(any(target_arch = "arm", target_arch = "riscv32"))]
mod lang_items;
+#[cfg(feature = "alloc_init")]
+extern "Rust" {
+ fn libtock_alloc_init(app_heap_start: usize, app_heap_size: usize);
+}
+
pub mod callback;
pub mod debug;
pub mod memop;