提交 89bb96e5 编写于 作者: A Andy Polyakov

vpaes-ppc.pl: fix bug in IV handling and comply with ABI.

上级 b9e87d07
...@@ -304,7 +304,6 @@ Lenc_entry: ...@@ -304,7 +304,6 @@ Lenc_entry:
bl _vpaes_encrypt_preheat bl _vpaes_encrypt_preheat
lvx v0, 0, $inp
neg r8, $inp # prepare for unaligned access neg r8, $inp # prepare for unaligned access
lvsl $keyperm, 0, $key lvsl $keyperm, 0, $key
lvsr $outperm, 0, $out lvsr $outperm, 0, $out
...@@ -488,7 +487,6 @@ Ldec_entry: ...@@ -488,7 +487,6 @@ Ldec_entry:
bl _vpaes_decrypt_preheat bl _vpaes_decrypt_preheat
lvx v0, 0, $inp
neg r8, $inp # prepare for unaligned access neg r8, $inp # prepare for unaligned access
lvsl $keyperm, 0, $key lvsl $keyperm, 0, $key
lvsr $outperm, 0, $out lvsr $outperm, 0, $out
...@@ -545,14 +543,12 @@ Ldec_entry: ...@@ -545,14 +543,12 @@ Ldec_entry:
mfspr r7, 256 mfspr r7, 256
mtspr 256, r6 # preserve all AltiVec registers mtspr 256, r6 # preserve all AltiVec registers
neg r8, r31 # load [potentially unaligned] iv lvx v24, 0, r31 # load [potentially unaligned] iv
li r9, 15 li r9, 15
lvx v24, 0, r31 lvsl $inpperm, 0, r31
lvsr $inpperm, 0, r8 # -ivp
lvx v25, r9, r31 lvx v25, r9, r31
vperm v24, v24, v25, $inpperm vperm v24, v24, v25, $inpperm
lvx v0, 0, $inp
neg r8, $inp # prepare for unaligned access neg r8, $inp # prepare for unaligned access
vxor v7, v7, v7 vxor v7, v7, v7
lvsl $keyperm, 0, $key lvsl $keyperm, 0, $key
...@@ -619,11 +615,12 @@ Lcbc_done: ...@@ -619,11 +615,12 @@ Lcbc_done:
vsel v1, $outhead, v1, $outmask vsel v1, $outhead, v1, $outmask
stvx v1, 0, $out stvx v1, 0, $out
lvsr $outperm, 0, r31 # write [potentially unaligned] iv neg r8, r31 # write [potentially unaligned] iv
lvsl $outperm, 0, r8
li r6, 15 li r6, 15
vnor $outmask, v7, v7 # 0xff..ff vnor $outmask, v7, v7 # 0xff..ff
vperm $outmask, v7, $outmask, $outperm vperm $outmask, v7, $outmask, $outperm
lvx $outhead, 0, $out lvx $outhead, 0, r31
vperm v24, v24, v24, $outperm # rotate vperm v24, v24, v24, $outperm # rotate
vsel v0, $outhead, v24, $outmask vsel v0, $outhead, v24, $outmask
lvx v1, r6, r31 lvx v1, r6, r31
...@@ -647,7 +644,7 @@ ___ ...@@ -647,7 +644,7 @@ ___
} }
{ {
my ($inp,$bits,$out)=map("r$_",(3..5)); my ($inp,$bits,$out)=map("r$_",(3..5));
my $dir="cr3"; my $dir="cr1";
my ($invlo,$invhi,$iptlo,$ipthi,$rcon) = map("v$_",(10..13,24)); my ($invlo,$invhi,$iptlo,$ipthi,$rcon) = map("v$_",(10..13,24));
$code.=<<___; $code.=<<___;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册