aes/asm/aes-ppc.pl: add little-endian support.
Submitted by: Marcelo Cerri
This commit is contained in:
parent
8ff8a829b0
commit
c944f81703
@ -45,6 +45,12 @@ if ($flavour =~ /64/) {
|
|||||||
$PUSH ="stw";
|
$PUSH ="stw";
|
||||||
} else { die "nonsense $flavour"; }
|
} else { die "nonsense $flavour"; }
|
||||||
|
|
||||||
|
$LITTLE_ENDIAN=0;
|
||||||
|
if ($flavour =~ /le$/) {
|
||||||
|
die "little-endian is 64-bit only: $flavour" if ($SIZE_T == 4);
|
||||||
|
$LITTLE_ENDIAN=1;
|
||||||
|
}
|
||||||
|
|
||||||
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
|
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
|
||||||
( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
|
( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
|
||||||
( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
|
( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
|
||||||
@ -361,17 +367,61 @@ $code.=<<___;
|
|||||||
bne Lenc_unaligned
|
bne Lenc_unaligned
|
||||||
|
|
||||||
Lenc_unaligned_ok:
|
Lenc_unaligned_ok:
|
||||||
|
___
|
||||||
|
$code.=<<___ if (!$LITTLE_ENDIAN);
|
||||||
lwz $s0,0($inp)
|
lwz $s0,0($inp)
|
||||||
lwz $s1,4($inp)
|
lwz $s1,4($inp)
|
||||||
lwz $s2,8($inp)
|
lwz $s2,8($inp)
|
||||||
lwz $s3,12($inp)
|
lwz $s3,12($inp)
|
||||||
|
___
|
||||||
|
$code.=<<___ if ($LITTLE_ENDIAN);
|
||||||
|
lwz $t0,0($inp)
|
||||||
|
lwz $t1,4($inp)
|
||||||
|
lwz $t2,8($inp)
|
||||||
|
lwz $t3,12($inp)
|
||||||
|
rotlwi $s0,$t0,8
|
||||||
|
rotlwi $s1,$t1,8
|
||||||
|
rotlwi $s2,$t2,8
|
||||||
|
rotlwi $s3,$t3,8
|
||||||
|
rlwimi $s0,$t0,24,0,7
|
||||||
|
rlwimi $s1,$t1,24,0,7
|
||||||
|
rlwimi $s2,$t2,24,0,7
|
||||||
|
rlwimi $s3,$t3,24,0,7
|
||||||
|
rlwimi $s0,$t0,24,16,23
|
||||||
|
rlwimi $s1,$t1,24,16,23
|
||||||
|
rlwimi $s2,$t2,24,16,23
|
||||||
|
rlwimi $s3,$t3,24,16,23
|
||||||
|
___
|
||||||
|
$code.=<<___;
|
||||||
bl LAES_Te
|
bl LAES_Te
|
||||||
bl Lppc_AES_encrypt_compact
|
bl Lppc_AES_encrypt_compact
|
||||||
$POP $out,`$FRAME-$SIZE_T*19`($sp)
|
$POP $out,`$FRAME-$SIZE_T*19`($sp)
|
||||||
|
___
|
||||||
|
$code.=<<___ if ($LITTLE_ENDIAN);
|
||||||
|
rotlwi $t0,$s0,8
|
||||||
|
rotlwi $t1,$s1,8
|
||||||
|
rotlwi $t2,$s2,8
|
||||||
|
rotlwi $t3,$s3,8
|
||||||
|
rlwimi $t0,$s0,24,0,7
|
||||||
|
rlwimi $t1,$s1,24,0,7
|
||||||
|
rlwimi $t2,$s2,24,0,7
|
||||||
|
rlwimi $t3,$s3,24,0,7
|
||||||
|
rlwimi $t0,$s0,24,16,23
|
||||||
|
rlwimi $t1,$s1,24,16,23
|
||||||
|
rlwimi $t2,$s2,24,16,23
|
||||||
|
rlwimi $t3,$s3,24,16,23
|
||||||
|
stw $t0,0($out)
|
||||||
|
stw $t1,4($out)
|
||||||
|
stw $t2,8($out)
|
||||||
|
stw $t3,12($out)
|
||||||
|
___
|
||||||
|
$code.=<<___ if (!$LITTLE_ENDIAN);
|
||||||
stw $s0,0($out)
|
stw $s0,0($out)
|
||||||
stw $s1,4($out)
|
stw $s1,4($out)
|
||||||
stw $s2,8($out)
|
stw $s2,8($out)
|
||||||
stw $s3,12($out)
|
stw $s3,12($out)
|
||||||
|
___
|
||||||
|
$code.=<<___;
|
||||||
b Lenc_done
|
b Lenc_done
|
||||||
|
|
||||||
Lenc_unaligned:
|
Lenc_unaligned:
|
||||||
@ -795,17 +845,61 @@ Lenc_compact_done:
|
|||||||
bne Ldec_unaligned
|
bne Ldec_unaligned
|
||||||
|
|
||||||
Ldec_unaligned_ok:
|
Ldec_unaligned_ok:
|
||||||
|
___
|
||||||
|
$code.=<<___ if (!$LITTLE_ENDIAN);
|
||||||
lwz $s0,0($inp)
|
lwz $s0,0($inp)
|
||||||
lwz $s1,4($inp)
|
lwz $s1,4($inp)
|
||||||
lwz $s2,8($inp)
|
lwz $s2,8($inp)
|
||||||
lwz $s3,12($inp)
|
lwz $s3,12($inp)
|
||||||
|
___
|
||||||
|
$code.=<<___ if ($LITTLE_ENDIAN);
|
||||||
|
lwz $t0,0($inp)
|
||||||
|
lwz $t1,4($inp)
|
||||||
|
lwz $t2,8($inp)
|
||||||
|
lwz $t3,12($inp)
|
||||||
|
rotlwi $s0,$t0,8
|
||||||
|
rotlwi $s1,$t1,8
|
||||||
|
rotlwi $s2,$t2,8
|
||||||
|
rotlwi $s3,$t3,8
|
||||||
|
rlwimi $s0,$t0,24,0,7
|
||||||
|
rlwimi $s1,$t1,24,0,7
|
||||||
|
rlwimi $s2,$t2,24,0,7
|
||||||
|
rlwimi $s3,$t3,24,0,7
|
||||||
|
rlwimi $s0,$t0,24,16,23
|
||||||
|
rlwimi $s1,$t1,24,16,23
|
||||||
|
rlwimi $s2,$t2,24,16,23
|
||||||
|
rlwimi $s3,$t3,24,16,23
|
||||||
|
___
|
||||||
|
$code.=<<___;
|
||||||
bl LAES_Td
|
bl LAES_Td
|
||||||
bl Lppc_AES_decrypt_compact
|
bl Lppc_AES_decrypt_compact
|
||||||
$POP $out,`$FRAME-$SIZE_T*19`($sp)
|
$POP $out,`$FRAME-$SIZE_T*19`($sp)
|
||||||
|
___
|
||||||
|
$code.=<<___ if ($LITTLE_ENDIAN);
|
||||||
|
rotlwi $t0,$s0,8
|
||||||
|
rotlwi $t1,$s1,8
|
||||||
|
rotlwi $t2,$s2,8
|
||||||
|
rotlwi $t3,$s3,8
|
||||||
|
rlwimi $t0,$s0,24,0,7
|
||||||
|
rlwimi $t1,$s1,24,0,7
|
||||||
|
rlwimi $t2,$s2,24,0,7
|
||||||
|
rlwimi $t3,$s3,24,0,7
|
||||||
|
rlwimi $t0,$s0,24,16,23
|
||||||
|
rlwimi $t1,$s1,24,16,23
|
||||||
|
rlwimi $t2,$s2,24,16,23
|
||||||
|
rlwimi $t3,$s3,24,16,23
|
||||||
|
stw $t0,0($out)
|
||||||
|
stw $t1,4($out)
|
||||||
|
stw $t2,8($out)
|
||||||
|
stw $t3,12($out)
|
||||||
|
___
|
||||||
|
$code.=<<___ if (!$LITTLE_ENDIAN);
|
||||||
stw $s0,0($out)
|
stw $s0,0($out)
|
||||||
stw $s1,4($out)
|
stw $s1,4($out)
|
||||||
stw $s2,8($out)
|
stw $s2,8($out)
|
||||||
stw $s3,12($out)
|
stw $s3,12($out)
|
||||||
|
___
|
||||||
|
$code.=<<___;
|
||||||
b Ldec_done
|
b Ldec_done
|
||||||
|
|
||||||
Ldec_unaligned:
|
Ldec_unaligned:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user