From patchwork Thu Nov 3 07:58:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pitchumani Sivanupandi X-Patchwork-Id: 80605 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp508713qge; Thu, 3 Nov 2016 00:57:37 -0700 (PDT) X-Received: by 10.99.158.18 with SMTP id s18mr12240459pgd.114.1478159857383; Thu, 03 Nov 2016 00:57:37 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id h189si8160834pgc.322.2016.11.03.00.57.37 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Nov 2016 00:57:37 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-440271-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-440271-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-440271-patch=linaro.org@gcc.gnu.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:message-id:date:mime-version:content-type; q=dns; s=default; b=KIhr7c9VdFeKNZkAvz4QqGLCgsw0b3X0Lwvhym+wKJk9Lco+Ad FZmeed0bsSP7yklcSru9UW87zEGBITu8wtXlij3MHV76T8Qpc+fzwBW5dt4moYdQ TYr0VuVdKS6T65mSCAoIvx4UUejD/97331W0byXgDl0cDk7RYFQe3h5uo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:message-id:date:mime-version:content-type; s= default; bh=Fh91mh1qURcrvxoiq1iau2Y43qc=; b=GlBJIo2fqbtYIrBbO3cq wouP0nZOOroZrt55npq80xLaK/rnMHRcF9x8ZL6ehiqosHTl2UxoNIjI5pj114me W8STC8t8hbJNUOcp5b7y37udiG/dcCcEDYXvlp588tbrYvkRB5LEdMcswYjotCvB 9y3s1ZJuGR3kmKKEWhb3ni8= Received: (qmail 129622 invoked by alias); 3 Nov 2016 07:57:25 -0000 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 Received: (qmail 129565 invoked by uid 89); 3 Nov 2016 07:57:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=sk:pitchum, flash, 2016-11-03 X-HELO: email.microchip.com Received: from exsmtp02.microchip.com (HELO email.microchip.com) (198.175.253.38) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 03 Nov 2016 07:57:14 +0000 Received: from [10.40.233.140] (10.10.76.4) by chn-sv-exch02.mchp-main.com (10.10.76.38) with Microsoft SMTP Server id 14.3.181.6; Thu, 3 Nov 2016 00:57:09 -0700 To: GCC Patches CC: Senthil Kumar Selvaraj - I41766 , Georg-Johann Lay , Denis Chertykov From: Pitchumani Sivanupandi Subject: [patch, avr] Make pmem-wrap-around option as default Message-ID: Date: Thu, 3 Nov 2016 13:28:52 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 Most of the AVR's 8k memorydevices have only rjmp instruction, not jmp. So, it is important to wrap around jump destination to check if it can reach backwards. Currently link specs passes --pmem-wrap-around=xxK when mrelax and mpmem-wrap-around options are enabled. Attached patch changes the specs so that option --pmem-wrap-around=8K is passed for 8k memory devices if -mno-pmem-wrap-around is not enabled. If OK, could someone commit please? Note: Currently 8k devices are identified based on name prefix. We are working on alternative method to incorporate flash memory size. Regards, Pitchumani gcc/ChangeLog 2016-11-03 Pitchumani Sivanupandi * config/avr/gen-avr-mmcu-specs.c (print_mcu): Update link_pmem_wrap spec string to add linker option --pmem-wrap-around=8k. * config/avr/specs.h: Add link_pmem_wrap to linker specs (LINK_SPEC). diff --git a/gcc/config/avr/gen-avr-mmcu-specs.c b/gcc/config/avr/gen-avr-mmcu-specs.c index 7fca756..41dbd80 100644 --- a/gcc/config/avr/gen-avr-mmcu-specs.c +++ b/gcc/config/avr/gen-avr-mmcu-specs.c @@ -220,7 +220,9 @@ print_mcu (const avr_mcu_t *mcu) : 0; fprintf (f, "*link_pmem_wrap:\n"); - if (wrap_k) + if (wrap_k == 8) + fprintf (f, "\t%%{!mno-pmem-wrap-around: --pmem-wrap-around=8k}"); + else if (wrap_k > 8) fprintf (f, "\t%%{mpmem-wrap-around: --pmem-wrap-around=%dk}", wrap_k); fprintf (f, "\n\n"); diff --git a/gcc/config/avr/specs.h b/gcc/config/avr/specs.h index 52763cc..fbf0ce6 100644 --- a/gcc/config/avr/specs.h +++ b/gcc/config/avr/specs.h @@ -65,6 +65,7 @@ along with GCC; see the file COPYING3. If not see "%(link_data_start) " \ "%(link_text_start) " \ "%(link_relax) " \ + "%(link_pmem_wrap) " \ "%{shared:%eshared is not supported} " #undef LIB_SPEC