30#include "architecture_arch.h"
42#ifndef ARCHITECTURE_BREAKPOINT
46#define ARCHITECTURE_BREAKPOINT(value) do {} while (1)
56#define ARCHITECTURE_WORD_BITS <NUM>
62#define ARCHITECTURE_WORD_BYTES <ARCHITECTURE_WORD_BITS / 8>
83#define SWORD_MAX <2^(ARCHITECTURE_WORD_BITS - 1) - 1>
87#define SWORD_MIN <-2^(ARCHITECTURE_WORD_BITS - 1)>
91#define UWORD_MAX <2^ARCHITECTURE_WORD_BITS - 1>
94#elif (ARCHITECTURE_WORD_BITS == 8)
95#define ARCHITECTURE_WORD_BYTES (1U)
98#define SWORD_MAX (INT8_MAX)
99#define SWORD_MIN (INT8_MIN)
100#define UWORD_MAX (UINT8_MAX)
101#elif (ARCHITECTURE_WORD_BITS == 16)
102#define ARCHITECTURE_WORD_BYTES (2U)
105#define SWORD_MAX (INT16_MAX)
106#define SWORD_MIN (INT16_MIN)
107#define UWORD_MAX (UINT16_MAX)
108#elif (ARCHITECTURE_WORD_BITS == 32)
109#define ARCHITECTURE_WORD_BYTES (4U)
112#define SWORD_MAX (INT32_MAX)
113#define SWORD_MIN (INT32_MIN)
114#define UWORD_MAX (UINT32_MAX)
115#elif (ARCHITECTURE_WORD_BITS == 64)
116#define ARCHITECTURE_WORD_BYTES (8U)
119#define SWORD_MAX (INT64_MAX)
120#define SWORD_MIN (INT64_MIN)
121#define UWORD_MAX (UINT64_MAX)
123#error "Unsupported word size (check ARCHITECTURE_WORD_BITS in architecture_arch.h)"
129#define UWORD_MIN (0U)
131#if !defined(ARCHITECTURE_LARGE_TXT_PTR) || DOXYGEN
140#define PRIxTXTPTR PRIxPTR
147#define PRI_SIZE_T_MODIFIER
148#elif (UINT_MAX == SIZE_MAX)
149#define PRI_SIZE_T_MODIFIER ""
150#elif (ULONG_MAX == SIZE_MAX)
151#define PRI_SIZE_T_MODIFIER "l"
153#error Unsupported size_t length
160#define PRIdSIZE PRI_SIZE_T_MODIFIER "d"
168#define PRIiSIZE PRI_SIZE_T_MODIFIER "i"
173#define PRIoSIZE PRI_SIZE_T_MODIFIER "o"
178#define PRIuSIZE PRI_SIZE_T_MODIFIER "u"
186#define PRIxSIZE PRI_SIZE_T_MODIFIER "x"
194#define PRIXSIZE PRI_SIZE_T_MODIFIER "X"
205#define WORD_ALIGNED __attribute__((aligned(ARCHITECTURE_WORD_BYTES)))
217#define HAS_ALIGNMENT_OF(addr, alignment) (((uintptr_t)(addr) & ((alignment) - 1)) == 0)
225#define IS_WORD_ALIGNED(addr) HAS_ALIGNMENT_OF(addr, ARCHITECTURE_WORD_BYTES)
uint< NUM > _t uword_t
Word sized unsigned integer.
int< NUM > _t sword_t
Word sized signed integer.
uintptr_t uinttxtptr_t
Pointer type to point anywhere in the .text section.
Adds include for missing inttype definitions.