• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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