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
8 die "can't locate ppc-xlate.pl";
10 open STDOUT,"| $^X $xlate $flavour ".shift || die "can't call $xlate: $!";
26 .globl .OPENSSL_ppc64_probe
33 .byte 0,12,0x14,0,0,0,0,0
34 .size .OPENSSL_ppc64_probe,.-.OPENSSL_ppc64_probe
36 .globl .OPENSSL_altivec_probe
38 .OPENSSL_altivec_probe:
39 .long 0x10000484 # vor v0,v0,v0
42 .byte 0,12,0x14,0,0,0,0,0
43 .size .OPENSSL_altivec_probe,.-..OPENSSL_altivec_probe
45 .globl .OPENSSL_wipe_cpu
75 .byte 0,12,0x14,0,0,0,0,0
76 .size .OPENSSL_wipe_cpu,.-.OPENSSL_wipe_cpu
78 .globl .OPENSSL_atomic_add
88 .byte 0,12,0x14,0,0,0,2,0
90 .size .OPENSSL_atomic_add,.-.OPENSSL_atomic_add
99 .byte 0,12,0x14,0,0,0,0,0
100 .size .OPENSSL_rdtsc,.-.OPENSSL_rdtsc
102 .globl .OPENSSL_cleanse
131 .byte 0,12,0x14,0,0,0,2,0
133 .size .OPENSSL_cleanse,.-.OPENSSL_cleanse
136 my ($out,$cnt,$max)=("r3","r4","r5");
137 my ($tick,$lasttick)=("r6","r7");
138 my ($diff,$lastdiff)=("r8","r9");
141 .globl .OPENSSL_instrument_bus
143 .OPENSSL_instrument_bus:
146 mftb $lasttick # collect 1st tick
149 dcbf 0,$out # flush cache line
150 lwarx $tick,0,$out # load and lock
151 add $tick,$tick,$diff
156 sub $diff,$tick,$lasttick
158 dcbf 0,$out # flush cache line
159 lwarx $tick,0,$out # load and lock
160 add $tick,$tick,$diff
163 addi $out,$out,4 # ++$out
169 .byte 0,12,0x14,0,0,0,2,0
171 .size .OPENSSL_instrument_bus,.-.OPENSSL_instrument_bus
173 .globl .OPENSSL_instrument_bus2
175 .OPENSSL_instrument_bus2:
179 mftb $lasttick # collect 1st tick
182 dcbf 0,$out # flush cache line
183 lwarx $tick,0,$out # load and lock
184 add $tick,$tick,$diff
188 mftb $tick # collect 1st diff
189 sub $diff,$tick,$lasttick
193 dcbf 0,$out # flush cache line
194 lwarx $tick,0,$out # load and lock
195 add $tick,$tick,$diff
203 sub $diff,$tick,$lasttick
205 cmplw 7,$diff,$lastdiff
209 not $tick,$tick # flip bits
210 rlwinm $tick,$tick,1,29,29 # isolate flipped eq bit and scale
212 sub. $cnt,$cnt,$tick # conditional --$cnt
213 add $out,$out,$tick # conditional ++$out
221 .byte 0,12,0x14,0,0,0,3,0
223 .size .OPENSSL_instrument_bus2,.-.OPENSSL_instrument_bus2
227 $code =~ s/\`([^\`]*)\`/eval $1/gem;