Commit 7a5dbeb7 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Minor sparcv9 clean-ups.

parent 6c06918e
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -94,17 +94,17 @@ $fname:
	cmp	$ap,$bp
	and	$num,$mask,$num
	ld	[$bp],$mul0		! bp[0]
	be,pt	`$bits==32?"%icc":"%xcc"`,.Lbn_sqr_mont
	nop

	add	%sp,$bias,%o7		! real top of stack
	ld	[$ap],$car0		! ap[0]
	ld	[$ap],$car0		! ap[0] ! redundant in squaring context
	sub	%o7,$num,%o7
	ld	[$ap+4],$apj		! ap[1]
	and	%o7,-1024,%o7
	ld	[$np],$car1		! np[0]
	sub	%o7,$bias,%sp		! alloca
	ld	[$np+4],$npj		! np[1]
	be,pt	`$bits==32?"%icc":"%xcc"`,.Lbn_sqr_mont
	mov	12,$j

	mulx	$car0,$mul0,$car0	! ap[0]*bp[0]
@@ -306,15 +306,6 @@ $sbit="%i2"; # re-use $bp!
$code.=<<___;
.align	32
.Lbn_sqr_mont:
	add	%sp,$bias,%o7			! real top of stack
	ld	[$ap+4],$apj			! ap[1]
	sub	%o7,$num,%o7
	ld	[$np],$car1			! np[0]
	and	%o7,-1024,%o7
	ld	[$np+4],$npj			! np[1]
	sub	%o7,$bias,%sp			! alloca
	mov	12,$j

	mulx	$mul0,$mul0,$car0		! ap[0]*ap[0]
	mulx	$apj,$mul0,$tmp0		!prologue!
	and	$car0,$mask,$acc0
+5 −4
Original line number Diff line number Diff line
@@ -55,21 +55,22 @@ static int walk_nodename(di_node_t node, di_node_name_t di_node_name)

	/* This is expected to catch all UltraSPARC flavors prior T1 */
	if (!strcmp (name,"SUNW,UltraSPARC") ||
	    !strncmp(name,"SUNW,UltraSPARC-I",17))
	    !strncmp(name,"SUNW,UltraSPARC-I",17))  /* covers II,III,IV */
		{
		OPENSSL_sparcv9cap_P |= SPARCV9_PREFER_FPU|SPARCV9_VIS1;

		/* %tick is privileged only on UltraSPARC-I/II */
		/* %tick is privileged only on UltraSPARC-I/II, but not IIe */
		if (name[14]!='\0' && name[17]!='\0' && name[18]!='\0')
			OPENSSL_sparcv9cap_P &= ~SPARCV9_TICK_PRIVILEGED;

		return DI_WALK_TERMINATE;
		}
	/* This is expected to catch remaining UltraSPARC T1 */
	/* This is expected to catch remaining UltraSPARCs, such as T1 */
	else if (!strncmp(name,"SUNW,UltraSPARC",15))
		{
		OPENSSL_sparcv9cap_P |= SPARCV9_VIS1;
		OPENSSL_sparcv9cap_P &= ~SPARCV9_TICK_PRIVILEGED;

		return DI_WALK_TERMINATE;
		}

	return DI_WALK_CONTINUE;