Merge #214 214: faster zeroing of .bss r=JOE1994 a=JOE1994 This PR updates the code for zeroing the .bss section. The updated version uses `core::ptr::write_bytes()` which invokes a single **memset**, compared to the current code which initializes one byte at a time. The updated version would initialize the .bss section faster than the current version. Thank you for reviewing this PR :) :bowing_man: Co-authored-by: JOE1994 <joseph942010@gmail.com>
diff --git a/core/src/entry_point/mod.rs b/core/src/entry_point/mod.rs index 2ab2351..850c213 100644 --- a/core/src/entry_point/mod.rs +++ b/core/src/entry_point/mod.rs
@@ -104,10 +104,8 @@ ); // Zero .bss (specified by the linker script). - let bss_end = layout_header.bss_start + layout_header.bss_size; // 1 past the end of .bss - for i in layout_header.bss_start..bss_end { - core::ptr::write(i as *mut u8, 0); - } + let bss_start = layout_header.bss_start as *mut u8; + core::ptr::write_bytes(bss_start, 0u8, layout_header.bss_size); // TODO: Wait for rustc to have working ROPI-RWPI relocation support, then // implement dynamic relocations here. At the moment, rustc does not have