~andersk/ubuntu/oneiric/openssl/spurious-reboot

« back to all changes in this revision

Viewing changes to crypto/sparccpuid.S

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2011-05-01 23:51:53 UTC
  • mfrom: (11.1.20 sid)
  • Revision ID: james.westby@ubuntu.com-20110501235153-bjcxitndquaezb68
Tags: 1.0.0d-2ubuntu1
* Resynchronise with Debian (LP: #675566).  Remaining changes:
  - debian/libssl1.0.0.postinst:
    + Display a system restart required notification bubble on libssl1.0.0
      upgrade.
    + Use a different priority for libssl1.0.0/restart-services depending
      on whether a desktop, or server dist-upgrade is being performed.
  - debian/{libssl1.0.0-udeb.dirs, control, rules}: Create
    libssl1.0.0-udeb, for the benefit of wget-udeb (no wget-udeb package
    in Debian).
  - debian/{libcrypto1.0.0-udeb.dirs, libssl1.0.0.dirs, libssl1.0.0.files,
    rules}: Move runtime libraries to /lib, for the benefit of
    wpasupplicant.
  - debian/patches/aesni.patch: Backport Intel AES-NI support, now from
    http://rt.openssl.org/Ticket/Display.html?id=2065 rather than the
    0.9.8 variant.
  - debian/patches/Bsymbolic-functions.patch: Link using
    -Bsymbolic-functions.
  - debian/patches/perlpath-quilt.patch: Don't change perl #! paths under
    .pc.
  - debian/rules:
    + Don't run 'make test' when cross-building.
    + Use host compiler when cross-building.  Patch from Neil Williams.
    + Don't build for processors no longer supported: i486, i586 (on
      i386), v8 (on sparc).
    + Fix Makefile to properly clean up libs/ dirs in clean target.
    + Replace duplicate files in the doc directory with symlinks.
* Update architectures affected by Bsymbolic-functions.patch.
* Drop debian/patches/no-sslv2.patch; Debian now adds the 'no-ssl2'
  configure option, which compiles out SSLv2 support entirely, so this is
  no longer needed.
* Drop openssl-doc in favour of the libssl-doc package introduced by
  Debian.  Add Conflicts/Replaces until the next LTS release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
        nop
35
35
        call    .PIC.zero.up
36
36
        mov     .zero-(.-4),%o0
37
 
        ldd     [%o0],%f0
 
37
        ld      [%o0],%f0
 
38
        ld      [%o0],%f1
38
39
 
39
40
        subcc   %g0,1,%o0
40
41
        ! Following is V9 "rd %ccr,%o0" instruction. However! V8
166
167
 
167
168
.global OPENSSL_atomic_add
168
169
.type   OPENSSL_atomic_add,#function
 
170
.align  32
169
171
OPENSSL_atomic_add:
170
172
#ifndef ABI64
171
173
        subcc   %g0,1,%o2
177
179
        ba      .enter
178
180
        nop
179
181
#ifdef __sun
180
 
! Note that you don't have to link with libthread to call thr_yield,
 
182
! Note that you do not have to link with libthread to call thr_yield,
181
183
! as libc provides a stub, which is overloaded the moment you link
182
184
! with *either* libpthread or libthread...
183
185
#define YIELD_CPU       thr_yield
213
215
        sra     %o0,%g0,%o0     ! we return signed int, remember?
214
216
.size   OPENSSL_atomic_add,.-OPENSSL_atomic_add
215
217
 
216
 
.global OPENSSL_rdtsc
 
218
.global _sparcv9_rdtick
 
219
.align  32
 
220
_sparcv9_rdtick:
217
221
        subcc   %g0,1,%o0
218
222
        .word   0x91408000      !rd     %ccr,%o0
219
223
        cmp     %o0,0x99
220
 
        bne     .notsc
 
224
        bne     .notick
221
225
        xor     %o0,%o0,%o0
222
 
        save    %sp,FRAME-16,%sp
223
 
        mov     513,%o0         !SI_PLATFORM
224
 
        add     %sp,BIAS+16,%o1
225
 
        call    sysinfo
226
 
        mov     256,%o2
227
 
 
228
 
        add     %sp,BIAS-16,%o1
229
 
        ld      [%o1],%l0
230
 
        ld      [%o1+4],%l1
231
 
        ld      [%o1+8],%l2
232
 
        mov     %lo('SUNW'),%l3
233
 
        ret
234
 
        restore
235
 
.notsc:
236
 
        retl
237
 
        nop
238
 
.type   OPENSSL_rdtsc,#function
239
 
.size   OPENSSL_rdtsc,.-OPENSSL_atomic_add
 
226
        .word   0x91410000      !rd     %tick,%o0
 
227
        retl
 
228
        .word   0x93323020      !srlx   %o0,32,%o1
 
229
.notick:
 
230
        retl
 
231
        xor     %o1,%o1,%o1
 
232
.type   _sparcv9_rdtick,#function
 
233
.size   _sparcv9_rdtick,.-_sparcv9_rdtick
 
234
 
 
235
.global _sparcv9_vis1_probe
 
236
.align  8
 
237
_sparcv9_vis1_probe:
 
238
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
239
        add     %sp,BIAS+2,%o1
 
240
        retl
 
241
        .word   0xc19a5a40      !ldda   [%o1]ASI_FP16_P,%f0
 
242
.type   _sparcv9_vis1_probe,#function
 
243
.size   _sparcv9_vis1_probe,.-_sparcv9_vis1_probe
 
244
 
 
245
! Probe and instrument VIS1 instruction. Output is number of cycles it
 
246
! takes to execute rdtick and pair of VIS1 instructions. US-Tx VIS unit
 
247
! is slow (documented to be 6 cycles on T2) and the core is in-order
 
248
! single-issue, it should be possible to distinguish Tx reliably...
 
249
! Observed return values are:
 
250
!
 
251
!       UltraSPARC IIe          7
 
252
!       UltraSPARC III          7
 
253
!       UltraSPARC T1           24
 
254
!
 
255
! Numbers for T2 and SPARC64 V-VII are more than welcomed.
 
256
!
 
257
! It would be possible to detect specifically US-T1 by instrumenting
 
258
! fmul8ulx16, which is emulated on T1 and as such accounts for quite
 
259
! a lot of %tick-s, couple of thousand on Linux...
 
260
.global _sparcv9_vis1_instrument
 
261
.align  8
 
262
_sparcv9_vis1_instrument:
 
263
        .word   0x91410000      !rd     %tick,%o0
 
264
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
265
        .word   0x85b08d82      !fxor   %f2,%f2,%f2
 
266
        .word   0x93410000      !rd     %tick,%o1
 
267
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
268
        .word   0x85b08d82      !fxor   %f2,%f2,%f2
 
269
        .word   0x95410000      !rd     %tick,%o2
 
270
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
271
        .word   0x85b08d82      !fxor   %f2,%f2,%f2
 
272
        .word   0x97410000      !rd     %tick,%o3
 
273
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
274
        .word   0x85b08d82      !fxor   %f2,%f2,%f2
 
275
        .word   0x99410000      !rd     %tick,%o4
 
276
 
 
277
        ! calculate intervals
 
278
        sub     %o1,%o0,%o0
 
279
        sub     %o2,%o1,%o1
 
280
        sub     %o3,%o2,%o2
 
281
        sub     %o4,%o3,%o3
 
282
 
 
283
        ! find minumum value
 
284
        cmp     %o0,%o1
 
285
        .word   0x38680002      !bgu,a  %xcc,.+8
 
286
        mov     %o1,%o0
 
287
        cmp     %o0,%o2
 
288
        .word   0x38680002      !bgu,a  %xcc,.+8
 
289
        mov     %o2,%o0
 
290
        cmp     %o0,%o3
 
291
        .word   0x38680002      !bgu,a  %xcc,.+8
 
292
        mov     %o3,%o0
 
293
 
 
294
        retl
 
295
        nop
 
296
.type   _sparcv9_vis1_instrument,#function
 
297
.size   _sparcv9_vis1_instrument,.-_sparcv9_vis1_instrument
 
298
 
 
299
.global _sparcv9_vis2_probe
 
300
.align  8
 
301
_sparcv9_vis2_probe:
 
302
        retl
 
303
        .word   0x81b00980      !bshuffle       %f0,%f0,%f0
 
304
.type   _sparcv9_vis2_probe,#function
 
305
.size   _sparcv9_vis2_probe,.-_sparcv9_vis2_probe
 
306
 
 
307
.global _sparcv9_fmadd_probe
 
308
.align  8
 
309
_sparcv9_fmadd_probe:
 
310
        .word   0x81b00d80      !fxor   %f0,%f0,%f0
 
311
        .word   0x85b08d82      !fxor   %f2,%f2,%f2
 
312
        retl
 
313
        .word   0x81b80440      !fmaddd %f0,%f0,%f2,%f0
 
314
.type   _sparcv9_fmadd_probe,#function
 
315
.size   _sparcv9_fmadd_probe,.-_sparcv9_fmadd_probe
 
316
 
 
317
.global OPENSSL_cleanse
 
318
.align  32
 
319
OPENSSL_cleanse:
 
320
        cmp     %o1,14
 
321
        nop
 
322
#ifdef ABI64
 
323
        bgu     %xcc,.Lot
 
324
#else
 
325
        bgu     .Lot
 
326
#endif
 
327
        cmp     %o1,0
 
328
        bne     .Little
 
329
        nop
 
330
        retl
 
331
        nop
 
332
 
 
333
.Little:
 
334
        stb     %g0,[%o0]
 
335
        subcc   %o1,1,%o1
 
336
        bnz     .Little
 
337
        add     %o0,1,%o0
 
338
        retl
 
339
        nop
 
340
.align  32
 
341
.Lot:
 
342
#ifndef ABI64
 
343
        subcc   %g0,1,%g1
 
344
        ! see above for explanation
 
345
        .word   0x83408000      !rd     %ccr,%g1
 
346
        cmp     %g1,0x99
 
347
        bne     .v8lot
 
348
        nop
 
349
#endif
 
350
 
 
351
.v9lot: andcc   %o0,7,%g0
 
352
        bz      .v9aligned
 
353
        nop
 
354
        stb     %g0,[%o0]
 
355
        sub     %o1,1,%o1
 
356
        ba      .v9lot
 
357
        add     %o0,1,%o0
 
358
.align  16,0x01000000
 
359
.v9aligned:
 
360
        .word   0xc0720000      !stx    %g0,[%o0]
 
361
        sub     %o1,8,%o1
 
362
        andcc   %o1,-8,%g0
 
363
#ifdef ABI64
 
364
        .word   0x126ffffd      !bnz    %xcc,.v9aligned
 
365
#else
 
366
        .word   0x124ffffd      !bnz    %icc,.v9aligned
 
367
#endif
 
368
        add     %o0,8,%o0
 
369
 
 
370
        cmp     %o1,0
 
371
        bne     .Little
 
372
        nop
 
373
        retl
 
374
        nop
 
375
#ifndef ABI64
 
376
.v8lot: andcc   %o0,3,%g0
 
377
        bz      .v8aligned
 
378
        nop
 
379
        stb     %g0,[%o0]
 
380
        sub     %o1,1,%o1
 
381
        ba      .v8lot
 
382
        add     %o0,1,%o0
 
383
        nop
 
384
.v8aligned:
 
385
        st      %g0,[%o0]
 
386
        sub     %o1,4,%o1
 
387
        andcc   %o1,-4,%g0
 
388
        bnz     .v8aligned
 
389
        add     %o0,4,%o0
 
390
 
 
391
        cmp     %o1,0
 
392
        bne     .Little
 
393
        nop
 
394
        retl
 
395
        nop
 
396
#endif
 
397
.type   OPENSSL_cleanse,#function
 
398
.size   OPENSSL_cleanse,.-OPENSSL_cleanse
 
399
 
 
400
.section        ".init",#alloc,#execinstr
 
401
        call    OPENSSL_cpuid_setup
 
402
        nop