From patchwork Mon Oct 27 07:59:34 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Pinski X-Patchwork-Id: 3418 Received: (qmail 16375 invoked by alias); 27 Oct 2014 08:00:20 -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 15445 invoked by uid 89); 27 Oct 2014 08:00:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, KAM_STOCKGEN, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-ie0-f174.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=0EByBBl9Ela37KdZuHALRukI6bWgw/nDjY9rxytqxkU=; b=d/wPF41Nv8mtk0nwxlBfhmvYPkhWReeHvJiSDhIC0dvxIKgordx8XrXGvQ3F68McQf mg69LKR3GJbp4ZvmcmkQzOwfqol457qb33PdRjtnlkfcXh+SXQshchunQmgJH/P2ztRf mWMqSUYIu0gJ7FZVLpf+jP0sFZLcBZHOT1bv7mX91O1mmTqZxkTd34RFSK1YH+zrfPNL DC30PQOp82LD/0JMhvrWjx7LkC9bX9au2QvJv+sXq4p6vT94mc14mAX3vVW4b0w8SIKa 8gI3NoIbw+1aOkS3ukzV5N2Pl8yPb21E7dh0RXgC/edwHewBFS3Tp9iD/HQX5C0uViYk bz0A== X-Gm-Message-State: ALoCoQl/LSsy/hZcY+owqZKa8qFhAFNKJCwtfNZkzosz/uummrV1upRXF0L+MbwMGl2k0Hi61HEx X-Received: by 10.50.112.165 with SMTP id ir5mr20259503igb.44.1414396798283; Mon, 27 Oct 2014 00:59:58 -0700 (PDT) From: Andrew Pinski To: libc-alpha@sourceware.org Cc: Andrew Pinski Subject: [PATCH 10/29] [AARCH64] Add PTR_REG, PTR_LOG_SIZE, and PTR_SIZE. Use it in LDST_PCREL and LDST_GLOBAL. Date: Mon, 27 Oct 2014 00:59:34 -0700 Message-Id: <1414396793-9005-11-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> This patch adds a few extra macros which are useful for ILP32 and updates PTR_MANGLE and PTR_DEMANGLE to use the some of the new macros. * sysdeps/aarch64/sysdep.h (PTR_REG): New macro. (PTR_LOG_SIZE): New macro. (PTR_SIZE): New macro. (LDST_PCREL): Use arguments as register numbers rather register names. Use PTR_REG for the register when loading. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (PTR_MANGLE): Add a comment about that the arguments are register numbers rather register names. (PTR_DEMANGLE): Likewise. * sysdeps/aarch64/__longjmp.S (__longjmp): Update calls to PTR_DEMANGLE. * sysdeps/aarch64/setjmp.S (__sigsetjmp): Update calls to PTR_MANGLE. --- sysdeps/aarch64/__longjmp.S | 4 ++-- sysdeps/aarch64/setjmp.S | 4 ++-- sysdeps/aarch64/sysdep.h | 28 ++++++++++++++++++---------- sysdeps/unix/sysv/linux/aarch64/sysdep.h | 8 ++++++-- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/sysdeps/aarch64/__longjmp.S b/sysdeps/aarch64/__longjmp.S index 1bb7be36..e1a1cf2 100644 --- a/sysdeps/aarch64/__longjmp.S +++ b/sysdeps/aarch64/__longjmp.S @@ -53,7 +53,7 @@ ENTRY (__longjmp) ldp x27, x28, [x0, #JB_X27<<3] #ifdef PTR_DEMANGLE ldp x29, x4, [x0, #JB_X29<<3] - PTR_DEMANGLE (x30, x4, x3, x2) + PTR_DEMANGLE (30, 4, 3, 2) #else ldp x29, x30, [x0, #JB_X29<<3] #endif @@ -98,7 +98,7 @@ ENTRY (__longjmp) cfi_same_value(d15) #ifdef PTR_DEMANGLE ldr x4, [x0, #JB_SP<<3] - PTR_DEMANGLE (x5, x4, x3, x2) + PTR_DEMANGLE (5, 4, 3, 2) #else ldr x5, [x0, #JB_SP<<3] #endif diff --git a/sysdeps/aarch64/setjmp.S b/sysdeps/aarch64/setjmp.S index d548dd5..41d5321 100644 --- a/sysdeps/aarch64/setjmp.S +++ b/sysdeps/aarch64/setjmp.S @@ -42,7 +42,7 @@ ENTRY (__sigsetjmp) stp x27, x28, [x0, #JB_X27<<3] #ifdef PTR_MANGLE - PTR_MANGLE (x4, x30, x3, x2) + PTR_MANGLE (4, 30, 3, 2) stp x29, x4, [x0, #JB_X29<<3] #else stp x29, x30, [x0, #JB_X29<<3] @@ -57,7 +57,7 @@ ENTRY (__sigsetjmp) stp d14, d15, [x0, #JB_D14<<3] #ifdef PTR_MANGLE mov x4, sp - PTR_MANGLE (x5, x4, x3, x2) + PTR_MANGLE (5, 4, 3, 2) str x5, [x0, #JB_SP<<3] #else mov x2, sp diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h index 55d1759..ab2ee91 100644 --- a/sysdeps/aarch64/sysdep.h +++ b/sysdeps/aarch64/sysdep.h @@ -23,10 +23,16 @@ #ifdef __LP64__ #define AARCH64_R(NAME) R_AARCH64_ ## NAME +#define PTR_REG(n) x##n +#define PTR_LOG_SIZE 3 #else #define AARCH64_R(NAME) R_AARCH64_P32_ ## NAME +#define PTR_REG(n) w##n +#define PTR_LOG_SIZE 2 #endif +#define PTR_SIZE (1<