diff --git a/os/src/loader.rs b/os/src/loader.rs index ac017e83..d4ae5731 100644 --- a/os/src/loader.rs +++ b/os/src/loader.rs @@ -57,7 +57,7 @@ pub fn load_apps() { core::slice::from_raw_parts(num_app_ptr.add(1), num_app + 1) }; // clear i-cache first - unsafe { llvm_asm!("fence.i" :::: "volatile"); } + unsafe { asm!("fence.i"); } // load apps for i in 0..num_app { let base_i = get_base_i(i); diff --git a/os/src/main.rs b/os/src/main.rs index 9bef1444..fbd6fff6 100644 --- a/os/src/main.rs +++ b/os/src/main.rs @@ -1,7 +1,7 @@ #![no_std] #![no_main] #![feature(global_asm)] -#![feature(llvm_asm)] +#![feature(asm)] #![feature(panic_info_message)] #[macro_use] diff --git a/os/src/sbi.rs b/os/src/sbi.rs index 36e15fcc..276c199d 100644 --- a/os/src/sbi.rs +++ b/os/src/sbi.rs @@ -14,11 +14,12 @@ const SBI_SHUTDOWN: usize = 8; fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize { let mut ret; unsafe { - llvm_asm!("ecall" - : "={x10}" (ret) - : "{x10}" (arg0), "{x11}" (arg1), "{x12}" (arg2), "{x17}" (which) - : "memory" - : "volatile" + asm!( + "ecall", + inlateout("x10") arg0 => ret, + in("x11") arg1, + in("x12") arg2, + in("x17") which, ); } ret