hpm_mono_regs.h 1.6 KB

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