-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Andy Polyakov
committed
May 15, 2007
1 parent
1d42fb5
commit 9c9c83c
Showing
4 changed files
with
111 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
#!/usr/bin/env perl | ||
|
||
$output = shift; | ||
|
||
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; | ||
( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or | ||
( $xlate="${dir}perlasm/ppc-xlate.pl" and -f $xlate) or | ||
die "can't locate ppc-xlate.pl"; | ||
|
||
( defined shift || open STDOUT,"| $^X $xlate $output" ) || | ||
die "can't call $xlate: $!"; | ||
|
||
if ($output=~/64/) { | ||
$CMPLI="cmpldi"; | ||
$SHRLI="srdi"; | ||
$SIGNX="extsw"; | ||
} else { | ||
$CMPLI="cmplwi"; | ||
$SHRLI="srwi"; | ||
$SIGNX="mr"; | ||
} | ||
|
||
$code=<<___; | ||
.text | ||
.globl .OPENSSL_cpuid_setup | ||
.align 4 | ||
.OPENSSL_cpuid_setup: | ||
blr | ||
.globl .OPENSSL_wipe_cpu | ||
.align 4 | ||
.OPENSSL_wipe_cpu: | ||
xor r0,r0,r0 | ||
mr r3,r1 | ||
xor r4,r4,r4 | ||
xor r5,r5,r5 | ||
xor r6,r6,r6 | ||
xor r7,r7,r7 | ||
xor r8,r8,r8 | ||
xor r9,r9,r9 | ||
xor r10,r10,r10 | ||
xor r11,r11,r11 | ||
xor r12,r12,r12 | ||
blr | ||
.globl .OPENSSL_atomic_add | ||
.align 4 | ||
.OPENSSL_atomic_add: | ||
Loop: lwarx r5,0,r3 | ||
add r0,r4,r5 | ||
stwcx. r0,0,r3 | ||
bne- Loop | ||
$SIGNX r3,r0 | ||
blr | ||
.globl .OPENSSL_rdtsc | ||
.align 4 | ||
.OPENSSL_rdtsc: | ||
mftb r3 | ||
mftbu r4 | ||
blr | ||
.globl .OPENSSL_cleanse | ||
.align 4 | ||
.OPENSSL_cleanse: | ||
$CMPLI r4,7 | ||
li r0,0 | ||
bge Lot | ||
Little: mtctr r4 | ||
stb r0,0(r3) | ||
addi r3,r3,1 | ||
bdnz- .-8 | ||
blr | ||
Lot: andi. r5,r3,3 | ||
beq Laligned | ||
stb r0,0(r3) | ||
subi r4,r4,1 | ||
addi r3,r3,1 | ||
b Lot | ||
Laligned: | ||
$SHRLI r5,r4,2 | ||
mtctr r5 | ||
stw r0,0(r3) | ||
addi r3,r3,4 | ||
bdnz- .-8 | ||
andi. r4,r4,3 | ||
bne Little | ||
blr | ||
___ | ||
|
||
$code =~ s/\`([^\`]*)\`/eval $1/gem; | ||
print $code; | ||
close STDOUT; |