2 # Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved.
4 # Licensed under the OpenSSL license (the "License"). You may not use
5 # this file except in compliance with the License. You can obtain a copy
6 # in the file LICENSE in the source distribution or at
7 # https://www.openssl.org/source/license.html
12 open STDOUT,">$output";
14 if ($flavour =~ /64/) {
31 .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY
33 .EXPORT OPENSSL_cpuid_setup,ENTRY
44 .EXPORT OPENSSL_rdtsc,ENTRY
56 .EXPORT OPENSSL_wipe_cpu,ENTRY
101 .EXPORT OPENSSL_cleanse,ENTRY,ARGW0=GR,ARGW1=GR
107 cmpib,*= 0,$len,L\$done
109 cmpib,*>>= 15,$len,L\$ittle
113 and,*<> $inp,%r1,%r28
124 addib,*<> -$SIZE_T,%r28,L\$ot
125 ldo $SIZE_T($inp),$inp
127 and,*<> $len,%r1,$len
131 addib,*<> -1,$len,L\$ittle
141 my ($out,$cnt,$max)=("%r26","%r25","%r24");
142 my ($tick,$lasttick)=("%r23","%r22");
143 my ($diff,$lastdiff)=("%r21","%r20");
146 .EXPORT OPENSSL_instrument_bus,ENTRY,ARGW0=GR,ARGW1=GR
148 OPENSSL_instrument_bus
159 add $diff,$tick,$tick
163 sub $tick,$lasttick,$diff
168 add $diff,$tick,$tick
171 addib,<> -1,$cnt,L\$oop
179 .EXPORT OPENSSL_instrument_bus2,ENTRY,ARGW0=GR,ARGW1=GR
181 OPENSSL_instrument_bus2
194 add $diff,$tick,$tick
198 sub $tick,$lasttick,$diff
204 add $diff,$tick,$tick
207 addib,= -1,$max,L\$done2
211 sub $tick,$lasttick,$diff
213 cmpclr,<> $lastdiff,$diff,$tick
218 addb,<> $tick,$cnt,L\$oop2
219 shladd,l $tick,2,$out,$out
227 $code =~ s/cmpib,\*/comib,/gm if ($SIZE_T==4);
228 $code =~ s/,\*/,/gm if ($SIZE_T==4);
229 $code =~ s/\bbv\b/bve/gm if ($SIZE_T==8);