]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/pariscid.pl
Refactor config - @MK1MF_Builds out, general build scheme in
[thirdparty/openssl.git] / crypto / pariscid.pl
CommitLineData
cb3b9b13
AP
1#!/usr/bin/env perl
2
3$flavour = shift;
4$output = shift;
5open STDOUT,">$output";
6
7if ($flavour =~ /64/) {
8 $LEVEL ="2.0W";
9 $SIZE_T =8;
10 $ST ="std";
11} else {
12 $LEVEL ="1.1";
13 $SIZE_T =4;
14 $ST ="stw";
15}
16
17$rp="%r2";
18$sp="%r30";
19$rv="%r28";
20
21$code=<<___;
22 .LEVEL $LEVEL
23 .SPACE \$TEXT\$
24 .SUBSPA \$CODE\$,QUAD=0,ALIGN=8,ACCESS=0x2C,CODE_ONLY
25
3fc2efd2
AP
26 .EXPORT OPENSSL_cpuid_setup,ENTRY
27 .ALIGN 8
28OPENSSL_cpuid_setup
29 .PROC
30 .CALLINFO NO_CALLS
31 .ENTRY
32 bv ($rp)
33 .EXIT
34 nop
35 .PROCEND
36
cb3b9b13
AP
37 .EXPORT OPENSSL_rdtsc,ENTRY
38 .ALIGN 8
39OPENSSL_rdtsc
40 .PROC
41 .CALLINFO NO_CALLS
42 .ENTRY
43 mfctl %cr16,$rv
44 bv ($rp)
45 .EXIT
46 nop
47 .PROCEND
48
49 .EXPORT OPENSSL_wipe_cpu,ENTRY
50 .ALIGN 8
51OPENSSL_wipe_cpu
52 .PROC
53 .CALLINFO NO_CALLS
54 .ENTRY
55 xor %r0,%r0,%r1
56 fcpy,dbl %fr0,%fr4
57 xor %r0,%r0,%r19
58 fcpy,dbl %fr0,%fr5
59 xor %r0,%r0,%r20
60 fcpy,dbl %fr0,%fr6
61 xor %r0,%r0,%r21
62 fcpy,dbl %fr0,%fr7
63 xor %r0,%r0,%r22
64 fcpy,dbl %fr0,%fr8
65 xor %r0,%r0,%r23
66 fcpy,dbl %fr0,%fr9
67 xor %r0,%r0,%r24
68 fcpy,dbl %fr0,%fr10
69 xor %r0,%r0,%r25
70 fcpy,dbl %fr0,%fr11
71 xor %r0,%r0,%r26
72 fcpy,dbl %fr0,%fr22
73 xor %r0,%r0,%r29
74 fcpy,dbl %fr0,%fr23
75 xor %r0,%r0,%r31
76 fcpy,dbl %fr0,%fr24
77 fcpy,dbl %fr0,%fr25
78 fcpy,dbl %fr0,%fr26
79 fcpy,dbl %fr0,%fr27
80 fcpy,dbl %fr0,%fr28
81 fcpy,dbl %fr0,%fr29
82 fcpy,dbl %fr0,%fr30
83 fcpy,dbl %fr0,%fr31
84 bv ($rp)
85 .EXIT
86 ldo 0($sp),$rv
87 .PROCEND
88___
89{
5fabb88a
AP
90my $inp="%r26";
91my $len="%r25";
cb3b9b13
AP
92
93$code.=<<___;
94 .EXPORT OPENSSL_cleanse,ENTRY,ARGW0=GR,ARGW1=GR
95 .ALIGN 8
96OPENSSL_cleanse
97 .PROC
98 .CALLINFO NO_CALLS
99 .ENTRY
02450ec6 100 cmpib,*= 0,$len,L\$done
82a66ce3 101 nop
02450ec6 102 cmpib,*>>= 15,$len,L\$ittle
cb3b9b13
AP
103 ldi $SIZE_T-1,%r1
104
02450ec6 105L\$align
cb3b9b13 106 and,*<> $inp,%r1,%r28
02450ec6 107 b,n L\$aligned
cb3b9b13
AP
108 stb %r0,0($inp)
109 ldo -1($len),$len
02450ec6 110 b L\$align
cb3b9b13
AP
111 ldo 1($inp),$inp
112
02450ec6 113L\$aligned
cb3b9b13 114 andcm $len,%r1,%r28
02450ec6 115L\$ot
cb3b9b13 116 $ST %r0,0($inp)
02450ec6 117 addib,*<> -$SIZE_T,%r28,L\$ot
cb3b9b13
AP
118 ldo $SIZE_T($inp),$inp
119
120 and,*<> $len,%r1,$len
02450ec6
AP
121 b,n L\$done
122L\$ittle
cb3b9b13 123 stb %r0,0($inp)
02450ec6 124 addib,*<> -1,$len,L\$ittle
cb3b9b13 125 ldo 1($inp),$inp
02450ec6 126L\$done
cb3b9b13
AP
127 bv ($rp)
128 .EXIT
129 nop
130 .PROCEND
131___
132}
5fabb88a
AP
133{
134my ($out,$cnt,$max)=("%r26","%r25","%r24");
135my ($tick,$lasttick)=("%r23","%r22");
136my ($diff,$lastdiff)=("%r21","%r20");
137
138$code.=<<___;
139 .EXPORT OPENSSL_instrument_bus,ENTRY,ARGW0=GR,ARGW1=GR
140 .ALIGN 8
141OPENSSL_instrument_bus
142 .PROC
143 .CALLINFO NO_CALLS
144 .ENTRY
145 copy $cnt,$rv
146 mfctl %cr16,$tick
147 copy $tick,$lasttick
148 ldi 0,$diff
149
150 fdc 0($out)
151 ldw 0($out),$tick
152 add $diff,$tick,$tick
153 stw $tick,0($out)
02450ec6 154L\$oop
5fabb88a
AP
155 mfctl %cr16,$tick
156 sub $tick,$lasttick,$diff
157 copy $tick,$lasttick
158
159 fdc 0($out)
160 ldw 0($out),$tick
161 add $diff,$tick,$tick
162 stw $tick,0($out)
163
02450ec6 164 addib,<> -1,$cnt,L\$oop
5fabb88a
AP
165 addi 4,$out,$out
166
167 bv ($rp)
168 .EXIT
169 sub $rv,$cnt,$rv
170 .PROCEND
cb3b9b13 171
5fabb88a
AP
172 .EXPORT OPENSSL_instrument_bus2,ENTRY,ARGW0=GR,ARGW1=GR
173 .ALIGN 8
174OPENSSL_instrument_bus2
175 .PROC
176 .CALLINFO NO_CALLS
177 .ENTRY
178 copy $cnt,$rv
179 sub %r0,$cnt,$cnt
180
181 mfctl %cr16,$tick
182 copy $tick,$lasttick
183 ldi 0,$diff
184
185 fdc 0($out)
186 ldw 0($out),$tick
187 add $diff,$tick,$tick
188 stw $tick,0($out)
189
190 mfctl %cr16,$tick
191 sub $tick,$lasttick,$diff
192 copy $tick,$lasttick
02450ec6 193L\$oop2
5fabb88a
AP
194 copy $diff,$lastdiff
195 fdc 0($out)
196 ldw 0($out),$tick
197 add $diff,$tick,$tick
198 stw $tick,0($out)
199
02450ec6 200 addib,= -1,$max,L\$done2
5fabb88a
AP
201 nop
202
203 mfctl %cr16,$tick
204 sub $tick,$lasttick,$diff
205 copy $tick,$lasttick
206 cmpclr,<> $lastdiff,$diff,$tick
207 ldi 1,$tick
208
209 ldi 1,%r1
210 xor %r1,$tick,$tick
02450ec6 211 addb,<> $tick,$cnt,L\$oop2
5fabb88a 212 shladd,l $tick,2,$out,$out
02450ec6 213L\$done2
5fabb88a
AP
214 bv ($rp)
215 .EXIT
216 add $rv,$cnt,$rv
217 .PROCEND
218___
219}
02450ec6
AP
220$code =~ s/cmpib,\*/comib,/gm if ($SIZE_T==4);
221$code =~ s/,\*/,/gm if ($SIZE_T==4);
222$code =~ s/\bbv\b/bve/gm if ($SIZE_T==8);
cb3b9b13
AP
223print $code;
224close STDOUT;
225