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_WORD_BITS   <NUM>
 Size of a word in bits. More...
 
#define ARCHITECTURE_WORD_BYTES   <NUM>
 Size of a word in bytes. More...
 
#define PRIxTXTPTR   PRIxPTR
 Format string macro for text section pointer.
 
#define WORD_ALIGNED   __attribute__((aligned(ARCHITECTURE_WORD_BYTES)))
 Type qualifier to use to align data on word boundaries. More...
 
#define HAS_ALIGNMENT_OF(addr, alignment)   (((uintptr_t)(addr) & ((alignment) - 1)) == 0)
 Check if addr is alignment to alignment. More...
 
#define IS_WORD_ALIGNED(addr)   HAS_ALIGNMENT_OF(addr, ARCHITECTURE_WORD_BYTES)
 Check if addr is word-aligned. More...
 
#define UWORD_MIN   0
 Smallest number an uword_t can hold.
 
#define UWORD_MAX   ((1ULL << ARCHITECTURE_WORD_BITS) - 1)
 Highest number an uword_t can hold.
 
#define SWORD_MIN   (-(1LL << (ARCHITECTURE_WORD_BITS - 1)))
 Smallest number an sword_t can hold.
 
#define SWORD_MAX   ((1LL << (ARCHITECTURE_WORD_BITS - 1)) - 1)
 Highest number an sword_t can hold.
 

Typedefs

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

Macro Definition Documentation

◆ 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, or 32

Definition at line 43 of file architecture.h.

◆ ARCHITECTURE_WORD_BYTES

#define ARCHITECTURE_WORD_BYTES   <NUM>

Size of a word in bytes.

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

Definition at line 49 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 116 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 124 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: thread_config.h:43

Definition at line 104 of file architecture.h.

Typedef Documentation

◆ sword_t

typedef int<num> _t sword_t

Word sized signed integer.

Synonym to int8_t, int16_t or int32_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 66 of file architecture.h.

◆ uword_t

typedef uint<num> _t uword_t

Word sized unsigned integer.

Synonym to uint8_t, uint16_t or uint32_t depending on architecture

Definition at line 56 of file architecture.h.