]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/jemalloc/include/jemalloc/internal/quantum.h
MFV r362565:
[FreeBSD/FreeBSD.git] / contrib / jemalloc / include / jemalloc / internal / quantum.h
1 #ifndef JEMALLOC_INTERNAL_QUANTUM_H
2 #define JEMALLOC_INTERNAL_QUANTUM_H
3
4 /*
5  * Minimum allocation alignment is 2^LG_QUANTUM bytes (ignoring tiny size
6  * classes).
7  */
8 #ifndef LG_QUANTUM
9 #  if (defined(__i386__) || defined(_M_IX86))
10 #    define LG_QUANTUM          4
11 #  endif
12 #  ifdef __ia64__
13 #    define LG_QUANTUM          4
14 #  endif
15 #  ifdef __alpha__
16 #    define LG_QUANTUM          4
17 #  endif
18 #  if (defined(__sparc64__) || defined(__sparcv9) || defined(__sparc_v9__))
19 #    define LG_QUANTUM          4
20 #  endif
21 #  if (defined(__amd64__) || defined(__x86_64__) || defined(_M_X64))
22 #    define LG_QUANTUM          4
23 #  endif
24 #  ifdef __arm__
25 #    define LG_QUANTUM          3
26 #  endif
27 #  ifdef __aarch64__
28 #    define LG_QUANTUM          4
29 #  endif
30 #  ifdef __hppa__
31 #    define LG_QUANTUM          4
32 #  endif
33 #  ifdef __m68k__
34 #    define LG_QUANTUM          3
35 #  endif
36 #  ifdef __mips__
37 #    define LG_QUANTUM          3
38 #  endif
39 #  ifdef __nios2__
40 #    define LG_QUANTUM          3
41 #  endif
42 #  ifdef __or1k__
43 #    define LG_QUANTUM          3
44 #  endif
45 #  ifdef __powerpc__
46 #    define LG_QUANTUM          4
47 #  endif
48 #  if defined(__riscv) || defined(__riscv__)
49 #    define LG_QUANTUM          4
50 #  endif
51 #  ifdef __s390__
52 #    define LG_QUANTUM          4
53 #  endif
54 #  if (defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || \
55         defined(__SH4_SINGLE_ONLY__))
56 #    define LG_QUANTUM          4
57 #  endif
58 #  ifdef __tile__
59 #    define LG_QUANTUM          4
60 #  endif
61 #  ifdef __le32__
62 #    define LG_QUANTUM          4
63 #  endif
64 #  ifndef LG_QUANTUM
65 #    error "Unknown minimum alignment for architecture; specify via "
66          "--with-lg-quantum"
67 #  endif
68 #endif
69
70 #define QUANTUM                 ((size_t)(1U << LG_QUANTUM))
71 #define QUANTUM_MASK            (QUANTUM - 1)
72
73 /* Return the smallest quantum multiple that is >= a. */
74 #define QUANTUM_CEILING(a)                                              \
75         (((a) + QUANTUM_MASK) & ~QUANTUM_MASK)
76
77 #endif /* JEMALLOC_INTERNAL_QUANTUM_H */