1111#![ deny( warnings) ]
1212#![ no_std]
1313#![ no_main]
14- #![ feature( panic_info_message) ]
1514
1615use core:: arch:: global_asm;
1716use log:: * ;
@@ -26,27 +25,27 @@ global_asm!(include_str!("entry.asm"));
2625
2726/// clear BSS segment
2827pub fn clear_bss ( ) {
29- extern "C" {
30- fn sbss ( ) ;
31- fn ebss ( ) ;
28+ unsafe extern "C" {
29+ safe fn sbss ( ) ;
30+ safe fn ebss ( ) ;
3231 }
3332 ( sbss as usize ..ebss as usize ) . for_each ( |a| unsafe { ( a as * mut u8 ) . write_volatile ( 0 ) } ) ;
3433}
3534
3635/// the rust entry-point of os
37- #[ no_mangle]
36+ #[ unsafe ( no_mangle) ]
3837pub fn rust_main ( ) -> ! {
39- extern "C" {
40- fn stext ( ) ; // begin addr of text segment
41- fn etext ( ) ; // end addr of text segment
42- fn srodata ( ) ; // start addr of Read-Only data segment
43- fn erodata ( ) ; // end addr of Read-Only data ssegment
44- fn sdata ( ) ; // start addr of data segment
45- fn edata ( ) ; // end addr of data segment
46- fn sbss ( ) ; // start addr of BSS segment
47- fn ebss ( ) ; // end addr of BSS segment
48- fn boot_stack_lower_bound ( ) ; // stack lower bound
49- fn boot_stack_top ( ) ; // stack top
38+ unsafe extern "C" {
39+ safe fn stext ( ) ; // begin addr of text segment
40+ safe fn etext ( ) ; // end addr of text segment
41+ safe fn srodata ( ) ; // start addr of Read-Only data segment
42+ safe fn erodata ( ) ; // end addr of Read-Only data ssegment
43+ safe fn sdata ( ) ; // start addr of data segment
44+ safe fn edata ( ) ; // end addr of data segment
45+ safe fn sbss ( ) ; // start addr of BSS segment
46+ safe fn ebss ( ) ; // end addr of BSS segment
47+ safe fn boot_stack_lower_bound ( ) ; // stack lower bound
48+ safe fn boot_stack_top ( ) ; // stack top
5049 }
5150 clear_bss ( ) ;
5251 logging:: init ( ) ;
0 commit comments