Use Perl to generate bsaes-armv8.S
authorTom Cosgrove <tom.cosgrove@arm.com>
Thu, 17 Jun 2021 11:21:23 +0000 (12:21 +0100)
committerTomas Mraz <tomas@openssl.org>
Wed, 9 Mar 2022 16:50:03 +0000 (17:50 +0100)
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14592)

crypto/aes/asm/bsaes-armv8.pl [moved from crypto/aes/asm/bsaes-armv8.S with 98% similarity]
crypto/aes/build.info

similarity index 98%
rename from crypto/aes/asm/bsaes-armv8.S
rename to crypto/aes/asm/bsaes-armv8.pl
index 27b2ff384df20ee1c9fe45514f5b5961fd2205dc..5270ca7c62872d4fa6bd4c0073ec3e6ed9128eb9 100644 (file)
@@ -1,3 +1,37 @@
+#!/usr/bin/env perl
+# Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use strict;
+
+my $output = $#ARGV >= 0 && $ARGV[$#ARGV] =~ m|\.\w+$| ? pop : undef;
+my $flavour = $#ARGV >= 0 && $ARGV[0] !~ m|\.| ? shift : undef;
+my $xlate;
+
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1;
+( $xlate="${dir}arm-xlate.pl" and -f $xlate  ) or
+( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate ) or
+die "can't locate arm-xlate.pl";
+
+open OUT,"| \"$^X\" $xlate $flavour $output";
+*STDOUT=*OUT;
+
+my $code = data();
+print $code;
+
+close STDOUT or die "error closing STDOUT: $!"; # enforce flush
+
+sub data
+{
+    local $/;
+    return <DATA>;
+}
+
+__END__
 // Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
 //
 // Licensed under the OpenSSL license (the "License").  You may not use
 
 .text
 
+.extern AES_cbc_encrypt
+.extern AES_encrypt
+.extern AES_decrypt
+
 .type   _bsaes_decrypt8,%function
 .align  4
 // On entry:
@@ -981,7 +1019,13 @@ _bsaes_key_convert:
 //   No output registers, usual AAPCS64 register preservation
 ossl_bsaes_cbc_encrypt:
         cmp     x2, #128
+#ifdef __APPLE__
+        bhs     .Lcbc_do_bsaes
+        b       AES_cbc_encrypt
+.Lcbc_do_bsaes:
+#else
         blo     AES_cbc_encrypt
+#endif
 
         // it is up to the caller to make sure we are called with enc == 0
 
index 36d29c699c7b26325388da1fb0a30911b7df76aa..c364eec55d15d3a6647dce115c26b91a2d3180ea 100644 (file)
@@ -80,7 +80,7 @@ IF[{- !$disabled{module} && !$disabled{shared} -}]
 ENDIF
 
 GENERATE[aes-ia64.s]=asm/aes-ia64.S
-GENERATE[bsaes-armv8.S]=asm/bsaes-armv8.S
+GENERATE[bsaes-armv8.S]=asm/bsaes-armv8.pl
 
 GENERATE[aes-586.s]=asm/aes-586.pl
 DEPEND[aes-586.s]=../perlasm/x86asm.pl