4 while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {}
5 open STDOUT,">$output";
12 .global _OPENSSL_rdtsc
18 [!B0] MVC B0,TSCL ; start TSC
23 .global _OPENSSL_cleanse
28 || SHRU B4,3,B0 ; is length >= 8
37 || [B1] STB B2,*B6++[2]
41 || [B1] STB B2,*B6++[2]
45 || [B1] STB B2,*B6++[2]
54 MV B4,B0 ; remaining bytes
60 || [B1] STB B2,*B6++[2]
64 || [B1] STB B2,*B6++[2]
68 || [B1] STB B2,*B6++[2]
73 .global _OPENSSL_atomic_add
89 .global _OPENSSL_wipe_cpu
135 CLFLUSH .macro CONTROL,ADDR,LEN
137 || STW ADDR,*CONTROL[0]
144 [A0] BNOP spinlock?,5
147 .global _OPENSSL_instrument_bus
148 _OPENSSL_instrument_bus:
150 MV B4,B0 ; reassign sizeof(output)
151 || MV A4,B4 ; reassign output
153 MV B0,A4 ; return value
155 || MVKH 0x01840000,A3 ; L1DWIBAR
156 MVC TSCL,B8 ; collect 1st tick
158 MV B8,B9 ; lasttick = tick
159 || MVK 0,B7 ; lastdiff = 0
160 || MVKH 0x01840000,A5 ; L2WIBAR
161 CLFLUSH A3,B4,A1 ; write-back and invalidate L1D line
162 CLFLUSH A5,B4,A1 ; write-back and invalidate L2 line
173 SUB B8,B9,B7 ; lastdiff = tick - lasttick
174 || MV B8,B9 ; lasttick = tick
175 CLFLUSH A3,B4,A1 ; write-back and invalidate L1D line
176 CLFLUSH A5,B4,A1 ; write-back and invalidate L2 line
182 STW B5,*B4 ; [!B1] is removed to flatten samples
184 || [B0] BNOP bus_loop1?,5
189 .global _OPENSSL_instrument_bus2
190 _OPENSSL_instrument_bus2:
192 MV A6,B0 ; reassign max
193 || MV B4,A6 ; reassing sizeof(output)
195 MV A4,B4 ; reassign output
196 || MVK 0,A4 ; return value
198 || MVKH 0x01840000,A3 ; L1DWIBAR
200 MVC TSCL,B8 ; collect 1st tick
202 MV B8,B9 ; lasttick = tick
203 || MVK 0,B7 ; lastdiff = 0
204 || MVKH 0x01840000,A5 ; L2WIBAR
205 CLFLUSH A3,B4,A1 ; write-back and invalidate L1D line
206 CLFLUSH A5,B4,A1 ; write-back and invalidate L2 line
215 MVC TSCL,B8 ; collect 1st diff
216 SUB B8,B9,B7 ; lastdiff = tick - lasttick
217 || MV B8,B9 ; lasttick = tick
220 CLFLUSH A3,B4,A1 ; write-back and invalidate L1D line
221 CLFLUSH A5,B4,A1 ; write-back and invalidate L2 line
227 STW B5,*B4 ; [!B1] is removed to flatten samples
228 ||[!B0] BNOP bus_loop2_done?,2
238 [!A2] BNOP bus_loop2?,5