1 /* @(#)align.h	1.11 13/07/23 Copyright 1995-2013 J. Schilling */
2 /*
3  *	Platform dependent definitions for aligning data.
4  *
5  *	Copyright (c) 1995-2013 J. Schilling
6  */
7 /*
8  * The contents of this file are subject to the terms of the
9  * Common Development and Distribution License, Version 1.0 only
10  * (the "License").  You may not use this file except in compliance
11  * with the License.
12  *
13  * See the file CDDL.Schily.txt in this distribution for details.
14  * A copy of the CDDL is also available via the Internet at
15  * http://www.opensource.org/licenses/cddl1.txt
16  *
17  * When distributing Covered Code, include this CDDL HEADER in each
18  * file and include the License file CDDL.Schily.txt from this distribution.
19  */
20 
21 /*
22  *	The automatically created included file defines the following macros:
23  *
24  *	saligned(a)	One parameter aligned for a "short int"
25  *	s2aligned(a, b)	Both parameters aligned for a "short int"
26  *	ialigned(a)	One parameter aligned for a "int"
27  *	i2aligned(a, b)	Both parameters aligned for a "int"
28  *	laligned(a)	One parameter aligned for a "long"
29  *	l2aligned(a, b)	Both parameters aligned for a "long"
30  *	llaligned(a)	One parameter aligned for a "long long"
31  *	ll2aligned(a, b) Both parameters aligned for a "long long"
32  *	faligned(a)	One parameter aligned for a "float"
33  *	f2aligned(a, b)	Both parameters aligned for a "float"
34  *	daligned(a)	One parameter aligned for a "double"
35  *	d2aligned(a, b)	Both parameters aligned for a "double"
36  *	paligned(a)	One parameter aligned for a "pointer"
37  *	p2aligned(a, b)	Both parameters aligned for a "pointe"
38  *
39  *	salign(x)	Align for a "short int"
40  *	ialign(x)	Align for a "int"
41  *	lalign(x)	Align for a "long"
42  *	llalign(x)	Align for a "long long"
43  *	falign(x)	Align for a "float"
44  *	dalign(x)	Align for a "double"
45  *	palign(x)	Align for a "pointer"
46  */
47 #ifndef _SCHILY_ALIGN_H
48 #define	_SCHILY_ALIGN_H
49 
50 #ifndef _SCHILY_MCONFIG_H
51 #include <schily/mconfig.h>
52 #endif
53 
54 #ifndef	_SCHILY_UTYPES_H
55 #include <schily/utypes.h>
56 #endif
57 
58 #ifdef	SCHILY_BUILD	/* #defined by Schily makefile system */
59 	/*
60 	 * Include $(SRCROOT)/incs/$(OARCH)/align.h via
61 	 * -I$(SRCROOT)/incs/$(OARCH)/
62 	 */
63 #	include <align.h>
64 #else	/* !SCHILY_BUILD */
65 /*
66  * The stuff for static compilation. Include files from a previous
67  * dynamic autoconfiguration.
68  */
69 #ifdef	__SUNOS5_SPARC_CC32
70 #include <schily/sparc-sunos5-cc/align.h>
71 #define	__JS_ARCH_ALIGN_INCL
72 #endif
73 #ifdef	__SUNOS5_SPARC_CC64
74 #include <schily/sparc-sunos5-cc64/align.h>
75 #define	__JS_ARCH_ALIGN_INCL
76 #endif
77 #ifdef	__SUNOS5_SPARC_GCC32
78 #include <schily/sparc-sunos5-gcc/align.h>
79 #define	__JS_ARCH_ALIGN_INCL
80 #endif
81 #ifdef	__SUNOS5_SPARC_GCC64
82 #include <schily/sparc-sunos5-gcc64/align.h>
83 #define	__JS_ARCH_ALIGN_INCL
84 #endif
85 #ifdef	__SUNOS5_X86_CC32
86 #include <schily/i386-sunos5-cc/align.h>
87 #define	__JS_ARCH_ALIGN_INCL
88 #endif
89 #ifdef	__SUNOS5_X86_CC64
90 #include <schily/i386-sunos5-cc64/align.h>
91 #define	__JS_ARCH_ALIGN_INCL
92 #endif
93 #ifdef	__SUNOS5_X86_GCC32
94 #include <schily/i386-sunos5-gcc/align.h>
95 #define	__JS_ARCH_ALIGN_INCL
96 #endif
97 #ifdef	__SUNOS5_X86_GCC64
98 #include <schily/i386-sunos5-gcc64/align.h>
99 #define	__JS_ARCH_ALIGN_INCL
100 #endif
101 
102 #ifdef	__HPUX_HPPA_CC32
103 #include <schily/hppa-hp-ux-cc/align.h>
104 #define	__JS_ARCH_CONF_INCL
105 #endif
106 #ifdef	__HPUX_HPPA_CC64
107 #include <schily/hppa-hp-ux-cc64/align.h>
108 #define	__JS_ARCH_CONF_INCL
109 #endif
110 #ifdef	__HPUX_HPPA_GCC32
111 #include <schily/hppa-hp-ux-gcc/align.h>
112 #define	__JS_ARCH_CONF_INCL
113 #endif
114 #ifdef	__HPUX_HPPA_GCC64
115 #include <schily/hppa-hp-ux-gcc64/align.h>
116 #define	__JS_ARCH_CONF_INCL
117 #endif
118 
119 #ifdef	__LINUX_ARMV6L_GCC32
120 #include <schily/armv6l-linux-gcc/align.h>
121 #define	__JS_ARCH_CONF_INCL
122 #endif
123 #ifdef	__LINUX_ARMV5L_GCC32
124 #include <schily/armv6l-linux-gcc/align.h>
125 #define	__JS_ARCH_CONF_INCL
126 #endif
127 #ifdef	__LINUX_ARMV5TEJL_GCC32
128 #include <schily/armv5tejl-linux-gcc/align.h>
129 #define	__JS_ARCH_CONF_INCL
130 #endif
131 #ifdef	__LINUX_I386_GCC32
132 #include <schily/i686-linux-gcc/align.h>
133 #define	__JS_ARCH_CONF_INCL
134 #endif
135 #ifdef	__LINUX_amd64_GCC64
136 #include <schily/x86_64-linux-gcc/align.h>
137 #define	__JS_ARCH_CONF_INCL
138 #endif
139 
140 #ifdef	__MSWIN_X86_CL32
141 #include <schily/i686-cygwin32_nt-cl/align.h>
142 #define	__JS_ARCH_ALIGN_INCL
143 #endif
144 
145 #ifdef	__CYGWIN_X86_GCC
146 #include <schily/i686-cygwin32_nt-gcc/align.h>
147 #define	__JS_ARCH_ALIGN_INCL
148 #endif
149 
150 #ifndef	__JS_ARCH_ALIGN_INCL
151 /*
152  * #error will not work for all compilers (e.g. sunos4)
153  * The following line will abort compilation on all compilers
154  * if none of the above is defined. And that's  what we want.
155  */
156 Error unconfigured architecture
157 
158 #include <schily/err_arch.h>	/* Avoid "unknown directive" with K&R */
159 #endif
160 
161 #endif	/* SCHILY_BUILD */
162 
163 #ifdef	__cplusplus
164 extern "C" {
165 #endif
166 /*
167  * Fake in order to keep the silly hdrchk(1) quiet.
168  */
169 #ifdef	__cplusplus
170 }
171 #endif
172 
173 #endif /* _SCHILY_ALIGN_H */
174