24 #ifndef ARCHITECTURE_H
25 #define ARCHITECTURE_H
30 #include "architecture_arch.h"
43 #define ARCHITECTURE_WORD_BITS <NUM>
49 #define ARCHITECTURE_WORD_BYTES <NUM>
67 #elif (ARCHITECTURE_WORD_BITS == 8)
68 #define ARCHITECTURE_WORD_BYTES (1U)
71 #elif (ARCHITECTURE_WORD_BITS == 16)
72 #define ARCHITECTURE_WORD_BYTES (2U)
75 #elif (ARCHITECTURE_WORD_BITS == 32)
76 #define ARCHITECTURE_WORD_BYTES (4U)
80 #error "Unsupported word size (check ARCHITECTURE_WORD_BITS in architecture_arch.h)"
83 #if !defined(ARCHITECTURE_LARGE_TXT_PTR) || DOXYGEN
92 #define PRIxTXTPTR PRIxPTR
104 #define WORD_ALIGNED __attribute__((aligned(ARCHITECTURE_WORD_BYTES)))
116 #define HAS_ALIGNMENT_OF(addr, alignment) (((uintptr_t)(addr) & ((alignment) - 1)) == 0)
124 #define IS_WORD_ALIGNED(addr) HAS_ALIGNMENT_OF(addr, ARCHITECTURE_WORD_BYTES)
134 #define UWORD_MAX ((1ULL << ARCHITECTURE_WORD_BITS) - 1)
139 #define SWORD_MIN (-(1LL << (ARCHITECTURE_WORD_BITS - 1)))
144 #define SWORD_MAX ((1LL << (ARCHITECTURE_WORD_BITS - 1)) - 1)
int< num > _t sword_t
Word sized signed integer.
uint< num > _t uword_t
Word sized unsigned integer.
uintptr_t uinttxtptr_t
Pointer type to point anywhere in the .text section.
Adds include for missing inttype definitions.