vcipher instructions are generated by ppc-xlate.pl in order to keep
compatibility with older compilers.
---
crypto/perlasm/ppc-xlate.pl | 49 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
index fc84766..60c4a4e 100755
--- a/crypto/perlasm/ppc-xlate.pl
+++ b/crypto/perlasm/ppc-xlate.pl
@@ -10,6 +10,32 @@ my %GLOBALS;
my $dotinlocallabels=($flavour=~/linux/)?1:0;
################################################################
+# auxiliary function to produce a sequence of bytes based on a
+# sequence of pairs with value and number of bits.
+#
+# for example:
+# bin(0x1, 4, 0x8, 4, 0xf, 8)
+#
+# produces:
+# .byte 0x18,0x0f
+#
+################################################################
+sub bin
+{
+ my $ret = "";
+ my $bits = "";
+ for (my $i = 0; $i < $#_; $i += 2) {
+ my ($value, $len) = @_[$i, $i + 1];
+ my $mask = (1 << $len) - 1;
+ $bits .= sprintf "%0*b", $len, ($mask & $value);
+ }
+ my @bytes = (map {
+ sprintf "0x%02x", eval("0b" . $_ . ("0" x (8 - length($_))));
+ } ($bits =~ m/.{1,8}/g));
+ "\t.byte " . join(",", @bytes);
+}
+
+################################################################
# directives which need special treatment on different platforms
################################################################
my $globl = sub {
@@ -144,6 +170,29 @@ my $extrdi = sub {
" rldicl $ra,$rs,$b,$n";
};
+################################################################
+# vcipher instructions
+################################################################
+
+#
+# value: 4 VTR VTA VTB op
+# |-----|----|----|----|----------|
+# bit: 0 6 11 16 21 31
+#
+# vcipher: op=1288
+# vcipherlast: op=1289
+# vncipher: op=1352
+# vncipherlast: op=1353
+#
+sub vcipher_op {
+ my ($unused, $vtr, $vra, $vrb, $op) = @_;
+ bin(4, 6, $vtr, 5, $vra, 5, $vrb, 5, $op, 11);
+}
+my $vcipher = sub { vcipher_op @_, 1288 };
+my $vcipherlast = sub { vcipher_op @_, 1289 };
+my $vncipher = sub { vcipher_op @_, 1352 };
+my $vncipherlast = sub { vcipher_op @_, 1353 };
+
while($line=<>) {
$line =~ s|[#!;].*$||; # get rid of asm-style comments...
--
1.7.12
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [email protected]