From patchwork Thu Jul 12 06:53:03 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chung-Lin Tang X-Patchwork-Id: 170584 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]) by ozlabs.org (Postfix) with SMTP id 70A0B2C01BB for ; Thu, 12 Jul 2012 16:53:34 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1342680814; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC: Subject:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=duDVCMFcW2eJVd8kK3CSIO4iQtw=; b=y3vAsHu6ZrQNaX0 GHjDRTGJuHmZwgcAXxRv4/ZkRf2vKchLQDpR/NYfu1rLA7tXj3sxatCKApLqP0A0 WTmw5oXE8cFRfoD94JcwYnydMAuQPlp1PTSo7exOo5v61+uCGSp6R360EN9ssC7X 9hUhtaWgy5j0oZrSvzYiPGjtroIA= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=cVOuql3j2JJrNzCG/OeP16cEn2jjKtjBQZUW67qU7818vz2H+/tjiLFbWrJVXR wURRHAFc4GCiu1ZIcOWmnDwJYvyIC7Pc7BGoaSQ7AcSmePjT5aadBcYerd87aXzR gFRBzHQUKntapNV+TfqpMtqmy4RFQqALD2hgwm7TsDRms=; Received: (qmail 1080 invoked by alias); 12 Jul 2012 06:53:17 -0000 Received: (qmail 1028 invoked by uid 22791); 12 Jul 2012 06:53:15 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL, BAYES_00, KAM_STOCKGEN, KHOP_RCVD_UNTRUST, RCVD_IN_HOSTKARMA_W, RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Jul 2012 06:53:01 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1SpDGm-0001At-OE from ChungLin_Tang@mentor.com ; Wed, 11 Jul 2012 23:53:00 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 11 Jul 2012 23:52:06 -0700 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.1.289.1; Wed, 11 Jul 2012 23:52:59 -0700 Message-ID: <4FFE744F.40405@codesourcery.com> Date: Thu, 12 Jul 2012 14:53:03 +0800 From: Chung-Lin Tang User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 MIME-Version: 1.0 To: gcc-patches CC: Richard Sandiford Subject: [PATCH 6/6] Thread pointer built-in functions, mips X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Finally, what I personally need, the MIPS parts. Thanks, Chung-Lin * config/mips/mips.c (mips_get_tp): Add 'target' parameter for generating to specific reg. (mips_legitimize_tls_address): Update calls to mips_get_tp(). (mips_expand_builtin_thread_pointer): Add hook function for TARGET_EXPAND_BUILTIN_THREAD_POINTER. Index: config/mips/mips.c =================================================================== --- config/mips/mips.c (revision 189431) +++ config/mips/mips.c (working copy) @@ -2851,11 +2851,12 @@ mips_call_tls_get_addr (rtx sym, enum mips_symbol_ /* Return a pseudo register that contains the current thread pointer. */ static rtx -mips_get_tp (void) +mips_get_tp (rtx target) { - rtx tp, fn; + rtx fn; + rtx tp = (target != NULL_RTX && REG_P (target) + ? target : gen_reg_rtx (Pmode)); - tp = gen_reg_rtx (Pmode); if (TARGET_MIPS16) { mips_need_mips16_rdhwr_p = true; @@ -2919,7 +2920,7 @@ mips_legitimize_tls_address (rtx loc) break; case TLS_MODEL_INITIAL_EXEC: - tp = mips_get_tp (); + tp = mips_get_tp (NULL_RTX); tmp1 = gen_reg_rtx (Pmode); tmp2 = mips_unspec_address (loc, SYMBOL_GOTTPREL); if (Pmode == DImode) @@ -2931,7 +2932,7 @@ mips_legitimize_tls_address (rtx loc) break; case TLS_MODEL_LOCAL_EXEC: - tmp1 = mips_get_tp (); + tmp1 = mips_get_tp (NULL_RTX); offset = mips_unspec_address (loc, SYMBOL_TPREL); if (mips_split_p[SYMBOL_TPREL]) { @@ -13884,6 +13885,13 @@ mips_expand_builtin (tree exp, rtx target, rtx sub } gcc_unreachable (); } + +static rtx +mips_expand_builtin_thread_pointer (rtx target) +{ + return mips_get_tp (target); +} + /* An entry in the MIPS16 constant pool. VALUE is the pool constant, MODE is its mode, and LABEL is the CODE_LABEL associated with it. */ @@ -17567,6 +17575,10 @@ mips_expand_vec_minmax (rtx target, rtx op0, rtx o #undef TARGET_EXPAND_BUILTIN #define TARGET_EXPAND_BUILTIN mips_expand_builtin +#undef TARGET_EXPAND_BUILTIN_THREAD_POINTER +#define TARGET_EXPAND_BUILTIN_THREAD_POINTER \ + mips_expand_builtin_thread_pointer + #undef TARGET_HAVE_TLS #define TARGET_HAVE_TLS HAVE_AS_TLS