2b247cf81f
symbol, but a macro expanded as (*(OPENSSL_ia32cap_loc())). The latter is the only one to be exported to application.
35 lines
1.4 KiB
Plaintext
35 lines
1.4 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
OPENSSL_ia32cap
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
unsigned long *OPENSSL_ia32cap_loc(void);
|
|
#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Value returned by OPENSSL_ia32cap_loc() is address of a variable
|
|
containing IA-32 processor capabilities bit vector as it appears in EDX
|
|
register after executing CPUID instruction with EAX=1 input value (see
|
|
Intel Application Note #241618). Naturally it's meaningful on IA-32
|
|
platforms only. The variable is normally set up automatically upon
|
|
toolkit initialization, but can be manipulated afterwards to modify
|
|
crypto library behaviour. For the moment of this writing only two bits
|
|
are significant, namely bit #26 denoting SSE2 support, and bit #4
|
|
denoting presence of Time-Stamp Counter. Clearing bit #26 at run-time
|
|
for example disables high-performance SSE2 code present in the crypto
|
|
library. You might have to do this if target OpenSSL application is
|
|
executed on SSE2 capable CPU, but under control of OS which does not
|
|
support SSE2 extentions. Even though you can manipulate the value
|
|
programmatically, you most likely will find it more appropriate to set
|
|
up an environment variable with the same name prior starting target
|
|
application, e.g. 'env OPENSSL_ia32cap=0x10 apps/openssl', to achieve
|
|
same effect without modifying the application source code.
|
|
Alternatively you can reconfigure the toolkit with no-sse2 option and
|
|
recompile.
|
|
|
|
=cut
|