Add argument for FFA_ERROR

Add a new field to Interface::Error to pass the contents of w3/x3 for
the FFA_ERROR interface. This is currently only valid when returning
RETRY error for FFA_CONSOLE_LOG, MBZ otherwise.

Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
Change-Id: I8ecfb2057d5cd130c671087941c96342f8074d27
diff --git a/src/lib.rs b/src/lib.rs
index b3a8a53..c87fa90 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -621,6 +621,7 @@
     Error {
         target_info: TargetInfo,
         error_code: FfaError,
+        error_arg: u32,
     },
     Success {
         target_info: u32,
@@ -922,6 +923,7 @@
             FuncId::Error => Self::Error {
                 target_info: (regs[1] as u32).into(),
                 error_code: FfaError::try_from(regs[2] as i32)?,
+                error_arg: regs[3] as u32,
             },
             FuncId::Success32 => Self::Success {
                 target_info: regs[1] as u32,
@@ -1399,9 +1401,11 @@
             Interface::Error {
                 target_info,
                 error_code,
+                error_arg,
             } => {
                 a[1] = u32::from(target_info).into();
                 a[2] = (error_code as u32).into();
+                a[3] = error_arg.into();
             }
             Interface::Success { target_info, args } => {
                 a[1] = target_info.into();
@@ -1847,6 +1851,7 @@
                 vcpu_id: 0,
             },
             error_code,
+            error_arg: 0,
         }
     }
 }