From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80051.outbound.protection.outlook.com [40.107.8.51]) by sourceware.org (Postfix) with ESMTPS id 2085C3857038 for ; Mon, 3 Oct 2022 08:27:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2085C3857038 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=XnccmsTxAfqbfSG1xYHAOvJBuWV1qNe3V5ybxwZ3Cqm21I0P6s7pJ4Sp7y3TOnQOmdl942MksXgy9dxZeBdlnzD1fkY7Rt1TFP0up6i8pjhYwk5iH8IceN0XtQAAZ7T8f5JSRTslpJFFGaNBgRMf7H55W+P0sRvGZ482aJk/MezTibplpsnGdobZFpy/ooASedPc2WVUX+EotzY0aIAfZgs8oZvsfcfenfTuMDNbP4IAwzOFQ59IXVFTcDJOgJxfjI+eK6BLYaeVhLRm2XkkAqP6Kwy+0xYLDSMrzMtGnZZvljaF8NQsd3Kr/EGbjttuEw3xG+dQqzTJvDaEXsd3Jw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iOTOC0SFV2x9aDdjBVDZy18bAehpdbG+6igbsMRhG7Y=; b=f8F11mUXEg/XEi5vjig7ZI/nKLvmFnhf2sVfzarZ/heKzf5yZBPHUw7F7sdIPHFunOIXLJcLJgyKINzTDbJG1hprxSz8Eik3ou1HUS61rPbdbgyxq6sOkakM4uNWluCg0vYUY5U/no/CHDLMkneXT6NJaSlLYMNVQz9UP3fZlu/YBOTBBkDlUqS6SwRuE8zk++B759jN0p0PnE9eBDPhFUoL+ypNRyFnLaWKvUGOmEYGg/rrUiHYjgVAscYyxRAc1kvH6K8P3GzO3pTTPHqBgC6fYb+6zQiF3UXH+3MnoY0Ez41X6NPX5y+INyMeEP9kEmROxn02voVHvmf0BHOsvw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AS8PR04CA0117.eurprd04.prod.outlook.com (2603:10a6:20b:31e::32) by DB9PR08MB6363.eurprd08.prod.outlook.com (2603:10a6:10:257::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Mon, 3 Oct 2022 08:27:44 +0000 Received: from AM7EUR03FT026.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:31e:cafe::bc) by AS8PR04CA0117.outlook.office365.com (2603:10a6:20b:31e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.30 via Frontend Transport; Mon, 3 Oct 2022 08:27:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT026.mail.protection.outlook.com (100.127.140.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17 via Frontend Transport; Mon, 3 Oct 2022 08:27:42 +0000 Received: ("Tessian outbound c2c2da38ad67:v128"); Mon, 03 Oct 2022 08:27:42 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 5cda32ef408fbf7f X-CR-MTA-TID: 64aa7808 Received: from 948f9041fdba.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F5409D62-A868-405E-893A-EDA2AC4B2DBE.1; Mon, 03 Oct 2022 08:27:35 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 948f9041fdba.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 03 Oct 2022 08:27:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MF6vtPLuP8MHVJdIGxquwniyPtBq99mvbQhTVtxayEBh8BjUtJCUGa0LAP49iZj0m1oThrH+5FhZGpI0sYf9NKZYNxREo4H2RkKSgwHAdtH3uTdCRUkpxLcpH92RcpoYFFC42i/AsMIgPoOF3lwF3LmD2bie+0+4hug/bcEEMJmuL7pl5BpbtAXykgBb/Jdg/VRgQHOLLEr9LJ9S6NLXTn4VXZZ6KaQQPZMJJpujht9MZV52QLsDbxuLRu0naASr5g6zQfEsUhzYAuaXIxmeIBmFYLTjtz9BJicHVF9LcCMHaqW4Dlnva30ryY8VhkW27eNDi0MrM6owF4NR5AqzPQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iOTOC0SFV2x9aDdjBVDZy18bAehpdbG+6igbsMRhG7Y=; b=l2enwgEyLZgWMkuKpWDZ5ap3KtCGv03GHIDf2rdq/YtyRVTRIdnxxr5LSi3LAQA5wrQft9aXqDbe+XgzjrWI0Grrw72/firgWxb/isheL/0FB6rh/oeJKDThPUorbgiiFRqPY8ZFu5L0i9371dz4AXWQaq62HQ+z7buf+FgiMtwI0lvSgDkXeaygdX7TuRp8q5Kg9pwXocZZvsytV38ahVH9OOrtiWtuFEEr9CTEoV2MnmkGXhJfWocxd7PC+4S2CQXB5tjQXiW8bxwWk1EOj6/+klFWv5XdjKcCgQ3WlFJLzXzmmG9B7WmmyCQtUuO/fvBseOnPmoLCs5fKupcrAg== 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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) by DB9PR08MB6347.eurprd08.prod.outlook.com (2603:10a6:10:253::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Mon, 3 Oct 2022 08:27:32 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::c5f9:a25b:a5f2:6094]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::c5f9:a25b:a5f2:6094%5]) with mapi id 15.20.5676.028; Mon, 3 Oct 2022 08:27:31 +0000 Message-ID: Date: Mon, 3 Oct 2022 09:27:28 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH] [Arm] Remove dead FPA code Content-Language: en-US To: Enze Li , Luis Machado via Gdb-patches References: <20220920123012.189293-1-luis.machado@arm.com> From: Luis Machado In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO2P265CA0501.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13b::8) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|DB9PR08MB6347:EE_|AM7EUR03FT026:EE_|DB9PR08MB6363:EE_ X-MS-Office365-Filtering-Correlation-Id: dc048efc-7d9f-48b7-01a4-08daa519245d x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 7mvZGOFpAZalp1ShN6X4826JQA/Vb4349cHunNL/NhrGuEL44DyV1rfywvCBhTMFEmOnOyHb3gCzED5S9tN+Mucl4+az9mjrletbmaQ85+VIY04Az4EJtsLt/PCBYj8LvbDtf3kmrslLg0akrfth2Fg40+yQf+gI9pgvhsyqvMP46AkGNFeOujFTRjDUETbCnV5m4FsERbiu7/19GAkK1JC6A89+cNp6wvgnszkUT0jM1Edc7Zy3VnknwkTOKQU9AG0QyLXIgaLD0BiAkTZigv1omWenJxHg7IDLHb2u985nXpl/AZ4LpXEfnRyiIp+c9+fKihdHhLzqrvvG1bfayjskF9SjEbngR0nn5A9xtzkwTqjmoWLCLxBg1e/zID/TVtGP7arle7+JNO8G1PJABTT8Z+OQXwqLeGiFJLtVUX+uPiXdA2Jkv2byC2tCMR1S1TsnjAmBd4utZ+RstI/mgMvIZFVB+nYh6u4vblyaIyOOfQ2mOmQ0mVxDpb9kzKnJJBgEdpoe5SUgOw4zAcE+XKeRwhtLp8voWnxyb5tMwpRcOHJR9Lr+ApQszKWxkmG/HvUEbQt5fwpAqSkJtjsPT+woqD0KFjWYKYI9+m8BYZNT4mgJu3G9/zo/lsi1LhZeWuyhF7pe5VG8vmlfAiXi1ZbuW4nDhC9ejmtmG2aBgc3XVD5AdZcXh4JMDldyE8r+X2zt6ZwHA/RmBoxg/AT6Q2lTh/zc2OiZMhRrEpPM8k7jgzlT4jsdinu7Yop9SX3v1sgEJ7ynrhwy/tBuAaxzKx/TMGBPjX/U/nlgYSLRJwRE/CxX6L83eKpgXXXskNNA X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB3919.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(136003)(366004)(396003)(39860400002)(346002)(376002)(451199015)(2616005)(53546011)(26005)(6512007)(66476007)(6666004)(6506007)(66946007)(316002)(8676002)(31696002)(36756003)(66556008)(478600001)(6486002)(110136005)(38100700002)(86362001)(186003)(83380400001)(21480400003)(31686004)(5660300002)(8936002)(30864003)(44832011)(41300700001)(2906002)(2004002)(45980500001)(43740500002)(559001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6347 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 74598281-6b16-4340-34b0-08daa5191cf2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ytgfiEvp8hb3VLqn4WCUx9Cy7Eo5myZ24TuOktx0e9MDtPYeK3UJ/cBGClvOo9iUZgxLCH41lfoiE/e8MbY9min5qB6Vc3FaWKlBUW1fDivqMguJX55o6NjIG17eeLNM8+1fu3Hhq+dhc62RHtRwpRoHIf1MtMT7B3alYuw7mDwKmlYpTYd/pJwVHGj8jj+k1ZWpj7PlX/J673OCdeN2bQTL7ZB8TdGaVVSn+yd/goOGDSfzKuKxmT1TmUhr6nntJsdUxT4xHqDFxrTjfHUPu+cquaQRDEefF6S87PAD6F5Jtk4KVEx6x8dCsJ1ja6imzYFl8LQ880Jb8gQKb5vUU/6WgD4OQolcM7Zmz/f1T6/4kvJIbd9JmG5adtMaOqTCHZa8AJ61H2G8/VyXiFVgCpJUx3f/EfXJ8RGN191/RuE6e3loPqtjcL98o8gDdcGLijyzx0r5uvhSyGE5M7gfuH5FVgMABZPFqSdTNi+Q7t3CQsr4s/A7zKrlGOszY+kzYjV2mHqtqjtxdAk7eTY1J2CJ2IPb54+C9Byo0Pp7aMqdJVKRsb+FmvJl+HE6fQwhmDAcucBtlR0RiFvafE1b7BnZgLq3vy1Clh/RAT/aWsHWCg7DP4etWJMc1GOG42xqdETP0XKGQU+aqNpqgL/C0Xxuhx16FzXLwZE+ay2GLVRblcjbi5xdpOcnV6Ji7TvmqJ0PvzMwYyPzHwCouzipx3svtT5nxwq7bS7om4VHE3hRM1vFv368W1BkDbNF186eRq1QcyN2iik3aF3j0QIKNiC55vZiMJTHwnbcnFCHjOeaoxwKLPH7g4IeXO6lP2s5+wDJF/AoC1xA2ibzoITNvw== 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:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(46966006)(36840700001)(40470700004)(36860700001)(82740400003)(8676002)(316002)(86362001)(478600001)(40480700001)(31696002)(40460700003)(6506007)(30864003)(82310400005)(356005)(81166007)(6666004)(26005)(36756003)(41300700001)(6486002)(5660300002)(110136005)(53546011)(70206006)(83380400001)(6512007)(70586007)(2906002)(8936002)(2616005)(186003)(47076005)(31686004)(44832011)(21480400003)(336012)(2004002)(43740500002)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2022 08:27:42.8249 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc048efc-7d9f-48b7-01a4-08daa519245d 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: AM7EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6363 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Oct 2022 08:27:57 -0000 Hi, On 10/2/22 14:39, Enze Li wrote: > On Tue, Sep 20 2022 at 01:30:12 PM +0100, Luis Machado via Gdb-patches wrote: > >> FPA has been deprecated for a while now. It was removed from GCC in 2012, >> but somehow it managed to survive in GDB for a little while longer. >> >> It is time to let FPA rest in peace. >> >> While at it, make VFP the default floating point model for 32-bit Arm. >> >> It would be nice to get some *BSD testing as some changes touch that code >> and I'm not properly setup to validate the changes for those OS'. > > Hi Luis, > > I have tested this patch on FreeBSD, NetBSD and OpenBSD and found no > build errors. All these tests are based on this commit[1]. That's great. Thanks for testing on those OS'. I'll push this one soon then. Regards, Luis > > [1] 6519cd1a15fda2b67ae3e4ad8a2758615d3e0f9f > > Thanks, > Enze > >> --- >> gdb/NEWS | 4 + >> gdb/aarch64-linux-nat.c | 4 +- >> gdb/arch/arm.c | 5 - >> gdb/arch/arm.h | 9 - >> gdb/arm-bsd-tdep.c | 48 ---- >> gdb/arm-linux-nat.c | 106 +------- >> gdb/arm-linux-tdep.c | 131 +-------- >> gdb/arm-linux-tdep.h | 29 -- >> gdb/arm-netbsd-nat.c | 4 +- >> gdb/arm-tdep.c | 286 +------------------- >> gdb/arm-tdep.h | 3 - >> gdb/doc/gdb.texinfo | 13 +- >> gdb/features/Makefile | 2 - >> gdb/features/arm/arm-fpa.c | 23 -- >> gdb/features/arm/arm-fpa.xml | 23 -- >> gdb/features/arm/arm-m-profile-with-fpa.c | 39 --- >> gdb/features/arm/arm-m-profile-with-fpa.xml | 39 --- >> gdb/target-descriptions.c | 4 - >> gdb/testsuite/gdb.base/long_long.exp | 18 +- >> gdbserver/linux-arm-low.cc | 7 +- >> gdbsupport/tdesc.cc | 1 - >> gdbsupport/tdesc.h | 1 - >> 22 files changed, 33 insertions(+), 766 deletions(-) >> delete mode 100644 gdb/features/arm/arm-fpa.c >> delete mode 100644 gdb/features/arm/arm-fpa.xml >> delete mode 100644 gdb/features/arm/arm-m-profile-with-fpa.c >> delete mode 100644 gdb/features/arm/arm-m-profile-with-fpa.xml >> >> diff --git a/gdb/NEWS b/gdb/NEWS >> index 555ef2ddf77..fcd7b686e02 100644 >> --- a/gdb/NEWS >> +++ b/gdb/NEWS >> @@ -3,6 +3,10 @@ >> >> *** Changes since GDB 12 >> >> +* Removed support for the 32-bit Arm FPA floating point format. FPA is an >> + old floating point format that is no longer supported in GCC since at least >> + 2012. >> + >> * GDB now supports dumping memory tag data for AArch64 MTE. It also supports >> reading memory tag data for AArch64 MTE from core files generated by >> the gcore command or the Linux kernel. >> diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c >> index eda79ec6d35..4d36cd47567 100644 >> --- a/gdb/aarch64-linux-nat.c >> +++ b/gdb/aarch64-linux-nat.c >> @@ -551,7 +551,7 @@ aarch32_fetch_registers (struct regcache *regcache, int regno) >> if (tdep->vfp_register_count > 0) >> fetch_fpregs_from_thread (regcache); >> } >> - else if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM) >> + else if (regno <= ARM_PC_REGNUM || regno == ARM_PS_REGNUM) >> fetch_gregs_from_thread (regcache); >> else if (tdep->vfp_register_count > 0 >> && regno >= ARM_D0_REGNUM >> @@ -627,7 +627,7 @@ aarch32_store_registers (struct regcache *regcache, int regno) >> if (tdep->vfp_register_count > 0) >> store_fpregs_to_thread (regcache); >> } >> - else if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM) >> + else if (regno <= ARM_PC_REGNUM || regno == ARM_PS_REGNUM) >> store_gregs_to_thread (regcache); >> else if (tdep->vfp_register_count > 0 >> && regno >= ARM_D0_REGNUM >> diff --git a/gdb/arch/arm.c b/gdb/arch/arm.c >> index 14f0a7a7f6c..9771a60f30f 100644 >> --- a/gdb/arch/arm.c >> +++ b/gdb/arch/arm.c >> @@ -27,7 +27,6 @@ >> #include "../features/arm/arm-vfpv3.c" >> #include "../features/arm/xscale-iwmmxt.c" >> #include "../features/arm/arm-m-profile.c" >> -#include "../features/arm/arm-m-profile-with-fpa.c" >> #include "../features/arm/arm-m-profile-mve.c" >> #include "../features/arm/arm-m-system.c" >> >> @@ -441,10 +440,6 @@ arm_create_mprofile_target_description (arm_m_profile_type m_type) >> regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum); >> break; >> >> - case ARM_M_TYPE_WITH_FPA: >> - regnum = create_feature_arm_arm_m_profile_with_fpa (tdesc, regnum); >> - break; >> - >> case ARM_M_TYPE_MVE: >> regnum = create_feature_arm_arm_m_profile (tdesc, regnum); >> regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum); >> diff --git a/gdb/arch/arm.h b/gdb/arch/arm.h >> index 36757493406..74a6ba93bc7 100644 >> --- a/gdb/arch/arm.h >> +++ b/gdb/arch/arm.h >> @@ -44,11 +44,6 @@ enum gdb_regnum { >> ARM_SP_REGNUM = 13, /* Contains address of top of stack */ >> ARM_LR_REGNUM = 14, /* address to return to from a function call */ >> ARM_PC_REGNUM = 15, /* Contains program counter */ >> - /* F0..F7 are the fp registers for the (obsolete) FPA architecture. */ >> - ARM_F0_REGNUM = 16, /* first floating point register */ >> - ARM_F3_REGNUM = 19, /* last floating point argument register */ >> - ARM_F7_REGNUM = 23, /* last floating point register */ >> - ARM_FPS_REGNUM = 24, /* floating point status register */ >> ARM_PS_REGNUM = 25, /* Contains processor status */ >> ARM_WR0_REGNUM, /* WMMX data registers. */ >> ARM_WR15_REGNUM = ARM_WR0_REGNUM + 15, >> @@ -67,7 +62,6 @@ enum gdb_regnum { >> ARM_FP_REGNUM = 11, /* Frame register in ARM code, if used. */ >> THUMB_FP_REGNUM = 7, /* Frame register in Thumb code, if used. */ >> ARM_LAST_ARG_REGNUM = ARM_A4_REGNUM, >> - ARM_LAST_FP_ARG_REGNUM = ARM_F3_REGNUM >> }; >> >> /* Register count constants. */ >> @@ -103,7 +97,6 @@ enum arm_fp_type { >> enum arm_m_profile_type { >> ARM_M_TYPE_M_PROFILE, >> ARM_M_TYPE_VFP_D16, >> - ARM_M_TYPE_WITH_FPA, >> ARM_M_TYPE_MVE, >> ARM_M_TYPE_SYSTEM, >> ARM_M_TYPE_INVALID >> @@ -157,8 +150,6 @@ enum system_register_address : CORE_ADDR >> >> /* r0-r12,sp,lr,pc,cpsr. */ >> #define ARM_CORE_REGS_SIZE (17 * ARM_INT_REGISTER_SIZE) >> -/* f0-f8,fps. */ >> -#define ARM_FP_REGS_SIZE (8 * ARM_FP_REGISTER_SIZE + ARM_INT_REGISTER_SIZE) >> /* d0-d15,fpscr. */ >> #define ARM_VFP2_REGS_SIZE (16 * ARM_VFP_REGISTER_SIZE + ARM_INT_REGISTER_SIZE) >> /* d0-d31,fpscr. */ >> diff --git a/gdb/arm-bsd-tdep.c b/gdb/arm-bsd-tdep.c >> index 13d6e527d58..72421bb26d5 100644 >> --- a/gdb/arm-bsd-tdep.c >> +++ b/gdb/arm-bsd-tdep.c >> @@ -29,39 +29,6 @@ >> /* Sizeof `struct reg' in . */ >> #define ARMBSD_SIZEOF_GREGS (17 * 4) >> >> -/* Sizeof `struct fpreg' in > -#define ARMBSD_SIZEOF_FPREGS ((1 + (8 * 3)) * 4) >> - >> -static int >> -armbsd_fpreg_offset (int regnum) >> -{ >> - if (regnum == ARM_FPS_REGNUM) >> - return 0; >> - >> - return 4 + (regnum - ARM_F0_REGNUM) * 12; >> -} >> - >> -/* Supply register REGNUM from the buffer specified by FPREGS and LEN >> - in the floating-point register set REGSET to register cache >> - REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */ >> - >> -static void >> -armbsd_supply_fpregset (const struct regset *regset, >> - struct regcache *regcache, >> - int regnum, const void *fpregs, size_t len) >> -{ >> - const gdb_byte *regs = (const gdb_byte *) fpregs; >> - int i; >> - >> - gdb_assert (len >= ARMBSD_SIZEOF_FPREGS); >> - >> - for (i = ARM_F0_REGNUM; i <= ARM_FPS_REGNUM; i++) >> - { >> - if (regnum == i || regnum == -1) >> - regcache->raw_supply (i, regs + armbsd_fpreg_offset (i)); >> - } >> -} >> - >> /* Supply register REGNUM from the buffer specified by GREGS and LEN >> in the general-purpose register set REGSET to register cache >> REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */ >> @@ -84,13 +51,6 @@ armbsd_supply_gregset (const struct regset *regset, >> >> if (regnum == ARM_PS_REGNUM || regnum == -1) >> regcache->raw_supply (i, regs + 16 * 4); >> - >> - if (len >= ARMBSD_SIZEOF_GREGS + ARMBSD_SIZEOF_FPREGS) >> - { >> - regs += ARMBSD_SIZEOF_GREGS; >> - len -= ARMBSD_SIZEOF_GREGS; >> - armbsd_supply_fpregset (regset, regcache, regnum, regs, len); >> - } >> } >> >> /* ARM register sets. */ >> @@ -103,12 +63,6 @@ static const struct regset armbsd_gregset = >> REGSET_VARIABLE_SIZE >> }; >> >> -static const struct regset armbsd_fpregset = >> -{ >> - NULL, >> - armbsd_supply_fpregset >> -}; >> - >> /* Iterate over supported core file register note sections. */ >> >> void >> @@ -119,6 +73,4 @@ armbsd_iterate_over_regset_sections (struct gdbarch *gdbarch, >> { >> cb (".reg", ARMBSD_SIZEOF_GREGS, ARMBSD_SIZEOF_GREGS, &armbsd_gregset, NULL, >> cb_data); >> - cb (".reg2", ARMBSD_SIZEOF_FPREGS, ARMBSD_SIZEOF_FPREGS, &armbsd_fpregset, >> - NULL, cb_data); >> } >> diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c >> index 0188c78fe7a..a6a5745fdf9 100644 >> --- a/gdb/arm-linux-nat.c >> +++ b/gdb/arm-linux-nat.c >> @@ -109,96 +109,6 @@ class arm_linux_nat_target final : public linux_nat_target >> >> static arm_linux_nat_target the_arm_linux_nat_target; >> >> -/* Get the whole floating point state of the process and store it >> - into regcache. */ >> - >> -static void >> -fetch_fpregs (struct regcache *regcache) >> -{ >> - int ret, regno, tid; >> - gdb_byte fp[ARM_LINUX_SIZEOF_NWFPE]; >> - >> - /* Get the thread id for the ptrace call. */ >> - tid = regcache->ptid ().lwp (); >> - >> - /* Read the floating point state. */ >> - if (have_ptrace_getregset == TRIBOOL_TRUE) >> - { >> - struct iovec iov; >> - >> - iov.iov_base = &fp; >> - iov.iov_len = ARM_LINUX_SIZEOF_NWFPE; >> - >> - ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iov); >> - } >> - else >> - ret = ptrace (PT_GETFPREGS, tid, 0, fp); >> - >> - if (ret < 0) >> - perror_with_name (_("Unable to fetch the floating point registers")); >> - >> - /* Fetch fpsr. */ >> - regcache->raw_supply (ARM_FPS_REGNUM, fp + NWFPE_FPSR_OFFSET); >> - >> - /* Fetch the floating point registers. */ >> - for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) >> - supply_nwfpe_register (regcache, regno, fp); >> -} >> - >> -/* Save the whole floating point state of the process using >> - the contents from regcache. */ >> - >> -static void >> -store_fpregs (const struct regcache *regcache) >> -{ >> - int ret, regno, tid; >> - gdb_byte fp[ARM_LINUX_SIZEOF_NWFPE]; >> - >> - /* Get the thread id for the ptrace call. */ >> - tid = regcache->ptid ().lwp (); >> - >> - /* Read the floating point state. */ >> - if (have_ptrace_getregset == TRIBOOL_TRUE) >> - { >> - elf_fpregset_t fpregs; >> - struct iovec iov; >> - >> - iov.iov_base = &fpregs; >> - iov.iov_len = sizeof (fpregs); >> - >> - ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iov); >> - } >> - else >> - ret = ptrace (PT_GETFPREGS, tid, 0, fp); >> - >> - if (ret < 0) >> - perror_with_name (_("Unable to fetch the floating point registers")); >> - >> - /* Store fpsr. */ >> - if (REG_VALID == regcache->get_register_status (ARM_FPS_REGNUM)) >> - regcache->raw_collect (ARM_FPS_REGNUM, fp + NWFPE_FPSR_OFFSET); >> - >> - /* Store the floating point registers. */ >> - for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) >> - if (REG_VALID == regcache->get_register_status (regno)) >> - collect_nwfpe_register (regcache, regno, fp); >> - >> - if (have_ptrace_getregset == TRIBOOL_TRUE) >> - { >> - struct iovec iov; >> - >> - iov.iov_base = &fp; >> - iov.iov_len = ARM_LINUX_SIZEOF_NWFPE; >> - >> - ret = ptrace (PTRACE_SETREGSET, tid, NT_FPREGSET, &iov); >> - } >> - else >> - ret = ptrace (PTRACE_SETFPREGS, tid, 0, fp); >> - >> - if (ret < 0) >> - perror_with_name (_("Unable to store floating point registers")); >> -} >> - >> /* Fetch all general registers of the process and store into >> regcache. */ >> >> @@ -422,15 +332,11 @@ arm_linux_nat_target::fetch_registers (struct regcache *regcache, int regno) >> fetch_wmmx_regs (regcache); >> if (tdep->vfp_register_count > 0) >> fetch_vfp_regs (regcache); >> - if (tdep->have_fpa_registers) >> - fetch_fpregs (regcache); >> } >> else >> { >> - if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM) >> + if (regno <= ARM_PC_REGNUM || regno == ARM_PS_REGNUM) >> fetch_regs (regcache); >> - else if (regno >= ARM_F0_REGNUM && regno <= ARM_FPS_REGNUM) >> - fetch_fpregs (regcache); >> else if (tdep->have_wmmx_registers >> && regno >= ARM_WR0_REGNUM && regno <= ARM_WCGR7_REGNUM) >> fetch_wmmx_regs (regcache); >> @@ -459,15 +365,11 @@ arm_linux_nat_target::store_registers (struct regcache *regcache, int regno) >> store_wmmx_regs (regcache); >> if (tdep->vfp_register_count > 0) >> store_vfp_regs (regcache); >> - if (tdep->have_fpa_registers) >> - store_fpregs (regcache); >> } >> else >> { >> - if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM) >> + if (regno <= ARM_PC_REGNUM || regno == ARM_PS_REGNUM) >> store_regs (regcache); >> - else if ((regno >= ARM_F0_REGNUM) && (regno <= ARM_FPS_REGNUM)) >> - store_fpregs (regcache); >> else if (tdep->have_wmmx_registers >> && regno >= ARM_WR0_REGNUM && regno <= ARM_WCGR7_REGNUM) >> store_wmmx_regs (regcache); >> @@ -499,7 +401,7 @@ void >> fill_fpregset (const struct regcache *regcache, >> gdb_fpregset_t *fpregsetp, int regno) >> { >> - arm_linux_collect_nwfpe (NULL, regcache, regno, fpregsetp, 0); >> + /* FPA is no longer supported. */ >> } >> >> /* Fill GDB's register array with the floating-point register values >> @@ -508,7 +410,7 @@ fill_fpregset (const struct regcache *regcache, >> void >> supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp) >> { >> - arm_linux_supply_nwfpe (NULL, regcache, -1, fpregsetp, 0); >> + /* FPA is no longer supported. */ >> } >> >> /* Fetch the thread-local storage pointer for libthread_db. */ >> diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c >> index 1feb69fe6dd..d5ada33a05c 100644 >> --- a/gdb/arm-linux-tdep.c >> +++ b/gdb/arm-linux-tdep.c >> @@ -102,10 +102,8 @@ static const gdb_byte arm_linux_thumb2_le_breakpoint[] = { 0xf0, 0xf7, 0x00, 0xa >> >> For glibc, eglibc, and uclibc the following holds: If the FP model is >> SoftVFP or VFP (which implies EABI) then the PC is at offset 9 in the >> - buffer. This is also true for the SoftFPA model. However, for the FPA >> - model the PC is at offset 21 in the buffer. */ >> + buffer. */ >> #define ARM_LINUX_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE >> -#define ARM_LINUX_JB_PC_FPA 21 >> #define ARM_LINUX_JB_PC_EABI 9 >> >> /* >> @@ -540,119 +538,6 @@ arm_linux_collect_gregset (const struct regset *regset, >> gregs + ARM_INT_REGISTER_SIZE * ARM_PC_REGNUM); >> } >> >> -/* Support for register format used by the NWFPE FPA emulator. */ >> - >> -#define typeNone 0x00 >> -#define typeSingle 0x01 >> -#define typeDouble 0x02 >> -#define typeExtended 0x03 >> - >> -void >> -supply_nwfpe_register (struct regcache *regcache, int regno, >> - const gdb_byte *regs) >> -{ >> - const gdb_byte *reg_data; >> - gdb_byte reg_tag; >> - gdb_byte buf[ARM_FP_REGISTER_SIZE]; >> - >> - reg_data = regs + (regno - ARM_F0_REGNUM) * ARM_FP_REGISTER_SIZE; >> - reg_tag = regs[(regno - ARM_F0_REGNUM) + NWFPE_TAGS_OFFSET]; >> - memset (buf, 0, ARM_FP_REGISTER_SIZE); >> - >> - switch (reg_tag) >> - { >> - case typeSingle: >> - memcpy (buf, reg_data, 4); >> - break; >> - case typeDouble: >> - memcpy (buf, reg_data + 4, 4); >> - memcpy (buf + 4, reg_data, 4); >> - break; >> - case typeExtended: >> - /* We want sign and exponent, then least significant bits, >> - then most significant. NWFPE does sign, most, least. */ >> - memcpy (buf, reg_data, 4); >> - memcpy (buf + 4, reg_data + 8, 4); >> - memcpy (buf + 8, reg_data + 4, 4); >> - break; >> - default: >> - break; >> - } >> - >> - regcache->raw_supply (regno, buf); >> -} >> - >> -void >> -collect_nwfpe_register (const struct regcache *regcache, int regno, >> - gdb_byte *regs) >> -{ >> - gdb_byte *reg_data; >> - gdb_byte reg_tag; >> - gdb_byte buf[ARM_FP_REGISTER_SIZE]; >> - >> - regcache->raw_collect (regno, buf); >> - >> - /* NOTE drow/2006-06-07: This code uses the tag already in the >> - register buffer. I've preserved that when moving the code >> - from the native file to the target file. But this doesn't >> - always make sense. */ >> - >> - reg_data = regs + (regno - ARM_F0_REGNUM) * ARM_FP_REGISTER_SIZE; >> - reg_tag = regs[(regno - ARM_F0_REGNUM) + NWFPE_TAGS_OFFSET]; >> - >> - switch (reg_tag) >> - { >> - case typeSingle: >> - memcpy (reg_data, buf, 4); >> - break; >> - case typeDouble: >> - memcpy (reg_data, buf + 4, 4); >> - memcpy (reg_data + 4, buf, 4); >> - break; >> - case typeExtended: >> - memcpy (reg_data, buf, 4); >> - memcpy (reg_data + 4, buf + 8, 4); >> - memcpy (reg_data + 8, buf + 4, 4); >> - break; >> - default: >> - break; >> - } >> -} >> - >> -void >> -arm_linux_supply_nwfpe (const struct regset *regset, >> - struct regcache *regcache, >> - int regnum, const void *regs_buf, size_t len) >> -{ >> - const gdb_byte *regs = (const gdb_byte *) regs_buf; >> - int regno; >> - >> - if (regnum == ARM_FPS_REGNUM || regnum == -1) >> - regcache->raw_supply (ARM_FPS_REGNUM, >> - regs + NWFPE_FPSR_OFFSET); >> - >> - for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) >> - if (regnum == -1 || regnum == regno) >> - supply_nwfpe_register (regcache, regno, regs); >> -} >> - >> -void >> -arm_linux_collect_nwfpe (const struct regset *regset, >> - const struct regcache *regcache, >> - int regnum, void *regs_buf, size_t len) >> -{ >> - gdb_byte *regs = (gdb_byte *) regs_buf; >> - int regno; >> - >> - for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++) >> - if (regnum == -1 || regnum == regno) >> - collect_nwfpe_register (regcache, regno, regs); >> - >> - if (regnum == ARM_FPS_REGNUM || regnum == -1) >> - regcache->raw_collect (ARM_FPS_REGNUM, >> - regs + ARM_INT_REGISTER_SIZE * ARM_FPS_REGNUM); >> -} >> - >> /* Support VFP register format. */ >> >> #define ARM_LINUX_SIZEOF_VFP (32 * 8 + 4) >> @@ -694,11 +579,6 @@ static const struct regset arm_linux_gregset = >> NULL, arm_linux_supply_gregset, arm_linux_collect_gregset >> }; >> >> -static const struct regset arm_linux_fpregset = >> - { >> - NULL, arm_linux_supply_nwfpe, arm_linux_collect_nwfpe >> - }; >> - >> static const struct regset arm_linux_vfpregset = >> { >> NULL, arm_linux_supply_vfp, arm_linux_collect_vfp >> @@ -720,9 +600,6 @@ arm_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, >> if (tdep->vfp_register_count > 0) >> cb (".reg-arm-vfp", ARM_LINUX_SIZEOF_VFP, ARM_LINUX_SIZEOF_VFP, >> &arm_linux_vfpregset, "VFP floating-point", cb_data); >> - else if (tdep->have_fpa_registers) >> - cb (".reg2", ARM_LINUX_SIZEOF_NWFPE, ARM_LINUX_SIZEOF_NWFPE, >> - &arm_linux_fpregset, "FPA floating-point", cb_data); >> } >> >> /* Determine target description from core file. */ >> @@ -1744,14 +1621,10 @@ arm_linux_init_abi (struct gdbarch_info info, >> tdep->thumb2_breakpoint_size = sizeof (arm_linux_thumb2_le_breakpoint); >> >> if (tdep->fp_model == ARM_FLOAT_AUTO) >> - tdep->fp_model = ARM_FLOAT_FPA; >> + tdep->fp_model = ARM_FLOAT_SOFT_VFP; >> >> switch (tdep->fp_model) >> { >> - case ARM_FLOAT_FPA: >> - tdep->jb_pc = ARM_LINUX_JB_PC_FPA; >> - break; >> - case ARM_FLOAT_SOFT_FPA: >> case ARM_FLOAT_SOFT_VFP: >> case ARM_FLOAT_VFP: >> tdep->jb_pc = ARM_LINUX_JB_PC_EABI; >> diff --git a/gdb/arm-linux-tdep.h b/gdb/arm-linux-tdep.h >> index 6ed55acf9b0..cb92c3f6bbe 100644 >> --- a/gdb/arm-linux-tdep.h >> +++ b/gdb/arm-linux-tdep.h >> @@ -23,23 +23,6 @@ >> struct regset; >> struct regcache; >> >> -#define ARM_LINUX_SIZEOF_NWFPE (8 * ARM_FP_REGISTER_SIZE \ >> - + 2 * ARM_INT_REGISTER_SIZE \ >> - + 8 + ARM_INT_REGISTER_SIZE) >> - >> -/* Support for register format used by the NWFPE FPA emulator. Each >> - register takes three words, where either the first one, two, or >> - three hold a single, double, or extended precision value (depending >> - on the corresponding tag). The register set is eight registers, >> - followed by the fpsr and fpcr, followed by eight tag bytes, and a >> - final word flag which indicates whether NWFPE has been >> - initialized. */ >> - >> -#define NWFPE_FPSR_OFFSET (8 * ARM_FP_REGISTER_SIZE) >> -#define NWFPE_FPCR_OFFSET (NWFPE_FPSR_OFFSET + ARM_INT_REGISTER_SIZE) >> -#define NWFPE_TAGS_OFFSET (NWFPE_FPCR_OFFSET + ARM_INT_REGISTER_SIZE) >> -#define NWFPE_INITFLAG_OFFSET (NWFPE_TAGS_OFFSET + 8) >> - >> void arm_linux_supply_gregset (const struct regset *regset, >> struct regcache *regcache, >> int regnum, const void *gregs_buf, size_t len); >> @@ -47,18 +30,6 @@ void arm_linux_collect_gregset (const struct regset *regset, >> const struct regcache *regcache, >> int regnum, void *gregs_buf, size_t len); >> >> -void supply_nwfpe_register (struct regcache *regcache, int regno, >> - const gdb_byte *regs); >> -void collect_nwfpe_register (const struct regcache *regcache, int regno, >> - gdb_byte *regs); >> - >> -void arm_linux_supply_nwfpe (const struct regset *regset, >> - struct regcache *regcache, >> - int regnum, const void *regs_buf, size_t len); >> -void arm_linux_collect_nwfpe (const struct regset *regset, >> - const struct regcache *regcache, >> - int regnum, void *regs_buf, size_t len); >> - >> /* ARM GNU/Linux HWCAP values. These are in defined in >> in current kernels. */ >> #define HWCAP_VFP 64 >> diff --git a/gdb/arm-netbsd-nat.c b/gdb/arm-netbsd-nat.c >> index 251159154c9..d37a1951c21 100644 >> --- a/gdb/arm-netbsd-nat.c >> +++ b/gdb/arm-netbsd-nat.c >> @@ -135,7 +135,7 @@ arm_netbsd_nat_target::fetch_registers (struct regcache *regcache, int regno) >> { >> if (regno >= 0) >> { >> - if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM) >> + if (regno <= ARM_PC_REGNUM || regno >= ARM_PS_REGNUM) >> fetch_register (regcache, regno); >> else >> fetch_fp_register (regcache, regno); >> @@ -326,7 +326,7 @@ arm_netbsd_nat_target::store_registers (struct regcache *regcache, int regno) >> { >> if (regno >= 0) >> { >> - if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM) >> + if (regno <= ARM_PC_REGNUM || regno >= ARM_PS_REGNUM) >> store_register (regcache, regno); >> else >> store_fp_register (regcache, regno); >> diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c >> index ead9bbf46c5..b33a53612a6 100644 >> --- a/gdb/arm-tdep.c >> +++ b/gdb/arm-tdep.c >> @@ -134,8 +134,6 @@ static struct cmd_list_element *showarmcmdlist = NULL; >> static const char *const fp_model_strings[] = >> { >> "auto", >> - "softfpa", >> - "fpa", >> "softvfp", >> "vfp", >> NULL >> @@ -226,9 +224,7 @@ static const char *const arm_register_names[] = >> "r4", "r5", "r6", "r7", /* 4 5 6 7 */ >> "r8", "r9", "r10", "r11", /* 8 9 10 11 */ >> "r12", "sp", "lr", "pc", /* 12 13 14 15 */ >> - "f0", "f1", "f2", "f3", /* 16 17 18 19 */ >> - "f4", "f5", "f6", "f7", /* 20 21 22 23 */ >> - "fps", "cpsr" }; /* 24 25 */ >> + "cpsr" }; /* 25 */ >> >> /* Holds the current set of options to be passed to the disassembler. */ >> static char *arm_disassembler_options; >> @@ -1877,7 +1873,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch, >> enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch); >> int regno; >> CORE_ADDR offset, current_pc; >> - pv_t regs[ARM_FPS_REGNUM]; >> + pv_t regs[ARM_PC_REGNUM]; >> CORE_ADDR unrecognized_pc = 0; >> arm_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); >> >> @@ -1891,7 +1887,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch, >> and other operations that rely on a knowledge of the stack >> traceback. */ >> >> - for (regno = 0; regno < ARM_FPS_REGNUM; regno++) >> + for (regno = 0; regno < ARM_PC_REGNUM; regno++) >> regs[regno] = pv_register (regno, 0); >> pv_area stack (ARM_SP_REGNUM, gdbarch_addr_bit (gdbarch)); >> >> @@ -1982,51 +1978,6 @@ arm_analyze_prologue (struct gdbarch *gdbarch, >> uint32_t imm = arm_expand_immediate(insn & 0xfff); >> regs[ARM_SP_REGNUM] = pv_add_constant (regs[ARM_SP_REGNUM], -imm); >> } >> - else if ((insn & 0xffff7fff) == 0xed6d0103 /* stfe f?, >> - [sp, -#c]! */ >> - && tdep->have_fpa_registers) >> - { >> - if (stack.store_would_trash (regs[ARM_SP_REGNUM])) >> - break; >> - >> - regs[ARM_SP_REGNUM] = pv_add_constant (regs[ARM_SP_REGNUM], -12); >> - regno = ARM_F0_REGNUM + ((insn >> 12) & 0x07); >> - stack.store (regs[ARM_SP_REGNUM], 12, regs[regno]); >> - } >> - else if ((insn & 0xffbf0fff) == 0xec2d0200 /* sfmfd f0, 4, >> - [sp!] */ >> - && tdep->have_fpa_registers) >> - { >> - int n_saved_fp_regs; >> - unsigned int fp_start_reg, fp_bound_reg; >> - >> - if (stack.store_would_trash (regs[ARM_SP_REGNUM])) >> - break; >> - >> - if ((insn & 0x800) == 0x800) /* N0 is set */ >> - { >> - if ((insn & 0x40000) == 0x40000) /* N1 is set */ >> - n_saved_fp_regs = 3; >> - else >> - n_saved_fp_regs = 1; >> - } >> - else >> - { >> - if ((insn & 0x40000) == 0x40000) /* N1 is set */ >> - n_saved_fp_regs = 2; >> - else >> - n_saved_fp_regs = 4; >> - } >> - >> - fp_start_reg = ARM_F0_REGNUM + ((insn >> 12) & 0x7); >> - fp_bound_reg = fp_start_reg + n_saved_fp_regs; >> - for (; fp_start_reg < fp_bound_reg; fp_start_reg++) >> - { >> - regs[ARM_SP_REGNUM] = pv_add_constant (regs[ARM_SP_REGNUM], -12); >> - stack.store (regs[ARM_SP_REGNUM], 12, >> - regs[fp_start_reg++]); >> - } >> - } >> else if ((insn & 0xff000000) == 0xeb000000 && cache == NULL) /* bl */ >> { >> /* Allow some special function calls when skipping the >> @@ -2103,7 +2054,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch, >> cache->framereg = framereg; >> cache->framesize = framesize; >> >> - for (regno = 0; regno < ARM_FPS_REGNUM; regno++) >> + for (regno = 0; regno < ARM_PC_REGNUM; regno++) >> if (stack.find_reg (gdbarch, regno, &offset)) >> { >> cache->saved_regs[regno].set_addr (offset); >> @@ -4666,58 +4617,6 @@ arm_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) >> return sp & ~ (CORE_ADDR) 7; >> } >> >> -static void >> -print_fpu_flags (struct ui_file *file, int flags) >> -{ >> - if (flags & (1 << 0)) >> - gdb_puts ("IVO ", file); >> - if (flags & (1 << 1)) >> - gdb_puts ("DVZ ", file); >> - if (flags & (1 << 2)) >> - gdb_puts ("OFL ", file); >> - if (flags & (1 << 3)) >> - gdb_puts ("UFL ", file); >> - if (flags & (1 << 4)) >> - gdb_puts ("INX ", file); >> - gdb_putc ('\n', file); >> -} >> - >> -/* Print interesting information about the floating point processor >> - (if present) or emulator. */ >> -static void >> -arm_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, >> - struct frame_info *frame, const char *args) >> -{ >> - unsigned long status = get_frame_register_unsigned (frame, ARM_FPS_REGNUM); >> - int type; >> - >> - type = (status >> 24) & 127; >> - if (status & (1 << 31)) >> - gdb_printf (file, _("Hardware FPU type %d\n"), type); >> - else >> - gdb_printf (file, _("Software FPU type %d\n"), type); >> - /* i18n: [floating point unit] mask */ >> - gdb_puts (_("mask: "), file); >> - print_fpu_flags (file, status >> 16); >> - /* i18n: [floating point unit] flags */ >> - gdb_puts (_("flags: "), file); >> - print_fpu_flags (file, status); >> -} >> - >> -/* Construct the ARM extended floating point type. */ >> -static struct type * >> -arm_ext_type (struct gdbarch *gdbarch) >> -{ >> - arm_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); >> - >> - if (!tdep->arm_ext_type) >> - tdep->arm_ext_type >> - = arch_float_type (gdbarch, -1, "builtin_type_arm_ext", >> - floatformats_arm_ext); >> - >> - return tdep->arm_ext_type; >> -} >> - >> static struct type * >> arm_neon_double_type (struct gdbarch *gdbarch) >> { >> @@ -4902,14 +4801,7 @@ arm_register_type (struct gdbarch *gdbarch, int regnum) >> return t; >> } >> >> - if (regnum >= ARM_F0_REGNUM && regnum < ARM_F0_REGNUM + NUM_FREGS) >> - { >> - if (!tdep->have_fpa_registers) >> - return builtin_type (gdbarch)->builtin_void; >> - >> - return arm_ext_type (gdbarch); >> - } >> - else if (regnum == ARM_SP_REGNUM) >> + if (regnum == ARM_SP_REGNUM) >> return builtin_type (gdbarch)->builtin_data_ptr; >> else if (regnum == ARM_PC_REGNUM) >> return builtin_type (gdbarch)->builtin_func_ptr; >> @@ -4931,17 +4823,6 @@ arm_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg) >> if (reg >= 0 && reg <= 15) >> return reg; >> >> - /* Legacy FPA encoding. These were once used in a way which >> - overlapped with VFP register numbering, so their use is >> - discouraged, but GDB doesn't support the ARM toolchain >> - which used them for VFP. */ >> - if (reg >= 16 && reg <= 23) >> - return ARM_F0_REGNUM + reg - 16; >> - >> - /* New assignments for the FPA registers. */ >> - if (reg >= 96 && reg <= 103) >> - return ARM_F0_REGNUM + reg - 96; >> - >> /* WMMX register assignments. */ >> if (reg >= 104 && reg <= 111) >> return ARM_WCGR0_REGNUM + reg - 104; >> @@ -5014,14 +4895,6 @@ arm_register_sim_regno (struct gdbarch *gdbarch, int regnum) >> return SIM_ARM_R0_REGNUM + reg; >> reg -= NUM_GREGS; >> >> - if (reg < NUM_FREGS) >> - return SIM_ARM_FP0_REGNUM + reg; >> - reg -= NUM_FREGS; >> - >> - if (reg < NUM_SREGS) >> - return SIM_ARM_FPS_REGNUM + reg; >> - reg -= NUM_SREGS; >> - >> internal_error (__FILE__, __LINE__, _("Bad REGNUM %d"), regnum); >> } >> >> @@ -8686,20 +8559,6 @@ arm_extract_return_value (struct type *type, struct regcache *regs, >> { >> switch (tdep->fp_model) >> { >> - case ARM_FLOAT_FPA: >> - { >> - /* The value is in register F0 in internal format. We need to >> - extract the raw value and then convert it to the desired >> - internal type. */ >> - bfd_byte tmpbuf[ARM_FP_REGISTER_SIZE]; >> - >> - regs->cooked_read (ARM_F0_REGNUM, tmpbuf); >> - target_float_convert (tmpbuf, arm_ext_type (gdbarch), >> - valbuf, type); >> - } >> - break; >> - >> - case ARM_FLOAT_SOFT_FPA: >> case ARM_FLOAT_SOFT_VFP: >> /* ARM_FLOAT_VFP can arise if this is a variadic function so >> not using the VFP ABI code. */ >> @@ -8896,18 +8755,10 @@ arm_store_return_value (struct type *type, struct regcache *regs, >> >> if (type->code () == TYPE_CODE_FLT) >> { >> - gdb_byte buf[ARM_FP_REGISTER_SIZE]; >> arm_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); >> >> switch (tdep->fp_model) >> { >> - case ARM_FLOAT_FPA: >> - >> - target_float_convert (valbuf, type, buf, arm_ext_type (gdbarch)); >> - regs->cooked_write (ARM_F0_REGNUM, buf); >> - break; >> - >> - case ARM_FLOAT_SOFT_FPA: >> case ARM_FLOAT_SOFT_VFP: >> /* ARM_FLOAT_VFP can arise if this is a variadic function so >> not using the VFP ABI code. */ >> @@ -9722,71 +9573,6 @@ arm_elf_osabi_sniffer (bfd *abfd) >> return osabi; >> } >> >> -static int >> -arm_register_reggroup_p (struct gdbarch *gdbarch, int regnum, >> - const struct reggroup *group) >> -{ >> - /* FPS register's type is INT, but belongs to float_reggroup. Beside >> - this, FPS register belongs to save_regroup, restore_reggroup, and >> - all_reggroup, of course. */ >> - if (regnum == ARM_FPS_REGNUM) >> - return (group == float_reggroup >> - || group == save_reggroup >> - || group == restore_reggroup >> - || group == all_reggroup); >> - else >> - return default_register_reggroup_p (gdbarch, regnum, group); >> -} >> - >> -/* For backward-compatibility we allow two 'g' packet lengths with >> - the remote protocol depending on whether FPA registers are >> - supplied. M-profile targets do not have FPA registers, but some >> - stubs already exist in the wild which use a 'g' packet which >> - supplies them albeit with dummy values. The packet format which >> - includes FPA registers should be considered deprecated for >> - M-profile targets. */ >> - >> -static void >> -arm_register_g_packet_guesses (struct gdbarch *gdbarch) >> -{ >> - arm_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); >> - >> - if (tdep->is_m) >> - { >> - const target_desc *tdesc; >> - >> - /* If we know from the executable this is an M-profile target, >> - cater for remote targets whose register set layout is the >> - same as the FPA layout. */ >> - tdesc = arm_read_mprofile_description (ARM_M_TYPE_WITH_FPA); >> - register_remote_g_packet_guess (gdbarch, >> - ARM_CORE_REGS_SIZE + ARM_FP_REGS_SIZE, >> - tdesc); >> - >> - /* The regular M-profile layout. */ >> - tdesc = arm_read_mprofile_description (ARM_M_TYPE_M_PROFILE); >> - register_remote_g_packet_guess (gdbarch, ARM_CORE_REGS_SIZE, >> - tdesc); >> - >> - /* M-profile plus M4F VFP. */ >> - tdesc = arm_read_mprofile_description (ARM_M_TYPE_VFP_D16); >> - register_remote_g_packet_guess (gdbarch, >> - ARM_CORE_REGS_SIZE + ARM_VFP2_REGS_SIZE, >> - tdesc); >> - /* M-profile plus MVE. */ >> - tdesc = arm_read_mprofile_description (ARM_M_TYPE_MVE); >> - register_remote_g_packet_guess (gdbarch, ARM_CORE_REGS_SIZE >> - + ARM_VFP2_REGS_SIZE >> - + ARM_INT_REGISTER_SIZE, tdesc); >> - >> - /* M-profile system (stack pointers). */ >> - tdesc = arm_read_mprofile_description (ARM_M_TYPE_SYSTEM); >> - register_remote_g_packet_guess (gdbarch, 2 * ARM_INT_REGISTER_SIZE, tdesc); >> - } >> - >> - /* Otherwise we don't have a useful guess. */ >> -} >> - >> /* Implement the code_of_frame_writable gdbarch method. */ >> >> static int >> @@ -9848,7 +9634,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> bool have_s_pseudos = false, have_q_pseudos = false; >> bool have_wmmx_registers = false; >> bool have_neon = false; >> - bool have_fpa_registers = true; >> const struct target_desc *tdesc = info.target_desc; >> bool have_vfp = false; >> bool have_mve = false; >> @@ -10015,21 +9800,13 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> { >> switch (e_flags & (EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT)) >> { >> - case 0: >> - /* Leave it as "auto". Strictly speaking this case >> - means FPA, but almost nobody uses that now, and >> - many toolchains fail to set the appropriate bits >> - for the floating-point model they use. */ >> - break; >> - case EF_ARM_SOFT_FLOAT: >> - fp_model = ARM_FLOAT_SOFT_FPA; >> + case 0: /* Default to soft-float VFP. */ >> + case EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT: >> + fp_model = ARM_FLOAT_SOFT_VFP; >> break; >> case EF_ARM_VFP_FLOAT: >> fp_model = ARM_FLOAT_VFP; >> break; >> - case EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT: >> - fp_model = ARM_FLOAT_SOFT_VFP; >> - break; >> } >> } >> >> @@ -10122,20 +9899,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> } >> } >> >> - feature = tdesc_find_feature (tdesc, >> - "org.gnu.gdb.arm.fpa"); >> - if (feature != NULL) >> - { >> - valid_p = 1; >> - for (i = ARM_F0_REGNUM; i <= ARM_FPS_REGNUM; i++) >> - valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), i, >> - arm_register_names[i]); >> - if (!valid_p) >> - return NULL; >> - } >> - else >> - have_fpa_registers = false; >> - >> feature = tdesc_find_feature (tdesc, >> "org.gnu.gdb.xscale.iwmmxt"); >> if (feature != NULL) >> @@ -10389,7 +10152,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> tdep->fp_model = fp_model; >> tdep->is_m = is_m; >> tdep->have_sec_ext = have_sec_ext; >> - tdep->have_fpa_registers = have_fpa_registers; >> tdep->have_wmmx_registers = have_wmmx_registers; >> gdb_assert (vfp_register_count == 0 >> || vfp_register_count == 16 >> @@ -10421,8 +10183,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> tdep->m_profile_psp_s_regnum = m_profile_psp_s_regnum; >> } >> >> - arm_register_g_packet_guesses (gdbarch); >> - >> /* Breakpoints. */ >> switch (info.byte_order_for_code) >> { >> @@ -10508,12 +10268,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> set_gdbarch_pc_regnum (gdbarch, ARM_PC_REGNUM); >> set_gdbarch_num_regs (gdbarch, register_count); >> set_gdbarch_register_type (gdbarch, arm_register_type); >> - set_gdbarch_register_reggroup_p (gdbarch, arm_register_reggroup_p); >> - >> - /* This "info float" is FPA-specific. Use the generic version if we >> - do not have FPA. */ >> - if (tdep->have_fpa_registers) >> - set_gdbarch_print_float_info (gdbarch, arm_print_float_info); >> >> /* Internal <-> external register number maps. */ >> set_gdbarch_dwarf2_reg_to_regnum (gdbarch, arm_dwarf_reg_to_regnum); >> @@ -10565,29 +10319,13 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) >> /* Watchpoints are not steppable. */ >> set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1); >> >> - /* We used to default to FPA for generic ARM, but almost nobody >> - uses that now, and we now provide a way for the user to force >> - the model. So default to the most useful variant. */ >> - if (tdep->fp_model == ARM_FLOAT_AUTO) >> - tdep->fp_model = ARM_FLOAT_SOFT_FPA; >> - >> if (tdep->jb_pc >= 0) >> set_gdbarch_get_longjmp_target (gdbarch, arm_get_longjmp_target); >> >> /* Floating point sizes and format. */ >> set_gdbarch_float_format (gdbarch, floatformats_ieee_single); >> - if (tdep->fp_model == ARM_FLOAT_SOFT_FPA || tdep->fp_model == ARM_FLOAT_FPA) >> - { >> - set_gdbarch_double_format >> - (gdbarch, floatformats_ieee_double_littlebyte_bigword); >> - set_gdbarch_long_double_format >> - (gdbarch, floatformats_ieee_double_littlebyte_bigword); >> - } >> - else >> - { >> - set_gdbarch_double_format (gdbarch, floatformats_ieee_double); >> - set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double); >> - } >> + set_gdbarch_double_format (gdbarch, floatformats_ieee_double); >> + set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double); >> >> /* Hook used to decorate frames with signed return addresses, only available >> for ARMv8.1-m PACBTI. */ >> @@ -10678,8 +10416,6 @@ arm_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file) >> >> gdb_printf (file, _("arm_dump_tdep: fp_model = %i\n"), >> (int) tdep->fp_model); >> - gdb_printf (file, _("arm_dump_tdep: have_fpa_registers = %i\n"), >> - (int) tdep->have_fpa_registers); >> gdb_printf (file, _("arm_dump_tdep: have_wmmx_registers = %i\n"), >> (int) tdep->have_wmmx_registers); >> gdb_printf (file, _("arm_dump_tdep: vfp_register_count = %i\n"), >> @@ -10820,8 +10556,6 @@ _initialize_arm_tdep () >> _("Set the floating point type."), >> _("Show the floating point type."), >> _("auto - Determine the FP typefrom the OS-ABI.\n\ >> -softfpa - Software FP, mixed-endian doubles on little-endian ARMs.\n\ >> -fpa - FPA co-processor (GCC compiled).\n\ >> softvfp - Software FP with pure-endian doubles.\n\ >> vfp - VFP co-processor."), >> set_fp_model_sfunc, show_fp_model, >> diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h >> index 67dd1151da4..594961e52ec 100644 >> --- a/gdb/arm-tdep.h >> +++ b/gdb/arm-tdep.h >> @@ -62,8 +62,6 @@ extern bool arm_apcs_32; >> enum arm_float_model >> { >> ARM_FLOAT_AUTO, /* Automatic detection. Do not set in tdep. */ >> - ARM_FLOAT_SOFT_FPA, /* Traditional soft-float (mixed-endian on LE ARM). */ >> - ARM_FLOAT_FPA, /* FPA co-processor. GCC calling convention. */ >> ARM_FLOAT_SOFT_VFP, /* Soft-float with pure-endian doubles. */ >> ARM_FLOAT_VFP, /* Full VFP calling convention. */ >> ARM_FLOAT_LAST /* Keep at end. */ >> @@ -95,7 +93,6 @@ struct arm_gdbarch_tdep : gdbarch_tdep_base >> >> enum arm_float_model fp_model {}; /* Floating point calling conventions. */ >> >> - bool have_fpa_registers = false; /* Does the target report the FPA registers? */ >> bool have_wmmx_registers = false; /* Does the target report the WMMX registers? */ >> /* The number of VFP registers reported by the target. It is zero >> if VFP registers are not supported. */ >> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo >> index 238a49b027d..2111a584b88 100644 >> --- a/gdb/doc/gdb.texinfo >> +++ b/gdb/doc/gdb.texinfo >> @@ -25309,11 +25309,6 @@ argument @var{fputype} can be one of these: >> @table @code >> @item auto >> Determine the FPU type by querying the OS ABI. >> -@item softfpa >> -Software FPU, with mixed-endian doubles on little-endian ARM >> -processors. >> -@item fpa >> -GCC-compiled FPA co-processor. >> @item softvfp >> Software FPU with pure-endian doubles. >> @item vfp >> @@ -46919,9 +46914,6 @@ Double precision IEEE floating point. >> @item bfloat16 >> The 16-bit @dfn{brain floating point} format used e.g.@: by x86 and ARM. >> >> -@item arm_fpa_ext >> -The 12-byte extended precision format used by ARM FPA registers. >> - >> @item i387_ext >> The 10-byte extended precision format used by x87 registers. >> >> @@ -47106,8 +47098,9 @@ feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain >> registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc}, >> and @samp{xpsr}. >> >> -The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it >> -should contain registers @samp{f0} through @samp{f7} and @samp{fps}. >> +The @samp{org.gnu.gdb.arm.fpa} feature is no longer supported. It >> +used to contain registers @samp{f0} through @samp{f7} and @samp{fps}, for the >> +legacy FPA feature. >> >> The @samp{org.gnu.gdb.arm.m-profile-mve} feature is optional. If present, it >> must contain register @samp{vpr}. >> diff --git a/gdb/features/Makefile b/gdb/features/Makefile >> index 061cb2ed032..3d0ed4edafa 100644 >> --- a/gdb/features/Makefile >> +++ b/gdb/features/Makefile >> @@ -204,11 +204,9 @@ FEATURE_XMLFILES = aarch64-core.xml \ >> arc/v2-core.xml \ >> arc/v2-aux.xml \ >> arm/arm-core.xml \ >> - arm/arm-fpa.xml \ >> arm/arm-m-profile.xml \ >> arm/arm-m-profile-mve.xml \ >> arm/arm-m-system.xml \ >> - arm/arm-m-profile-with-fpa.xml \ >> arm/arm-tls.xml \ >> arm/arm-vfpv2.xml \ >> arm/arm-vfpv3.xml \ >> diff --git a/gdb/features/arm/arm-fpa.c b/gdb/features/arm/arm-fpa.c >> deleted file mode 100644 >> index 65a49f5f3f1..00000000000 >> --- a/gdb/features/arm/arm-fpa.c >> +++ /dev/null >> @@ -1,23 +0,0 @@ >> -/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: >> - Original: arm-fpa.xml */ >> - >> -#include "gdbsupport/tdesc.h" >> - >> -static int >> -create_feature_arm_arm_fpa (struct target_desc *result, long regnum) >> -{ >> - struct tdesc_feature *feature; >> - >> - feature = tdesc_create_feature (result, "org.gnu.gdb.arm.fpa"); >> - regnum = 16; >> - tdesc_create_reg (feature, "f0", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f1", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f2", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f3", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f4", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f5", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f6", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "f7", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "fps", regnum++, 1, NULL, 32, "int"); >> - return regnum; >> -} >> diff --git a/gdb/features/arm/arm-fpa.xml b/gdb/features/arm/arm-fpa.xml >> deleted file mode 100644 >> index d533b25132f..00000000000 >> --- a/gdb/features/arm/arm-fpa.xml >> +++ /dev/null >> @@ -1,23 +0,0 @@ >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> diff --git a/gdb/features/arm/arm-m-profile-with-fpa.c b/gdb/features/arm/arm-m-profile-with-fpa.c >> deleted file mode 100644 >> index 2b7c78597bb..00000000000 >> --- a/gdb/features/arm/arm-m-profile-with-fpa.c >> +++ /dev/null >> @@ -1,39 +0,0 @@ >> -/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: >> - Original: arm-m-profile-with-fpa.xml */ >> - >> -#include "gdbsupport/tdesc.h" >> - >> -static int >> -create_feature_arm_arm_m_profile_with_fpa (struct target_desc *result, long regnum) >> -{ >> - struct tdesc_feature *feature; >> - >> - feature = tdesc_create_feature (result, "org.gnu.gdb.arm.m-profile"); >> - tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr"); >> - tdesc_create_reg (feature, "lr", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 96, "arm_fpa_ext"); >> - tdesc_create_reg (feature, "", regnum++, 1, NULL, 32, "int"); >> - tdesc_create_reg (feature, "xpsr", regnum++, 1, NULL, 32, "int"); >> - return regnum; >> -} >> diff --git a/gdb/features/arm/arm-m-profile-with-fpa.xml b/gdb/features/arm/arm-m-profile-with-fpa.xml >> deleted file mode 100644 >> index 850ed42cbfd..00000000000 >> --- a/gdb/features/arm/arm-m-profile-with-fpa.xml >> +++ /dev/null >> @@ -1,39 +0,0 @@ >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> - >> diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c >> index 044b171ecd2..45a3df941c5 100644 >> --- a/gdb/target-descriptions.c >> +++ b/gdb/target-descriptions.c >> @@ -132,10 +132,6 @@ make_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *ttype) >> m_type = arch_float_type (m_gdbarch, -1, "builtin_type_ieee_double", >> floatformats_ieee_double); >> return; >> - case TDESC_TYPE_ARM_FPA_EXT: >> - m_type = arch_float_type (m_gdbarch, -1, "builtin_type_arm_ext", >> - floatformats_arm_ext); >> - return; >> >> case TDESC_TYPE_I387_EXT: >> m_type = arch_float_type (m_gdbarch, -1, "builtin_type_i387_ext", >> diff --git a/gdb/testsuite/gdb.base/long_long.exp b/gdb/testsuite/gdb.base/long_long.exp >> index 9c8dd16b7eb..bb4c1a1859e 100644 >> --- a/gdb/testsuite/gdb.base/long_long.exp >> +++ b/gdb/testsuite/gdb.base/long_long.exp >> @@ -141,22 +141,10 @@ gdb_test_ptr "p/a val.oct" "" "" "0x77053977" "0xa72ee53977053977" >> gdb_test "p/c val.oct" "'w'" >> >> if { $sizeof_double == 8 || $sizeof_long_double == 8 } { >> - # ARM FPA floating point numbers are not strictly little endian or big >> - # endian, but a hybrid. They are in little endian format with the two >> - # words swapped in big endian format. >> # EABI targets default to natural-endian VFP format. >> - >> - if { ([istarget "arm*-*-*"]) \ >> - && !([istarget "*-*-*eabi*"] || \ >> - [istarget "*-*-mingw32ce*"] || \ >> - [istarget "*-*-openbsd*"]) } then { >> - # assume the long long represents a floating point double in ARM format >> - gdb_test "p/f val.oct" "2.1386676354387559e\\+265" >> - } else { >> - # assume the long long represents a floating point double in little >> - # endian format >> - gdb_test "p/f val.oct" "-5.9822653797615723e-120" >> - } >> + # Assume the long long represents a floating point double in little >> + # endian format >> + gdb_test "p/f val.oct" "-5.9822653797615723e-120" >> } else { >> gdb_test "p/f val.oct" "-2.42716126e-15" >> } >> diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc >> index ab6209a3abc..fb3f02088ca 100644 >> --- a/gdbserver/linux-arm-low.cc >> +++ b/gdbserver/linux-arm-low.cc >> @@ -983,8 +983,7 @@ arm_read_description (void) >> return arm_linux_read_description (ARM_FP_TYPE_VFPV2); >> } >> >> - /* The default configuration uses legacy FPA registers, probably >> - simulated. */ >> + /* No floating point registers. */ >> return arm_linux_read_description (ARM_FP_TYPE_NONE); >> } >> >> @@ -1088,9 +1087,9 @@ static struct regset_info arm_regsets[] = { >> { PTRACE_GETREGS, PTRACE_SETREGS, 0, >> ARM_CORE_REGS_SIZE + ARM_INT_REGISTER_SIZE, GENERAL_REGS, >> arm_fill_gregset, arm_store_gregset }, >> - { PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS, 0, IWMMXT_REGS_SIZE, EXTENDED_REGS, >> + { PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS, 0, IWMMXT_REGS_SIZE, OPTIONAL_REGS, >> arm_fill_wmmxregset, arm_store_wmmxregset }, >> - { PTRACE_GETVFPREGS, PTRACE_SETVFPREGS, 0, ARM_VFP3_REGS_SIZE, EXTENDED_REGS, >> + { PTRACE_GETVFPREGS, PTRACE_SETVFPREGS, 0, ARM_VFP3_REGS_SIZE, OPTIONAL_REGS, >> arm_fill_vfpregset, arm_store_vfpregset }, >> NULL_REGSET >> }; >> diff --git a/gdbsupport/tdesc.cc b/gdbsupport/tdesc.cc >> index 4d41d0b168a..0b0b765cb3d 100644 >> --- a/gdbsupport/tdesc.cc >> +++ b/gdbsupport/tdesc.cc >> @@ -53,7 +53,6 @@ static tdesc_type_builtin tdesc_predefined_types[] = >> { "ieee_half", TDESC_TYPE_IEEE_HALF }, >> { "ieee_single", TDESC_TYPE_IEEE_SINGLE }, >> { "ieee_double", TDESC_TYPE_IEEE_DOUBLE }, >> - { "arm_fpa_ext", TDESC_TYPE_ARM_FPA_EXT }, >> { "i387_ext", TDESC_TYPE_I387_EXT }, >> { "bfloat16", TDESC_TYPE_BFLOAT16 } >> }; >> diff --git a/gdbsupport/tdesc.h b/gdbsupport/tdesc.h >> index 403aa2c3d19..082819ada13 100644 >> --- a/gdbsupport/tdesc.h >> +++ b/gdbsupport/tdesc.h >> @@ -171,7 +171,6 @@ enum tdesc_type_kind >> TDESC_TYPE_IEEE_HALF, >> TDESC_TYPE_IEEE_SINGLE, >> TDESC_TYPE_IEEE_DOUBLE, >> - TDESC_TYPE_ARM_FPA_EXT, >> TDESC_TYPE_I387_EXT, >> TDESC_TYPE_BFLOAT16,