[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 15/35] include/exec: Split target_long def to new
From: |
Peter Crosthwaite |
Subject: |
[Qemu-devel] [PATCH v3 15/35] include/exec: Split target_long def to new header |
Date: |
Sat, 18 Jul 2015 02:40:25 -0700 |
This is currently provided by cpu-defs and is a target specific
definition. However, to prepare for multi-arch only the bare minimum
content from cpu-defs.h should be exported to core code. And this is
all we need. So split it to a new header that the target_multi cpu.h
can include to save on having to include the ill-defined cpu-defs.h.
Allow multiple inclusion for multi-arch where multiple cpu.h's need
to be included and target_long will vary for each. This means that
target_[u]long needs to be changed from a typedef to a #define to
allow for redefinition.
Signed-off-by: Peter Crosthwaite <address@hidden>
---
Changed since RFC v2:
Convert target_[u]long to #define
---
include/exec/cpu-defs.h | 23 +-------------------
include/exec/target-long.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 22 deletions(-)
create mode 100644 include/exec/target-long.h
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
index c6828cc..3889eb7 100644
--- a/include/exec/cpu-defs.h
+++ b/include/exec/cpu-defs.h
@@ -33,28 +33,7 @@
#endif
#include "exec/memattrs.h"
-#ifndef TARGET_LONG_BITS
-#error TARGET_LONG_BITS must be defined before including this header
-#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
+#include "exec/target-long.h"
#if !defined(CONFIG_USER_ONLY)
/* use a fully associative victim tlb of 8 entries */
diff --git a/include/exec/target-long.h b/include/exec/target-long.h
new file mode 100644
index 0000000..a10830c
--- /dev/null
+++ b/include/exec/target-long.h
@@ -0,0 +1,54 @@
+/*
+ * definition for the target_long type and friends.
+ *
+ * Copyright (c) 2003 Fabrice Bellard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* No multiple included guard intended. Multi-arch setups may require multiple
+ * cpu.h's included which means this can be and should be reached twice.
+ */
+
+#include <stdint.h>
+
+#ifndef TARGET_LONG_BITS
+#error TARGET_LONG_BITS must be defined before including this header
+#endif
+
+#undef TARGET_LONG_SIZE
+#define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8)
+
+#undef target_long
+#undef target_ulong
+#undef TARGET_FMT_lx
+#undef TARGET_FMT_ld
+#undef TARGET_FMT_lu
+
+/* target_ulong is the type of a virtual address */
+#if TARGET_LONG_SIZE == 4
+#define target_long int32_t
+#define target_ulong uint32_t
+#define TARGET_FMT_lx "%08x"
+#define TARGET_FMT_ld "%d"
+#define TARGET_FMT_lu "%u"
+#elif TARGET_LONG_SIZE == 8
+#define target_long int64_t
+#define target_ulong uint64_t
+#define TARGET_FMT_lx "%016" PRIx64
+#define TARGET_FMT_ld "%" PRId64
+#define TARGET_FMT_lu "%" PRIu64
+#else
+#error TARGET_LONG_SIZE undefined
+#endif
--
1.9.1
- [Qemu-devel] [PATCH v3 05/35] tcg: Move tcg_tb_ptr to -common, (continued)
- [Qemu-devel] [PATCH v3 05/35] tcg: Move tcg_tb_ptr to -common, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 06/35] translate: move real_host_page setting to -common, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 07/35] cpus: Listify cpu_list() function, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 08/35] translate-common: Listify tcg_enabled(), Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 09/35] core: Convert tcg_enabled() users to tcg_(any|all)_enabled(), Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 10/35] exec-all: Move cpu_can_do_io() to qom/cpu.h, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 11/35] cputlb: move CPU_LOOP() for tlb_reset() to exec.c, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 12/35] cputlb: Change tlb_set_dirty() arg to cpu, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 13/35] include/exec: Move cputlb exec.c defs out, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 14/35] cpu-common: Define tb_page_addr_t for everyone, Peter Crosthwaite, 2015/07/18
- [Qemu-devel] [PATCH v3 15/35] include/exec: Split target_long def to new header,
Peter Crosthwaite <=
[Qemu-devel] [PATCH v3 17/35] monitor: uninclude cpu_ldst, Peter Crosthwaite, 2015/07/18
[Qemu-devel] [PATCH v3 16/35] cpu-defs: Allow multiple inclusions, Peter Crosthwaite, 2015/07/18
[Qemu-devel] [PATCH v3 19/35] target-*: cpu.h: Undefine core code symbols, Peter Crosthwaite, 2015/07/18
[Qemu-devel] [PATCH v3 18/35] target-*: Don't redefine cpu_exec(), Peter Crosthwaite, 2015/07/18
[Qemu-devel] [PATCH v3 20/35] Makefile.target: Introduce arch-obj, Peter Crosthwaite, 2015/07/18