From patchwork Mon Jan 15 11:20:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 188111 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2614:b0:101:6a76:bbe3 with SMTP id mm20csp1637945dyc; Mon, 15 Jan 2024 03:20:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFrffFe5GKbKbxDl3zUPDnNs3hWvQJZj3WDju+XXlw+A63XcoDo8bXHchQbAxSADSVmLSQ3 X-Received: by 2002:a05:6902:120b:b0:dbe:9cee:7d11 with SMTP id s11-20020a056902120b00b00dbe9cee7d11mr2535822ybu.59.1705317652734; Mon, 15 Jan 2024 03:20:52 -0800 (PST) ARC-Seal: i=4; a=rsa-sha256; t=1705317652; cv=pass; d=google.com; s=arc-20160816; b=0qaCswiSSnAxcKgGE3qskik6m9c74hV18V/f0s2Um7H7g/3oFCy2yMBNVT9Ain52qH GsrKHdbSFc951WfwMAuQXFZ/5nMA0Flj0C43zcHwr7pDNlHBMx4jbKBNWP5MWl3AzuH6 QawLmVzNCpXZeI7LuAF0yqRWf5+HusbBRqUvVesXj3H50o5Ud4qAAFPK2np/FrHeekGH 4PA32TYbxyXaTFbGFl8uHeZ/ZafR58fSo3sEj4MUpzCfyXtEQqy5SaPP8BalxFUK+LIN Gg4cEgSyXiyAuzq+jFlU2TLIG7V0NHyGV3dSv7oBwu5zVjyv20FdofImvcfDk24hdC+W HZhQ== ARC-Message-Signature: i=4; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:original-authentication-results :nodisclaimer:mime-version:in-reply-to:content-disposition :references:message-id:subject:to:from:date :authentication-results-original:dkim-signature:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=JtNUfhyZ/KyrkryBto7Vua5aPaIbUqP6pKRrPxrGVdo=; fh=NLxAvL/bDfPg4AGOtxqvQlND8vazkZrNzKLY8+LAbBY=; b=gh6AZMLj01QgcRLmKShhpu8UtqqIeLkyivvGSeaf5oGjsMUxE54g/P3Q4QD9CwbRPs R059+f9GZSRwRfWAdgrTIRnW4c4Z5u0PncMiDgnYD6TUxZfFjgVnhdF30flBRK32Sr4F 93fuAAJo683srGVts2gVwT2RhSSXzTXH5hWA9OufVu2jY4zsgyLdmdv4fZeoxF6G17EG 1n0zV1+ahQY6yL9wBLOuukWLP0wII9VS2Y4xP8oY9g4IOuaIW6sFKXAyfRRXNyMKRJuL ZnO5RlYop3OsmOMJh2TqOozwF/0kAGkTVbXW0V0aAWdmE+AnrR8ciydvSTfghIQmrWT6 A9Ow== ARC-Authentication-Results: i=4; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=f4YOPwsA; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=f4YOPwsA; arc=pass (i=3); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id n22-20020ac85a16000000b00429d087c6c7si5751040qta.695.2024.01.15.03.20.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jan 2024 03:20:52 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=f4YOPwsA; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=f4YOPwsA; arc=pass (i=3); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 350413858024 for ; Mon, 15 Jan 2024 11:20:52 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on2057.outbound.protection.outlook.com [40.107.15.57]) by sourceware.org (Postfix) with ESMTPS id D7A6D385800D for ; Mon, 15 Jan 2024 11:20:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7A6D385800D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D7A6D385800D Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.15.57 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705317644; cv=pass; b=CtcrZ3JTU9/4+EQI+fQrUlKU/Z6o/kzwoRRcTKMStfEk5b1NQPgdwLseiAF/55XanJZ4w/VBbXFzzus7VwFVb2nldK4DJLzGVj0Bi90ey6GBP9BL9tE+e5b9MlFJVjhJ7SoBbjo8h2qOM0ubHvmuobjkXcD0Cbx4zfe/xlcT1qk= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705317644; c=relaxed/simple; bh=5m6dlrOP8fKglK/YWtIsSL8NfLxBb678nbEWol/QI8I=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=HrTwpzMLZvpH4/S7lkqJY5v5t6a3oaf08AU4wHJKkqzSdqr6NY2oANmjVT+elkldQ9M5thoSZXRgmU8VymW7mVhDGt65YPrDw9suLpamfxs8I9a2lF20/RHK03kyQEF6nT/J/2BmS18FB8iR+5n7H9mt4YIFIiWOf5ZMHaP9r4o= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=dRSx1ysn0EqOURIejtgeEdoeJezkyZ7leFk2w13PcekHRFjF6dZY7+3pn3JpfIqF616U6bxc/YxY7a5L3iHN7cj+JgCcMV4iT6GkGqwojJZORQWMQlZyxHJOGwpkEE3F+TxZCKHuPMgWMdpYTvIDaL1A2mS4txx9+r2goCKOHcntHaU+KehD2zjpp8ih/zKXtDtdlLtmjbsXA2uX1+ZKNAvNsQHxyZfpOf/0XQzhWn9W4+4+IA7NrEGK8WU9Qqhc/xw0KmwpucIDB4bGGFLNzyuOrdUiTJBPD/LY7DozES7myElOaowZX9fafHDoAN0DBcxVHSK98rM9p4A9UfERUQ== 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=JtNUfhyZ/KyrkryBto7Vua5aPaIbUqP6pKRrPxrGVdo=; b=WNFloHrbbJASMK+LgZfbsfYfCxeWXzM/okPRqN/X7va722aHPV1cbgzrETLwg+TUGSOC6AS6P6bgBmyokDVYHlJwDcSKngCCPYA4Upqe7ZXpgv783zYgZmx6dQZrROeFpj/YqFNH0IVuG63UiocLDIPwA5/cSRsD4pNCChYs4ajqB15AA/azmulSY9cRGZTXW8wBHx0pbRVD7cw879XTlO+f9C5gfLxlUtFtsAFjnXzN0jGIYlx0lpdYWxu13tg7giAy1r8ijQIUVzWl85GLXeWZDBvIvDds2niXMEpAQYIWbCnchL+i/qPSWK6lxWtRt1Ls8UMKScD1JPQWQN885w== 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]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JtNUfhyZ/KyrkryBto7Vua5aPaIbUqP6pKRrPxrGVdo=; b=f4YOPwsAo8/Wz2yisWc1gssbVwX0h9z2f4vJzPkR7XeL+n84Xrexd3D8I2UNVfB8+wEuPdzWwCzDlpXZtZRCPPQWWyeYmdCd8VsbO4PgJrvPMvzuDFKu3rVVacCCOHICQKv0TNmEJS10zZb7dgzTsXpLSpaicC7zoHjLN6mdsQQ= Received: from AS9PR06CA0263.eurprd06.prod.outlook.com (2603:10a6:20b:45f::17) by DB5PR08MB10253.eurprd08.prod.outlook.com (2603:10a6:10:4a9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Mon, 15 Jan 2024 11:20:32 +0000 Received: from AM3PEPF00009B9E.eurprd04.prod.outlook.com (2603:10a6:20b:45f:cafe::86) by AS9PR06CA0263.outlook.office365.com (2603:10a6:20b:45f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend Transport; Mon, 15 Jan 2024 11:20:32 +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 AM3PEPF00009B9E.mail.protection.outlook.com (10.167.16.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 11:20:32 +0000 Received: ("Tessian outbound 31df1b57f90c:v228"); Mon, 15 Jan 2024 11:20:32 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: cea1fb60eccd2fc5 X-CR-MTA-TID: 64aa7808 Received: from 1562f3a08cef.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F796C743-13FB-4861-8DE7-B9F99F358DB0.1; Mon, 15 Jan 2024 11:20:25 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1562f3a08cef.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 15 Jan 2024 11:20:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eYIIMvDEwLv9IGx1zNTut0EjlhWuiHlkZoNno/pFxtzbnqjpByerUnku6iNLxWUFs/kPngKxqyS5JRTcxAiCVWW7hglENsM/Qpt0LB2CP2VtDSTsi+Px7b5pd6eWbp3WsHWnjVDosMxz5Gn8noU8KIJWHmvqv9azTOqS0s4LSKTGOT7JVh378sbqgkaPJ8rCqDwDNiSzl41T7rdLGWWcFytluivbMDmOJ/YGcyFu4qDrT5eyiTUUzbuzd3s1gks6Ns6r8V2CxnVd/KfFEC5U9K02irqbHjj17anaxPv+M00XBqbLXrRvFTzcygGFF4ibVHmZ26VcKi1N/W/Q1RKUAw== 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=JtNUfhyZ/KyrkryBto7Vua5aPaIbUqP6pKRrPxrGVdo=; b=iHgKOh7iFHbhNFy+RvRhKBzIraz7jw/yYDk0fwsxxssHhcRRIjys9kaiVTB1AFNrmGVOmPRYhQU0nQC1RhsF6MmT0+dPONRax03WQT5KPW7V9xdh0d5z2Fc23qfsdmleWTeFLtDppTy9XgSPe9ERLkWa2jD1c+B/hHPDpJdEccn6gqQDB7QXnIsIYTcpZDqjTK2o2OBqHRT5BwHvGkH8cl5FcLLi9Otz35E17AxVQ62aUDYhh30E21DeKyeOosgu6U0R/sHsbhtAJTKxhOc68yB94p8Ce5HGHYBrP7n5zyl3IT/XfdxZAGoGA4S3sbxR04sWWHd/crwYL6oKuahgig== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JtNUfhyZ/KyrkryBto7Vua5aPaIbUqP6pKRrPxrGVdo=; b=f4YOPwsAo8/Wz2yisWc1gssbVwX0h9z2f4vJzPkR7XeL+n84Xrexd3D8I2UNVfB8+wEuPdzWwCzDlpXZtZRCPPQWWyeYmdCd8VsbO4PgJrvPMvzuDFKu3rVVacCCOHICQKv0TNmEJS10zZb7dgzTsXpLSpaicC7zoHjLN6mdsQQ= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by AM8PR08MB5602.eurprd08.prod.outlook.com (2603:10a6:20b:1d0::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.26; Mon, 15 Jan 2024 11:20:22 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::a997:a5ad:3e6:44b6]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::a997:a5ad:3e6:44b6%4]) with mapi id 15.20.7181.022; Mon, 15 Jan 2024 11:20:22 +0000 Date: Mon, 15 Jan 2024 11:20:20 +0000 From: Andrew Carlotti To: binutils@sourceware.org Subject: [PATCH 2/2] aarch64: Fix tlbi and tlbip instructions Message-ID: <82155c9d-c951-731d-394f-82710ca20c3c@e124511.cambridge.arm.com> References: <46d1ae50-5429-b433-0ff1-0e58dbcf0ea2@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <46d1ae50-5429-b433-0ff1-0e58dbcf0ea2@e124511.cambridge.arm.com> X-ClientProxiedBy: LO0P265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::18) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|AM8PR08MB5602:EE_|AM3PEPF00009B9E:EE_|DB5PR08MB10253:EE_ X-MS-Office365-Filtering-Correlation-Id: 7242e919-13c1-4434-e0ec-08dc15bbfcf7 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: U332xWwTAZGQ1Cag+28FI961z80TNad+2F/75AXLt9WnblOcF7B+eQArHmYalvlnaFcXFywutbQIdS6yYgs2DaI94PdCaEm7WMTJmqr+xjjFnrs0cVx1yjxgkm/kuqFeQefQYqPSmuO6ciPWfaXm0cO7T3CIzVyA1oySmTPKmX2cpoOa3NfrCit/hBHkE6H8UrwtozmZf6zto+hcYxNO8Y7rbSPsIc7/4MXnkFNKZNylQIWyn6PDzDsXnF8otToT/q+VqBctVvvXlPH9yTbQmsRUmqqzb8EwEzVOclvac8f2if/PFYulVz5Ym6S6mCG/Eb5xgpQdpttAuosQcH075T04MteY5Zu8UXAA518Fjcy6f+WGN/7sCcHPTqd1yCJU1xY7fto8PyTlNZLlQ6U+lsoIDEsmFvPeGuLas4oAs+8xxwauoGWb6cDSSs/KiqvGLsS86X7m0EYd4XxkOY/MfLmA9H19mNImoXRqrvUd/CK4vR8SsY7aKgMp4l/UkUHpGRAAZqNOKgHW1FEpiD8LKdOOiZ8T8ZVC4vM2wdP8DgxR1yU2CtzepQM8MFjM7N/ECxFIGTXJh4l/w5VJe0hjMsBmNHWtjkPPO9VwuzJc/+VJ4uLv7YV4VrL2fGk0JoVC+o1LgSNGziVE3PvbBQeGHA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(136003)(396003)(366004)(39860400002)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(83380400001)(6512007)(26005)(38100700002)(2906002)(44832011)(8676002)(30864003)(6506007)(66946007)(8936002)(478600001)(6486002)(66556008)(5660300002)(6916009)(66476007)(316002)(41300700001)(31696002)(86362001)(31686004)(579004)(473944003)(414714003); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5602 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: AM3PEPF00009B9E.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 83fc112d-53fb-4dab-5a11-08dc15bbf6c4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TNVH7c+AngZz2VHRTzpXs8bJJe3gAik8v+tyop2tsUxkasx/6pXEFdOC2yOXnbsXxFt3MQkVcYRZzUqbwT1p9IsBWW2nnKVmVYkOyvJGdftZz1gHMFz7/4APp4SQ/XYtTV6og6Qw8gJJYFlp8M8diOaZOleL+3B253cVB6eUBUYcZ0QjNlwDUwbG+1DaCSlPIqCZE0Qxk8rMyBL4Zmf7XWkIpmXGVL3msY5uUNEwe6aPNgtnZz8pCM7uDDoaMV4/sUF/lPQHkeu+06Io3DrnsYyki5GH+iC7dWA8BrZmXn74JLECD7g6CayFoTGc/yko5J2RIrZdyWM/OUJkaKI6UplOWvj+QLrZZ4ah3Z3vnRfbHvxT6j2gCHPB3RNlhPJFGl2m80K2q1B81qWbcz3aPPmqRPA9aVApXBEhuzh0sfld5fW2IxerTht5zK1fEWJe1aGV38VqsoEmR0du2wz4koNo9uaJ/bvelLrGawJQcDQnci/KbdjKcrHdFROGjHl1NqrZhCxHNBULmbun2+4YNnR7ZYG2CKMZPeWfLD74H2HpcIIAEp7XP42IN+u4w3N88DMOnFaNFI4R5fAG2C/V/NYjUSMrzBz2FBgc6CI8zitcskfrkQq0yuKsqk6k8YfLNSRZMXzxK7WmEIRpIGpGHY8gNnrEJKF++rJ1c6vOe22carzNEmJHuj48S/SzOGHvmbfH3MAkuAv3n04csQksfprZOk9CizjVveX7dX10XCHJUSWakqgB6pFUBIpkEtB2Qm5bktbr7kT0eh7R4l2LCA== 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:(13230031)(4636009)(39860400002)(136003)(396003)(376002)(346002)(230922051799003)(82310400011)(186009)(64100799003)(451199024)(1800799012)(36840700001)(46966006)(6506007)(6512007)(6916009)(70206006)(70586007)(478600001)(336012)(6486002)(26005)(47076005)(36860700001)(83380400001)(41300700001)(44832011)(5660300002)(30864003)(8936002)(8676002)(316002)(2906002)(82740400003)(356005)(81166007)(86362001)(31696002)(40480700001)(31686004)(579004)(473944003)(414714003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 11:20:32.6313 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7242e919-13c1-4434-e0ec-08dc15bbfcf7 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: AM3PEPF00009B9E.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10253 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, 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: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788155163213747109 X-GMAIL-MSGID: 1788155163213747109 There are some tlbi operations that don't have a corresponding tlbip operation, but we were incorrectly using the same list for both. Add the missing tlbi *nxs operations, and use the F_REG_128 flag to filter tlbi operations that don't have a tlbip analogue. For increased clarity, I have also used a macro to reduce duplication between the 'nxs' and non-'nxs' variants, and added a test to verify that no invalid combinations are accepted. Additionally, fix two missing checks for AARCH64_OPND_SYSREG_TLBIP that were preventing disassembly of tlbip instructions. diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index db1a259a2bda668d9145357b43a5e44cba3950f2..77467e20ba32ca40e4aaf71c427aab76ceb3b273 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -4856,7 +4856,7 @@ parse_sys_reg (char **str, htab_t sys_regs, for the option, or NULL. */ static const aarch64_sys_ins_reg * -parse_sys_ins_reg (char **str, htab_t sys_ins_regs) +parse_sys_ins_reg (char **str, htab_t sys_ins_regs, bool sysreg128_p) { char *p, *q; char buf[AARCH64_MAX_SYSREG_NAME_LEN]; @@ -4875,7 +4875,7 @@ parse_sys_ins_reg (char **str, htab_t sys_ins_regs) return NULL; o = str_hash_find (sys_ins_regs, buf); - if (!o) + if (!o || (sysreg128_p && !aarch64_sys_reg_128bit_p (o->flags))) return NULL; if (!aarch64_sys_ins_reg_supported_p (cpu_variant, @@ -7651,28 +7651,32 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SYSREG_IC: inst.base.operands[i].sysins_op = - parse_sys_ins_reg (&str, aarch64_sys_regs_ic_hsh); + parse_sys_ins_reg (&str, aarch64_sys_regs_ic_hsh, false); goto sys_reg_ins; case AARCH64_OPND_SYSREG_DC: inst.base.operands[i].sysins_op = - parse_sys_ins_reg (&str, aarch64_sys_regs_dc_hsh); + parse_sys_ins_reg (&str, aarch64_sys_regs_dc_hsh, false); goto sys_reg_ins; case AARCH64_OPND_SYSREG_AT: inst.base.operands[i].sysins_op = - parse_sys_ins_reg (&str, aarch64_sys_regs_at_hsh); + parse_sys_ins_reg (&str, aarch64_sys_regs_at_hsh, false); goto sys_reg_ins; case AARCH64_OPND_SYSREG_SR: inst.base.operands[i].sysins_op = - parse_sys_ins_reg (&str, aarch64_sys_regs_sr_hsh); + parse_sys_ins_reg (&str, aarch64_sys_regs_sr_hsh, false); goto sys_reg_ins; case AARCH64_OPND_SYSREG_TLBI: + inst.base.operands[i].sysins_op = + parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh, false); + goto sys_reg_ins; + case AARCH64_OPND_SYSREG_TLBIP: inst.base.operands[i].sysins_op = - parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh); + parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh, true); sys_reg_ins: if (inst.base.operands[i].sysins_op == NULL) { diff --git a/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.l b/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.l index 69450747b150306f0b73ea1375e737d1ab4a3159..3d87cdbac4d94142a3d58c0d890b68de3aba5889 100644 --- a/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.l +++ b/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.l @@ -1,4 +1,2 @@ [^:]*: Assembler messages: [^:]*:5: Error: missing register at operand 2 -- `tlbip vale3nxs' -[^:]*:9: Error: extraneous register at operand 2 -- `tlbip paall,x0' -[^:]*:10: Error: extraneous register at operand 2 -- `tlbip paall,x0,x1' diff --git a/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.s b/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.s index 1e02b71fdbae2164a02f59bebcd4a2e15e4f30b3..538fe94b7967a707be6d12cbdfd670e24788e6c6 100644 --- a/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.s +++ b/gas/testsuite/gas/aarch64/illegal-sysp-tlbip-optional.s @@ -3,8 +3,3 @@ /* TLBIP operands marked with the F_HASXT don not allow xzr to be used as GPR arguments and so require at least one register to be specified. */ tlbip vale3nxs - - /* Conversely, those without the flag do not allow us to specify registers, - so the only accepted alternative is the complete omission of optional ops. */ - tlbip paall, x0 - tlbip paall, x0, x1 diff --git a/gas/testsuite/gas/aarch64/sysp-tlbip-optional.d b/gas/testsuite/gas/aarch64/sysp-tlbip-optional.d index 977dedbf843598080d9ce10401ea190d480ff670..0aeeb79a1e75941fce40af970ab7e66fb6bd4d4a 100644 --- a/gas/testsuite/gas/aarch64/sysp-tlbip-optional.d +++ b/gas/testsuite/gas/aarch64/sysp-tlbip-optional.d @@ -5,13 +5,12 @@ Disassembly of section \.text: 0+ <\.text>: -[^:]*: d54e97a0 sysp #6, C9, C7, #5, x0, x1 -[^:]*: d54e97a0 sysp #6, C9, C7, #5, x0, x1 -[^:]*: d54e97a2 sysp #6, C9, C7, #5, x2, x3 -[^:]*: d54e97a2 sysp #6, C9, C7, #5, x2, x3 -[^:]*: d54e879f sysp #6, C8, C7, #4 -[^:]*: d54e97bf sysp #6, C9, C7, #5 -[^:]*: d54e97a0 sysp #6, C9, C7, #5, x0, x1 -[^:]*: d54e97a0 sysp #6, C9, C7, #5, x0, x1 -[^:]*: d54e97a2 sysp #6, C9, C7, #5, x2, x3 -[^:]*: d54e97a2 sysp #6, C9, C7, #5, x2, x3 +[^:]*: d54e97a0 tlbip vale3nxs, x0, x1 +[^:]*: d54e97a0 tlbip vale3nxs, x0, x1 +[^:]*: d54e97a2 tlbip vale3nxs, x2, x3 +[^:]*: d54e97a2 tlbip vale3nxs, x2, x3 +[^:]*: d54e97bf tlbip vale3nxs, xzr +[^:]*: d54e97a0 tlbip vale3nxs, x0, x1 +[^:]*: d54e97a0 tlbip vale3nxs, x0, x1 +[^:]*: d54e97a2 tlbip vale3nxs, x2, x3 +[^:]*: d54e97a2 tlbip vale3nxs, x2, x3 diff --git a/gas/testsuite/gas/aarch64/sysp-tlbip-optional.s b/gas/testsuite/gas/aarch64/sysp-tlbip-optional.s index 3635db1d039c30447105b79abda7687dd0dac355..afb5bf385c287d7bc4dc95bc191b779eecf94d07 100644 --- a/gas/testsuite/gas/aarch64/sysp-tlbip-optional.s +++ b/gas/testsuite/gas/aarch64/sysp-tlbip-optional.s @@ -7,11 +7,6 @@ tlbip vale3nxs, x2 tlbip vale3nxs, x2, x3 - - /* Conversely, those without the flag do not allow us to specify registers, - so the only accepted alternative is the complete omission of optional ops. */ - tlbip paall - /* No such checking is carried out when the same instruction is issued directly via the sysp implementation defined maintenance instruction, such that both GRPs are optional. */ diff --git a/gas/testsuite/gas/aarch64/tlbip-invalid.d b/gas/testsuite/gas/aarch64/tlbip-invalid.d new file mode 100644 index 0000000000000000000000000000000000000000..46b79cedd53e3356c824ff4c8cc174e5f57f56af --- /dev/null +++ b/gas/testsuite/gas/aarch64/tlbip-invalid.d @@ -0,0 +1 @@ +#error_output: tlbip-invalid.l diff --git a/gas/testsuite/gas/aarch64/tlbip-invalid.l b/gas/testsuite/gas/aarch64/tlbip-invalid.l new file mode 100644 index 0000000000000000000000000000000000000000..a104886057d3614666da81102a63889d6e31434e --- /dev/null +++ b/gas/testsuite/gas/aarch64/tlbip-invalid.l @@ -0,0 +1,49 @@ +[^:]*: Assembler messages: +.*: Error: unknown or missing operation name at operand 1 -- `tlbi paallosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbi paallnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbi rpaosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbi rpalosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3os' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip paallos' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3is' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip rpaos' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip rpalos' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip paall' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalle1nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip aside1nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle2nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle1nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip vmalls12e1nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3osnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip paallosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3isnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip rpaosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip rpalosnxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip alle3nxs' +.*: Error: unknown or missing operation name at operand 1 -- `tlbip paallnxs' diff --git a/gas/testsuite/gas/aarch64/tlbip-invalid.s b/gas/testsuite/gas/aarch64/tlbip-invalid.s new file mode 100644 index 0000000000000000000000000000000000000000..65eb78d11431b098d8615ba1fe56cd35834f9de4 --- /dev/null +++ b/gas/testsuite/gas/aarch64/tlbip-invalid.s @@ -0,0 +1,52 @@ +.arch armv8-a+d128+xs + + tlbi paallosnxs + tlbi paallnxs + tlbi rpaosnxs + tlbi rpalosnxs + + tlbip vmalle1os + tlbip aside1os + tlbip vmalle1is + tlbip aside1is + tlbip vmalle1 + tlbip aside1 + tlbip alle2os + tlbip alle1os + tlbip vmalls12e1os + tlbip alle2is + tlbip alle1is + tlbip vmalls12e1is + tlbip alle2 + tlbip alle1 + tlbip vmalls12e1 + tlbip alle3os + tlbip paallos + tlbip alle3is + tlbip rpaos + tlbip rpalos + tlbip alle3 + tlbip paall + + tlbip vmalle1osnxs + tlbip aside1osnxs + tlbip vmalle1isnxs + tlbip aside1isnxs + tlbip vmalle1nxs + tlbip aside1nxs + tlbip alle2osnxs + tlbip alle1osnxs + tlbip vmalls12e1osnxs + tlbip alle2isnxs + tlbip alle1isnxs + tlbip vmalls12e1isnxs + tlbip alle2nxs + tlbip alle1nxs + tlbip vmalls12e1nxs + tlbip alle3osnxs + tlbip paallosnxs + tlbip alle3isnxs + tlbip rpaosnxs + tlbip rpalosnxs + tlbip alle3nxs + tlbip paallnxs diff --git a/gas/testsuite/gas/aarch64/tlbip.d b/gas/testsuite/gas/aarch64/tlbip.d index 81c22cf8e2056789c160953d634c7218adba0309..6acdedb490ba716d8e5c9bbc3fcc00e48bc37c7b 100644 --- a/gas/testsuite/gas/aarch64/tlbip.d +++ b/gas/testsuite/gas/aarch64/tlbip.d @@ -5,123 +5,123 @@ Disassembly of section \.text: 0+ <.*>: - 0: d5488120 sysp #0, C8, C1, #1, x0, x1 - 4: d5488160 sysp #0, C8, C1, #3, x0, x1 - 8: d54881a0 sysp #0, C8, C1, #5, x0, x1 - c: d54881e0 sysp #0, C8, C1, #7, x0, x1 - 10: d5488220 sysp #0, C8, C2, #1, x0, x1 - 14: d5488260 sysp #0, C8, C2, #3, x0, x1 - 18: d54882a0 sysp #0, C8, C2, #5, x0, x1 - 1c: d54882e0 sysp #0, C8, C2, #7, x0, x1 - 20: d5488320 sysp #0, C8, C3, #1, x0, x1 - 24: d5488360 sysp #0, C8, C3, #3, x0, x1 - 28: d54883a0 sysp #0, C8, C3, #5, x0, x1 - 2c: d54883e0 sysp #0, C8, C3, #7, x0, x1 - 30: d5488520 sysp #0, C8, C5, #1, x0, x1 - 34: d5488560 sysp #0, C8, C5, #3, x0, x1 - 38: d54885a0 sysp #0, C8, C5, #5, x0, x1 - 3c: d54885e0 sysp #0, C8, C5, #7, x0, x1 - 40: d5488620 sysp #0, C8, C6, #1, x0, x1 - 44: d5488660 sysp #0, C8, C6, #3, x0, x1 - 48: d54886a0 sysp #0, C8, C6, #5, x0, x1 - 4c: d54886e0 sysp #0, C8, C6, #7, x0, x1 - 50: d5488720 sysp #0, C8, C7, #1, x0, x1 - 54: d5488760 sysp #0, C8, C7, #3, x0, x1 - 58: d54887a0 sysp #0, C8, C7, #5, x0, x1 - 5c: d54887e0 sysp #0, C8, C7, #7, x0, x1 - 60: d5489120 sysp #0, C9, C1, #1, x0, x1 - 64: d5489160 sysp #0, C9, C1, #3, x0, x1 - 68: d54891a0 sysp #0, C9, C1, #5, x0, x1 - 6c: d54891e0 sysp #0, C9, C1, #7, x0, x1 - 70: d5489220 sysp #0, C9, C2, #1, x0, x1 - 74: d5489260 sysp #0, C9, C2, #3, x0, x1 - 78: d54892a0 sysp #0, C9, C2, #5, x0, x1 - 7c: d54892e0 sysp #0, C9, C2, #7, x0, x1 - 80: d5489320 sysp #0, C9, C3, #1, x0, x1 - 84: d5489360 sysp #0, C9, C3, #3, x0, x1 - 88: d54893a0 sysp #0, C9, C3, #5, x0, x1 - 8c: d54893e0 sysp #0, C9, C3, #7, x0, x1 - 90: d5489520 sysp #0, C9, C5, #1, x0, x1 - 94: d5489560 sysp #0, C9, C5, #3, x0, x1 - 98: d54895a0 sysp #0, C9, C5, #5, x0, x1 - 9c: d54895e0 sysp #0, C9, C5, #7, x0, x1 - a0: d5489620 sysp #0, C9, C6, #1, x0, x1 - a4: d5489660 sysp #0, C9, C6, #3, x0, x1 - a8: d54896a0 sysp #0, C9, C6, #5, x0, x1 - ac: d54896e0 sysp #0, C9, C6, #7, x0, x1 - b0: d5489720 sysp #0, C9, C7, #1, x0, x1 - b4: d5489760 sysp #0, C9, C7, #3, x0, x1 - b8: d54897a0 sysp #0, C9, C7, #5, x0, x1 - bc: d54897e0 sysp #0, C9, C7, #7, x0, x1 - c0: d54c8020 sysp #4, C8, C0, #1, x0, x1 - c4: d54c8040 sysp #4, C8, C0, #2, x0, x1 - c8: d54c80a0 sysp #4, C8, C0, #5, x0, x1 - cc: d54c80c0 sysp #4, C8, C0, #6, x0, x1 - d0: d54c8120 sysp #4, C8, C1, #1, x0, x1 - d4: d54c81a0 sysp #4, C8, C1, #5, x0, x1 - d8: d54c8220 sysp #4, C8, C2, #1, x0, x1 - dc: d54c82a0 sysp #4, C8, C2, #5, x0, x1 - e0: d54c8320 sysp #4, C8, C3, #1, x0, x1 - e4: d54c83a0 sysp #4, C8, C3, #5, x0, x1 - e8: d54c8400 sysp #4, C8, C4, #0, x0, x1 - ec: d54c8420 sysp #4, C8, C4, #1, x0, x1 - f0: d54c8440 sysp #4, C8, C4, #2, x0, x1 - f4: d54c8460 sysp #4, C8, C4, #3, x0, x1 - f8: d54c8480 sysp #4, C8, C4, #4, x0, x1 - fc: d54c84a0 sysp #4, C8, C4, #5, x0, x1 - 100: d54c84c0 sysp #4, C8, C4, #6, x0, x1 - 104: d54c84e0 sysp #4, C8, C4, #7, x0, x1 - 108: d54c8520 sysp #4, C8, C5, #1, x0, x1 - 10c: d54c85a0 sysp #4, C8, C5, #5, x0, x1 - 110: d54c8620 sysp #4, C8, C6, #1, x0, x1 - 114: d54c86a0 sysp #4, C8, C6, #5, x0, x1 - 118: d54c8720 sysp #4, C8, C7, #1, x0, x1 - 11c: d54c87a0 sysp #4, C8, C7, #5, x0, x1 - 120: d54c9020 sysp #4, C9, C0, #1, x0, x1 - 124: d54c9040 sysp #4, C9, C0, #2, x0, x1 - 128: d54c90a0 sysp #4, C9, C0, #5, x0, x1 - 12c: d54c90c0 sysp #4, C9, C0, #6, x0, x1 - 130: d54c9120 sysp #4, C9, C1, #1, x0, x1 - 134: d54c91a0 sysp #4, C9, C1, #5, x0, x1 - 138: d54c9220 sysp #4, C9, C2, #1, x0, x1 - 13c: d54c92a0 sysp #4, C9, C2, #5, x0, x1 - 140: d54c9320 sysp #4, C9, C3, #1, x0, x1 - 144: d54c93a0 sysp #4, C9, C3, #5, x0, x1 - 148: d54c9400 sysp #4, C9, C4, #0, x0, x1 - 14c: d54c9420 sysp #4, C9, C4, #1, x0, x1 - 150: d54c9440 sysp #4, C9, C4, #2, x0, x1 - 154: d54c9460 sysp #4, C9, C4, #3, x0, x1 - 158: d54c9480 sysp #4, C9, C4, #4, x0, x1 - 15c: d54c94a0 sysp #4, C9, C4, #5, x0, x1 - 160: d54c94c0 sysp #4, C9, C4, #6, x0, x1 - 164: d54c94e0 sysp #4, C9, C4, #7, x0, x1 - 168: d54c9520 sysp #4, C9, C5, #1, x0, x1 - 16c: d54c95a0 sysp #4, C9, C5, #5, x0, x1 - 170: d54c9620 sysp #4, C9, C6, #1, x0, x1 - 174: d54c96a0 sysp #4, C9, C6, #5, x0, x1 - 178: d54c9720 sysp #4, C9, C7, #1, x0, x1 - 17c: d54c97a0 sysp #4, C9, C7, #5, x0, x1 - 180: d54e8120 sysp #6, C8, C1, #1, x0, x1 - 184: d54e81a0 sysp #6, C8, C1, #5, x0, x1 - 188: d54e8220 sysp #6, C8, C2, #1, x0, x1 - 18c: d54e82a0 sysp #6, C8, C2, #5, x0, x1 - 190: d54e8320 sysp #6, C8, C3, #1, x0, x1 - 194: d54e83a0 sysp #6, C8, C3, #5, x0, x1 - 198: d54e8520 sysp #6, C8, C5, #1, x0, x1 - 19c: d54e85a0 sysp #6, C8, C5, #5, x0, x1 - 1a0: d54e8620 sysp #6, C8, C6, #1, x0, x1 - 1a4: d54e86a0 sysp #6, C8, C6, #5, x0, x1 - 1a8: d54e8720 sysp #6, C8, C7, #1, x0, x1 - 1ac: d54e87a0 sysp #6, C8, C7, #5, x0, x1 - 1b0: d54e9120 sysp #6, C9, C1, #1, x0, x1 - 1b4: d54e91a0 sysp #6, C9, C1, #5, x0, x1 - 1b8: d54e9220 sysp #6, C9, C2, #1, x0, x1 - 1bc: d54e92a0 sysp #6, C9, C2, #5, x0, x1 - 1c0: d54e9320 sysp #6, C9, C3, #1, x0, x1 - 1c4: d54e93a0 sysp #6, C9, C3, #5, x0, x1 - 1c8: d54e9520 sysp #6, C9, C5, #1, x0, x1 - 1cc: d54e95a0 sysp #6, C9, C5, #5, x0, x1 - 1d0: d54e9620 sysp #6, C9, C6, #1, x0, x1 - 1d4: d54e96a0 sysp #6, C9, C6, #5, x0, x1 - 1d8: d54e9720 sysp #6, C9, C7, #1, x0, x1 - 1dc: d54e97a0 sysp #6, C9, C7, #5, x0, x1 \ No newline at end of file + 0: d5488120 tlbip vae1os, x0, x1 + 4: d5488160 tlbip vaae1os, x0, x1 + 8: d54881a0 tlbip vale1os, x0, x1 + c: d54881e0 tlbip vaale1os, x0, x1 + 10: d5488220 tlbip rvae1is, x0, x1 + 14: d5488260 tlbip rvaae1is, x0, x1 + 18: d54882a0 tlbip rvale1is, x0, x1 + 1c: d54882e0 tlbip rvaale1is, x0, x1 + 20: d5488320 tlbip vae1is, x0, x1 + 24: d5488360 tlbip vaae1is, x0, x1 + 28: d54883a0 tlbip vale1is, x0, x1 + 2c: d54883e0 tlbip vaale1is, x0, x1 + 30: d5488520 tlbip rvae1os, x0, x1 + 34: d5488560 tlbip rvaae1os, x0, x1 + 38: d54885a0 tlbip rvale1os, x0, x1 + 3c: d54885e0 tlbip rvaale1os, x0, x1 + 40: d5488620 tlbip rvae1, x0, x1 + 44: d5488660 tlbip rvaae1, x0, x1 + 48: d54886a0 tlbip rvale1, x0, x1 + 4c: d54886e0 tlbip rvaale1, x0, x1 + 50: d5488720 tlbip vae1, x0, x1 + 54: d5488760 tlbip vaae1, x0, x1 + 58: d54887a0 tlbip vale1, x0, x1 + 5c: d54887e0 tlbip vaale1, x0, x1 + 60: d5489120 tlbip vae1osnxs, x0, x1 + 64: d5489160 tlbip vaae1osnxs, x0, x1 + 68: d54891a0 tlbip vale1osnxs, x0, x1 + 6c: d54891e0 tlbip vaale1osnxs, x0, x1 + 70: d5489220 tlbip rvae1isnxs, x0, x1 + 74: d5489260 tlbip rvaae1isnxs, x0, x1 + 78: d54892a0 tlbip rvale1isnxs, x0, x1 + 7c: d54892e0 tlbip rvaale1isnxs, x0, x1 + 80: d5489320 tlbip vae1isnxs, x0, x1 + 84: d5489360 tlbip vaae1isnxs, x0, x1 + 88: d54893a0 tlbip vale1isnxs, x0, x1 + 8c: d54893e0 tlbip vaale1isnxs, x0, x1 + 90: d5489520 tlbip rvae1osnxs, x0, x1 + 94: d5489560 tlbip rvaae1osnxs, x0, x1 + 98: d54895a0 tlbip rvale1osnxs, x0, x1 + 9c: d54895e0 tlbip rvaale1osnxs, x0, x1 + a0: d5489620 tlbip rvae1nxs, x0, x1 + a4: d5489660 tlbip rvaae1nxs, x0, x1 + a8: d54896a0 tlbip rvale1nxs, x0, x1 + ac: d54896e0 tlbip rvaale1nxs, x0, x1 + b0: d5489720 tlbip vae1nxs, x0, x1 + b4: d5489760 tlbip vaae1nxs, x0, x1 + b8: d54897a0 tlbip vale1nxs, x0, x1 + bc: d54897e0 tlbip vaale1nxs, x0, x1 + c0: d54c8020 tlbip ipas2e1is, x0, x1 + c4: d54c8040 tlbip ripas2e1is, x0, x1 + c8: d54c80a0 tlbip ipas2le1is, x0, x1 + cc: d54c80c0 tlbip ripas2le1is, x0, x1 + d0: d54c8120 tlbip vae2os, x0, x1 + d4: d54c81a0 tlbip vale2os, x0, x1 + d8: d54c8220 tlbip rvae2is, x0, x1 + dc: d54c82a0 tlbip rvale2is, x0, x1 + e0: d54c8320 tlbip vae2is, x0, x1 + e4: d54c83a0 tlbip vale2is, x0, x1 + e8: d54c8400 tlbip ipas2e1os, x0, x1 + ec: d54c8420 tlbip ipas2e1, x0, x1 + f0: d54c8440 tlbip ripas2e1, x0, x1 + f4: d54c8460 tlbip ripas2e1os, x0, x1 + f8: d54c8480 tlbip ipas2le1os, x0, x1 + fc: d54c84a0 tlbip ipas2le1, x0, x1 + 100: d54c84c0 tlbip ripas2le1, x0, x1 + 104: d54c84e0 tlbip ripas2le1os, x0, x1 + 108: d54c8520 tlbip rvae2os, x0, x1 + 10c: d54c85a0 tlbip rvale2os, x0, x1 + 110: d54c8620 tlbip rvae2, x0, x1 + 114: d54c86a0 tlbip rvale2, x0, x1 + 118: d54c8720 tlbip vae2, x0, x1 + 11c: d54c87a0 tlbip vale2, x0, x1 + 120: d54c9020 tlbip ipas2e1isnxs, x0, x1 + 124: d54c9040 tlbip ripas2e1isnxs, x0, x1 + 128: d54c90a0 tlbip ipas2le1isnxs, x0, x1 + 12c: d54c90c0 tlbip ripas2le1isnxs, x0, x1 + 130: d54c9120 tlbip vae2osnxs, x0, x1 + 134: d54c91a0 tlbip vale2osnxs, x0, x1 + 138: d54c9220 tlbip rvae2isnxs, x0, x1 + 13c: d54c92a0 tlbip rvale2isnxs, x0, x1 + 140: d54c9320 tlbip vae2isnxs, x0, x1 + 144: d54c93a0 tlbip vale2isnxs, x0, x1 + 148: d54c9400 tlbip ipas2e1osnxs, x0, x1 + 14c: d54c9420 tlbip ipas2e1nxs, x0, x1 + 150: d54c9440 tlbip ripas2e1nxs, x0, x1 + 154: d54c9460 tlbip ripas2e1osnxs, x0, x1 + 158: d54c9480 tlbip ipas2le1osnxs, x0, x1 + 15c: d54c94a0 tlbip ipas2le1nxs, x0, x1 + 160: d54c94c0 tlbip ripas2le1nxs, x0, x1 + 164: d54c94e0 tlbip ripas2le1osnxs, x0, x1 + 168: d54c9520 tlbip rvae2osnxs, x0, x1 + 16c: d54c95a0 tlbip rvale2osnxs, x0, x1 + 170: d54c9620 tlbip rvae2nxs, x0, x1 + 174: d54c96a0 tlbip rvale2nxs, x0, x1 + 178: d54c9720 tlbip vae2nxs, x0, x1 + 17c: d54c97a0 tlbip vale2nxs, x0, x1 + 180: d54e8120 tlbip vae3os, x0, x1 + 184: d54e81a0 tlbip vale3os, x0, x1 + 188: d54e8220 tlbip rvae3is, x0, x1 + 18c: d54e82a0 tlbip rvale3is, x0, x1 + 190: d54e8320 tlbip vae3is, x0, x1 + 194: d54e83a0 tlbip vale3is, x0, x1 + 198: d54e8520 tlbip rvae3os, x0, x1 + 19c: d54e85a0 tlbip rvale3os, x0, x1 + 1a0: d54e8620 tlbip rvae3, x0, x1 + 1a4: d54e86a0 tlbip rvale3, x0, x1 + 1a8: d54e8720 tlbip vae3, x0, x1 + 1ac: d54e87a0 tlbip vale3, x0, x1 + 1b0: d54e9120 tlbip vae3osnxs, x0, x1 + 1b4: d54e91a0 tlbip vale3osnxs, x0, x1 + 1b8: d54e9220 tlbip rvae3isnxs, x0, x1 + 1bc: d54e92a0 tlbip rvale3isnxs, x0, x1 + 1c0: d54e9320 tlbip vae3isnxs, x0, x1 + 1c4: d54e93a0 tlbip vale3isnxs, x0, x1 + 1c8: d54e9520 tlbip rvae3osnxs, x0, x1 + 1cc: d54e95a0 tlbip rvale3osnxs, x0, x1 + 1d0: d54e9620 tlbip rvae3nxs, x0, x1 + 1d4: d54e96a0 tlbip rvale3nxs, x0, x1 + 1d8: d54e9720 tlbip vae3nxs, x0, x1 + 1dc: d54e97a0 tlbip vale3nxs, x0, x1 diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index 7e088a93c107b6152b2df1bb622516d09fce3839..dffc4a7bc392e138be2da4ab04bc6a33263bed74 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -1302,6 +1302,7 @@ aarch64_ext_sysins_op (const aarch64_operand *self ATTRIBUTE_UNUSED, case AARCH64_OPND_SYSREG_DC: sysins_ops = aarch64_sys_regs_dc; break; case AARCH64_OPND_SYSREG_IC: sysins_ops = aarch64_sys_regs_ic; break; case AARCH64_OPND_SYSREG_TLBI: sysins_ops = aarch64_sys_regs_tlbi; break; + case AARCH64_OPND_SYSREG_TLBIP: sysins_ops = aarch64_sys_regs_tlbi; break; case AARCH64_OPND_SYSREG_SR: sysins_ops = aarch64_sys_regs_sr; /* Let's remove op2 for rctx. Refer to comments in the definition of diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 2296e48dc3d98c30debc37c9646102453f56376c..2a78084aea12cfee4ef1681e5b89162e646c3ece 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -4586,6 +4586,7 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SYSREG_DC: case AARCH64_OPND_SYSREG_IC: case AARCH64_OPND_SYSREG_TLBI: + case AARCH64_OPND_SYSREG_TLBIP: case AARCH64_OPND_SYSREG_SR: snprintf (buf, size, "%s", style_reg (styler, opnd->sysins_op->name)); break; @@ -4840,152 +4841,102 @@ const aarch64_sys_ins_reg aarch64_sys_regs_at[] = const aarch64_sys_ins_reg aarch64_sys_regs_tlbi[] = { - { "vmalle1", CPENS(0,C8,C7,0), 0, AARCH64_NO_FEATURES }, - { "vae1", CPENS (0, C8, C7, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "aside1", CPENS (0, C8, C7, 2), F_HASXT, AARCH64_NO_FEATURES }, - { "vaae1", CPENS (0, C8, C7, 3), F_HASXT, AARCH64_NO_FEATURES }, - { "vmalle1is", CPENS(0,C8,C3,0), 0, AARCH64_NO_FEATURES }, - { "vae1is", CPENS (0, C8, C3, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "aside1is", CPENS (0, C8, C3, 2), F_HASXT, AARCH64_NO_FEATURES }, - { "vaae1is", CPENS (0, C8, C3, 3), F_HASXT, AARCH64_NO_FEATURES }, - { "ipas2e1is", CPENS (4, C8, C0, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "ipas2le1is",CPENS (4, C8, C0, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "ipas2e1", CPENS (4, C8, C4, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "ipas2le1", CPENS (4, C8, C4, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vae2", CPENS (4, C8, C7, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "vae2is", CPENS (4, C8, C3, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "vmalls12e1",CPENS(4,C8,C7,6), 0, AARCH64_NO_FEATURES }, - { "vmalls12e1is",CPENS(4,C8,C3,6), 0, AARCH64_NO_FEATURES }, - { "vae3", CPENS (6, C8, C7, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "vae3is", CPENS (6, C8, C3, 1), F_HASXT, AARCH64_NO_FEATURES }, - { "alle2", CPENS(4,C8,C7,0), 0, AARCH64_NO_FEATURES }, - { "alle2is", CPENS(4,C8,C3,0), 0, AARCH64_NO_FEATURES }, - { "alle1", CPENS(4,C8,C7,4), 0, AARCH64_NO_FEATURES }, - { "alle1is", CPENS(4,C8,C3,4), 0, AARCH64_NO_FEATURES }, - { "alle3", CPENS(6,C8,C7,0), 0, AARCH64_NO_FEATURES }, - { "alle3is", CPENS(6,C8,C3,0), 0, AARCH64_NO_FEATURES }, - { "vale1is", CPENS (0, C8, C3, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vale2is", CPENS (4, C8, C3, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vale3is", CPENS (6, C8, C3, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vaale1is", CPENS (0, C8, C3, 7), F_HASXT, AARCH64_NO_FEATURES }, - { "vale1", CPENS (0, C8, C7, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vale2", CPENS (4, C8, C7, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vale3", CPENS (6, C8, C7, 5), F_HASXT, AARCH64_NO_FEATURES }, - { "vaale1", CPENS (0, C8, C7, 7), F_HASXT, AARCH64_NO_FEATURES }, - - { "vmalle1os", CPENS (0, C8, C1, 0), F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vae1os", CPENS (0, C8, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "aside1os", CPENS (0, C8, C1, 2), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vaae1os", CPENS (0, C8, C1, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vale1os", CPENS (0, C8, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vaale1os", CPENS (0, C8, C1, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ipas2e1os", CPENS (4, C8, C4, 0), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ipas2le1os", CPENS (4, C8, C4, 4), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vae2os", CPENS (4, C8, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vale2os", CPENS (4, C8, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vmalls12e1os", CPENS (4, C8, C1, 6), F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vae3os", CPENS (6, C8, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "vale3os", CPENS (6, C8, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "alle2os", CPENS (4, C8, C1, 0), F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "alle1os", CPENS (4, C8, C1, 4), F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "alle3os", CPENS (6, C8, C1, 0), F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - - { "rvae1", CPENS (0, C8, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaae1", CPENS (0, C8, C6, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale1", CPENS (0, C8, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaale1", CPENS (0, C8, C6, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae1is", CPENS (0, C8, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaae1is", CPENS (0, C8, C2, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale1is", CPENS (0, C8, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaale1is", CPENS (0, C8, C2, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae1os", CPENS (0, C8, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaae1os", CPENS (0, C8, C5, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale1os", CPENS (0, C8, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvaale1os", CPENS (0, C8, C5, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2e1is", CPENS (4, C8, C0, 2), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2le1is",CPENS (4, C8, C0, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2e1", CPENS (4, C8, C4, 2), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2le1", CPENS (4, C8, C4, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2e1os", CPENS (4, C8, C4, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "ripas2le1os",CPENS (4, C8, C4, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae2", CPENS (4, C8, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale2", CPENS (4, C8, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae2is", CPENS (4, C8, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale2is", CPENS (4, C8, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae2os", CPENS (4, C8, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale2os", CPENS (4, C8, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae3", CPENS (6, C8, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale3", CPENS (6, C8, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae3is", CPENS (6, C8, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale3is", CPENS (6, C8, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvae3os", CPENS (6, C8, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rvale3os", CPENS (6, C8, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, - { "rpaos", CPENS (6, C8, C4, 3), F_HASXT, AARCH64_NO_FEATURES }, { "rpalos", CPENS (6, C8, C4, 7), F_HASXT, AARCH64_NO_FEATURES }, { "paallos", CPENS (6, C8, C1, 4), 0, AARCH64_NO_FEATURES }, { "paall", CPENS (6, C8, C7, 4), 0, AARCH64_NO_FEATURES }, - { "vae1osnxs", CPENS (0, C9, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vaae1osnxs", CPENS (0, C9, C1, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vale1osnxs", CPENS (0, C9, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vaale1osnxs", CPENS (0, C9, C1, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae1isnxs", CPENS (0, C9, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaae1isnxs", CPENS (0, C9, C2, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale1isnxs", CPENS (0, C9, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaale1isnxs", CPENS (0, C9, C2, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae1isnxs", CPENS (0, C9, C3, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vaae1isnxs", CPENS (0, C9, C3, 3), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale1isnxs", CPENS (0, C9, C3, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "vaale1isnxs", CPENS (0, C9, C3, 7), F_HASXT, AARCH64_FEATURE (XS) }, - { "rvae1osnxs", CPENS (0, C9, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaae1osnxs", CPENS (0, C9, C5, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale1osnxs", CPENS (0, C9, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaale1osnxs", CPENS (0, C9, C5, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae1nxs", CPENS (0, C9, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaae1nxs", CPENS (0, C9, C6, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale1nxs", CPENS (0, C9, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvaale1nxs", CPENS (0, C9, C6, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae1nxs", CPENS (0, C9, C7, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vaae1nxs", CPENS (0, C9, C7, 3), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale1nxs", CPENS (0, C9, C7, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "vaale1nxs", CPENS (0, C9, C7, 7), F_HASXT, AARCH64_FEATURE (XS) }, - { "ipas2e1isnxs", CPENS (4, C9, C0, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "ripas2e1isnxs", CPENS (4, C9, C0, 2), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ipas2le1isnxs", CPENS (4, C9, C0, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "ripas2le1isnxs", CPENS (4, C9, C0, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae2osnxs", CPENS (4, C9, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vale2osnxs", CPENS (4, C9, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae2isnxs", CPENS (4, C9, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale2isnxs", CPENS (4, C9, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae2isnxs", CPENS (4, C9, C3, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale2isnxs", CPENS (4, C9, C3, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "ipas2e1osnxs", CPENS (4, C9, C4, 0), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ipas2e1nxs", CPENS (4, C9, C4, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "ripas2e1nxs", CPENS (4, C9, C4, 2), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ripas2e1osnxs", CPENS (4, C9, C4, 3), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ipas2le1osnxs", CPENS (4, C9, C4, 4), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ipas2le1nxs", CPENS (4, C9, C4, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "ripas2le1nxs", CPENS (4, C9, C4, 6), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "ripas2le1osnxs", CPENS (4, C9, C4, 7), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae2osnxs", CPENS (4, C9, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale2osnxs", CPENS (4, C9, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae2nxs", CPENS (4, C9, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale2nxs", CPENS (4, C9, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae2nxs", CPENS (4, C9, C7, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale2nxs", CPENS (4, C9, C7, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "vae3osnxs", CPENS (6, C9, C1, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vale3osnxs", CPENS (6, C9, C1, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae3isnxs", CPENS (6, C9, C2, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale3isnxs", CPENS (6, C9, C2, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae3isnxs", CPENS (6, C9, C3, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale3isnxs", CPENS (6, C9, C3, 5), F_HASXT, AARCH64_FEATURE (XS) }, - { "rvae3osnxs", CPENS (6, C9, C5, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale3osnxs", CPENS (6, C9, C5, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvae3nxs", CPENS (6, C9, C6, 1), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "rvale3nxs", CPENS (6, C9, C6, 5), F_HASXT | F_ARCHEXT, AARCH64_FEATURE (XS) }, - { "vae3nxs", CPENS (6, C9, C7, 1), F_HASXT, AARCH64_FEATURE (XS) }, - { "vale3nxs", CPENS (6, C9, C7, 5), F_HASXT, AARCH64_FEATURE (XS) }, +#define TLBI_XS_OP(OP, CODE, FLAGS) \ + { OP, CODE, FLAGS, AARCH64_NO_FEATURES }, \ + { OP "nxs", CODE | CPENS (0, C9, 0, 0), FLAGS | F_ARCHEXT, AARCH64_FEATURE (XS) }, + + TLBI_XS_OP ( "vmalle1", CPENS (0, C8, C7, 0), 0) + TLBI_XS_OP ( "vae1", CPENS (0, C8, C7, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "aside1", CPENS (0, C8, C7, 2), F_HASXT ) + TLBI_XS_OP ( "vaae1", CPENS (0, C8, C7, 3), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vmalle1is", CPENS (0, C8, C3, 0), 0) + TLBI_XS_OP ( "vae1is", CPENS (0, C8, C3, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "aside1is", CPENS (0, C8, C3, 2), F_HASXT ) + TLBI_XS_OP ( "vaae1is", CPENS (0, C8, C3, 3), F_HASXT | F_REG_128) + TLBI_XS_OP ( "ipas2e1is", CPENS (4, C8, C0, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "ipas2le1is",CPENS (4, C8, C0, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "ipas2e1", CPENS (4, C8, C4, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "ipas2le1", CPENS (4, C8, C4, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vae2", CPENS (4, C8, C7, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vae2is", CPENS (4, C8, C3, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vmalls12e1",CPENS (4, C8, C7, 6), 0) + TLBI_XS_OP ( "vmalls12e1is",CPENS(4,C8, C3, 6), 0) + TLBI_XS_OP ( "vae3", CPENS (6, C8, C7, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vae3is", CPENS (6, C8, C3, 1), F_HASXT | F_REG_128) + TLBI_XS_OP ( "alle2", CPENS (4, C8, C7, 0), 0) + TLBI_XS_OP ( "alle2is", CPENS (4, C8, C3, 0), 0) + TLBI_XS_OP ( "alle1", CPENS (4, C8, C7, 4), 0) + TLBI_XS_OP ( "alle1is", CPENS (4, C8, C3, 4), 0) + TLBI_XS_OP ( "alle3", CPENS (6, C8, C7, 0), 0) + TLBI_XS_OP ( "alle3is", CPENS (6, C8, C3, 0), 0) + TLBI_XS_OP ( "vale1is", CPENS (0, C8, C3, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vale2is", CPENS (4, C8, C3, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vale3is", CPENS (6, C8, C3, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vaale1is", CPENS (0, C8, C3, 7), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vale1", CPENS (0, C8, C7, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vale2", CPENS (4, C8, C7, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vale3", CPENS (6, C8, C7, 5), F_HASXT | F_REG_128) + TLBI_XS_OP ( "vaale1", CPENS (0, C8, C7, 7), F_HASXT | F_REG_128) + +#undef TLBI_XS_OP +#define TLBI_XS_OP(OP, CODE, FLAGS) \ + { OP, CODE, FLAGS | F_ARCHEXT, AARCH64_FEATURE (V8_4A) }, \ + { OP "nxs", CODE | CPENS (0, C9, 0, 0), FLAGS | F_ARCHEXT, AARCH64_FEATURE (XS) }, + + TLBI_XS_OP ( "vmalle1os", CPENS (0, C8, C1, 0), 0 ) + TLBI_XS_OP ( "vae1os", CPENS (0, C8, C1, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "aside1os", CPENS (0, C8, C1, 2), F_HASXT ) + TLBI_XS_OP ( "vaae1os", CPENS (0, C8, C1, 3), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vale1os", CPENS (0, C8, C1, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vaale1os", CPENS (0, C8, C1, 7), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ipas2e1os", CPENS (4, C8, C4, 0), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ipas2le1os", CPENS (4, C8, C4, 4), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vae2os", CPENS (4, C8, C1, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vale2os", CPENS (4, C8, C1, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vmalls12e1os", CPENS (4, C8, C1, 6), 0 ) + TLBI_XS_OP ( "vae3os", CPENS (6, C8, C1, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "vale3os", CPENS (6, C8, C1, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "alle2os", CPENS (4, C8, C1, 0), 0 ) + TLBI_XS_OP ( "alle1os", CPENS (4, C8, C1, 4), 0 ) + TLBI_XS_OP ( "alle3os", CPENS (6, C8, C1, 0), 0 ) + + TLBI_XS_OP ( "rvae1", CPENS (0, C8, C6, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaae1", CPENS (0, C8, C6, 3), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale1", CPENS (0, C8, C6, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaale1", CPENS (0, C8, C6, 7), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae1is", CPENS (0, C8, C2, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaae1is", CPENS (0, C8, C2, 3), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale1is", CPENS (0, C8, C2, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaale1is", CPENS (0, C8, C2, 7), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae1os", CPENS (0, C8, C5, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaae1os", CPENS (0, C8, C5, 3), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale1os", CPENS (0, C8, C5, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvaale1os", CPENS (0, C8, C5, 7), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2e1is", CPENS (4, C8, C0, 2), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2le1is",CPENS (4, C8, C0, 6), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2e1", CPENS (4, C8, C4, 2), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2le1", CPENS (4, C8, C4, 6), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2e1os", CPENS (4, C8, C4, 3), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "ripas2le1os",CPENS (4, C8, C4, 7), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae2", CPENS (4, C8, C6, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale2", CPENS (4, C8, C6, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae2is", CPENS (4, C8, C2, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale2is", CPENS (4, C8, C2, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae2os", CPENS (4, C8, C5, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale2os", CPENS (4, C8, C5, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae3", CPENS (6, C8, C6, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale3", CPENS (6, C8, C6, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae3is", CPENS (6, C8, C2, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale3is", CPENS (6, C8, C2, 5), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvae3os", CPENS (6, C8, C5, 1), F_HASXT | F_REG_128 ) + TLBI_XS_OP ( "rvale3os", CPENS (6, C8, C5, 5), F_HASXT | F_REG_128 ) + +#undef TLBI_XS_OP { 0, CPENS(0,0,0,0), 0, AARCH64_NO_FEATURES } };