From patchwork Fri Jun 11 13:02:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 1490956 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=QSVwGepK; dkim-atps=neutral Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G1gzt2h9Mz9sSn for ; Fri, 11 Jun 2021 23:04:56 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 29C92393AC1D for ; Fri, 11 Jun 2021 13:04:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 29C92393AC1D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1623416693; bh=XnPgVfs3I3Q+Q4dCSS+zJea/FbhZZP+P2u+OH5dQRJU=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=QSVwGepKO6dICee3r46KVL52bEyYBRYp8bh9rlK0UHJCzdZY+SDGBMG0mAi5aRUw4 tJ/5UApJm6EQ5pBiLkRbFIfHv1mybQqtD8zrRfRhZXoWvXVarIkJkDAVFRpMmeE9mS 3M2tguBLzfzexh2u9vqmZ8hrQ57ITQ2G8XvzfGZ4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70040.outbound.protection.outlook.com [40.107.7.40]) by sourceware.org (Postfix) with ESMTPS id 0A96D385740C for ; Fri, 11 Jun 2021 13:04:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0A96D385740C Received: from AS8PR04CA0094.eurprd04.prod.outlook.com (2603:10a6:20b:31e::9) by AM6PR08MB2999.eurprd08.prod.outlook.com (2603:10a6:209:44::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Fri, 11 Jun 2021 13:04:27 +0000 Received: from VE1EUR03FT054.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:31e:cafe::48) by AS8PR04CA0094.outlook.office365.com (2603:10a6:20b:31e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 13:04:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT054.mail.protection.outlook.com (10.152.19.64) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 13:04:27 +0000 Received: ("Tessian outbound bf434e582664:v93"); Fri, 11 Jun 2021 13:04:27 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2b2b901e17b3aa2c X-CR-MTA-TID: 64aa7808 Received: from e99b7def9f5a.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A8EA8CE8-570F-42AD-A5F7-EE4F46BA10EC.1; Fri, 11 Jun 2021 13:04:16 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e99b7def9f5a.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 11 Jun 2021 13:04:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dNX8r8FIujXYdUB5+Ia+GCEaMHMomHqA3ByGkVFurvPyupxZq3lql+CU42TZzLioufancr0jOwxQlHH6k+kJ0nzEKSaZv2f/07q7v47LTtvwgFB+qXKqYg5vUWrYnlJuZxvd4izE3DtjRS914EC1xQ1FJwdww6r9jJdE9L1cQPX33YDbaFVqV8rU9dKsnFLIo3vZ6bZ/NqeQLZNEFclB/ICzHfeZT9YKNzq29Y83dymvY65oXoODP4Eup+Ou/vBqkp4CMLaxPxBTaUiZcXKSlELwq6bF1ifvBkDECIsvBo70KvAINtxyYRozOEImvLwn0bAsV/EV+OOyKpoO68O06w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XnPgVfs3I3Q+Q4dCSS+zJea/FbhZZP+P2u+OH5dQRJU=; b=VThBBaiag6/cG86jD+nLuV+oUpNFm15ZDABG+CNfDc29iEFGnOwLhw0qegke3vm93uYAdqTIF83tHmx85pw2PmmP7nP1LXaxAB22yMTxEN3FrohjohFuFTWe+Sikla5EGh+crMNt+XBYNCqgF8c/x9RN2AGRE+l+RS2x1JOOTsK6xa7yNdYOAe7xOJu/LFa+IbkTntMHOPfgvqyUODdDf9eTxHV7BC0bA2ISwsRbiU+AMBS9Ws5ykrewsWRYRXdN8nhNY0z9Ic6XMWIyYN0wJ26tBEa2AiSkQNApHsyGXG83vaz4aMrSw3RCGP35Mp4+hnrK10CiJVWKAOCLeCHNbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from VI1PR0802MB2368.eurprd08.prod.outlook.com (2603:10a6:800:9d::10) by VI1PR08MB5374.eurprd08.prod.outlook.com (2603:10a6:803:12f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Fri, 11 Jun 2021 13:04:15 +0000 Received: from VI1PR0802MB2368.eurprd08.prod.outlook.com ([fe80::44e5:2f6b:2aa1:ff11]) by VI1PR0802MB2368.eurprd08.prod.outlook.com ([fe80::44e5:2f6b:2aa1:ff11%11]) with mapi id 15.20.4195.030; Fri, 11 Jun 2021 13:04:15 +0000 Date: Fri, 11 Jun 2021 14:02:52 +0100 To: gcc-patches@gcc.gnu.org, Richard.Earnshaw@arm.com Subject: [GCC][Patch] arm: Fix the mve multilib for the broken cmse support (pr99939). X-Originating-IP: [217.140.106.50] X-ClientProxiedBy: LO2P123CA0092.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::7) To VI1PR0802MB2368.eurprd08.prod.outlook.com (2603:10a6:800:9d::10) Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from e120703-lin.cambridge.arm.com (217.140.106.50) by LO2P123CA0092.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 13:04:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9a8be98-9af8-4702-d2d1-08d92cd971a2 X-MS-TrafficTypeDiagnostic: VI1PR08MB5374:|AM6PR08MB2999: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: GqgpXw+zuJQ7i3fnrR145uRRnO1N3Pt1KqBz14WmIh4iMioaKRTD0hSM8MdIfNkXp3FuW0f29Ch7g3h/QJw5Nns1NIyXNXAJJ0YAEOnH7QgtYNpK8kOJJP4TbQxFDtG876zxXjcmwt4OEOoFzMhcOogIg5uhhYosoXGqZIOByHaHLrVJxKrlHpCLFDYNHWDrM71Z3cWS0GoJ+qbDHy6v43vZQ2obJ2/FM/eOUQfDzlDgChJqoOBwPIBE810zKGiMUt2P7PBP1YOEm98tH//TFdZtBN1qOahJgIpFMc97gR8I9EZL1TgSVf5bI2iubnVzhQgHd4QB8p3Os65icVHpN3bv5zlnETwEUb8b6FpLTRGWAm7B7VFaFYyQcJJWWPoINL8g4N7jtORtKmLt9F0nioIiG8kFIM0m7+cx3eiGpr/KMIuAImSRZtp1ZD9/FU/vmHZ+6F7mPGXelZjBpU9YDGaemQYM6A3kNDdtO+02i1+7fUm318m0705SMpV1xlkw+wrSI0UxE7jn6iCrfWXN123OQTVrQsmGvbKjafYk6gesVnThAt0QnEr5JgQw71iaBgAQYYPtMQZXq9qLmWR2inF/0tdKnTOCH53G7FbvbJ66hnMvIJiQT4ZCAyJIoBFaUiMKLVL9MuxrfPdi2GFDtHqzD1r98EIs3N3Wg3Fn72VufwmxNnlj59EZZuPWaY2NFYQxDvObr7vbkYLRRgvIIWBHU5ipmqliwRKdiD7FkUOouPYqbuqZYTD/efnBZ/PEBw99MfzGf+ITuTbitD6CLg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR0802MB2368.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39850400004)(396003)(136003)(366004)(346002)(38100700002)(86362001)(38350700002)(16526019)(44832011)(6666004)(5660300002)(6636002)(956004)(966005)(33656002)(8936002)(66556008)(66476007)(66616009)(235185007)(52536014)(2906002)(6512007)(66946007)(33964004)(4326008)(8676002)(186003)(478600001)(52116002)(9686003)(316002)(26005)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zb2boUPhSttTNWIU3DgZgU8lpDO6NJbPZ11ZmE/E4NLFpxh2lKBNdD3mJxeaHy2kvZLKsw/p/JGWmg9znH7i1Of/AUkKolb793UomhfVt9rRenLX/xvnK05yNwVEdeDzVvls3iyEW8RCoCtUhzGsk7oCtgdSW7N1qTEQ+09gw0soiyEMiPNfMn3DkNknzMh+nQ0AauSRixvLZEO3ESHMDE3nJNcGc51wv/DbUwRpzHfMsSSaTJ3N9YmCo6TwKVDuEaipEvHujZGBi1ZJCSfF76/qW3TiXCIi3+Rj8VhbVTe9iesBS5qkEfAzLjVVhdMeRDR93wRGaKZigZi7MWaZ9ITFcKaETd7wxMbhhOEjaw/qh6nqFFI+ff9HTR0UlRL0aN7/wlkdH/tBMkWKXYgT9NvKyEpOVIkTyBpf3btxSFOmhWK9x3e0YOlkK08v3C28y4TCqpWuCELtu+Lyh8M2ebnDmLSkd79XMIBn+yNPWIVcT7tvWTLY94jm5AwGr2gGsC8WVRWzWuZHvOu2s4QgUn20VgXgc8M/IvsYb8wiSYVx6jsATdFS9d3wp1zGA+XRpuy1eMElhz/BqzpuJXDrsCV7UuYdMVjA4Bhhl/FWljOMhPi0cJ66VSGJrUtSMqFcNKFk+mBQoB3c8O3ZmtrQMIwVCWDWozlbW5IDZcNKrSDNUKE3IuA8mJWSA9XLFG+zeS/6yiSJ+yS8SY6Rsezcln/PLE+Bs+Oft+t8X6WlHoCbpnYBdmSXw7QQpLZ9Z+lvmE6lx7CS5PgC/yuujfk0c/17HSE+DKiaLxbhDyaz6RJUi0m+yi4vOUJkG+UFOyGgSW0kAm0CGKNMMmdh06aBsplsNk0XCzlyl98l0f42Ym9ePE8PvHJVAegc1cjMQ6hbN6sR4jUtuCVQoH2TRCoiHP1SGfAVURL5oi4Vd2/3wvnJinU+22lxpEwuNnf9wfCCtNgaLNjKmPHipi1McZHGxmg2fs+sHVHkUlFZNRVCDp03UYVsDEOOKCeWpU/UHGEGvKZxkHCAw2UXERIMk+543mZaaQ+VyO1YwVKBNNruafN6kOpzSK6SKGUVtgEtYXvP4o5FwqIbeGX0yRUkleD4PE9tmMvGuA9+UTfUz/Xs0pji1BMxevaHaO9/xWD4e/Cv3eSh252bKyHmv6QNhtOr13yrVzGDg9CXgb46/cGmC6Tv5yAxJYGX0p+6q8CW8v5joLpzryelkN+99tXmyBDQi9Com81rBCYld3UxzrydGGZ2dCVx2P5Zm+KIZrJ+xjfCR+CvkO6hl9hFK4z6X1HzES0IpbOfGlOeIFhpo1LFArIhcsSrXD0GsXOl36OCHl7i X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5374 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 9da630a4-b8da-458f-6d81-08d92cd96a10 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: I7yKZBVWcsfquT0jhe1iSJ+XUXNfq/+ZZodwTC2qHg4e96n4Ng4T16ENkDC/hL9U+HMc3DRBlXAe3lcvpWf95G1yEKiKEQaPzoSSmi0HJUzfY+2HDE2X95LJl34o3v9HBF5pR06Wdwv1m70xyD1nxzGZ3Dhay72kgzvRh2plRQqUGhKfkCP3PCeaGuZszF7zp3SSWGlW/3uqrApy8VbAKb3dKT/sYkTdurOH1axbfXtFLSw+6ZZ4OMCz5kgqMs5QjtYJJQRH9KZWY6fwZcz6Wrr9gK4iuRsmK5O00PaY7i6Cb2SoYBVYggWLxlO1EPYRD4p3SRFfat6zuaAVhmYE8MV6FUHGNN++H9xHqYVPMVRo9SfhtAWzhwqXCzls3RkZTm9HwH5TpveD0/pk2vP9CijITgitITwtaRQ7DWP08MhC4qseFFLCp6l5jnEEv0SQewh8piqkvHE/UBJQfdzpDxIQKBp8xewIby4TcXFrQ7SZ7KGDhxYb+s8HfO3qUj2/ezeLgHsXpzEX9LxIq3pdgVYp42l97z/7YCUz9ERKHzvNNrn+gormfveVesGugdg/PJD38KFYR6XJjVl7eh2WJBmk3mkaLnlWcUNF3Y4Rjkq8CZDTdSmL/k6/Fe8LJtkd8VRhynHueTIrUESnP777rTXyRYScY/isxWr9skvFo8X/HZVOoiSOsfHRAlCBsJXcS2j9UN9/9jwPNCkU1H5acZh4saCtYzZVZpmfMXZT5wki7L770cEXfn7CrxixXBq0mgPofF5Iv0hT/hBRgsF66Q== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(346002)(376002)(39850400004)(396003)(136003)(36840700001)(46966006)(6636002)(336012)(86362001)(2906002)(6486002)(6666004)(33656002)(82310400003)(478600001)(8936002)(356005)(66616009)(70206006)(6512007)(9686003)(70586007)(44832011)(956004)(36860700001)(4326008)(52536014)(966005)(5660300002)(33964004)(235185007)(186003)(81166007)(26005)(47076005)(316002)(16526019)(82740400003)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2021 13:04:27.3858 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9a8be98-9af8-4702-d2d1-08d92cd971a2 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB2999 X-Spam-Status: No, score=-14.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Srinath Parvathaneni via Gcc-patches From: Srinath Parvathaneni Reply-To: Srinath Parvathaneni Cc: Richard.Earnshaw@arm.com Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" Hi Richard, I have addressed all your review comments in https://gcc.gnu.org/pipermail/gcc-patches/2021-June/571739.html in the following patch. The current CMSE support in the multilib build for "-march=armv8.1-m.main+mve -mfloat-abi=hard -mfpu=auto" is broken as specified in PR99939 and this patch fixes the issue. Regression tested on arm-none-eabi and found no regressions. Ok for master? and Ok for GCC-10 branch? Regards, Srinath. gcc/testsuite/ChangeLog: 2021-06-11 Srinath Parvathaneni PR target/99939 * gcc.target/arm/cmse/cmse-18.c: Add separate scan-assembler directives check for target is v8.1-m.main+mve or not before comparing the assembly output. * gcc.target/arm/cmse/cmse-20.c: New test. libgcc/ChangeLog: 2021-06-11 Srinath Parvathaneni PR target/99939 * config/arm/cmse_nonsecure_call.S: Add __ARM_FEATURE_MVE macro. * config/arm/t-arm: To link cmse.o and cmse_nonsecure_call.o on passing -mcmse option. ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c b/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c index e1ff09257b7900982f49117d4cfc16f3bd79d76c..db7d975a90ea4b3333d1810aea03949ec1e8837e 100644 --- a/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c +++ b/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c @@ -8,4 +8,5 @@ void bar(f func, int a) func(a); } -/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" } } */ +/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" { target { ! arm_v8_1m_mve_ok } } } } */ +/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r\[0-7\]:SI\\\]\\\]" "final" { target { arm_v8_1m_mve_ok } } } } */ diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c new file mode 100644 index 0000000000000000000000000000000000000000..08e89bff6378f1f96950fc40f3ab3946bd433773 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c @@ -0,0 +1,28 @@ +/* This test is executed only if the execution engine supports CMSE instructions. */ +/* { dg-options "--save-temps -mcmse -Wl,--section-start,.gnu.sgstubs=0x00400000" } */ + +#include +#include +#include + +void __attribute__((cmse_nonsecure_entry)) +secure_fun (int a, int *p) +{ + void *b = cmse_check_address_range ((void *)p, a, 1); + + if (b == NULL) + __builtin_abort (); + printf("%d", *((int *)b)); +} + +int +main (void) +{ + int *ptr; + int size = 1; + ptr = (int *) calloc (1, sizeof(int *)); + *ptr = 1315852292; + secure_fun (size, ptr); + free (ptr); + return 0; +} diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cmse_nonsecure_call.S index 146f3ed52e9c7e915e5dbd9b70624ec3bd7cd5b5..00830ade98ea650c328c709d5d308fbc96f7f21c 100644 --- a/libgcc/config/arm/cmse_nonsecure_call.S +++ b/libgcc/config/arm/cmse_nonsecure_call.S @@ -25,7 +25,7 @@ .syntax unified #ifdef __ARM_PCS_VFP -# if __ARM_FP & 0x8 +# if (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1) .fpu fpv5-d16 # else .fpu fpv4-sp-d16 @@ -59,7 +59,7 @@ vmov s24, s25, r5, r5 vmov s26, s27, r5, r5 vmov s28, s29, r5, r5 vmov s30, s31, r5, r5 -#elif __ARM_FP & 0x08 +#elif (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1) vmov.f64 d9, d8 vmov.f64 d10, d8 vmov.f64 d11, d8 diff --git a/libgcc/config/arm/t-arm b/libgcc/config/arm/t-arm index 3625a2590beec4e4e0e0881be9ad284c595c7190..c1553d4e5d80751b13dc2e9c9e36d5ebe82e5f8c 100644 --- a/libgcc/config/arm/t-arm +++ b/libgcc/config/arm/t-arm @@ -3,18 +3,17 @@ LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \ _thumb1_case_uhi _thumb1_case_si _speculation_barrier HAVE_CMSE:=$(findstring __ARM_FEATURE_CMSE,$(shell $(gcc_compile_bare) -dM -E - /dev/null 2>/dev/null; echo $$?),0) CMSE_OPTS:=-mcmse endif ifdef HAVE_CMSE -ifndef HAVE_V81M + libgcc-objects += cmse.o cmse_nonsecure_call.o cmse.o: $(srcdir)/config/arm/cmse.c $(gcc_compile) -c $(CMSE_OPTS) $< + cmse_nonsecure_call.o: $(srcdir)/config/arm/cmse_nonsecure_call.S $(gcc_compile) -c $< endif -endif diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c b/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c index e1ff09257b7900982f49117d4cfc16f3bd79d76c..db7d975a90ea4b3333d1810aea03949ec1e8837e 100644 --- a/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c +++ b/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c @@ -8,4 +8,5 @@ void bar(f func, int a) func(a); } -/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" } } */ +/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" { target { ! arm_v8_1m_mve_ok } } } } */ +/* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r\[0-7\]:SI\\\]\\\]" "final" { target { arm_v8_1m_mve_ok } } } } */ diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c new file mode 100644 index 0000000000000000000000000000000000000000..08e89bff6378f1f96950fc40f3ab3946bd433773 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c @@ -0,0 +1,28 @@ +/* This test is executed only if the execution engine supports CMSE instructions. */ +/* { dg-options "--save-temps -mcmse -Wl,--section-start,.gnu.sgstubs=0x00400000" } */ + +#include +#include +#include + +void __attribute__((cmse_nonsecure_entry)) +secure_fun (int a, int *p) +{ + void *b = cmse_check_address_range ((void *)p, a, 1); + + if (b == NULL) + __builtin_abort (); + printf("%d", *((int *)b)); +} + +int +main (void) +{ + int *ptr; + int size = 1; + ptr = (int *) calloc (1, sizeof(int *)); + *ptr = 1315852292; + secure_fun (size, ptr); + free (ptr); + return 0; +} diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cmse_nonsecure_call.S index 146f3ed52e9c7e915e5dbd9b70624ec3bd7cd5b5..00830ade98ea650c328c709d5d308fbc96f7f21c 100644 --- a/libgcc/config/arm/cmse_nonsecure_call.S +++ b/libgcc/config/arm/cmse_nonsecure_call.S @@ -25,7 +25,7 @@ .syntax unified #ifdef __ARM_PCS_VFP -# if __ARM_FP & 0x8 +# if (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1) .fpu fpv5-d16 # else .fpu fpv4-sp-d16 @@ -59,7 +59,7 @@ vmov s24, s25, r5, r5 vmov s26, s27, r5, r5 vmov s28, s29, r5, r5 vmov s30, s31, r5, r5 -#elif __ARM_FP & 0x08 +#elif (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1) vmov.f64 d9, d8 vmov.f64 d10, d8 vmov.f64 d11, d8 diff --git a/libgcc/config/arm/t-arm b/libgcc/config/arm/t-arm index 3625a2590beec4e4e0e0881be9ad284c595c7190..c1553d4e5d80751b13dc2e9c9e36d5ebe82e5f8c 100644 --- a/libgcc/config/arm/t-arm +++ b/libgcc/config/arm/t-arm @@ -3,18 +3,17 @@ LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \ _thumb1_case_uhi _thumb1_case_si _speculation_barrier HAVE_CMSE:=$(findstring __ARM_FEATURE_CMSE,$(shell $(gcc_compile_bare) -dM -E - /dev/null 2>/dev/null; echo $$?),0) CMSE_OPTS:=-mcmse endif ifdef HAVE_CMSE -ifndef HAVE_V81M + libgcc-objects += cmse.o cmse_nonsecure_call.o cmse.o: $(srcdir)/config/arm/cmse.c $(gcc_compile) -c $(CMSE_OPTS) $< + cmse_nonsecure_call.o: $(srcdir)/config/arm/cmse_nonsecure_call.S $(gcc_compile) -c $< endif -endif