aarch64: Enable building the aarch64 cipher assembly for windows

Authored by Martin Storsjö <martin@martin.st> on Mar 22 2018, 10:32 PM.


aarch64: Enable building the aarch64 cipher assembly for windows

* cipher/asm-common-aarch64.h: New.
* cipher/camellia-aarch64.S: Use ELF macro, use x19 instead of x18.
* cipher/chacha20-aarch64.S: Use ELF macro, don't use GOT on windows.
* cipher/cipher-gcm-armv8-aarch64-ce.S: Use ELF macro.
* cipher/rijndael-aarch64.S: Use ELF macro.
* cipher/rijndael-armv8-aarch64-ce.S: Use ELF macro.
* cipher/sha1-armv8-aarch64-ce.S: Use ELF macro.
* cipher/sha256-armv8-aarch64-ce.S: Use ELF macro.
* cipher/twofish-aarch64.S: Use ELF macro.
* configure.ac: Don't require .size and .type in aarch64 assembly check.

Don't require .type and .size in configure; we can make
them optional via a preprocessor macro.

This is mostly a mechanical change, wrapping the .type and .size
directives in an ELF() macro, with two actual manual changes:
(when targeting windows):

  • Don't load global symbols via a GOT (in chacha20)
  • Don't use the x18 register (in camellia); back up and restore x19 in the prologue/epilogue and use that instead.

x18 is a platform specific register; on linux, it's free to be used
by user code, while it's reserved for platform use on windows and
darwin. Always use x19 instead of x18 for consistency.

  • Signed-off-by: Martin Storsjö <martin@martin.st>


jukiviliMar 28 2018, 7:37 PM
rC4e1b628f4926: aarch64: camellia: Only use the lower 32 bit of an int parameter