| Index: openssl/crypto/ia64cpuid.S
|
| ===================================================================
|
| --- openssl/crypto/ia64cpuid.S (revision 105093)
|
| +++ openssl/crypto/ia64cpuid.S (working copy)
|
| @@ -1,6 +1,13 @@
|
| // Works on all IA-64 platforms: Linux, HP-UX, Win64i...
|
| // On Win64i compile with ias.exe.
|
| .text
|
| +
|
| +.global OPENSSL_cpuid_setup#
|
| +.proc OPENSSL_cpuid_setup#
|
| +OPENSSL_cpuid_setup:
|
| +{ .mib; br.ret.sptk.many b0 };;
|
| +.endp OPENSSL_cpuid_setup#
|
| +
|
| .global OPENSSL_rdtsc#
|
| .proc OPENSSL_rdtsc#
|
| OPENSSL_rdtsc:
|
| @@ -119,3 +126,42 @@
|
| mov ar.lc=r3
|
| br.ret.sptk b0 };;
|
| .endp OPENSSL_wipe_cpu#
|
| +
|
| +.global OPENSSL_cleanse#
|
| +.proc OPENSSL_cleanse#
|
| +OPENSSL_cleanse:
|
| +{ .mib; cmp.eq p6,p0=0,r33 // len==0
|
| +#if defined(_HPUX_SOURCE) && !defined(_LP64)
|
| + addp4 r32=0,r32
|
| +#endif
|
| +(p6) br.ret.spnt b0 };;
|
| +{ .mib; and r2=7,r32
|
| + cmp.leu p6,p0=15,r33 // len>=15
|
| +(p6) br.cond.dptk .Lot };;
|
| +
|
| +.Little:
|
| +{ .mib; st1 [r32]=r0,1
|
| + cmp.ltu p6,p7=1,r33 } // len>1
|
| +{ .mbb; add r33=-1,r33 // len--
|
| +(p6) br.cond.dptk .Little
|
| +(p7) br.ret.sptk.many b0 };;
|
| +
|
| +.Lot:
|
| +{ .mib; cmp.eq p6,p0=0,r2
|
| +(p6) br.cond.dptk .Laligned };;
|
| +{ .mmi; st1 [r32]=r0,1;;
|
| + and r2=7,r32 }
|
| +{ .mib; add r33=-1,r33
|
| + br .Lot };;
|
| +
|
| +.Laligned:
|
| +{ .mmi; st8 [r32]=r0,8
|
| + and r2=-8,r33 // len&~7
|
| + add r33=-8,r33 };; // len-=8
|
| +{ .mib; cmp.ltu p6,p0=8,r2 // ((len+8)&~7)>8
|
| +(p6) br.cond.dptk .Laligned };;
|
| +
|
| +{ .mbb; cmp.eq p6,p7=r0,r33
|
| +(p7) br.cond.dpnt .Little
|
| +(p6) br.ret.sptk.many b0 };;
|
| +.endp OPENSSL_cleanse#
|
|
|