v2.0.0
Macros | Functions
rcp.h File Reference
`#include "pico.h"`
Include dependency graph for rcp.h:

Go to the source code of this file.

## Macros
#define | RCP_MASK_TRUE _u(0xa500a500)
#define | RCP_MASK_FALSE _u(0x00c300c3)
#define | RCP_MASK_INTXOR _u(0x96009600)
#define | __rcpinline __force_inline
#define | rcp_canary_get(tag)
#define | rcp_canary_get_nodelay(tag)
#define | rcp_canary_check(tag, canary)
#define | rcp_canary_check_nodelay(tag, canary)
#define | rcp_count_set(cnt)
#define | rcp_count_set_nodelay(cnt)
#define | rcp_count_check(cnt)
#define | rcp_count_check_nodelay(cnt)

## Functions
static __force_inline void | rcp_salt_core0 (uint64_t salt)
static __force_inline void | rcp_salt_core0_nodelay (uint64_t salt)
static __force_inline void | rcp_salt_core1 (uint64_t salt)
static __force_inline void | rcp_salt_core1_nodelay (uint64_t salt)
static __force_inline uint32_t | rcp_canary_status (void)
static __force_inline uint32_t | rcp_canary_status_nodelay (void)
static __force_inline void | rcp_bvalid (uint32_t b)
static __force_inline void | rcp_bvalid_nodelay (uint32_t b)
static __force_inline void | rcp_btrue (uint32_t b)
static __force_inline void | rcp_btrue_nodelay (uint32_t b)
static __force_inline void | rcp_bfalse (uint32_t b)
static __force_inline void | rcp_bfalse_nodelay (uint32_t b)
static __force_inline void | rcp_b2valid (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_b2valid_nodelay (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_b2and (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_b2and_nodelay (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_b2or (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_b2or_nodelay (uint32_t b0, uint32_t b1)
static __force_inline void | rcp_bxorvalid (uint32_t b, uint32_t mask)
static __force_inline void | rcp_bxorvalid_nodelay (uint32_t b, uint32_t mask)
static __force_inline void | rcp_bxortrue (uint32_t b, uint32_t mask)
static __force_inline void | rcp_bxortrue_nodelay (uint32_t b, uint32_t mask)
static __force_inline void | rcp_bxorfalse (uint32_t b, uint32_t mask)
static __force_inline void | rcp_bxorfalse_nodelay (uint32_t b, uint32_t mask)
static __force_inline void | rcp_ivalid (uint32_t x, uint32_t parity)
static __force_inline void | rcp_ivalid_nodelay (uint32_t x, uint32_t parity)
static __force_inline void | rcp_iequal (uint32_t x, uint32_t y)
static __force_inline void | rcp_iequal_nodelay (uint32_t x, uint32_t y)
static __force_inline uint8_t | rcp_random_byte (void)
static __force_inline uint8_t | rcp_random_byte_nodelay (void)
static __force_inline void | rcp_panic (void)

## Macro Definition Documentation

## ◆ rcp_canary_check

#define rcp_canary_check | ( |  | tag,
|  |  | canary
| ) |  |

Value:
({ \
rcp_asm ( \
"mcr p7, #0, %0, c%c1, c%c2, #1\n" \
: : "r" (canary), \
"i" (((tag) >> 4) & 0xf), "i" ((tag) & 0xf) \
); \
})

## ◆ rcp_canary_check_nodelay

#define rcp_canary_check_nodelay | ( |  | tag,
|  |  | canary
| ) |  |

Value:
({ \
rcp_asm ( \
"mcr2 p7, #0, %0, c%c1, c%c2, #1\n" \
: : "r" (canary), \
"i" (((tag) >> 4) & 0xf), "i" ((tag) & 0xf) \
); \
})

## ◆ rcp_canary_get

#define rcp_canary_get | ( |  | tag | ) |

Value:
({ \
uint32_t __canary_u32; \
rcp_asm ( \
"mrc p7, #0, %0, c%c1, c%c2, #1\n" \
: "=r" (__canary_u32) \
: "i" ((tag >> 4) & 0xf), "i" (tag & 0xf) \
); \
__canary_u32; \
})

## ◆ rcp_canary_get_nodelay

#define rcp_canary_get_nodelay | ( |  | tag | ) |

Value:
({ \
uint32_t __canary_u32; \
rcp_asm ( \
"mrc2 p7, #0, %0, c%c1, c%c2, #1\n" \
: "=r" (__canary_u32) \
: "i" (((tag) >> 4) & 0xf), "i" ((tag) & 0xf) \
); \
__canary_u32; \
})

## ◆ rcp_count_check

#define rcp_count_check | ( |  | cnt | ) |

Value:
rcp_asm ( \
"mcr p7, #5, r0, c%c0, c%c1, #1\n" \
: : "i"(((cnt) >> 4) & 0xf), "i"((cnt) & 0xf) \
);

## ◆ rcp_count_check_nodelay

#define rcp_count_check_nodelay | ( |  | cnt | ) |

Value:
rcp_asm ( \
"mcr2 p7, #5, r0, c%c0, c%c1, #1\n" \
: : "i"(((cnt) >> 4) & 0xf), "i"((cnt) & 0xf) \
);

## ◆ rcp_count_set

#define rcp_count_set | ( |  | cnt | ) |

Value:
rcp_asm ( \
"mcr p7, #4, r0, c%c0, c%c1, #0\n" \
: : "i"(((cnt) >> 4) & 0xf), "i"((cnt) & 0xf) \
);

## ◆ rcp_count_set_nodelay

#define rcp_count_set_nodelay | ( |  | cnt | ) |

Value:
rcp_asm ( \
"mcr2 p7, #4, r0, c%c0, c%c1, #0\n" \
: : "i"(((cnt) >> 4) & 0xf), "i"((cnt) & 0xf) \
);