blob: a03388bd0fa360fa78ac090ec1844abaa2296fd9 [file] [log] [blame]
#ifndef BEDROCK_UNVERIFIED_BAREMINIMUM_INC_H_
#define BEDROCK_UNVERIFIED_BAREMINIMUM_INC_H_
static_assert(sizeof(br_word_t) == sizeof(br_signed_t), "");
static_assert(UINTPTR_MAX <= BR_WORD_MAX, "");
// "An object shall have its stored value accessed only ... a character type."
static inline br_word_t _br_load1(br_word_t a) {
return *((uint8_t *)a);
}
static inline br_word_t _br_load2(br_word_t a) {
uint16_t r = 0;
memcpy(&r, (void *)a, sizeof(r));
return r;
}
static inline br_word_t _br_load4(br_word_t a) {
uint32_t r = 0;
memcpy(&r, (void *)a, sizeof(r));
return r;
}
static inline br_word_t _br_load(br_word_t a) {
br_word_t r = 0;
memcpy(&r, (void *)a, sizeof(r));
return r;
}
static inline void _br_store1(br_word_t a, uint8_t v) {
*((uint8_t *)a) = v;
}
static inline void _br_store2(br_word_t a, uint16_t v) {
memcpy((void *)a, &v, sizeof(v));
}
static inline void _br_store4(br_word_t a, uint32_t v) {
memcpy((void *)a, &v, sizeof(v));
}
static inline void _br_store(br_word_t a, br_word_t v) {
memcpy((void *)a, &v, sizeof(v));
}
#endif // BEDROCK_UNVERIFIED_BAREMINIMUM_INC_H_