From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41179) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZGOcj-0007eR-J9 for qemu-devel@nongnu.org; Sat, 18 Jul 2015 05:41:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZGOci-0004fu-8u for qemu-devel@nongnu.org; Sat, 18 Jul 2015 05:41:37 -0400 Received: from mail-pd0-x22a.google.com ([2607:f8b0:400e:c02::22a]:34316) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZGOch-0004fo-VZ for qemu-devel@nongnu.org; Sat, 18 Jul 2015 05:41:36 -0400 Received: by pdbbh15 with SMTP id bh15so28703994pdb.1 for ; Sat, 18 Jul 2015 02:41:35 -0700 (PDT) From: Peter Crosthwaite Date: Sat, 18 Jul 2015 02:40:25 -0700 Message-Id: In-Reply-To: References: In-Reply-To: References: Subject: [Qemu-devel] [PATCH v3 15/35] include/exec: Split target_long def to new header List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Peter Crosthwaite , edgar.iglesias@gmail.com, pbonzini@redhat.com, afaerber@suse.de, rth@twiddle.net 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 --- 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 . + */ + +/* 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 + +#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