From patchwork Sun Apr 22 23:22:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Rini X-Patchwork-Id: 902709 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=konsulko.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40Tlxk25Dbz9s15 for ; Mon, 23 Apr 2018 09:22:50 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id E78DCC21DA1; Sun, 22 Apr 2018 23:22:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 91B8AC21C57; Sun, 22 Apr 2018 23:22:41 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 273F0C21C57; Sun, 22 Apr 2018 23:22:40 +0000 (UTC) Received: from mail-yb0-f194.google.com (mail-yb0-f194.google.com [209.85.213.194]) by lists.denx.de (Postfix) with ESMTPS id 74A23C21C29 for ; Sun, 22 Apr 2018 23:22:39 +0000 (UTC) Received: by mail-yb0-f194.google.com with SMTP id i69-v6so2461368ybg.2 for ; Sun, 22 Apr 2018 16:22:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=zYbRjzBymahnQx+H/MgNlDfC7SaklgxcWOH91LTCfS4=; b=iz3kwDfnziWJI4mC33r3nDTVQu3TkLjQduhDxN9f3SQw1QYemikixZq04/NfBxoR9/ NumxKq2xCxis68AXI/MZToEnJiNQv+SoM/kOKZ8oMHj8bzufV5onMI1AkfGQ8ceJylCN UzKD7BwHLqzIK3q9TVdioYxNINwXFrMHAUF9lnEfR0TWn1aRI2sxJPCEkgGIqrV+Hah/ EWUfDbYGESWDfICHNT6VdZBXGwtzRbEbHVQubf1sSLGtFAC+7yY9GSjWmcx8IAL3K2uk FzNkJE2PsdLUXQz2GUdrL5KDeXB2maHN+LgAdm215e0bditzv/WBuNRYGkZIWQS6GH0i nMYQ== X-Gm-Message-State: ALQs6tAj46xHGMyxfLPXLoiEDAm44NOqLSIL3UpTi9Wzo83MveeCpoBh MCm/eC8zp56h42vQpyAlxVP7 X-Google-Smtp-Source: AIpwx48MyOetQDl5q0SPSyIVtNJImpGAWaWq2JK2FCumyqf6Nd5uv+TTR5hWr4Mn8T88qvhBH0MD3w== X-Received: by 2002:a25:8b09:: with SMTP id i9-v6mr4880929ybl.98.1524439358140; Sun, 22 Apr 2018 16:22:38 -0700 (PDT) Received: from bill-the-cat.ec.rr.com (cpe-65-184-142-68.ec.res.rr.com. [65.184.142.68]) by smtp.gmail.com with ESMTPSA id k6-v6sm4907259ywi.11.2018.04.22.16.22.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 22 Apr 2018 16:22:37 -0700 (PDT) From: Tom Rini To: u-boot@lists.denx.de Date: Sun, 22 Apr 2018 19:22:34 -0400 Message-Id: <1524439354-12493-1-git-send-email-trini@konsulko.com> X-Mailer: git-send-email 2.7.4 Cc: Alexander Graf Subject: [U-Boot] [PATCH] HACK: Some further clang support for ARM X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" - Have logic in one place for -ffixed-r9 or -ffixed-x18 as clang -target aarch64-linux-gnu will warn about being passed an invalid arugment, -ffixed-r9. I should submit this on its own as a cleanup. - clang does NOT like: str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f and makes it a fatal error. Work-around this by expanding the macro by hand in 3 places. Not included in here is that clang does not at all care for the EFI loader saving / restoring gd in C as it does. This is already documented in doc/README.clang, but I'm spelling it out here. Cc: Alexander Graf Signed-off-by: Tom Rini --- arch/arm/config.mk | 10 ++++++++-- arch/arm/cpu/armv8/config.mk | 1 - arch/arm/lib/memcpy.S | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/arch/arm/config.mk b/arch/arm/config.mk index b448ed0b3ebd..f42aa35f4e59 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -13,12 +13,18 @@ CONFIG_STANDALONE_LOAD_ADDR = 0xc100000 endif endif -CFLAGS_NON_EFI := -fno-pic -ffixed-r9 -ffunction-sections -fdata-sections +ifeq ($(CONFIG_ARM64),y) +FIXED_GD_REG := -ffixed-x18 +else +FIXED_GD_REG := -ffixed-r9 +endif + +CFLAGS_NON_EFI := -fno-pic $(FIXED_GD_REG) -ffunction-sections -fdata-sections CFLAGS_EFI := -fpic -fshort-wchar LDFLAGS_FINAL += --gc-sections PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \ - -fno-common -ffixed-r9 + -fno-common $(FIXED_GD_REG) PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \ $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) diff --git a/arch/arm/cpu/armv8/config.mk b/arch/arm/cpu/armv8/config.mk index 27b66d41b1a8..2b6ced6648ec 100644 --- a/arch/arm/cpu/armv8/config.mk +++ b/arch/arm/cpu/armv8/config.mk @@ -4,7 +4,6 @@ # # SPDX-License-Identifier: GPL-2.0+ # -PLATFORM_RELFLAGS += -fno-common -ffixed-x18 PF_NO_UNALIGNED := $(call cc-option, -mstrict-align) PLATFORM_CPPFLAGS += $(PF_NO_UNALIGNED) diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S index 588b3f8971ae..307c3bbc1472 100644 --- a/arch/arm/lib/memcpy.S +++ b/arch/arm/lib/memcpy.S @@ -96,7 +96,7 @@ ENTRY(memcpy) 3: PLD( pld [r1, #124] ) 4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f subs r2, r2, #32 - str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f + stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr} bge 3b PLD( cmn r2, #96 ) PLD( bge 4b ) @@ -212,7 +212,7 @@ ENTRY(memcpy) orr r9, r9, ip, lspush #\push mov ip, ip, lspull #\pull orr ip, ip, lr, lspush #\push - str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f + stmia r0!, {r3, r4, r5, r6, r7, r8, r9, ip} bge 12b PLD( cmn r2, #96 ) PLD( bge 13b )