[crypto] Add AES acceleration using the Arm Cryptographic Extensions
Implement AES hardware acceleration for AArch64 using the AES subset
of the Cryptographic Extensions. All supported runtime environments
already allow for use of the SIMD/FP registers, and so the only
required compiler quirk is to annotate the functions as being
permitted to emit the AES instructions.
Feature detection relies upon the ability to read the ID_AA64ISAR0_EL1
system register. This works as expected in all supported runtime
environments:
- As a UEFI binary, we are running in a real EL1 and so can just
read the system register for the current (and only active) core
- As a Linux userspace binary running in EL0, the kernel (since
4.11) will emulate the read to report the subset of features that
are supported by all online cores
- As a Linux userspace binary run via QEMU's binary translation,
QEMU (since 4.0.0) will similarly emulate the read to report the
features supported by the selected CPU model
Signed-off-by: Michael Brown <mcb30@ipxe.org>
iPXE is the leading open source network boot firmware. It provides a full PXE implementation enhanced with additional features such as:
boot from a web server via HTTP or HTTPS,
boot from an iSCSI, FCoE, or AoE SAN,
control the boot process with a script,
You can use iPXE to replace the existing PXE ROM on your network card, or you can chainload into iPXE to obtain the features of iPXE without the hassle of reflashing.
iPXE is free, open-source software licensed under the GNU GPL (with some portions under GPL-compatible licences).
You can download the rolling release binaries (built from the latest commit), or use the most recent stable release.
For full documentation, visit the iPXE website.