vmbase/rialto: Read ESR_EL1 with read_sysreg!()
Use the helper macro instead of building the asm!() manually. This
effectively adds options(nomem, nostack, preserves_flags) to the asm!
but the overall change shouldn't have noticeable effects. However, it
removes the use of unsafe from those functions.
Test: atest rialto_test vmbase_example.integration_test
Change-Id: I2b98082972169f1f1dc9a9824ce7fd7d25c79f3f
diff --git a/rialto/src/exceptions.rs b/rialto/src/exceptions.rs
index 61f7846..3c12c25 100644
--- a/rialto/src/exceptions.rs
+++ b/rialto/src/exceptions.rs
@@ -14,8 +14,7 @@
//! Exception handlers.
-use core::arch::asm;
-use vmbase::{console::emergency_write_str, eprintln, power::reboot};
+use vmbase::{console::emergency_write_str, eprintln, power::reboot, read_sysreg};
#[no_mangle]
extern "C" fn sync_exception_current() {
@@ -71,9 +70,6 @@
#[inline]
fn print_esr() {
- let mut esr: u64;
- unsafe {
- asm!("mrs {esr}, esr_el1", esr = out(reg) esr);
- }
+ let esr = read_sysreg!("esr_el1");
eprintln!("esr={:#08x}", esr);
}
diff --git a/vmbase/example/src/exceptions.rs b/vmbase/example/src/exceptions.rs
index 0522013..5d7768a 100644
--- a/vmbase/example/src/exceptions.rs
+++ b/vmbase/example/src/exceptions.rs
@@ -14,8 +14,7 @@
//! Exception handlers.
-use core::arch::asm;
-use vmbase::{eprintln, power::reboot};
+use vmbase::{eprintln, power::reboot, read_sysreg};
#[no_mangle]
extern "C" fn sync_exception_current(_elr: u64, _spsr: u64) {
@@ -71,9 +70,6 @@
#[inline]
fn print_esr() {
- let mut esr: u64;
- unsafe {
- asm!("mrs {esr}, esr_el1", esr = out(reg) esr);
- }
+ let esr = read_sysreg!("esr_el1");
eprintln!("esr={:#08x}", esr);
}