summaryrefslogtreecommitdiffstats
path: root/BaseTools
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2024-07-24 23:33:08 +0200
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2024-07-25 14:41:09 +0000
commitb1bce5e5649840159d54eb8bffa4fa3d4fae8ee6 (patch)
tree555ddb5602c085d1cc7635aa4701396c8685fb9d /BaseTools
parent43130ae4034cdcf0fa0ff928105fbe3e52d9f628 (diff)
downloadedk2-b1bce5e5649840159d54eb8bffa4fa3d4fae8ee6.tar.gz
edk2-b1bce5e5649840159d54eb8bffa4fa3d4fae8ee6.tar.bz2
edk2-b1bce5e5649840159d54eb8bffa4fa3d4fae8ee6.zip
ArmPkg/ArmMonitorLib: Implement SMCCC protocol correctly and directly
The SMCCC protocol stipulates the following: - on AARCH64, 18 arguments can be passed, and 18 values can be returned, via registers X0-x17; - on ARM, 8 arguments can be passed, and 8 values can be returned. This makes ArmSmcLib and ArmHvcLib as implemented currently unsuitable for use with SMCCC services in general, although for PSCI in particular, they work fine. The dependency on both ArmSmcLib and ArmHvcLib is also impractical because it requires every platform that consumes ArmMonitorLib to provide resolutions for each, even though most platforms will only ever need one of these (and the choice is made at compile time) So let's drop these dependencies, and re-implement the asm helpers from scratch. Note that the only difference is the actual instruction used -HVC vs SMC- and so all other code can be shared. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'BaseTools')
0 files changed, 0 insertions, 0 deletions