|
@@ -0,0 +1,42 @@
|
|
|
+/*
|
|
|
+ * 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_ */
|