mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-24 08:28:12 +00:00
114 lines
5.0 KiB
C
114 lines
5.0 KiB
C
/*********************************************************************
|
|
* SEGGER Microcontroller GmbH *
|
|
* The Embedded Experts *
|
|
**********************************************************************
|
|
* *
|
|
* (c) 1995 - 2019 SEGGER Microcontroller GmbH *
|
|
* *
|
|
* www.segger.com Support: support@segger.com *
|
|
* *
|
|
**********************************************************************
|
|
* *
|
|
* SEGGER SystemView * Real-time application analysis *
|
|
* *
|
|
**********************************************************************
|
|
* *
|
|
* All rights reserved. *
|
|
* *
|
|
* SEGGER strongly recommends to not make any changes *
|
|
* to or modify the source code of this software in order to stay *
|
|
* compatible with the SystemView and RTT protocol, and J-Link. *
|
|
* *
|
|
* Redistribution and use in source and binary forms, with or *
|
|
* without modification, are permitted provided that the following *
|
|
* condition is met: *
|
|
* *
|
|
* o Redistributions of source code must retain the above copyright *
|
|
* notice, this condition and the following disclaimer. *
|
|
* *
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
|
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
|
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
|
|
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
|
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
|
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
|
|
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
|
|
* DAMAGE. *
|
|
* *
|
|
**********************************************************************
|
|
* *
|
|
* SystemView version: 3.20 *
|
|
* *
|
|
**********************************************************************
|
|
----------------------------------------------------------------------
|
|
File : Global.h
|
|
Purpose : Global types
|
|
In case your application already has a Global.h, you should
|
|
merge the files. In order to use Segger code, the types
|
|
U8, U16, U32, I8, I16, I32 need to be defined in Global.h;
|
|
additional definitions do not hurt.
|
|
Revision: $Rev: 12501 $
|
|
---------------------------END-OF-HEADER------------------------------
|
|
*/
|
|
|
|
#ifndef GLOBAL_H // Guard against multiple inclusion
|
|
#define GLOBAL_H
|
|
|
|
#define U8 unsigned char
|
|
#define I8 signed char
|
|
#define U16 unsigned short
|
|
#define I16 signed short
|
|
#ifdef __x86_64__
|
|
#define U32 unsigned
|
|
#define I32 int
|
|
#else
|
|
#define U32 unsigned long
|
|
#define I32 signed long
|
|
#endif
|
|
|
|
//
|
|
// CC_NO_LONG_SUPPORT can be defined to compile test
|
|
// without long support for compilers that do not
|
|
// support C99 and its long type.
|
|
//
|
|
#ifdef CC_NO_LONG_SUPPORT
|
|
#define PTR_ADDR U32
|
|
#else // Supports long type.
|
|
#if defined(_WIN32) && !defined(__clang__) && !defined(__MINGW32__)
|
|
//
|
|
// Microsoft VC6 compiler related
|
|
//
|
|
#define U64 unsigned __int64
|
|
#define U128 unsigned __int128
|
|
#define I64 __int64
|
|
#define I128 __int128
|
|
#if _MSC_VER <= 1200
|
|
#define U64_C(x) x##UI64
|
|
#else
|
|
#define U64_C(x) x##ULL
|
|
#endif
|
|
#else
|
|
//
|
|
// C99 compliant compiler
|
|
//
|
|
#define U64 unsigned long long
|
|
#define I64 signed long long
|
|
#define U64_C(x) x##ULL
|
|
#endif
|
|
|
|
#if (defined(_WIN64) || defined(__LP64__)) // 64-bit symbols used by Visual Studio and GCC, maybe others as well.
|
|
#define PTR_ADDR U64
|
|
#else
|
|
#define PTR_ADDR U32
|
|
#endif
|
|
#endif // Supports long type.
|
|
|
|
#endif // Avoid multiple inclusion
|
|
|
|
/*************************** End of file ****************************/
|