2004-07-27 04:18:55 +08:00
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
2005-06-24 05:45:37 +08:00
|
|
|
OPENSSL_ia32cap - finding the IA-32 processor capabilities
|
2004-07-27 04:18:55 +08:00
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
2004-08-30 00:36:05 +08:00
|
|
|
unsigned long *OPENSSL_ia32cap_loc(void);
|
|
|
|
#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
|
2004-07-27 04:18:55 +08:00
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
2004-08-30 00:36:05 +08:00
|
|
|
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
|
2004-11-21 18:36:25 +08:00
|
|
|
Intel Application Note #241618). Naturally it's meaningful on IA-32[E]
|
2004-08-30 00:36:05 +08:00
|
|
|
platforms only. The variable is normally set up automatically upon
|
|
|
|
toolkit initialization, but can be manipulated afterwards to modify
|
2006-10-23 15:44:51 +08:00
|
|
|
crypto library behaviour. For the moment of this writing five bits are
|
2004-11-21 18:36:25 +08:00
|
|
|
significant, namely bit #28 denoting Hyperthreading, which is used to
|
2006-10-23 15:44:51 +08:00
|
|
|
distinguish Intel P4 core, bit #26 denoting SSE2 support, bit #25
|
|
|
|
denoting SSE support, bit #23 denoting MMX 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
|
2004-07-27 04:18:55 +08:00
|
|
|
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
|
2004-08-30 00:36:05 +08:00
|
|
|
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
|
2006-10-23 15:44:51 +08:00
|
|
|
application, e.g. 'env OPENSSL_ia32cap=0x12800010 apps/openssl', to
|
|
|
|
achieve same effect without modifying the application source code.
|
2004-07-27 04:18:55 +08:00
|
|
|
Alternatively you can reconfigure the toolkit with no-sse2 option and
|
|
|
|
recompile.
|
|
|
|
|
|
|
|
=cut
|