diff options
author | Achin Gupta <achin.gupta@arm.com> | 2021-02-19 12:05:55 +0530 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2021-02-23 15:40:37 +0000 |
commit | af0c597e983318e9cfa408eff6810a5c8fb9ca77 (patch) | |
tree | b95edfd89957325fecbc3601490636d690910da7 /ArmPkg/Library/ArmSvcLib/AArch64 | |
parent | 37ef4bb1a700a83a1c7acb26bd0418bf43775db2 (diff) | |
download | edk2-af0c597e983318e9cfa408eff6810a5c8fb9ca77.zip edk2-af0c597e983318e9cfa408eff6810a5c8fb9ca77.tar.gz edk2-af0c597e983318e9cfa408eff6810a5c8fb9ca77.tar.bz2 |
ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
The Arm SMC calling convention standard v1.2 allows 8 input and output
parameter registers. The FF-A specification relies on this
communication. This patch extends the number of output registers
returned by ArmCallSvc() to match this convention.
Signed-off-by: Achin Gupta <achin.gupta@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'ArmPkg/Library/ArmSvcLib/AArch64')
-rw-r--r-- | ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S index ee265f9..1a7c10c 100644 --- a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S +++ b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S @@ -33,9 +33,11 @@ ASM_PFX(ArmCallSvc): ldr x9, [sp, #16]
// Store the SVC returned values into the ARM_SVC_ARGS structure.
- // A SVC call can return up to 4 values - we do not need to store back x4-x7.
+ // A SVC call can return up to 8 values
stp x0, x1, [x9, #0]
stp x2, x3, [x9, #16]
+ stp x4, x5, [x9, #32]
+ stp x6, x7, [x9, #48]
mov x0, x9
|