summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrahn <>2020-06-25 04:29:08 +0000
committerdrahn <>2020-06-25 04:29:08 +0000
commit7f6da26dff879e33172ea80e6d58b78d96fd9f22 (patch)
tree54ee508a4538187fd785727fc8ad1fd1ec975c71 /src
parent4dec832179bf3d0537e7251363a28b4f02692426 (diff)
downloadopenbsd-7f6da26dff879e33172ea80e6d58b78d96fd9f22.tar.gz
openbsd-7f6da26dff879e33172ea80e6d58b78d96fd9f22.tar.bz2
openbsd-7f6da26dff879e33172ea80e6d58b78d96fd9f22.zip
Intial attempt at powerpc64 libcrypto pieces.
just commit this kettenis@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/arch/powerpc64/Makefile.inc88
-rw-r--r--src/lib/libcrypto/arch/powerpc64/opensslconf.h298
2 files changed, 386 insertions, 0 deletions
diff --git a/src/lib/libcrypto/arch/powerpc64/Makefile.inc b/src/lib/libcrypto/arch/powerpc64/Makefile.inc
new file mode 100644
index 0000000000..cc42f67c5c
--- /dev/null
+++ b/src/lib/libcrypto/arch/powerpc64/Makefile.inc
@@ -0,0 +1,88 @@
1# $OpenBSD: Makefile.inc,v 1.1 2020/06/25 04:29:08 drahn Exp $
2
3# powerpc-specific libcrypto build rules
4
5# aes
6SRCS+= aes_core.c aes_cbc.c
7# slower than C code
8#CFLAGS+= -DAES_ASM
9#SSLASM+= aes aes-ppc aes-ppc
10# bf
11SRCS+= bf_enc.c
12# bn
13SSLASM+= bn ppc bn-ppc
14#SSLASM+= bn ppc-mont ppc-mont # bn_mul_mont_int
15SSLASM+= bn ppc64-mont ppc64-mont # bn_mul_mont_fpu64
16CFLAGS+= -DOPENSSL_BN_ASM_MONT
17# camellia
18SRCS+= camellia.c cmll_cbc.c cmll_misc.c
19# des
20SRCS+= des_enc.c fcrypt_b.c
21# rc4
22SRCS+= rc4_enc.c rc4_skey.c
23# sha
24CFLAGS+= -DSHA1_ASM
25SSLASM+= sha sha1-ppc sha1-ppc
26CFLAGS+= -DSHA256_ASM
27SSLASM+= sha sha512-ppc sha256-ppc
28# whrlpool
29SRCS+= wp_block.c
30
31.for dir src dst in ${SSLASM}
32SRCS+= ${dst}.S
33GENERATED+=${dst}.S
34${dst}.S: ${LCRYPTO_SRC}/${dir}/asm/${src}.pl
35 /usr/bin/perl \
36 ${LCRYPTO_SRC}/${dir}/asm/${src}.pl linux32 ${.TARGET} > ${.TARGET}
37.endfor
38
39#CFLAGS+= -DOPENSSL_CPUID_OBJ # it's commented out in ppccap.c
40SRCS+= ppccpuid.S ppccap.c
41GENERATED+=ppccpuid.S
42ppccpuid.S: ${LCRYPTO_SRC}/ppccpuid.pl
43 /usr/bin/perl \
44 ${LCRYPTO_SRC}/ppccpuid.pl linux32 > ${.TARGET}
45# $OpenBSD: Makefile.inc,v 1.1 2020/06/25 04:29:08 drahn Exp $
46
47# powerpc-specific libcrypto build rules
48
49# aes
50SRCS+= aes_core.c aes_cbc.c
51# slower than C code
52#CFLAGS+= -DAES_ASM
53#SSLASM+= aes aes-ppc aes-ppc
54# bf
55SRCS+= bf_enc.c
56# bn
57SSLASM+= bn ppc bn-ppc
58#SSLASM+= bn ppc-mont ppc-mont # bn_mul_mont_int
59SSLASM+= bn ppc64-mont ppc64-mont # bn_mul_mont_fpu64
60CFLAGS+= -DOPENSSL_BN_ASM_MONT
61# camellia
62SRCS+= camellia.c cmll_cbc.c cmll_misc.c
63# des
64SRCS+= des_enc.c fcrypt_b.c
65# rc4
66SRCS+= rc4_enc.c rc4_skey.c
67# sha
68CFLAGS+= -DSHA1_ASM
69SSLASM+= sha sha1-ppc sha1-ppc
70CFLAGS+= -DSHA256_ASM
71SSLASM+= sha sha512-ppc sha256-ppc
72# whrlpool
73SRCS+= wp_block.c
74
75.for dir src dst in ${SSLASM}
76SRCS+= ${dst}.S
77GENERATED+=${dst}.S
78${dst}.S: ${LCRYPTO_SRC}/${dir}/asm/${src}.pl
79 /usr/bin/perl \
80 ${LCRYPTO_SRC}/${dir}/asm/${src}.pl linux32 ${.TARGET} > ${.TARGET}
81.endfor
82
83#CFLAGS+= -DOPENSSL_CPUID_OBJ # it's commented out in ppccap.c
84SRCS+= ppccpuid.S ppccap.c
85GENERATED+=ppccpuid.S
86ppccpuid.S: ${LCRYPTO_SRC}/ppccpuid.pl
87 /usr/bin/perl \
88 ${LCRYPTO_SRC}/ppccpuid.pl linux32 > ${.TARGET}
diff --git a/src/lib/libcrypto/arch/powerpc64/opensslconf.h b/src/lib/libcrypto/arch/powerpc64/opensslconf.h
new file mode 100644
index 0000000000..6fc15643a4
--- /dev/null
+++ b/src/lib/libcrypto/arch/powerpc64/opensslconf.h
@@ -0,0 +1,298 @@
1#include <openssl/opensslfeatures.h>
2/* crypto/opensslconf.h.in */
3
4#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
5#define OPENSSLDIR "/etc/ssl"
6#endif
7
8#undef OPENSSL_UNISTD
9#define OPENSSL_UNISTD <unistd.h>
10
11#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
12
13#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
14#define IDEA_INT unsigned int
15#endif
16
17#if defined(HEADER_MD2_H) && !defined(MD2_INT)
18#define MD2_INT unsigned int
19#endif
20
21#if defined(HEADER_RC2_H) && !defined(RC2_INT)
22/* I need to put in a mod for the alpha - eay */
23#define RC2_INT unsigned int
24#endif
25
26#if defined(HEADER_RC4_H)
27#if !defined(RC4_INT)
28/* using int types make the structure larger but make the code faster
29 * on most boxes I have tested - up to %20 faster. */
30/*
31 * I don't know what does "most" mean, but declaring "int" is a must on:
32 * - Intel P6 because partial register stalls are very expensive;
33 * - elder Alpha because it lacks byte load/store instructions;
34 */
35#define RC4_INT unsigned int
36#endif
37#if !defined(RC4_CHUNK)
38/*
39 * This enables code handling data aligned at natural CPU word
40 * boundary. See crypto/rc4/rc4_enc.c for further details.
41 */
42#define RC4_CHUNK unsigned long
43#endif
44#endif
45
46#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
47/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
48 * %20 speed up (longs are 8 bytes, int's are 4). */
49#ifndef DES_LONG
50#define DES_LONG unsigned int
51#endif
52#endif
53
54#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
55#define CONFIG_HEADER_BN_H
56#undef BN_LLONG
57
58/* Should we define BN_DIV2W here? */
59
60/* Only one for the following should be defined */
61#define SIXTY_FOUR_BIT_LONG
62#undef SIXTY_FOUR_BIT
63#undef THIRTY_TWO_BIT
64#endif
65
66#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
67#define CONFIG_HEADER_RC4_LOCL_H
68/* if this is defined data[i] is used instead of *data, this is a %20
69 * speedup on x86 */
70#undef RC4_INDEX
71#endif
72
73#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
74#define CONFIG_HEADER_BF_LOCL_H
75#undef BF_PTR
76#endif /* HEADER_BF_LOCL_H */
77
78#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
79#define CONFIG_HEADER_DES_LOCL_H
80#ifndef DES_DEFAULT_OPTIONS
81/* the following is tweaked from a config script, that is why it is a
82 * protected undef/define */
83#ifndef DES_PTR
84#undef DES_PTR
85#endif
86
87/* This helps C compiler generate the correct code for multiple functional
88 * units. It reduces register dependancies at the expense of 2 more
89 * registers */
90#ifndef DES_RISC1
91#undef DES_RISC1
92#endif
93
94#ifndef DES_RISC2
95#undef DES_RISC2
96#endif
97
98#if defined(DES_RISC1) && defined(DES_RISC2)
99YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
100#endif
101
102/* Unroll the inner loop, this sometimes helps, sometimes hinders.
103 * Very mucy CPU dependant */
104#ifndef DES_UNROLL
105#define DES_UNROLL
106#endif
107
108/* These default values were supplied by
109 * Peter Gutman <pgut001@cs.auckland.ac.nz>
110 * They are only used if nothing else has been defined */
111#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
112/* Special defines which change the way the code is built depending on the
113 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
114 even newer MIPS CPU's, but at the moment one size fits all for
115 optimization options. Older Sparc's work better with only UNROLL, but
116 there's no way to tell at compile time what it is you're running on */
117
118#if defined( sun ) /* Newer Sparc's */
119# define DES_PTR
120# define DES_RISC1
121# define DES_UNROLL
122#elif defined( __ultrix ) /* Older MIPS */
123# define DES_PTR
124# define DES_RISC2
125# define DES_UNROLL
126#elif defined( __osf1__ ) /* Alpha */
127# define DES_PTR
128# define DES_RISC2
129#elif defined ( _AIX ) /* RS6000 */
130 /* Unknown */
131#elif defined( __hpux ) /* HP-PA */
132 /* Unknown */
133#elif defined( __aux ) /* 68K */
134 /* Unknown */
135#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
136# define DES_UNROLL
137#elif defined( __sgi ) /* Newer MIPS */
138# define DES_PTR
139# define DES_RISC2
140# define DES_UNROLL
141#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
142# define DES_PTR
143# define DES_RISC1
144# define DES_UNROLL
145#endif /* Systems-specific speed defines */
146#endif
147
148#endif /* DES_DEFAULT_OPTIONS */
149#endif /* HEADER_DES_LOCL_H */
150#include <openssl/opensslfeatures.h>
151/* crypto/opensslconf.h.in */
152
153#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
154#define OPENSSLDIR "/etc/ssl"
155#endif
156
157#undef OPENSSL_UNISTD
158#define OPENSSL_UNISTD <unistd.h>
159
160#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
161
162#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
163#define IDEA_INT unsigned int
164#endif
165
166#if defined(HEADER_MD2_H) && !defined(MD2_INT)
167#define MD2_INT unsigned int
168#endif
169
170#if defined(HEADER_RC2_H) && !defined(RC2_INT)
171/* I need to put in a mod for the alpha - eay */
172#define RC2_INT unsigned int
173#endif
174
175#if defined(HEADER_RC4_H)
176#if !defined(RC4_INT)
177/* using int types make the structure larger but make the code faster
178 * on most boxes I have tested - up to %20 faster. */
179/*
180 * I don't know what does "most" mean, but declaring "int" is a must on:
181 * - Intel P6 because partial register stalls are very expensive;
182 * - elder Alpha because it lacks byte load/store instructions;
183 */
184#define RC4_INT unsigned int
185#endif
186#if !defined(RC4_CHUNK)
187/*
188 * This enables code handling data aligned at natural CPU word
189 * boundary. See crypto/rc4/rc4_enc.c for further details.
190 */
191#define RC4_CHUNK unsigned long
192#endif
193#endif
194
195#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
196/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
197 * %20 speed up (longs are 8 bytes, int's are 4). */
198#ifndef DES_LONG
199#define DES_LONG unsigned int
200#endif
201#endif
202
203#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
204#define CONFIG_HEADER_BN_H
205#undef BN_LLONG
206
207/* Should we define BN_DIV2W here? */
208
209/* Only one for the following should be defined */
210#define SIXTY_FOUR_BIT_LONG
211#undef SIXTY_FOUR_BIT
212#undef THIRTY_TWO_BIT
213#endif
214
215#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
216#define CONFIG_HEADER_RC4_LOCL_H
217/* if this is defined data[i] is used instead of *data, this is a %20
218 * speedup on x86 */
219#undef RC4_INDEX
220#endif
221
222#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
223#define CONFIG_HEADER_BF_LOCL_H
224#undef BF_PTR
225#endif /* HEADER_BF_LOCL_H */
226
227#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
228#define CONFIG_HEADER_DES_LOCL_H
229#ifndef DES_DEFAULT_OPTIONS
230/* the following is tweaked from a config script, that is why it is a
231 * protected undef/define */
232#ifndef DES_PTR
233#undef DES_PTR
234#endif
235
236/* This helps C compiler generate the correct code for multiple functional
237 * units. It reduces register dependancies at the expense of 2 more
238 * registers */
239#ifndef DES_RISC1
240#undef DES_RISC1
241#endif
242
243#ifndef DES_RISC2
244#undef DES_RISC2
245#endif
246
247#if defined(DES_RISC1) && defined(DES_RISC2)
248YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
249#endif
250
251/* Unroll the inner loop, this sometimes helps, sometimes hinders.
252 * Very mucy CPU dependant */
253#ifndef DES_UNROLL
254#define DES_UNROLL
255#endif
256
257/* These default values were supplied by
258 * Peter Gutman <pgut001@cs.auckland.ac.nz>
259 * They are only used if nothing else has been defined */
260#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
261/* Special defines which change the way the code is built depending on the
262 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
263 even newer MIPS CPU's, but at the moment one size fits all for
264 optimization options. Older Sparc's work better with only UNROLL, but
265 there's no way to tell at compile time what it is you're running on */
266
267#if defined( sun ) /* Newer Sparc's */
268# define DES_PTR
269# define DES_RISC1
270# define DES_UNROLL
271#elif defined( __ultrix ) /* Older MIPS */
272# define DES_PTR
273# define DES_RISC2
274# define DES_UNROLL
275#elif defined( __osf1__ ) /* Alpha */
276# define DES_PTR
277# define DES_RISC2
278#elif defined ( _AIX ) /* RS6000 */
279 /* Unknown */
280#elif defined( __hpux ) /* HP-PA */
281 /* Unknown */
282#elif defined( __aux ) /* 68K */
283 /* Unknown */
284#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
285# define DES_UNROLL
286#elif defined( __sgi ) /* Newer MIPS */
287# define DES_PTR
288# define DES_RISC2
289# define DES_UNROLL
290#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
291# define DES_PTR
292# define DES_RISC1
293# define DES_UNROLL
294#endif /* Systems-specific speed defines */
295#endif
296
297#endif /* DES_DEFAULT_OPTIONS */
298#endif /* HEADER_DES_LOCL_H */