From patchwork Mon Oct 27 07:59:52 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Pinski X-Patchwork-Id: 403440 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id B2171140081 for ; Mon, 27 Oct 2014 19:05:31 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=yOhVgQIkPWSiNUo0TzrASjXIYTEO0Ft eN57/cLOMyhXGLfZXl5E9ixQj+7+zrJIWm56IVBT0zz/frt4LYO6yHAbvucMUMdZ PJwVWhNHESOk5wB8sNxx0HayIBRsvCqkNyzLkN8bwBfDpSRcOVQUhUEy0mYu6j1S /wobs7tu1pfE= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references; s=default; bh=eGcO8P0eJS+B725OXYeWb4JRZHA=; b=B6Q8j ETbr25+sQxUmckFgmIiU8I6WtcycBWJZ+sPqMLn7HgTDxXm1QQ/QUJVE0gFJvzMZ TOP/H1pHYjcpUbYpMFtLeM7DYT+Z60Zt5llUBp4fYiLArAJ2NAYKHy13FIW21tY9 /IxCSeGLwRdd4YWyuvLGShKJT1rcPU4M1l+0gc= Received: (qmail 31666 invoked by alias); 27 Oct 2014 08:03:27 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 31566 invoked by uid 89); 27 Oct 2014 08:03:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 X-HELO: mail-ie0-f170.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=k3mx+C3w5Hn+LhpwYFAH7PKldx4fmzVMClKYWkr5QXI=; b=S1HtKbBtOhxwLbFuQUHkZtbJmB1qF9hkBEBNHM890gZI56okt872tmKjUHnOHgW3BI wCuEW/mopd82/z3CKwGBfNJVjp7e/19XbbENOd/cZhAWt/14Xgi4IRJf5dW2WKK4pBDO KFBr9Qp+X2UOAwFxxzmknJkrw/PT/o5Ym+1QBpDoQRgK1S2wPgvzckSk1GCyyGN6YZ/i IZIYhf6/jcLvUuTPQHOLRs5ADCPEHpJdDTeYT4saD/3gSRXt4pJknNbhASejacgxdOAB uze90xjQIsrBjkiH0n6JQRfXZYqwAGmaYnrai1fIWwXVDItL1DfV/IJTZ44pH4KdKGJM JcEQ== X-Gm-Message-State: ALoCoQnGPrAVTTZRx2Dq40TbuzqyKz4OcTKYx+ykZPKHVoii+N0roeme1MW0yNkqDrRj6H7xgfaU X-Received: by 10.107.168.15 with SMTP id r15mr541561ioe.66.1414397001086; Mon, 27 Oct 2014 01:03:21 -0700 (PDT) From: Andrew Pinski To: libc-alpha@sourceware.org Cc: Andrew Pinski Subject: [PATCH 28/29] [AARCH64] Add typesizes.h for ILP32 Date: Mon, 27 Oct 2014 00:59:52 -0700 Message-Id: <1414396793-9005-29-git-send-email-apinski@cavium.com> In-Reply-To: <1414396793-9005-1-git-send-email-apinski@cavium.com> References: <1414396793-9005-1-git-send-email-apinski@cavium.com> The generic typesizes does not work for ILP32 as the kernel long type needs to be long long (quad). time_t, off_t, clock_t, suseconds_t, ino_t, rlim_t are 64bits. FDSET bitmask is a 64bit type. * sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h: New file. --- sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h | 135 ++++++++++++++++++++++ 1 files changed, 135 insertions(+), 0 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h new file mode 100644 index 0000000..f8e3206 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h @@ -0,0 +1,135 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/AARCh64 version. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C 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.1 of the License, or (at your option) any later version. + + The GNU C 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 the GNU C Library. If not, see + . */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +/* ILP32 kernel interface is 64-bit. */ +#ifndef __LP64__ +# define __SYSCALL_SLONG_TYPE __SQUAD_TYPE +# define __SYSCALL_ULONG_TYPE __UQUAD_TYPE +#else +# define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +# define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#endif +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __SYSCALL_ULONG_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SYSCALL_SLONG_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE +#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SYSCALL_SLONG_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __S32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SLONGWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + +/* Tell the libc code that off_t and off64_t are actually the same type + for all ABI purposes, even if possibly expressed as different base types + for C type-checking purposes. */ +#define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +#define __INO_T_MATCHES_INO64_T 1 + +/* Same for __blkcnt_t and __blkcnt64_t. */ +#define __BLKCNT_T_TYPE_MATCHES_BLKCNT64_T_TYPE 1 + +/* Same for __fsblkcnt_t and __fsblkcnt64_t. */ +#define __FSBLKCNT_T_TYPE_MATCHES_FSBLKCNT64_T_TYPE 1 + +/* Same for __fsfilcnt_t and __fsfilcnt64_t. */ +#define __FSFILCNT_T_TYPE_MATCHES_FSFILCNT64_T_TYPE 1 + +/* LP32 needs some padding in some cases */ + +#ifndef __LP64__ + +# undef __SIGINFO_INNER +# ifdef __AARCH64EB__ +# define __SIGINFO_INNER(type, field) \ + __extension__ struct { \ + int __pad_##field; \ + type field; \ + } __attribute__((aligned(8) )) +# else +# define __SIGINFO_INNER(type, field) \ + __extension__ struct { \ + type field; \ + int __pad_##field; \ + } __attribute__((aligned(8) )) +# endif + +# define __RUSAGE_LONG(__field) \ + __SIGINFO_INNER(long, __field) + +# define __SHMID_DS_SIZE_TYPE(__field) \ + __SIGINFO_INNER(size_t, __field) + +# undef __SIGINFO_VOIDPTR +# define __SIGINFO_VOIDPTR(field) \ + __SIGINFO_INNER(void*, field) + +# undef __SIGINFO_BAND +# define __SIGINFO_BAND(field) \ + __SIGINFO_INNER(long, field) + +#define __SIGSET_INNER_T __SYSCALL_ULONG_TYPE +#define __FD_MASK_TYPE __SYSCALL_SLONG_TYPE +#define __FD_MASK_CONST(a) (__extension__ a##ull) +#endif + + +#define __IPC_TIME_T_64_BITS + +#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) + + +#endif /* bits/typesizes.h */