]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/ppccpuid.pl
Update copyright year
[thirdparty/openssl.git] / crypto / ppccpuid.pl
CommitLineData
9c9c83cc
AP
1#!/usr/bin/env perl
2
addd641f 3$flavour = shift;
9c9c83cc
AP
4
5$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
6( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
7( $xlate="${dir}perlasm/ppc-xlate.pl" and -f $xlate) or
8die "can't locate ppc-xlate.pl";
9
addd641f 10open STDOUT,"| $^X $xlate $flavour ".shift || die "can't call $xlate: $!";
9c9c83cc 11
addd641f 12if ($flavour=~/64/) {
9c9c83cc
AP
13 $CMPLI="cmpldi";
14 $SHRLI="srdi";
15 $SIGNX="extsw";
16} else {
17 $CMPLI="cmplwi";
18 $SHRLI="srwi";
19 $SIGNX="mr";
20}
21
22$code=<<___;
492279f6 23.machine "any"
9c9c83cc
AP
24.text
25
cf96d71c 26.globl .OPENSSL_ppc64_probe
9c9c83cc 27.align 4
cf96d71c
AP
28.OPENSSL_ppc64_probe:
29 fcfid f1,f1
30 extrdi r0,r0,32,0
9c9c83cc 31 blr
cf96d71c
AP
32 .long 0
33 .byte 0,12,0x14,0,0,0,0,0
43ce9cdd 34.size .OPENSSL_ppc64_probe,.-.OPENSSL_ppc64_probe
cf96d71c
AP
35
36.globl .OPENSSL_altivec_probe
37.align 4
38.OPENSSL_altivec_probe:
39 .long 0x10000484 # vor v0,v0,v0
40 blr
41 .long 0
42 .byte 0,12,0x14,0,0,0,0,0
43ce9cdd 43.size .OPENSSL_altivec_probe,.-..OPENSSL_altivec_probe
9c9c83cc 44
c991d8ae
AP
45.globl .OPENSSL_crypto207_probe
46.align 4
47.OPENSSL_crypto207_probe:
48 lvx_u v0,0,r1
49 vcipher v0,v0,v0
50 blr
51 .long 0
52 .byte 0,12,0x14,0,0,0,0,0
53.size .OPENSSL_crypto207_probe,.-.OPENSSL_crypto207_probe
54
9c9c83cc
AP
55.globl .OPENSSL_wipe_cpu
56.align 4
57.OPENSSL_wipe_cpu:
58 xor r0,r0,r0
cf96d71c
AP
59 fmr f0,f31
60 fmr f1,f31
61 fmr f2,f31
9c9c83cc 62 mr r3,r1
cf96d71c 63 fmr f3,f31
9c9c83cc 64 xor r4,r4,r4
cf96d71c 65 fmr f4,f31
9c9c83cc 66 xor r5,r5,r5
cf96d71c 67 fmr f5,f31
9c9c83cc 68 xor r6,r6,r6
cf96d71c 69 fmr f6,f31
9c9c83cc 70 xor r7,r7,r7
cf96d71c 71 fmr f7,f31
9c9c83cc 72 xor r8,r8,r8
cf96d71c 73 fmr f8,f31
9c9c83cc 74 xor r9,r9,r9
cf96d71c 75 fmr f9,f31
9c9c83cc 76 xor r10,r10,r10
cf96d71c 77 fmr f10,f31
9c9c83cc 78 xor r11,r11,r11
cf96d71c 79 fmr f11,f31
9c9c83cc 80 xor r12,r12,r12
cf96d71c
AP
81 fmr f12,f31
82 fmr f13,f31
9c9c83cc 83 blr
cf96d71c
AP
84 .long 0
85 .byte 0,12,0x14,0,0,0,0,0
43ce9cdd 86.size .OPENSSL_wipe_cpu,.-.OPENSSL_wipe_cpu
9c9c83cc
AP
87
88.globl .OPENSSL_atomic_add
89.align 4
90.OPENSSL_atomic_add:
cf96d71c 91Ladd: lwarx r5,0,r3
9c9c83cc
AP
92 add r0,r4,r5
93 stwcx. r0,0,r3
cf96d71c 94 bne- Ladd
9c9c83cc
AP
95 $SIGNX r3,r0
96 blr
cf96d71c
AP
97 .long 0
98 .byte 0,12,0x14,0,0,0,2,0
99 .long 0
43ce9cdd 100.size .OPENSSL_atomic_add,.-.OPENSSL_atomic_add
9c9c83cc
AP
101
102.globl .OPENSSL_rdtsc
103.align 4
104.OPENSSL_rdtsc:
105 mftb r3
106 mftbu r4
107 blr
cf96d71c
AP
108 .long 0
109 .byte 0,12,0x14,0,0,0,0,0
43ce9cdd 110.size .OPENSSL_rdtsc,.-.OPENSSL_rdtsc
9c9c83cc
AP
111
112.globl .OPENSSL_cleanse
113.align 4
114.OPENSSL_cleanse:
115 $CMPLI r4,7
116 li r0,0
117 bge Lot
1d8fa09c
DSH
118 $CMPLI r4,0
119 beqlr-
9c9c83cc
AP
120Little: mtctr r4
121 stb r0,0(r3)
122 addi r3,r3,1
95416ce5 123 bdnz \$-8
9c9c83cc
AP
124 blr
125Lot: andi. r5,r3,3
126 beq Laligned
127 stb r0,0(r3)
128 subi r4,r4,1
129 addi r3,r3,1
130 b Lot
131Laligned:
132 $SHRLI r5,r4,2
133 mtctr r5
134 stw r0,0(r3)
135 addi r3,r3,4
95416ce5 136 bdnz \$-8
9c9c83cc
AP
137 andi. r4,r4,3
138 bne Little
139 blr
cf96d71c
AP
140 .long 0
141 .byte 0,12,0x14,0,0,0,2,0
142 .long 0
43ce9cdd 143.size .OPENSSL_cleanse,.-.OPENSSL_cleanse
9c9c83cc
AP
144___
145
146$code =~ s/\`([^\`]*)\`/eval $1/gem;
147print $code;
148close STDOUT;