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 __loongarch__
34# define LG_QUANTUM 4
35# endif
36# ifdef __m68k__
37# define LG_QUANTUM 3
38# endif
39# ifdef __mips__
40# if defined(__mips_n32) || defined(__mips_n64)
41# define LG_QUANTUM 4
42# else
43# define LG_QUANTUM 3
44# endif
45# endif
46# ifdef __nios2__
47# define LG_QUANTUM 3
48# endif
49# ifdef __or1k__
50# define LG_QUANTUM 3
51# endif
52# if defined(__powerpc__) || defined(__ppc__) || defined(__powerpc64__) || defined(__ppc64__)
53# define LG_QUANTUM 4
54# endif
55# if defined(__riscv) || defined(__riscv__)
56# define LG_QUANTUM 4
57# endif
58# ifdef __s390__
59# define LG_QUANTUM 4
60# endif
61# if (defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || \
62 defined(__SH4_SINGLE_ONLY__))
63# define LG_QUANTUM 4
64# endif
65# ifdef __tile__
66# define LG_QUANTUM 4
67# endif
68# ifdef __le32__
69# define LG_QUANTUM 4
70# endif
71# ifdef __arc__
72# define LG_QUANTUM 3
73# endif
74# ifndef LG_QUANTUM
75# error "Unknown minimum alignment for architecture; specify via "
76 "--with-lg-quantum"
77# endif
78#endif
79
80#define QUANTUM ((size_t)(1U << LG_QUANTUM))
81#define QUANTUM_MASK (QUANTUM - 1)
82
83/* Return the smallest quantum multiple that is >= a. */
84#define QUANTUM_CEILING(a) \
85 (((a) + QUANTUM_MASK) & ~QUANTUM_MASK)
86
87#endif /* JEMALLOC_INTERNAL_QUANTUM_H */
88