~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/boringssl/src/include/openssl/cpu.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
2
 
 * All rights reserved.
3
 
 *
4
 
 * This package is an SSL implementation written
5
 
 * by Eric Young (eay@cryptsoft.com).
6
 
 * The implementation was written so as to conform with Netscapes SSL.
7
 
 *
8
 
 * This library is free for commercial and non-commercial use as long as
9
 
 * the following conditions are aheared to.  The following conditions
10
 
 * apply to all code found in this distribution, be it the RC4, RSA,
11
 
 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
12
 
 * included with this distribution is covered by the same copyright terms
13
 
 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14
 
 *
15
 
 * Copyright remains Eric Young's, and as such any Copyright notices in
16
 
 * the code are not to be removed.
17
 
 * If this package is used in a product, Eric Young should be given attribution
18
 
 * as the author of the parts of the library used.
19
 
 * This can be in the form of a textual message at program startup or
20
 
 * in documentation (online or textual) provided with the package.
21
 
 *
22
 
 * Redistribution and use in source and binary forms, with or without
23
 
 * modification, are permitted provided that the following conditions
24
 
 * are met:
25
 
 * 1. Redistributions of source code must retain the copyright
26
 
 *    notice, this list of conditions and the following disclaimer.
27
 
 * 2. Redistributions in binary form must reproduce the above copyright
28
 
 *    notice, this list of conditions and the following disclaimer in the
29
 
 *    documentation and/or other materials provided with the distribution.
30
 
 * 3. All advertising materials mentioning features or use of this software
31
 
 *    must display the following acknowledgement:
32
 
 *    "This product includes cryptographic software written by
33
 
 *     Eric Young (eay@cryptsoft.com)"
34
 
 *    The word 'cryptographic' can be left out if the rouines from the library
35
 
 *    being used are not cryptographic related :-).
36
 
 * 4. If you include any Windows specific code (or a derivative thereof) from
37
 
 *    the apps directory (application code) you must include an acknowledgement:
38
 
 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
39
 
 *
40
 
 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
41
 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
43
 
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
44
 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
45
 
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
46
 
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
48
 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
49
 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50
 
 * SUCH DAMAGE.
51
 
 *
52
 
 * The licence and distribution terms for any publically available version or
53
 
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
54
 
 * copied and put under another distribution licence
55
 
 * [including the GNU Public Licence.]
56
 
 *
57
 
 * This product includes cryptographic software written by Eric Young
58
 
 * (eay@cryptsoft.com).  This product includes software written by Tim
59
 
 * Hudson (tjh@cryptsoft.com). */
60
 
 
61
 
#ifndef OPENSSL_HEADER_CPU_H
62
 
#define OPENSSL_HEADER_CPU_H
63
 
 
64
 
#include <openssl/base.h>
65
 
 
66
 
#if defined(__cplusplus)
67
 
extern "C" {
68
 
#endif
69
 
 
70
 
 
71
 
/* Runtime CPU feature support */
72
 
 
73
 
 
74
 
#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
75
 
/* OPENSSL_ia32cap_P contains the Intel CPUID bits when running on an x86 or
76
 
 * x86-64 system.
77
 
 *
78
 
 *   Index 0:
79
 
 *     EDX for CPUID where EAX = 1
80
 
 *     Bit 30 is used to indicate an Intel CPU
81
 
 *   Index 1:
82
 
 *     ECX for CPUID where EAX = 1
83
 
 *   Index 2:
84
 
 *     EBX for CPUID where EAX = 7
85
 
 *
86
 
 * Note: the CPUID bits are pre-adjusted for the OSXSAVE bit and the YMM and XMM
87
 
 * bits in XCR0, so it is not necessary to check those. */
88
 
extern uint32_t OPENSSL_ia32cap_P[4];
89
 
#endif
90
 
 
91
 
#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
92
 
/* CRYPTO_is_NEON_capable returns true if the current CPU has a NEON unit. Note
93
 
 * that |OPENSSL_armcap_P| also exists and contains the same information in a
94
 
 * form that's easier for assembly to use. */
95
 
OPENSSL_EXPORT char CRYPTO_is_NEON_capable(void);
96
 
 
97
 
/* CRYPTO_set_NEON_capable sets the return value of |CRYPTO_is_NEON_capable|.
98
 
 * By default, unless the code was compiled with |-mfpu=neon|, NEON is assumed
99
 
 * not to be present. It is not autodetected. Calling this with a zero
100
 
 * argument also causes |CRYPTO_is_NEON_functional| to return false. */
101
 
OPENSSL_EXPORT void CRYPTO_set_NEON_capable(char neon_capable);
102
 
 
103
 
/* CRYPTO_is_NEON_functional returns true if the current CPU has a /working/
104
 
 * NEON unit. Some phones have a NEON unit, but the Poly1305 NEON code causes
105
 
 * it to fail. See https://code.google.com/p/chromium/issues/detail?id=341598 */
106
 
OPENSSL_EXPORT char CRYPTO_is_NEON_functional(void);
107
 
 
108
 
/* CRYPTO_set_NEON_functional sets the "NEON functional" flag. For
109
 
 * |CRYPTO_is_NEON_functional| to return true, both this flag and the NEON flag
110
 
 * must be true. By default NEON is assumed to be functional if the code was
111
 
 * compiled with |-mfpu=neon| or if |CRYPTO_set_NEON_capable| has been called
112
 
 * with a non-zero argument. */
113
 
OPENSSL_EXPORT void CRYPTO_set_NEON_functional(char neon_functional);
114
 
#endif  /* OPENSSL_ARM */
115
 
 
116
 
 
117
 
#if defined(__cplusplus)
118
 
}  /* extern C */
119
 
#endif
120
 
 
121
 
#endif  /* OPENSSL_HEADER_CPU_H */