From patchwork Wed Apr 3 10:32:04 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 233398 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 8F0022C00A0 for ; Wed, 3 Apr 2013 21:59:23 +1100 (EST) Received: from localhost ([::1]:60878 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNL1C-0002r3-D2 for incoming@patchwork.ozlabs.org; Wed, 03 Apr 2013 06:34:14 -0400 Received: from eggs.gnu.org ([208.118.235.92]:40598) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNKzY-00014h-IW for qemu-devel@nongnu.org; Wed, 03 Apr 2013 06:32:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UNKzU-0004J6-9i for qemu-devel@nongnu.org; Wed, 03 Apr 2013 06:32:32 -0400 Received: from mail-we0-x22d.google.com ([2a00:1450:400c:c03::22d]:57317) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNKzU-0004Iu-0y for qemu-devel@nongnu.org; Wed, 03 Apr 2013 06:32:28 -0400 Received: by mail-we0-f173.google.com with SMTP id t57so1025271wey.4 for ; Wed, 03 Apr 2013 03:32:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=5jq5V1iiMvwUYx0Y3Y5wsuy79PDBEzIV74JkRAfVRY4=; b=YpPCTNdaFd9guNTnJMjuF1ORPqT7Lqpc10+yXmnA3FUUiz8LH9x4x/ytRU9dm8z9D4 Yiv7gOBmbQ32NlFe0Cv5uusG8wqQJD00EZGpm1FAWZak7FirfbsJEamVdQF7en/WVFfF PrTF4E14fmahrtdsFGv1r2kel/TI1cv3l6HCptNjg4/7n38fbjv2gB1MYzsT1QAU5Skd TkdQ0pn0w2FOAFgH18pnFWHzymYzuLRqHl2iANeWt9/rrwjdyY8sHR3q9Qt1BHG1KtSt AiWbfdmf4dju75ZQu9N+IHnPwXg5ViIDvBuYM7j81Wsvm5mDdSB0/ZDlws1q5UWxC0mH y2PA== X-Received: by 10.180.189.205 with SMTP id gk13mr21802461wic.25.1364985147321; Wed, 03 Apr 2013 03:32:27 -0700 (PDT) Received: from playground.lan (93-34-176-20.ip50.fastwebnet.it. [93.34.176.20]) by mx.google.com with ESMTPS id dm9sm24010369wib.3.2013.04.03.03.32.25 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 03 Apr 2013 03:32:26 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 3 Apr 2013 12:32:04 +0200 Message-Id: <1364985128-23772-7-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1364985128-23772-1-git-send-email-pbonzini@redhat.com> References: <1364985128-23772-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c03::22d Cc: aurelien@aurel32.net, pmaydell@linaro.org Subject: [Qemu-devel] [PATCH v2 06/10] elfload: only give abi_long/ulong the alignment specified by the target X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Previously, this was done for target_long/ulong, and propagated to abi_long/ulong via a typedef. But target_long/ulong should not have any specific alignment, it is never used to access guest memory. Signed-off-by: Paolo Bonzini --- configure | 9 --------- include/exec/cpu-defs.h | 8 ++++---- include/exec/user/abitypes.h | 19 +++++++++++++------ target-m68k/cpu.h | 1 + 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/configure b/configure index 8276e79..0763047 100755 --- a/configure +++ b/configure @@ -4011,7 +4011,6 @@ bflt="no" target_nptl="no" interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` gdb_xml_files="" -target_long_alignment=4 target_llong_alignment=8 target_libs_softmmu= @@ -4024,10 +4023,8 @@ case "$target_arch2" in ;; x86_64) TARGET_BASE_ARCH=i386 - target_long_alignment=8 ;; alpha) - target_long_alignment=8 target_nptl="yes" ;; arm|armeb) @@ -4046,7 +4043,6 @@ case "$target_arch2" in m68k) bflt="yes" gdb_xml_files="cf-core.xml cf-fp.xml" - target_long_alignment=2 target_llong_alignment=2 ;; microblaze|microblazeel) @@ -4069,7 +4065,6 @@ case "$target_arch2" in TARGET_ARCH=mips64 TARGET_BASE_ARCH=mips echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak - target_long_alignment=8 ;; moxie) ;; @@ -4091,7 +4086,6 @@ case "$target_arch2" in TARGET_BASE_ARCH=ppc TARGET_ABI_DIR=ppc gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" - target_long_alignment=8 ;; ppc64abi32) TARGET_ARCH=ppc64 @@ -4109,7 +4103,6 @@ case "$target_arch2" in ;; sparc64) TARGET_BASE_ARCH=sparc - target_long_alignment=8 ;; sparc32plus) TARGET_ARCH=sparc64 @@ -4119,7 +4112,6 @@ case "$target_arch2" in ;; s390x) target_nptl="yes" - target_long_alignment=8 ;; unicore32) ;; @@ -4151,7 +4143,6 @@ case "$cpu" in ;; esac -echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak target_arch_name="`upper $TARGET_ARCH`" diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h index 2aa9331..3cf1272 100644 --- a/include/exec/cpu-defs.h +++ b/include/exec/cpu-defs.h @@ -40,14 +40,14 @@ typedef int64_t target_llong __attribute__((aligned(TARGET_LLONG_ALIGNMENT))); typedef uint64_t target_ullong __attribute__((aligned(TARGET_LLONG_ALIGNMENT))); /* target_ulong is the type of a virtual address */ #if TARGET_LONG_SIZE == 4 -typedef int32_t target_long __attribute__((aligned(TARGET_LONG_ALIGNMENT))); -typedef uint32_t target_ulong __attribute__((aligned(TARGET_LONG_ALIGNMENT))); +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 __attribute__((aligned(TARGET_LONG_ALIGNMENT))); -typedef uint64_t target_ulong __attribute__((aligned(TARGET_LONG_ALIGNMENT))); +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 diff --git a/include/exec/user/abitypes.h b/include/exec/user/abitypes.h index 97a87a6..9bf916a 100644 --- a/include/exec/user/abitypes.h +++ b/include/exec/user/abitypes.h @@ -2,12 +2,21 @@ #define QEMU_TYPES_H #include "cpu.h" +#ifdef TARGET_ABI32 +#define TARGET_ABI_BITS 32 +#else +#define TARGET_ABI_BITS TARGET_LONG_BITS +#endif + #ifndef ABI_SHORT_ALIGNMENT #define ABI_SHORT_ALIGNMENT 2 #endif #ifndef ABI_INT_ALIGNMENT #define ABI_INT_ALIGNMENT 4 #endif +#ifndef ABI_LONG_ALIGNMENT +#define ABI_LONG_ALIGNMENT (TARGET_ABI_BITS / 8) +#endif typedef int16_t abi_short __attribute__ ((aligned(ABI_SHORT_ALIGNMENT))); typedef uint16_t abi_ushort __attribute__((aligned(ABI_SHORT_ALIGNMENT))); @@ -15,12 +24,11 @@ typedef int32_t abi_int __attribute__((aligned(ABI_INT_ALIGNMENT))); typedef uint32_t abi_uint __attribute__((aligned(ABI_INT_ALIGNMENT))); #ifdef TARGET_ABI32 -typedef uint32_t abi_ulong; -typedef int32_t abi_long; +typedef uint32_t abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT))); +typedef int32_t abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT))); #define TARGET_ABI_FMT_lx "%08x" #define TARGET_ABI_FMT_ld "%d" #define TARGET_ABI_FMT_lu "%u" -#define TARGET_ABI_BITS 32 static inline abi_ulong tswapal(abi_ulong v) { @@ -28,12 +36,11 @@ static inline abi_ulong tswapal(abi_ulong v) } #else -typedef target_ulong abi_ulong; -typedef target_long abi_long; +typedef target_ulong abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT))); +typedef target_long abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT))); #define TARGET_ABI_FMT_lx TARGET_FMT_lx #define TARGET_ABI_FMT_ld TARGET_FMT_ld #define TARGET_ABI_FMT_lu TARGET_FMT_lu -#define TARGET_ABI_BITS TARGET_LONG_BITS /* for consistency, define ABI32 too */ #if TARGET_ABI_BITS == 32 #define TARGET_ABI32 1 diff --git a/target-m68k/cpu.h b/target-m68k/cpu.h index 29cc887..6825e7c 100644 --- a/target-m68k/cpu.h +++ b/target-m68k/cpu.h @@ -22,6 +22,7 @@ #define TARGET_LONG_BITS 32 #define ABI_INT_ALIGNMENT 2 +#define ABI_LONG_ALIGNMENT 2 #define CPUArchState struct CPUM68KState