CryptoAuthLib
Microchip CryptoAuthentication Library
atca_compiler.h
Go to the documentation of this file.
1 
31 #ifndef ATCA_COMPILER_H_
32 #define ATCA_COMPILER_H_
33 
34 #if defined(__clang__)
35 /* Clang/LLVM. ---------------------------------------------- */
36 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
37 #define ATCA_UINT32_HOST_TO_BE(x) (x)
38 #define ATCA_UINT32_BE_TO_HOST(x) (x)
39 #define ATCA_UINT64_HOST_TO_BE(x) (x)
40 #define ATCA_UINT64_BE_TO_HOST(x) (x)
41 #else
42 #define ATCA_UINT32_HOST_TO_BE(x) __builtin_bswap32(x)
43 #define ATCA_UINT32_BE_TO_HOST(x) __builtin_bswap32(x)
44 #define ATCA_UINT64_HOST_TO_BE(x) __builtin_bswap64(x)
45 #define ATCA_UINT64_BE_TO_HOST(x) __builtin_bswap64(x)
46 #endif
47 
48 #elif defined(__ICC) || defined(__INTEL_COMPILER)
49 /* Intel ICC/ICPC. ------------------------------------------ */
50 
51 #elif defined(__GNUC__) || defined(__GNUG__)
52 /* GNU GCC/G++. --------------------------------------------- */
53 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
54 #define ATCA_UINT32_HOST_TO_BE(x) (x)
55 #define ATCA_UINT32_BE_TO_HOST(x) (x)
56 #define ATCA_UINT64_HOST_TO_BE(x) (x)
57 #define ATCA_UINT64_BE_TO_HOST(x) (x)
58 #else
59 #define ATCA_UINT32_HOST_TO_BE(x) __builtin_bswap32(x)
60 #define ATCA_UINT32_BE_TO_HOST(x) __builtin_bswap32(x)
61 #define ATCA_UINT64_HOST_TO_BE(x) __builtin_bswap64(x)
62 #define ATCA_UINT64_BE_TO_HOST(x) __builtin_bswap64(x)
63 #endif
64 
65 #elif defined(__HP_cc) || defined(__HP_aCC)
66 /* Hewlett-Packard C/aC++. ---------------------------------- */
67 
68 #elif defined(__IBMC__) || defined(__IBMCPP__)
69 /* IBM XL C/C++. -------------------------------------------- */
70 
71 #elif defined(_MSC_VER)
72 /* Microsoft Visual Studio. --------------------------------- */
73 // MSVC is usually always little-endian architecture
74 #include <stdlib.h>
75 #define ATCA_UINT32_HOST_TO_BE(x) _byteswap_ulong(x)
76 #define ATCA_UINT32_BE_TO_HOST(x) _byteswap_ulong(x)
77 #define ATCA_UINT64_HOST_TO_BE(x) _byteswap_uint64(x)
78 #define ATCA_UINT64_BE_TO_HOST(x) _byteswap_uint64(x)
79 
80 #elif defined(__PGI)
81 /* Portland Group PGCC/PGCPP. ------------------------------- */
82 
83 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
84 /* Oracle Solaris Studio. ----------------------------------- */
85 
86 #endif
87 
88 #endif /* ATCA_COMPILER_H_ */