modes/asm/ghash-alpha.pl: make it work with older assembler for real.
authorAndy Polyakov <appro@openssl.org>
Sat, 9 Nov 2013 10:41:59 +0000 (11:41 +0100)
committerAndy Polyakov <appro@openssl.org>
Sat, 9 Nov 2013 10:41:59 +0000 (11:41 +0100)
PR: 3165

crypto/modes/asm/ghash-alpha.pl

index f47c85e..80fefbd 100644 (file)
@@ -254,15 +254,6 @@ $code=<<___;
 
 .text
 
-.align 4
-rem_4bit:
-       .quad   0x0000<<48, 0x1C20<<48, 0x3840<<48, 0x2460<<48
-       .quad   0x7080<<48, 0x6CA0<<48, 0x48C0<<48, 0x54E0<<48
-       .quad   0xE100<<48, 0xFD20<<48, 0xD940<<48, 0xC560<<48
-       .quad   0x9180<<48, 0x8DA0<<48, 0xA9C0<<48, 0xB5E0<<48
-.ascii "GHASH for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
-.align 4
-
 .set   noat
 .set   noreorder
 .globl gcm_gmult_4bit
@@ -275,8 +266,8 @@ gcm_gmult_4bit:
        ldq     $Xlo,8($Xi)
        ldq     $Xhi,0($Xi)
 
-       br      $rem_4bit,.Lpic1
-.Lpic1:        lda     $rem_4bit,.Lpic1-rem_4bit($rem_4bit)
+       bsr     $t0,picmeup
+       nop
 ___
 
        &loop();
@@ -350,8 +341,8 @@ gcm_ghash_4bit:
        ldq     $Xhi,0($Xi)
        ldq     $Xlo,8($Xi)
 
-       br      $rem_4bit,.Lpic2
-.Lpic2:        lda     $rem_4bit,.Lpic2-rem_4bit($rem_4bit)
+       bsr     $t0,picmeup
+       nop
 
 .Louter:
        extql   $inhi,$inp,$inhi
@@ -443,6 +434,25 @@ $code.=<<___;
        lda     sp,32(sp)
        ret     (ra)
 .end   gcm_ghash_4bit
+
+.align 4
+.ent   picmeup
+picmeup:
+       .FRame  sp,0,$t0
+       .prologue 0
+       br      $rem_4bit,.Lpic
+.Lpic: lda     $rem_4bit,12($rem_4bit)
+       ret     ($t0)
+.end   picmeup
+       nop
+rem_4bit:
+       .long   0,0x0000<<16, 0,0x1C20<<16, 0,0x3840<<16, 0,0x2460<<16
+       .long   0,0x7080<<16, 0,0x6CA0<<16, 0,0x48C0<<16, 0,0x54E0<<16
+       .long   0,0xE100<<16, 0,0xFD20<<16, 0,0xD940<<16, 0,0xC560<<16
+       .long   0,0x9180<<16, 0,0x8DA0<<16, 0,0xA9C0<<16, 0,0xB5E0<<16
+.ascii "GHASH for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
+.align 4
+
 ___
 $output=shift and open STDOUT,">$output";
 print $code;