ARM assembly pack: make it Windows-friendly.
[openssl.git] / crypto / bn / asm / armv4-mont.pl
index b4f6c06633b4144de7cfa6c370edd8cc3debb6d4..7e0a4d814597c865687806907cfcca47a1004788 100644 (file)
@@ -97,7 +97,6 @@ $_num="$num,#15*4";   $_bpend=$_num;
 $code=<<___;
 #include "arm_arch.h"
 
-.text
 #if defined(__thumb2__)
 .syntax        unified
 .thumb
@@ -105,10 +104,16 @@ $code=<<___;
 .code  32
 #endif
 
+.text
+
 #if __ARM_MAX_ARCH__>=7
 .align 5
 .LOPENSSL_armcap:
+# ifdef        _WIN32
+.word  OPENSSL_armcap_P
+# else
 .word  OPENSSL_armcap_P-.Lbn_mul_mont
+# endif
 #endif
 
 .global        bn_mul_mont
@@ -122,12 +127,14 @@ bn_mul_mont:
 #if __ARM_MAX_ARCH__>=7
        tst     ip,#7
        bne     .Lialu
-       adr     r0,.Lbn_mul_mont
-       ldr     r2,.LOPENSSL_armcap
+       ldr     r0,.LOPENSSL_armcap
+#if !defined(_WIN32)
+       adr     r2,.Lbn_mul_mont
        ldr     r0,[r0,r2]
-#ifdef __APPLE__
+# endif
+# if defined(__APPLE__) || defined(_WIN32)
        ldr     r0,[r0]
-#endif
+# endif
        tst     r0,#ARMV7_NEON          @ NEON available?
        ldmia   sp, {r0,r2}
        beq     .Lialu