1 /* 2 * Copyright (c) 2021-2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 9 #ifndef HPM_MONO_H 10 #define HPM_MONO_H 11 12 typedef struct { 13 __RW uint32_t MONOL; /* 0x0: Low part of monotonic counter */ 14 __RW uint32_t MONOH; /* 0x4: High part of monotonic counter */ 15 } MONO_Type; 16 17 18 /* Bitfield definition for register: MONOL */ 19 /* 20 * COUNTER (RW) 21 * 22 * low part of monotonica counter, write to this counter will cause counter increase by 1 23 */ 24 #define MONO_MONOL_COUNTER_MASK (0xFFFFFFFFUL) 25 #define MONO_MONOL_COUNTER_SHIFT (0U) 26 #define MONO_MONOL_COUNTER_SET(x) (((uint32_t)(x) << MONO_MONOL_COUNTER_SHIFT) & MONO_MONOL_COUNTER_MASK) 27 #define MONO_MONOL_COUNTER_GET(x) (((uint32_t)(x) & MONO_MONOL_COUNTER_MASK) >> MONO_MONOL_COUNTER_SHIFT) 28 29 /* Bitfield definition for register: MONOH */ 30 /* 31 * EPOCH (RW) 32 * 33 * Fuse value for high part of monotonica 34 */ 35 #define MONO_MONOH_EPOCH_MASK (0xFFFF0000UL) 36 #define MONO_MONOH_EPOCH_SHIFT (16U) 37 #define MONO_MONOH_EPOCH_SET(x) (((uint32_t)(x) << MONO_MONOH_EPOCH_SHIFT) & MONO_MONOH_EPOCH_MASK) 38 #define MONO_MONOH_EPOCH_GET(x) (((uint32_t)(x) & MONO_MONOH_EPOCH_MASK) >> MONO_MONOH_EPOCH_SHIFT) 39 40 /* 41 * COUNTER (RW) 42 * 43 * high part of monotonica counter, write to this counter will cause counter increase by 1 if low part overflow 44 */ 45 #define MONO_MONOH_COUNTER_MASK (0xFFFFU) 46 #define MONO_MONOH_COUNTER_SHIFT (0U) 47 #define MONO_MONOH_COUNTER_SET(x) (((uint32_t)(x) << MONO_MONOH_COUNTER_SHIFT) & MONO_MONOH_COUNTER_MASK) 48 #define MONO_MONOH_COUNTER_GET(x) (((uint32_t)(x) & MONO_MONOH_COUNTER_MASK) >> MONO_MONOH_COUNTER_SHIFT) 49 50 51 52 53 #endif /* HPM_MONO_H */ 54