ARM assembly pack: make it Windows-friendly.
[openssl.git] / crypto / sha / asm / sha256-armv4.pl
index e0512b4d411ff15cf44d3dfbafcf3108d27c3ef5..cd01fcb57bb96965ec7051706a530dcb77e5acc4 100644 (file)
@@ -181,7 +181,6 @@ $code=<<___;
 # define __ARM_MAX_ARCH__ 7
 #endif
 
-.text
 #if defined(__thumb2__)
 .syntax unified
 .thumb
@@ -189,6 +188,8 @@ $code=<<___;
 .code   32
 #endif
 
+.text
+
 .type  K256,%object
 .align 5
 K256:
@@ -212,7 +213,11 @@ K256:
 .word  0                               @ terminator
 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
 .LOPENSSL_armcap:
+# ifdef        _WIN32
+.word  OPENSSL_armcap_P
+# else
 .word  OPENSSL_armcap_P-.Lsha256_block_data_order
+# endif
 #endif
 .align 5
 
@@ -227,10 +232,12 @@ sha256_block_data_order:
 #endif
 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
        ldr     r12,.LOPENSSL_armcap
+# if !defined(_WIN32)
        ldr     r12,[r3,r12]            @ OPENSSL_armcap_P
-#ifdef __APPLE__
+# endif
+# if defined(__APPLE__) || defined(_WIN32)
        ldr     r12,[r12]
-#endif
+# endif
        tst     r12,#ARMV8_SHA256
        bne     .LARMv8
        tst     r12,#ARMV7_NEON
@@ -598,14 +605,15 @@ my ($ABCD,$EFGH,$abcd)=map("q$_",(0..2));
 my @MSG=map("q$_",(8..11));
 my ($W0,$W1,$ABCD_SAVE,$EFGH_SAVE)=map("q$_",(12..15));
 my $Ktbl="r3";
+my $_byte = ($flavour =~ /win/ ? "DCB" : ".byte");
 
 $code.=<<___;
 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
 
 # if defined(__thumb2__)
-#  define INST(a,b,c,d)        .byte   c,d|0xc,a,b
+#  define INST(a,b,c,d)        $_byte  c,d|0xc,a,b
 # else
-#  define INST(a,b,c,d)        .byte   a,b,c,d
+#  define INST(a,b,c,d)        $_byte  a,b,c,d
 # endif
 
 .type  sha256_block_data_order_armv8,%function