| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env perl | |
| 2 | |
| 3 $flavour = shift; | |
| 4 | |
| 5 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; | |
| 6 ( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or | |
| 7 ( $xlate="${dir}perlasm/ppc-xlate.pl" and -f $xlate) or | |
| 8 die "can't locate ppc-xlate.pl"; | |
| 9 | |
| 10 open STDOUT,"| $^X $xlate $flavour ".shift || die "can't call $xlate: $!"; | |
| 11 | |
| 12 if ($flavour=~/64/) { | |
| 13 $CMPLI="cmpldi"; | |
| 14 $SHRLI="srdi"; | |
| 15 $SIGNX="extsw"; | |
| 16 } else { | |
| 17 $CMPLI="cmplwi"; | |
| 18 $SHRLI="srwi"; | |
| 19 $SIGNX="mr"; | |
| 20 } | |
| 21 | |
| 22 $code=<<___; | |
| 23 .machine "any" | |
| 24 .text | |
| 25 | |
| 26 .globl .OPENSSL_ppc64_probe | |
| 27 .align 4 | |
| 28 .OPENSSL_ppc64_probe: | |
| 29 fcfid f1,f1 | |
| 30 extrdi r0,r0,32,0 | |
| 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 | |
| 42 | |
| 43 .globl .OPENSSL_wipe_cpu | |
| 44 .align 4 | |
| 45 .OPENSSL_wipe_cpu: | |
| 46 xor r0,r0,r0 | |
| 47 fmr f0,f31 | |
| 48 fmr f1,f31 | |
| 49 fmr f2,f31 | |
| 50 mr r3,r1 | |
| 51 fmr f3,f31 | |
| 52 xor r4,r4,r4 | |
| 53 fmr f4,f31 | |
| 54 xor r5,r5,r5 | |
| 55 fmr f5,f31 | |
| 56 xor r6,r6,r6 | |
| 57 fmr f6,f31 | |
| 58 xor r7,r7,r7 | |
| 59 fmr f7,f31 | |
| 60 xor r8,r8,r8 | |
| 61 fmr f8,f31 | |
| 62 xor r9,r9,r9 | |
| 63 fmr f9,f31 | |
| 64 xor r10,r10,r10 | |
| 65 fmr f10,f31 | |
| 66 xor r11,r11,r11 | |
| 67 fmr f11,f31 | |
| 68 xor r12,r12,r12 | |
| 69 fmr f12,f31 | |
| 70 fmr f13,f31 | |
| 71 blr | |
| 72 .long 0 | |
| 73 .byte 0,12,0x14,0,0,0,0,0 | |
| 74 | |
| 75 .globl .OPENSSL_atomic_add | |
| 76 .align 4 | |
| 77 .OPENSSL_atomic_add: | |
| 78 Ladd: lwarx r5,0,r3 | |
| 79 add r0,r4,r5 | |
| 80 stwcx. r0,0,r3 | |
| 81 bne- Ladd | |
| 82 $SIGNX r3,r0 | |
| 83 blr | |
| 84 .long 0 | |
| 85 .byte 0,12,0x14,0,0,0,2,0 | |
| 86 .long 0 | |
| 87 | |
| 88 .globl .OPENSSL_rdtsc | |
| 89 .align 4 | |
| 90 .OPENSSL_rdtsc: | |
| 91 mftb r3 | |
| 92 mftbu r4 | |
| 93 blr | |
| 94 .long 0 | |
| 95 .byte 0,12,0x14,0,0,0,0,0 | |
| 96 | |
| 97 .globl .OPENSSL_cleanse | |
| 98 .align 4 | |
| 99 .OPENSSL_cleanse: | |
| 100 $CMPLI r4,7 | |
| 101 li r0,0 | |
| 102 bge Lot | |
| 103 $CMPLI r4,0 | |
| 104 beqlr- | |
| 105 Little: mtctr r4 | |
| 106 stb r0,0(r3) | |
| 107 addi r3,r3,1 | |
| 108 bdnz \$-8 | |
| 109 blr | |
| 110 Lot: andi. r5,r3,3 | |
| 111 beq Laligned | |
| 112 stb r0,0(r3) | |
| 113 subi r4,r4,1 | |
| 114 addi r3,r3,1 | |
| 115 b Lot | |
| 116 Laligned: | |
| 117 $SHRLI r5,r4,2 | |
| 118 mtctr r5 | |
| 119 stw r0,0(r3) | |
| 120 addi r3,r3,4 | |
| 121 bdnz \$-8 | |
| 122 andi. r4,r4,3 | |
| 123 bne Little | |
| 124 blr | |
| 125 .long 0 | |
| 126 .byte 0,12,0x14,0,0,0,2,0 | |
| 127 .long 0 | |
| 128 ___ | |
| 129 | |
| 130 $code =~ s/\`([^\`]*)\`/eval $1/gem; | |
| 131 print $code; | |
| 132 close STDOUT; | |
| OLD | NEW |