Commit eb77e888 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

SPARCv9 assembly pack: unify build rules and argument handling.



Make all scripts produce .S, make interpretation of $(CFLAGS)
pre-processor's responsibility, start accepting $(PERLASM_SCHEME).
[$(PERLASM_SCHEME) is redundant in this case, because there are
no deviataions between Solaris and Linux assemblers. This is
purely to unify .pl->.S handling across all targets.]

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent b76998b8
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -191,14 +191,14 @@
    sparcv9_asm => {
	template	=> 1,
	cpuid_asm_src   => "sparcv9cap.c sparccpuid.S",
	bn_asm_src      => "asm/sparcv8plus.S sparcv9-mont.s sparcv9a-mont.s vis3-mont.s sparct4-mont.S sparcv9-gf2m.S",
	bn_asm_src      => "asm/sparcv8plus.S sparcv9-mont.S sparcv9a-mont.S vis3-mont.S sparct4-mont.S sparcv9-gf2m.S",
	ec_asm_src      => "ecp_nistz256.c ecp_nistz256-sparcv9.S",
	des_asm_src     => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.s",
	aes_asm_src     => "aes_core.c aes_cbc.c aes-sparcv9.s aest4-sparcv9.s",
	des_asm_src     => "des_enc-sparc.S fcrypt_b.c dest4-sparcv9.S",
	aes_asm_src     => "aes_core.c aes_cbc.c aes-sparcv9.S aest4-sparcv9.S",
	md5_asm_src     => "md5-sparcv9.S",
	sha1_asm_src    => "sha1-sparcv9.S sha256-sparcv9.S sha512-sparcv9.S",
	cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.s",
	modes_asm_src   => "ghash-sparcv9.s",
	cmll_asm_src    => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.S",
	modes_asm_src   => "ghash-sparcv9.S",
	poly1305_asm_src=> "poly1305-sparcv9.S",
	perlasm_scheme	=> "void"
    },
+4 −4
Original line number Diff line number Diff line
@@ -66,10 +66,10 @@ aesni-sha256-x86_64.s: asm/aesni-sha256-x86_64.pl
aesni-mb-x86_64.s:	asm/aesni-mb-x86_64.pl
	$(PERL) asm/aesni-mb-x86_64.pl $(PERLASM_SCHEME) > $@

aes-sparcv9.s: asm/aes-sparcv9.pl
	$(PERL) asm/aes-sparcv9.pl $(CFLAGS) > $@
aest4-sparcv9.s: asm/aest4-sparcv9.pl ../perlasm/sparcv9_modes.pl
	$(PERL) asm/aest4-sparcv9.pl $(CFLAGS) > $@
aes-sparcv9.S: asm/aes-sparcv9.pl
	$(PERL) asm/aes-sparcv9.pl $(PERLASM_SCHEME) $@
aest4-sparcv9.S: asm/aest4-sparcv9.pl ../perlasm/sparcv9_modes.pl
	$(PERL) asm/aest4-sparcv9.pl $(PERLASM_SCHEME) $@

aes-ppc.s:	asm/aes-ppc.pl
	$(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
+10 −7
Original line number Diff line number Diff line
@@ -30,10 +30,11 @@
# optimal decrypt procedure]. Compared to GNU C generated code both
# procedures are more than 60% faster:-)

$bits=32;
for (@ARGV)	{ $bits=64 if (/\-m64/ || /\-xarch\=v9/); }
if ($bits==64)	{ $bias=2047; $frame=192; }
else		{ $bias=0;    $frame=112; }
$output = pop;
open STDOUT,">$output";

$frame="STACK_FRAME";
$bias="STACK_BIAS";
$locals=16;

$acc0="%l0";
@@ -74,11 +75,13 @@ sub _data_word()
    while(defined($i=shift)) { $code.=sprintf"\t.long\t0x%08x,0x%08x\n",$i,$i; }
}

$code.=<<___ if ($bits==64);
$code.=<<___;
#include "sparc_arch.h"

#ifdef  __arch64__
.register	%g2,#scratch
.register	%g3,#scratch
___
$code.=<<___;
#endif
.section	".text",#alloc,#execinstr

.align	256
+7 −4
Original line number Diff line number Diff line
@@ -68,7 +68,8 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
push(@INC,"${dir}","${dir}../../perlasm");
require "sparcv9_modes.pl";

&asm_init(@ARGV);
$output = pop;
open STDOUT,">$output";

$::evp=1;	# if $evp is set to 0, script generates module with
# AES_[en|de]crypt, AES_set_[en|de]crypt_key and AES_cbc_encrypt entry
@@ -83,12 +84,14 @@ $::evp=1; # if $evp is set to 0, script generates module with
{
my ($inp,$out,$key,$rounds,$tmp,$mask)=map("%o$_",(0..5));

$code.=<<___ if ($::abibits==64);
$code.=<<___;
#include "sparc_arch.h"

#ifdef	__arch64__
.register	%g2,#scratch
.register	%g3,#scratch
#endif

___
$code.=<<___;
.text

.globl	aes_t4_encrypt
+3 −3
Original line number Diff line number Diff line
@@ -31,10 +31,10 @@ BEGINRAW[Makefile]
{- $builddir -}/aesni-mb-x86_64.s:	{- $sourcedir -}/asm/aesni-mb-x86_64.pl
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aesni-mb-x86_64.pl $(PERLASM_SCHEME) > $@

{- $builddir -}/aes-sparcv9.s: {- $sourcedir -}/asm/aes-sparcv9.pl
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aes-sparcv9.pl $(CFLAGS) > $@
{- $builddir -}/aes-sparcv9.S: {- $sourcedir -}/asm/aes-sparcv9.pl
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aes-sparcv9.pl $(PERLASM_SCHEME) $@
{- $builddir -}/aest4-sparcv9.s: {- $sourcedir -}/asm/aest4-sparcv9.pl {- $sourcetop -}/crypto/perlasm/sparcv9_modes.pl
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aest4-sparcv9.pl $(CFLAGS) > $@
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aest4-sparcv9.pl $(PERLASM_SCHEME) $@

{- $builddir -}/aes-ppc.s:	{- $sourcedir -}/asm/aes-ppc.pl
	CC="$(CC)" $(PERL) {- $sourcedir -}/asm/aes-ppc.pl $(PERLASM_SCHEME) $@
Loading