exceptions: Pass ELR & SPSR to handlers with AAPCS

As save_volatile_to_stack already populates X0 and X1 with (resp.)
ELR_EL1 and SPSR_EL1 right before current_exception_{sp0,spx} call the
handlers, we might as well make them available to the handlers by
updating their type.

Test: m pvmfw
Change-Id: I305ae1628f2f7da4176801419f90feb1c9a99765
diff --git a/pvmfw/src/exceptions.rs b/pvmfw/src/exceptions.rs
index 61f7846..0e637ac 100644
--- a/pvmfw/src/exceptions.rs
+++ b/pvmfw/src/exceptions.rs
@@ -18,52 +18,52 @@
 use vmbase::{console::emergency_write_str, eprintln, power::reboot};
 
 #[no_mangle]
-extern "C" fn sync_exception_current() {
+extern "C" fn sync_exception_current(_elr: u64, _spsr: u64) {
     emergency_write_str("sync_exception_current\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn irq_current() {
+extern "C" fn irq_current(_elr: u64, _spsr: u64) {
     emergency_write_str("irq_current\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn fiq_current() {
+extern "C" fn fiq_current(_elr: u64, _spsr: u64) {
     emergency_write_str("fiq_current\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn serr_current() {
+extern "C" fn serr_current(_elr: u64, _spsr: u64) {
     emergency_write_str("serr_current\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn sync_lower() {
+extern "C" fn sync_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("sync_lower\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn irq_lower() {
+extern "C" fn irq_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("irq_lower\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn fiq_lower() {
+extern "C" fn fiq_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("fiq_lower\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn serr_lower() {
+extern "C" fn serr_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("serr_lower\n");
     print_esr();
     reboot();
diff --git a/vmbase/example/src/exceptions.rs b/vmbase/example/src/exceptions.rs
index 61f7846..0e637ac 100644
--- a/vmbase/example/src/exceptions.rs
+++ b/vmbase/example/src/exceptions.rs
@@ -18,52 +18,52 @@
 use vmbase::{console::emergency_write_str, eprintln, power::reboot};
 
 #[no_mangle]
-extern "C" fn sync_exception_current() {
+extern "C" fn sync_exception_current(_elr: u64, _spsr: u64) {
     emergency_write_str("sync_exception_current\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn irq_current() {
+extern "C" fn irq_current(_elr: u64, _spsr: u64) {
     emergency_write_str("irq_current\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn fiq_current() {
+extern "C" fn fiq_current(_elr: u64, _spsr: u64) {
     emergency_write_str("fiq_current\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn serr_current() {
+extern "C" fn serr_current(_elr: u64, _spsr: u64) {
     emergency_write_str("serr_current\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn sync_lower() {
+extern "C" fn sync_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("sync_lower\n");
     print_esr();
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn irq_lower() {
+extern "C" fn irq_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("irq_lower\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn fiq_lower() {
+extern "C" fn fiq_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("fiq_lower\n");
     reboot();
 }
 
 #[no_mangle]
-extern "C" fn serr_lower() {
+extern "C" fn serr_lower(_elr: u64, _spsr: u64) {
     emergency_write_str("serr_lower\n");
     print_esr();
     reboot();