xref: /freebsd/share/man/man7/arch.7 (revision c321779676d0722f5d0a65c30e8b23b8a6547364)
1.\" Copyright (c) 2016 The FreeBSD Foundation. All rights reserved.
2.\"
3.\" This documentation was created by Ed Maste under sponsorship of
4.\" The FreeBSD Foundation.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\"
15.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND
16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25.\" SUCH DAMAGE.
26.\"
27.\" $FreeBSD$
28.\"
29.Dd May 3, 2017
30.Dt ARCH 7
31.Os
32.Sh NAME
33.Nm arch
34.Nd Architecture-specific details
35.Sh DESCRIPTION
36Differences between CPU architectures and platforms supported by
37.Fx .
38.Pp
39.Ss Type sizes
40On all supported architectures,
41.Bl -column -offset -indent "long long" "Size"
42.It Sy Type Ta Sy Size
43.It short Ta 2
44.It int Ta 4
45.It long Ta sizeof(void*)
46.It long long Ta 8
47.It float Ta 4
48.It double Ta 8
49.El
50.Bl -column -offset indent "Sy Architecture" "Sy sizeof(void *)" "Sy sizeof(long double)" "Sy sizeof(time_t)"
51.It Sy Architecture Ta Sy sizeof(void *) Ta Sy sizeof(long double) Ta Sy sizeof(time_t)
52.It amd64       Ta 8 Ta 16 Ta 8
53.It arm         Ta 4 Ta  8 Ta 8
54.It armeb       Ta 4 Ta  8 Ta 8
55.It armv6       Ta 4 Ta  8 Ta 8
56.It arm64       Ta 8 Ta 16 Ta 8
57.It i386        Ta 4 Ta 12 Ta 4
58.It mips        Ta 4 Ta  8 Ta 8
59.It mipsel      Ta 4 Ta  8 Ta 8
60.It mipselhf    Ta 4 Ta  8 Ta 8
61.It mipshf      Ta 4 Ta  8 Ta 8
62.It mipsn32     Ta 4 Ta  8 Ta 8
63.It mips64      Ta 8 Ta  8 Ta 8
64.It mips64el    Ta 8 Ta  8 Ta 8
65.It mips64elhf  Ta 8 Ta  8 Ta 8
66.It mips64hf    Ta 8 Ta  8 Ta 8
67.It powerpc     Ta 4 Ta  8 Ta 4
68.It powerpcspe  Ta 4 Ta  8 Ta 4
69.It powerpc64   Ta 8 Ta  8 Ta 8
70.It riscv64     Ta 8 Ta 16 Ta 8
71.It riscv64sf   Ta 8 Ta 16 Ta 8
72.It sparc64     Ta 8 Ta 16 Ta 8
73.El
74.Ss Endianness and Char Signedness
75.Bl -column -offset indent "Sy Architecture" "Sy Endianness" "Sy char Signedness"
76.It Sy Architecture Ta Sy Endianness Ta Sy char Signedness
77.It amd64       Ta little Ta   signed
78.It arm         Ta little Ta unsigned
79.It armeb       Ta big    Ta unsigned
80.It armv6       Ta little Ta unsigned
81.It arm64       Ta little Ta unsigned
82.It i386        Ta little Ta   signed
83.It mips        Ta big    Ta   signed
84.It mipsel      Ta little Ta   signed
85.It mipselhf    Ta little Ta   signed
86.It mipshf      Ta big    Ta   signed
87.It mipsn32     Ta big    Ta   signed
88.It mips64      Ta big    Ta   signed
89.It mips64el    Ta little Ta   signed
90.It mips64elhf  Ta little Ta   signed
91.It mips64hf    Ta big    Ta   signed
92.It powerpc     Ta big    Ta unsigned
93.It powerpcspe  Ta big    Ta unsigned
94.It powerpc64   Ta big    Ta unsigned
95.It riscv64     Ta little Ta   signed
96.It riscv64sf   Ta little Ta   signed
97.It sparc64     Ta big    Ta   signed
98.El
99.Ss Page Size
100.Bl -column -offset indent "Sy Architecture" "Sy Page Sizes"
101.It Sy Architecture Ta Sy Page Sizes
102.It amd64       Ta 4K, 2M, 1G
103.It arm         Ta 4K
104.It armeb       Ta 4K
105.It armv6       Ta 4K, 1M
106.It arm64       Ta 4K, 2M, 1G
107.It i386        Ta 4K, 2M (PAE), 4M
108.It mips        Ta 4K
109.It mipsel      Ta 4K
110.It mipselhf    Ta 4K
111.It mipshf      Ta 4K
112.It mipsn32     Ta 4K
113.It mips64      Ta 4K
114.It mips64el    Ta 4K
115.It mips64elhf  Ta 4K
116.It mips64hf    Ta 4K
117.It powerpc     Ta 4K
118.It powerpcspe  Ta 4K
119.It powerpc64   Ta 4K
120.It riscv64     Ta 4K
121.It riscv64sf   Ta 4K
122.It sparc64     Ta 8K
123.El
124.Ss Floating Point
125.Bl -column -offset indent "Sy Architecture" "Sy float, double" "Sy long double"
126.It Sy Architecture Ta Sy float, double Ta Sy long double
127.It amd64       Ta hard Ta hard, 80 bit
128.It arm         Ta soft Ta soft, double precision
129.It armeb       Ta soft Ta soft, double precision
130.It armv6       Ta hard Ta hard, double precision
131.It arm64       Ta hard Ta soft, quad precision
132.It i386        Ta hard Ta hard, 80 bit
133.It mips        Ta soft Ta identical to double
134.It mipsel      Ta soft Ta identical to double
135.It mipselhf    Ta hard Ta identical to double
136.It mipshf      Ta hard Ta identical to double
137.It mipsn32     Ta soft Ta identical to double
138.It mips64      Ta soft Ta identical to double
139.It mips64el    Ta soft Ta identical to double
140.It mips64elhf  Ta hard Ta identical to double
141.It mips64hf    Ta hard Ta identical to double
142.It powerpc     Ta hard Ta hard, double precision
143.It powerpcspe  Ta hard Ta hard, double precision
144.It powerpc64   Ta hard Ta hard, double precision
145.It riscv64     Ta hard Ta hard, double precision
146.It riscv64sf   Ta soft Ta soft, double precision
147.It sparc64     Ta hard Ta hard, quad precision
148.El
149.Ss Predefined Macros
150The compiler provides a number of predefined macros.
151Some of these provide architecture-specific details and are explained below.
152Other macros, including those required by the language standard, are not
153included here.
154.Pp
155The full set of predefined macros can be obtained with this command:
156.Bd -literal -offset indent
157cc -x c -dM -E /dev/null
158.Ed
159.Pp
160Common type size and endianness macros:
161.Bl -column -offset indent "BYTE_ORDER" "Sy Meaning"
162.It Sy Macro Ta Sy Meaning
163.It Dv __LP64__ Ta 64-bit (8-byte) long and pointer, 32-bit (4-byte) int
164.It Dv __ILP32__ Ta 32-bit (4-byte) int, long and pointer
165.It Dv BYTE_ORDER Ta Either Dv BIG_ENDIAN or Dv LITTLE_ENDIAN .
166.Dv PDP11_ENDIAN
167is not used on
168.Fx .
169.El
170.Pp
171Architecture-specific macros:
172.Bl -column -offset indent "Sy Architecture" "Sy Predefined macros"
173.It Sy Architecture Ta Sy Predefined macros
174.It amd64       Ta Dv __amd64__, Dv __x86_64__
175.It arm         Ta Dv __arm__
176.It armeb       Ta Dv __arm__
177.It armv6       Ta Dv __arm__, Dv __ARM_ARCH >= 6
178.It arm64       Ta Dv __aarch64__
179.It i386        Ta Dv __i386__
180.It mips        Ta Dv __mips__, Dv __MIPSEB__, Dv __mips_o32
181.It mipsel      Ta Dv __mips__, Dv __mips_o32
182.It mipselhf    Ta Dv __mips__, Dv __mips_o32
183.It mipshf      Ta Dv __mips__, Dv __MIPSEB__, Dv __mips_o32
184.It mipsn32     Ta Dv __mips__, Dv __MIPSEB__, Dv __mips_n32
185.It mips64      Ta Dv __mips__, Dv __MIPSEB__, Dv __mips_n64
186.It mips64el    Ta Dv __mips__, Dv __mips_n64
187.It mips64elhf  Ta Dv __mips__, Dv __mips_n64
188.It mips64hf    Ta Dv __mips__, Dv __MIPSEB__, Dv __mips_n64
189.It powerpc     Ta Dv __powerpc__
190.It powerpcspe  Ta Dv __powerpc__, Dv __SPE__
191.It powerpc64   Ta Dv __powerpc__, Dv __powerpc64__
192.It riscv64     Ta Dv __riscv__, Dv __riscv64
193.It riscv64sf   Ta Dv __riscv__, Dv __riscv64
194.It sparc64     Ta Dv __sparc64__
195.El
196.Sh SEE ALSO
197.Xr src.conf 5 ,
198.Xr build 7
199.Sh HISTORY
200An
201.Nm
202manual page appeared in
203.Fx 12 .
204