SmartSnippets DA1459x SDK
Global.h
1 /*********************************************************************
2 * SEGGER Microcontroller GmbH *
3 * The Embedded Experts *
4 **********************************************************************
5 * *
6 * (c) 1995 - 2021 SEGGER Microcontroller GmbH *
7 * *
8 * www.segger.com Support: support@segger.com *
9 * *
10 **********************************************************************
11 * *
12 * SEGGER SystemView * Real-time application analysis *
13 * *
14 **********************************************************************
15 * *
16 * All rights reserved. *
17 * *
18 * SEGGER strongly recommends to not make any changes *
19 * to or modify the source code of this software in order to stay *
20 * compatible with the SystemView and RTT protocol, and J-Link. *
21 * *
22 * Redistribution and use in source and binary forms, with or *
23 * without modification, are permitted provided that the following *
24 * condition is met: *
25 * *
26 * o Redistributions of source code must retain the above copyright *
27 * notice, this condition and the following disclaimer. *
28 * *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
30 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
31 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
32 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
33 * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
34 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
35 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
36 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
37 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
38 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
39 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
40 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
41 * DAMAGE. *
42 * *
43 **********************************************************************
44 * *
45 * SystemView version: 3.30 *
46 * *
47 **********************************************************************
48 ----------------------------------------------------------------------
49 File : Global.h
50 Purpose : Global types
51  In case your application already has a Global.h, you should
52  merge the files. In order to use Segger code, the types
53  U8, U16, U32, I8, I16, I32 need to be defined in Global.h;
54  additional definitions do not hurt.
55 Revision: $Rev: 12501 $
56 ---------------------------END-OF-HEADER------------------------------
57 */
58 
59 #ifndef GLOBAL_H // Guard against multiple inclusion
60 #define GLOBAL_H
61 
62 #if dg_configSYSTEMVIEW
63 
64 #define U8 unsigned char
65 #define I8 signed char
66 #define U16 unsigned short
67 #define I16 signed short
68 #ifdef __x86_64__
69 #define U32 unsigned
70 #define I32 int
71 #else
72 #define U32 unsigned long
73 #define I32 signed long
74 #endif
75 
76 //
77 // CC_NO_LONG_SUPPORT can be defined to compile test
78 // without long support for compilers that do not
79 // support C99 and its long type.
80 //
81 #ifdef CC_NO_LONG_SUPPORT
82  #define PTR_ADDR U32
83 #else // Supports long type.
84 #if defined(_WIN32) && !defined(__clang__) && !defined(__MINGW32__)
85  //
86  // Microsoft VC6 compiler related
87  //
88  #define U64 unsigned __int64
89  #define U128 unsigned __int128
90  #define I64 __int64
91  #define I128 __int128
92  #if _MSC_VER <= 1200
93  #define U64_C(x) x##UI64
94  #else
95  #define U64_C(x) x##ULL
96  #endif
97 #else
98  //
99  // C99 compliant compiler
100  //
101  #define U64 unsigned long long
102  #define I64 signed long long
103  #define U64_C(x) x##ULL
104 #endif
105 
106 #if (defined(_WIN64) || defined(__LP64__)) // 64-bit symbols used by Visual Studio and GCC, maybe others as well.
107  #define PTR_ADDR U64
108 #else
109  #define PTR_ADDR U32
110 #endif
111 #endif // Supports long type.
112 
113 #endif /* #if dg_configSYSTEMVIEW */
114 
115 #endif // Avoid multiple inclusion
116 
117 /*************************** End of file ****************************/