diff options
Diffstat (limited to '')
-rwxr-xr-x | src/lib/libcrypto/ppccpuid.pl | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/src/lib/libcrypto/ppccpuid.pl b/src/lib/libcrypto/ppccpuid.pl index 369e1d0df9..4ba736a1d1 100755 --- a/src/lib/libcrypto/ppccpuid.pl +++ b/src/lib/libcrypto/ppccpuid.pl | |||
@@ -23,36 +23,67 @@ $code=<<___; | |||
23 | .machine "any" | 23 | .machine "any" |
24 | .text | 24 | .text |
25 | 25 | ||
26 | .globl .OPENSSL_cpuid_setup | 26 | .globl .OPENSSL_ppc64_probe |
27 | .align 4 | 27 | .align 4 |
28 | .OPENSSL_cpuid_setup: | 28 | .OPENSSL_ppc64_probe: |
29 | fcfid f1,f1 | ||
30 | extrdi r0,r0,32,0 | ||
29 | blr | 31 | blr |
32 | .long 0 | ||
33 | .byte 0,12,0x14,0,0,0,0,0 | ||
34 | |||
35 | .globl .OPENSSL_altivec_probe | ||
36 | .align 4 | ||
37 | .OPENSSL_altivec_probe: | ||
38 | .long 0x10000484 # vor v0,v0,v0 | ||
39 | blr | ||
40 | .long 0 | ||
41 | .byte 0,12,0x14,0,0,0,0,0 | ||
30 | 42 | ||
31 | .globl .OPENSSL_wipe_cpu | 43 | .globl .OPENSSL_wipe_cpu |
32 | .align 4 | 44 | .align 4 |
33 | .OPENSSL_wipe_cpu: | 45 | .OPENSSL_wipe_cpu: |
34 | xor r0,r0,r0 | 46 | xor r0,r0,r0 |
47 | fmr f0,f31 | ||
48 | fmr f1,f31 | ||
49 | fmr f2,f31 | ||
35 | mr r3,r1 | 50 | mr r3,r1 |
51 | fmr f3,f31 | ||
36 | xor r4,r4,r4 | 52 | xor r4,r4,r4 |
53 | fmr f4,f31 | ||
37 | xor r5,r5,r5 | 54 | xor r5,r5,r5 |
55 | fmr f5,f31 | ||
38 | xor r6,r6,r6 | 56 | xor r6,r6,r6 |
57 | fmr f6,f31 | ||
39 | xor r7,r7,r7 | 58 | xor r7,r7,r7 |
59 | fmr f7,f31 | ||
40 | xor r8,r8,r8 | 60 | xor r8,r8,r8 |
61 | fmr f8,f31 | ||
41 | xor r9,r9,r9 | 62 | xor r9,r9,r9 |
63 | fmr f9,f31 | ||
42 | xor r10,r10,r10 | 64 | xor r10,r10,r10 |
65 | fmr f10,f31 | ||
43 | xor r11,r11,r11 | 66 | xor r11,r11,r11 |
67 | fmr f11,f31 | ||
44 | xor r12,r12,r12 | 68 | xor r12,r12,r12 |
69 | fmr f12,f31 | ||
70 | fmr f13,f31 | ||
45 | blr | 71 | blr |
72 | .long 0 | ||
73 | .byte 0,12,0x14,0,0,0,0,0 | ||
46 | 74 | ||
47 | .globl .OPENSSL_atomic_add | 75 | .globl .OPENSSL_atomic_add |
48 | .align 4 | 76 | .align 4 |
49 | .OPENSSL_atomic_add: | 77 | .OPENSSL_atomic_add: |
50 | Loop: lwarx r5,0,r3 | 78 | Ladd: lwarx r5,0,r3 |
51 | add r0,r4,r5 | 79 | add r0,r4,r5 |
52 | stwcx. r0,0,r3 | 80 | stwcx. r0,0,r3 |
53 | bne- Loop | 81 | bne- Ladd |
54 | $SIGNX r3,r0 | 82 | $SIGNX r3,r0 |
55 | blr | 83 | blr |
84 | .long 0 | ||
85 | .byte 0,12,0x14,0,0,0,2,0 | ||
86 | .long 0 | ||
56 | 87 | ||
57 | .globl .OPENSSL_rdtsc | 88 | .globl .OPENSSL_rdtsc |
58 | .align 4 | 89 | .align 4 |
@@ -60,6 +91,8 @@ Loop: lwarx r5,0,r3 | |||
60 | mftb r3 | 91 | mftb r3 |
61 | mftbu r4 | 92 | mftbu r4 |
62 | blr | 93 | blr |
94 | .long 0 | ||
95 | .byte 0,12,0x14,0,0,0,0,0 | ||
63 | 96 | ||
64 | .globl .OPENSSL_cleanse | 97 | .globl .OPENSSL_cleanse |
65 | .align 4 | 98 | .align 4 |
@@ -72,7 +105,7 @@ Loop: lwarx r5,0,r3 | |||
72 | Little: mtctr r4 | 105 | Little: mtctr r4 |
73 | stb r0,0(r3) | 106 | stb r0,0(r3) |
74 | addi r3,r3,1 | 107 | addi r3,r3,1 |
75 | bdnz- \$-8 | 108 | bdnz \$-8 |
76 | blr | 109 | blr |
77 | Lot: andi. r5,r3,3 | 110 | Lot: andi. r5,r3,3 |
78 | beq Laligned | 111 | beq Laligned |
@@ -85,10 +118,13 @@ Laligned: | |||
85 | mtctr r5 | 118 | mtctr r5 |
86 | stw r0,0(r3) | 119 | stw r0,0(r3) |
87 | addi r3,r3,4 | 120 | addi r3,r3,4 |
88 | bdnz- \$-8 | 121 | bdnz \$-8 |
89 | andi. r4,r4,3 | 122 | andi. r4,r4,3 |
90 | bne Little | 123 | bne Little |
91 | blr | 124 | blr |
125 | .long 0 | ||
126 | .byte 0,12,0x14,0,0,0,2,0 | ||
127 | .long 0 | ||
92 | ___ | 128 | ___ |
93 | 129 | ||
94 | $code =~ s/\`([^\`]*)\`/eval $1/gem; | 130 | $code =~ s/\`([^\`]*)\`/eval $1/gem; |