| /* | |
| * Target Long Definitions | |
| * | |
| * Copyright (c) 2003 Fabrice Bellard | |
| * Copyright (c) 2023 Linaro Ltd | |
| * | |
| * SPDX-License-Identifier: GPL-2.0-or-later | |
| */ | |
| #ifndef _TARGET_LONG_H_ | |
| #define _TARGET_LONG_H_ | |
| /* | |
| * Usually this should only be included via cpu-defs.h however for | |
| * certain cases where we want to build only two versions of a binary | |
| * object we can include directly. However the build-system must | |
| * ensure TARGET_LONG_BITS is defined directly. | |
| */ | |
| #ifndef TARGET_LONG_BITS | |
| #error TARGET_LONG_BITS not defined | |
| #endif | |
| #define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8) | |
| /* target_ulong is the type of a virtual address */ | |
| #if TARGET_LONG_SIZE == 4 | |
| typedef int32_t target_long; | |
| typedef uint32_t target_ulong; | |
| #define TARGET_FMT_lx "%08x" | |
| #define TARGET_FMT_ld "%d" | |
| #define TARGET_FMT_lu "%u" | |
| #elif TARGET_LONG_SIZE == 8 | |
| typedef int64_t target_long; | |
| typedef uint64_t target_ulong; | |
| #define TARGET_FMT_lx "%016" PRIx64 | |
| #define TARGET_FMT_ld "%" PRId64 | |
| #define TARGET_FMT_lu "%" PRIu64 | |
| #else | |
| #error TARGET_LONG_SIZE undefined | |
| #endif | |
| #endif /* _TARGET_LONG_H_ */ |