MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxCsslSecureCounter_SW_Local.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------------*/
2/* Copyright 2020-2023, 2025 NXP */
3/* */
4/* NXP Confidential and Proprietary. This software is owned or controlled */
5/* by NXP and may only be used strictly in accordance with the applicable */
6/* license terms. By expressly accepting such terms or by downloading, */
7/* installing, activating and/or otherwise using the software, you are */
8/* agreeing that you have read, and that you agree to comply with and are */
9/* bound by, such license terms. If you do not agree to be bound by the */
10/* applicable license terms, then you may not retain, install, activate or */
11/* otherwise use the software. */
12/*--------------------------------------------------------------------------*/
13
19
20#ifndef MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
21#define MCUXCSSLSECURECOUNTER_SW_LOCAL_H_
22
23#include <mcuxClCore_Macros.h>
24
32
33
41
47#define MCUX_CSSL_SC_COUNTER_NAME \
48 mcuxCsslSecureCounter
49
50/****************************************************************************/
51/* Constants */
52/****************************************************************************/
53
59#define MCUX_CSSL_SC_CHECK_PASSED_IMPL (0xA5A5A5A5u)
60
66#define MCUX_CSSL_SC_CHECK_FAILED_IMPL (~ MCUX_CSSL_SC_CHECK_PASSED_IMPL)
67
73#define MCUX_CSSL_SC_COUNTER_TYPE_IMPL \
74 register uint32_t
75
81#define MCUX_CSSL_SC_VALUE_TYPE_IMPL \
82 static const uint32_t
83
89#define MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL \
90 uint32_t
91
92/****************************************************************************/
93/* Initialization */
94/****************************************************************************/
95
101#define MCUX_CSSL_SC_ALLOC_IMPL() \
102 MCUX_CSSL_SC_COUNTER_TYPE_IMPL MCUX_CSSL_SC_COUNTER_NAME
103
111#define MCUX_CSSL_SC_INIT_IMPL(value) \
112 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
113 MCUX_CSSL_SC_ALLOC_IMPL() = ((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) \
114 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
115
116/****************************************************************************/
117/* Check */
118/****************************************************************************/
119
129#define MCUX_CSSL_SC_CHECK_IMPL(value) \
130 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
131 (MCUX_CSSL_SC_CHECK_FAILED_IMPL ^ (MCUX_CSSL_SC_COUNTER_NAME - (((MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value)) + 1u))) \
132 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
133
134/****************************************************************************/
135/* Counter increment */
136/****************************************************************************/
142
152#define MCUX_CSSL_SC_ADD_IMPL(value) \
153 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
154 MCUXCLCORE_DONOTOPTIMIZE(MCUX_CSSL_SC_COUNTER_NAME); \
155 MCUX_CSSL_SC_COUNTER_NAME += (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value); \
156 MCUXCLCORE_DONOTOPTIMIZE(MCUX_CSSL_SC_COUNTER_NAME); \
157 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
158
168#define MCUX_CSSL_SC_ADD_ON_CALL_IMPL(value) \
169 MCUX_CSSL_SC_ADD_IMPL(value)
170
178#define MCUX_CSSL_SC_ADD_0X1_IMPL() \
179 MCUX_CSSL_SC_ADD_IMPL(0x1u)
180
188#define MCUX_CSSL_SC_ADD_0X10_IMPL() \
189 MCUX_CSSL_SC_ADD_IMPL(0x10u)
190
198#define MCUX_CSSL_SC_ADD_0X100_IMPL() \
199 MCUX_CSSL_SC_ADD_IMPL(0x100u)
200
201/****************************************************************************/
202/* Counter decrement */
203/****************************************************************************/
209
219#define MCUX_CSSL_SC_SUB_IMPL(value) \
220 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
221 MCUX_CSSL_SC_COUNTER_NAME -= (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
222 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
223
231#define MCUX_CSSL_SC_SUB_0X1_IMPL() \
232 MCUX_CSSL_SC_SUB_IMPL(0x1u)
233
241#define MCUX_CSSL_SC_SUB_0X10_IMPL() \
242 MCUX_CSSL_SC_SUB_IMPL(0x10u)
243
251#define MCUX_CSSL_SC_SUB_0X100_IMPL() \
252 MCUX_CSSL_SC_SUB_IMPL(0x100u)
253
254/****************************************************************************/
255/* Direct access (optional) */
256/****************************************************************************/
265
277#define MCUX_CSSL_SC_VALUE_IMPL() \
278 MCUX_CSSL_SC_COUNTER_NAME
279
292#define MCUX_CSSL_SC_ASSIGN_IMPL(value) \
293 MCUX_CSSL_ANALYSIS_START_PATTERN_SC_INTEGER_OVERFLOW() \
294 MCUX_CSSL_SC_COUNTER_NAME = (MCUX_CSSL_SC_BALANCING_VALUE_TYPE_IMPL) (value) \
295 MCUX_CSSL_ANALYSIS_STOP_PATTERN_SC_INTEGER_OVERFLOW()
296
297#endif /* MCUXCSSLSECURECOUNTER_SW_LOCAL_H_ */
Definition of macros.