Minor MIPS III/IV tune-up.
[openssl.git] / crypto / bn / asm / x86w32.asm
index 0e4452dfa94e9c32bce155bdefb175ca78aee1c2..957d71e3b18920c472d498dee62e0f64cefa9725 100644 (file)
@@ -6,16 +6,16 @@ F_TEXT        SEGMENT  WORD USE16 PUBLIC 'CODE'
 F_TEXT ENDS
 _DATA  SEGMENT  WORD USE16 PUBLIC 'DATA'
 _DATA  ENDS
-CONST  SEGMENT  WORD USE16 PUBLIC 'CONST'
-CONST  ENDS
+_CONST SEGMENT  WORD USE16 PUBLIC 'CONST'
+_CONST ENDS
 _BSS   SEGMENT  WORD USE16 PUBLIC 'BSS'
 _BSS   ENDS
-DGROUP GROUP   CONST, _BSS, _DATA
+DGROUP GROUP   _CONST, _BSS, _DATA
        ASSUME DS: DGROUP, SS: DGROUP
 F_TEXT      SEGMENT
        ASSUME  CS: F_TEXT
-       PUBLIC  _bn_mul_add_word
-_bn_mul_add_word       PROC FAR
+       PUBLIC  _bn_mul_add_words
+_bn_mul_add_words      PROC FAR
 ; Line 58
        push    bp
        push    bx
@@ -89,7 +89,7 @@ $L555:
        mov     bp,WORD PTR [bp+26]     ; load num
        and     bp,3
        dec     bp
-       js      $L547
+       js      $L547m
 
        mov     eax,ecx
        mul     DWORD PTR es:[bx]       ; w* *a
@@ -100,7 +100,7 @@ $L555:
        mov     DWORD PTR ds:[di],eax
        mov     esi,edx
        dec     bp
-       js      $L547                   ; Note that we are now testing for -1
+       js      $L547m                  ; Note that we are now testing for -1
        ;
        mov     eax,ecx
        mul     DWORD PTR es:[bx+4]     ; w* *a
@@ -111,7 +111,7 @@ $L555:
        mov     DWORD PTR ds:[di+4],eax
        mov     esi,edx
        dec     bp
-       js      $L547
+       js      $L547m
        ;
        mov     eax,ecx
        mul     DWORD PTR es:[bx+8]     ; w* *a
@@ -121,7 +121,7 @@ $L555:
        adc     edx,0
        mov     DWORD PTR ds:[di+8],eax
        mov     esi,edx
-$L547:
+$L547m:
        mov     eax,esi
        mov     edx,esi
        shr     edx,16
@@ -133,10 +133,10 @@ $L547:
        pop     bp
        ret     
        nop     
+_bn_mul_add_words      ENDP
 
-_bn_mul_add_word       ENDP
-       PUBLIC  _bn_mul_word
-_bn_mul_word   PROC FAR
+       PUBLIC  _bn_mul_words
+_bn_mul_words  PROC FAR
 ; Line 76
        push    bp
        push    bx
@@ -206,7 +206,7 @@ $L764:
        pop     bp
        ret     
        nop     
-_bn_mul_word   ENDP
+_bn_mul_words  ENDP
        PUBLIC  _bn_sqr_words
 _bn_sqr_words  PROC FAR
 ; Line 92
@@ -285,8 +285,8 @@ $L645:
        pop     bx
        pop     bp
        ret     
-
 _bn_sqr_words  ENDP
+
        PUBLIC  _bn_div64
 _bn_div64      PROC FAR
        push    bp
@@ -299,5 +299,62 @@ _bn_div64  PROC FAR
        pop     bp
        ret     
 _bn_div64      ENDP
+
+       PUBLIC  _bn_add_words
+_bn_add_words  PROC FAR
+; Line 58
+       push    bp
+       push    bx
+       push    esi
+       push    di
+       push    ds
+       push    es
+       mov     bp,sp
+;      w = 28
+;      num = 26
+;      ap = 22
+;      rp = 18
+       xor     esi,esi                 ;c=0;
+       mov     bx,WORD PTR [bp+18]     ; load low r
+       mov     si,WORD PTR [bp+22]     ; load a
+       mov     es,WORD PTR [bp+24]     ; load a
+       mov     di,WORD PTR [bp+26]     ; load b
+       mov     ds,WORD PTR [bp+28]     ; load b
+
+       mov     dx,WORD PTR [bp+30]     ; load num
+       xor     ecx,ecx
+       dec     dx
+       js      $L547a
+
+$L5477:
+       mov     eax,DWORD PTR es:[si]   ; *a
+       add     eax,ecx
+       mov     ecx,0
+       adc     ecx,0
+       add     si,4                    ; a++
+       add     eax,DWORD PTR ds:[di]   ; + *b
+       adc     ecx,0
+       mov     ds,WORD PTR [bp+20]
+       add     di,4
+       mov     DWORD PTR ds:[bx],eax
+       mov     ds,WORD PTR [bp+28]
+       add     bx,4
+       dec     dx
+       js      $L547a                  ; Note that we are now testing for -1
+       jmp     $L5477
+       ;
+$L547a:
+       mov     eax,ecx
+       mov     edx,ecx
+       shr     edx,16
+       pop     es
+       pop     ds
+       pop     di
+       pop     esi
+       pop     bx
+       pop     bp
+       ret     
+       nop     
+_bn_add_words  ENDP
 F_TEXT ENDS
 END