33use core:: panic:: PanicInfo ;
44// use core::ptr;
55
6- #[ no_mangle]
6+ #[ unsafe ( no_mangle) ]
77pub unsafe extern "C" fn Reset ( ) -> ! {
88 // Omitted to simplify the `objdump` output
99 // Initialize RAM
10- extern "C" {
10+ unsafe extern "C" {
1111 // static mut _sbss: u8;
1212 // static mut _ebss: u8;
1313
@@ -23,16 +23,16 @@ pub unsafe extern "C" fn Reset() -> ! {
2323 // ptr::copy_nonoverlapping(&_sidata as *const u8, &mut _sdata as *mut u8, count);
2424
2525 // Call user entry point
26- extern "Rust" {
27- fn main ( ) -> !;
26+ unsafe extern "Rust" {
27+ safe fn main ( ) -> !;
2828 }
2929
3030 main ( )
3131}
3232
3333// The reset vector, a pointer into the reset handler
34- #[ link_section = ".vector_table.reset_vector" ]
35- #[ no_mangle]
34+ #[ unsafe ( link_section = ".vector_table.reset_vector" ) ]
35+ #[ unsafe ( no_mangle) ]
3636pub static RESET_VECTOR : unsafe extern "C" fn ( ) -> ! = Reset ;
3737
3838#[ panic_handler]
@@ -43,22 +43,22 @@ fn panic(_panic: &PanicInfo<'_>) -> ! {
4343#[ macro_export]
4444macro_rules! entry {
4545 ( $path: path) => {
46- #[ export_name = "main" ]
46+ #[ unsafe ( export_name = "main" ) ]
4747 pub unsafe fn __main( ) -> ! {
4848 // type check the given path
4949 let f: fn ( ) -> ! = $path;
5050
5151 f( )
5252 }
53- }
53+ } ;
5454}
5555
5656pub union Vector {
5757 reserved : u32 ,
5858 handler : unsafe extern "C" fn ( ) ,
5959}
6060
61- extern "C" {
61+ unsafe extern "C" {
6262 fn NMI ( ) ;
6363 fn HardFaultTrampoline ( ) ; // <- CHANGED!
6464 fn MemManage ( ) ;
@@ -69,16 +69,14 @@ extern "C" {
6969 fn SysTick ( ) ;
7070}
7171
72- #[ link_section = ".vector_table.exceptions" ]
73- #[ no_mangle]
72+ #[ unsafe ( link_section = ".vector_table.exceptions" ) ]
73+ #[ unsafe ( no_mangle) ]
7474pub static EXCEPTIONS : [ Vector ; 14 ] = [
7575 Vector { handler : NMI } ,
7676 Vector { handler : HardFaultTrampoline } , // <- CHANGED!
7777 Vector { handler : MemManage } ,
7878 Vector { handler : BusFault } ,
79- Vector {
80- handler : UsageFault ,
81- } ,
79+ Vector { handler : UsageFault } ,
8280 Vector { reserved : 0 } ,
8381 Vector { reserved : 0 } ,
8482 Vector { reserved : 0 } ,
@@ -90,7 +88,7 @@ pub static EXCEPTIONS: [Vector; 14] = [
9088 Vector { handler : SysTick } ,
9189] ;
9290
93- #[ no_mangle]
91+ #[ unsafe ( no_mangle) ]
9492pub extern "C" fn DefaultExceptionHandler ( ) {
9593 loop { }
9694}
0 commit comments