Loading...
Searching...
No Matches
Platform-independent access to architecture

details More...

Detailed Description

details

This module provides architecture-independent access to architecture details.

Files

file  architecture.h
 Platform-independent access to architecture details.
 

Macros

#define ARCHITECTURE_BREAKPOINT(value)   do {} while (1)
 Set a breakpoint.
 
#define ARCHITECTURE_WORD_BITS   <NUM>
 Size of a word in bits.
 
#define ARCHITECTURE_WORD_BYTES   <ARCHITECTURE_WORD_BITS / 8>
 Size of a word in bytes.
 
#define SWORD_MAX   <2^(ARCHITECTURE_WORD_BITS - 1) - 1>
 Highest number an sword_t can hold.
 
#define SWORD_MIN   <-2^(ARCHITECTURE_WORD_BITS - 1)>
 Smallest number an sword_t can hold.
 
#define UWORD_MAX   <2^ARCHITECTURE_WORD_BITS - 1>
 Highest number an uword_t can hold.
 
#define UWORD_MIN   (0U)
 Smallest number an uword_t can hold.
 
#define PRIxTXTPTR   PRIxPTR
 Format string macro for text section pointer.
 
#define PRI_SIZE_T_MODIFIER   /* implementation defined */
 Architecture specific modifier used for printing sizes.
 
#define PRIdSIZE   PRI_SIZE_T_MODIFIER "d"
 Macro holding the format specifier to print an ssize_t variable in decimal representation.
 
#define PRIiSIZE   PRI_SIZE_T_MODIFIER "i"
 Macro holding the format specifier to print an ssize_t variable.
 
#define PRIoSIZE   PRI_SIZE_T_MODIFIER "o"
 Macro holding the format specifier to print an ssize_t variable in octal representation.
 
#define PRIuSIZE   PRI_SIZE_T_MODIFIER "u"
 Macro holding the format specifier to print an size_t variable in decimal representation.
 
#define PRIxSIZE   PRI_SIZE_T_MODIFIER "x"
 Macro holding the format specifier to print an size_t variable in hexadecimal representation.
 
#define PRIXSIZE   PRI_SIZE_T_MODIFIER "X"
 Macro holding the format specifier to print an size_t variable in hexadecimal representation.
 
#define WORD_ALIGNED   __attribute__((aligned(ARCHITECTURE_WORD_BYTES)))
 Type qualifier to use to align data on word boundaries.
 
#define HAS_ALIGNMENT_OF(addr, alignment)   (((uintptr_t)(addr) & ((alignment) - 1)) == 0)
 Check if addr is alignment to alignment.
 
#define IS_WORD_ALIGNED(addr)   HAS_ALIGNMENT_OF(addr, ARCHITECTURE_WORD_BYTES)
 Check if addr is word-aligned.
 

Typedefs

typedef uint< NUM > _t uword_t
 Word sized unsigned integer.
 
typedef int< NUM > _t sword_t
 Word sized signed integer.
 
typedef uintptr_t uinttxtptr_t
 Pointer type to point anywhere in the .text section.
 

Macro Definition Documentation

◆ ARCHITECTURE_BREAKPOINT

#define ARCHITECTURE_BREAKPOINT (   value)    do {} while (1)

Set a breakpoint.

Warning
If no Debugger is attached, the CPU might get stuck here and consume a lot of power until reset.
Parameters
[in]valueContext value for debugger, usually ignored.

Definition at line 47 of file architecture.h.

◆ ARCHITECTURE_WORD_BITS

#define ARCHITECTURE_WORD_BITS   <NUM>

Size of a word in bits.

Depending on architecture, this can have a value of 8, 16, 32, or 64

Definition at line 57 of file architecture.h.

◆ ARCHITECTURE_WORD_BYTES

#define ARCHITECTURE_WORD_BYTES   <ARCHITECTURE_WORD_BITS / 8>

Size of a word in bytes.

Depending on architecture, this can have a value or 1, 2, 4, or 8.

Definition at line 63 of file architecture.h.

◆ HAS_ALIGNMENT_OF

#define HAS_ALIGNMENT_OF (   addr,
  alignment 
)    (((uintptr_t)(addr) & ((alignment) - 1)) == 0)

Check if addr is alignment to alignment.

Parameters
[in]addrAddress to check for being aligned
[in]alignmentAlignment to check for
Precondition
alignment is a power of two. (But this is naturally fulfilled, as all possible alignment requirements in C are powers of two.)
Return values
1addr is aligned to alignment
0addr is unaligned

Definition at line 218 of file architecture.h.

◆ IS_WORD_ALIGNED

#define IS_WORD_ALIGNED (   addr)    HAS_ALIGNMENT_OF(addr, ARCHITECTURE_WORD_BYTES)

Check if addr is word-aligned.

Parameters
[in]addrAddress to check for word alignment
Return values
1addr is word-aligned
0addr is unaligned

Definition at line 226 of file architecture.h.

◆ PRI_SIZE_T_MODIFIER

#define PRI_SIZE_T_MODIFIER   /* implementation defined */

Architecture specific modifier used for printing sizes.

Definition at line 148 of file architecture.h.

◆ PRIdSIZE

#define PRIdSIZE   PRI_SIZE_T_MODIFIER "d"

Macro holding the format specifier to print an ssize_t variable in decimal representation.

Definition at line 161 of file architecture.h.

◆ PRIiSIZE

#define PRIiSIZE   PRI_SIZE_T_MODIFIER "i"

Macro holding the format specifier to print an ssize_t variable.

Same as PRIdSIZE for output. When used for input (e.g. in scanf()), PRIiSIZE will also accept hexadecimal and octal numbers if prefixed by 0x or 0, respectively.

Definition at line 169 of file architecture.h.

◆ PRIoSIZE

#define PRIoSIZE   PRI_SIZE_T_MODIFIER "o"

Macro holding the format specifier to print an ssize_t variable in octal representation.

Definition at line 174 of file architecture.h.

◆ PRIuSIZE

#define PRIuSIZE   PRI_SIZE_T_MODIFIER "u"

Macro holding the format specifier to print an size_t variable in decimal representation.

Definition at line 179 of file architecture.h.

◆ PRIxSIZE

#define PRIxSIZE   PRI_SIZE_T_MODIFIER "x"

Macro holding the format specifier to print an size_t variable in hexadecimal representation.

Same as PRIXSIZE for input, but uses lowercase letters for output (e.g. 2a for 42).

Definition at line 187 of file architecture.h.

◆ PRIXSIZE

#define PRIXSIZE   PRI_SIZE_T_MODIFIER "X"

Macro holding the format specifier to print an size_t variable in hexadecimal representation.

Same as PRIxSIZE for input, but uses uppercase letters for output (e.g. 2A for 42).

Definition at line 195 of file architecture.h.

◆ PRIxTXTPTR

#define PRIxTXTPTR   PRIxPTR

Format string macro for text section pointer.

Definition at line 141 of file architecture.h.

◆ SWORD_MAX

#define SWORD_MAX   <2^(ARCHITECTURE_WORD_BITS - 1) - 1>

Highest number an sword_t can hold.

Definition at line 84 of file architecture.h.

◆ SWORD_MIN

#define SWORD_MIN   <-2^(ARCHITECTURE_WORD_BITS - 1)>

Smallest number an sword_t can hold.

Definition at line 88 of file architecture.h.

◆ UWORD_MAX

#define UWORD_MAX   <2^ARCHITECTURE_WORD_BITS - 1>

Highest number an uword_t can hold.

Definition at line 92 of file architecture.h.

◆ UWORD_MIN

#define UWORD_MIN   (0U)

Smallest number an uword_t can hold.

Definition at line 130 of file architecture.h.

◆ WORD_ALIGNED

#define WORD_ALIGNED   __attribute__((aligned(ARCHITECTURE_WORD_BYTES)))

Type qualifier to use to align data on word boundaries.

Use like this:

Power Management mode blocker typedef.
Definition pm_layered.h:57
#define THREAD_STACKSIZE_DEFAULT
A reasonable default stack size that will suffice most smaller tasks.

Definition at line 206 of file architecture.h.

Typedef Documentation

◆ sword_t

typedef int<NUM> _t sword_t

Word sized signed integer.

Synonym to int8_t, int16_t, int32_t, or int64_t depending on architecture

Note
This type is pronounce es-word-tea. When slaying dragons, this is not the tool you're looking for.

Definition at line 80 of file architecture.h.

◆ uinttxtptr_t

typedef uintptr_t uinttxtptr_t

Pointer type to point anywhere in the .text section.

Definition at line 136 of file architecture.h.

◆ uword_t

typedef uint<NUM> _t uword_t

Word sized unsigned integer.

Synonym to uint8_t, uint16_t, uint32_t, or uint64_t depending on architecture

Definition at line 70 of file architecture.h.