MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxClCore_Toolchain.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2022-2023, 2026 NXP */
3/* */
4/* SPDX-License-Identifier: BSD-3-Clause */
5/* */
6/* Redistribution and use in source and binary forms, with or without */
7/* modification, are permitted provided that the following conditions are */
8/* met: */
9/* */
10/* 1. Redistributions of source code must retain the above copyright */
11/* notice, this list of conditions and the following disclaimer. */
12/* */
13/* 2. Redistributions in binary form must reproduce the above copyright */
14/* notice, this list of conditions and the following disclaimer in the */
15/* documentation and/or other materials provided with the distribution. */
16/* */
17/* 3. Neither the name of the copyright holder nor the names of its */
18/* contributors may be used to endorse or promote products derived from */
19/* this software without specific prior written permission. */
20/* */
21/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS */
22/* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
23/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
24/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
25/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
26/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
27/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR */
28/* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
29/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
30/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
31/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
32/*--------------------------------------------------------------------------*/
33
34#ifndef MCUXCLCORE_TOOLCHAIN_H_
35#define MCUXCLCORE_TOOLCHAIN_H_
36
37#include <mcuxClCore_Platform.h>
39
40MCUX_CSSL_FP_FUNCTION_DEF(mcuxCl_Core_Swap64)
41static inline uint64_t mcuxCl_Core_Swap64(uint64_t value)
42{
43#if defined(__GNUC__) || defined(__clang__)
44 return __builtin_bswap64(value);
45#else
46 MCUX_CSSL_ANALYSIS_START_SUPPRESS_INTEGER_OVERFLOW("Offset calculations cannot overflow.")
47 return ((value >> 56) & 0x00000000000000FFULL) |
48 ((value >> 40) & 0x000000000000FF00ULL) |
49 ((value >> 24) & 0x0000000000FF0000ULL) |
50 ((value >> 8) & 0x00000000FF000000ULL) |
51 ((value << 8) & 0x000000FF00000000ULL) |
52 ((value << 24) & 0x0000FF0000000000ULL) |
53 ((value << 40) & 0x00FF000000000000ULL) |
54 ((value << 56) & 0xFF00000000000000ULL);
55 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_INTEGER_OVERFLOW()
56#endif
57}
58
59MCUX_CSSL_FP_FUNCTION_DEF(mcuxCl_Core_Swap32)
60static inline uint32_t mcuxCl_Core_Swap32(uint32_t value)
61{
62#if defined(__GNUC__) || defined(__clang__)
63 return __builtin_bswap32(value);
64#else
65 MCUX_CSSL_ANALYSIS_START_SUPPRESS_INTEGER_OVERFLOW("Offset calculations cannot overflow.")
66 return ((value >> 24) & 0x000000FFUL) |
67 ((value << 24) & 0xFF000000UL) |
68 ((value >> 8) & 0x0000FF00UL) |
69 ((value << 8) & 0x00FF0000UL);
70 MCUX_CSSL_ANALYSIS_STOP_SUPPRESS_INTEGER_OVERFLOW()
71#endif
72}
73
74
75#endif /* MCUXCLCORE_TOOLCHAIN_H_ */
Provides the API for the CSSL flow protection mechanism.
#define MCUX_CSSL_FP_FUNCTION_DEF(...)
Definition of a flow protected function.
Definition mcuxCsslFlowProtection.h:220