From patchwork Tue Sep 9 11:12:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119830 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 590A13858C54 for ; Tue, 9 Sep 2025 11:14:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 590A13858C54 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=gGwO/hmo; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=gGwO/hmo X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::3]) by sourceware.org (Postfix) with ESMTPS id 472273858C83 for ; Tue, 9 Sep 2025 11:13:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 472273858C83 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 472273858C83 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::3 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416404; cv=pass; b=aP0UNRxkyN1LCjHL7rPXXwXTbCC76gJLkykofRrtp4LBuU/TXw1oF5iF31rs4EHrywXHybV63Ri+fAly44UMmKUcUiWCYhXze8iGRyXf60gCotkaern+qBGLf/A2dIWox70jM2WghTTUE66rvn5yGBzB3dUmFv79+dq5sYDJbx4= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416404; c=relaxed/simple; bh=oxzGRCbPD5CNf8u/eLldseXVW+MB4iXHucnutvYF0nM=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=UZUyX1s0qDQMKdoh0ZQX4zDcI6yps2mvpoHydOdj8HDLb06O7jAttR0+6y1/msNGsnwrQwubXi5ZTRuImZEuM+x48iUDAEQzAIrVEYjj9eoe03r10dHz0DyvWl2k3xu68VNtqqomaA3Pnh76SX/JvKaAiWGIkwZuc6OFx6vkiGM= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 472273858C83 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NFaUNHvqg2v8DXOxPt1fJgE10PQ8TJ5r+0HGf8i55QMNCj0AodEKaGSqCTJsnZErr9YXVuc/A45Es6O9R51bCoTdcQ/MViz4+tCrFsS5etg8dZSxR6NPWrSz3IjUVwZHrbdylcKx8Vt0dOxGBaB+GVgPS5Rz5uS+HvwddOYrCHlt0+4/7bMT/qT2p+lmRrYCbFMDzLHvaJqKQdDos/prl47hTDh3uC7lovxlDCQrLBq5BZS8hUoYb5hCmd4J1kqwlrlGF0wzYVs3/gdVvFyeZJFGE+QqF9RkntYnYq6mhzmGjttz8y4DEwhKbg4QfZU9sWd2EaXs0D0McVNIwIIZzQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=JhcQQ1EP1DCutWY3e2EZMBx29xpEsHLcXYh1KA25SpE=; b=fMqjeXucMCPcluAbMF1bqoNb9ivE9+UWpRct7fKroMtRz7OaIcypn591Y0YjtKsAopRqtI7FFxH6pdkyZciBgD2eKFJo3OaWzd9UD1hXSApD2pZ2jyMkfeNdhxwyiW+ruGyS868snajIJnoklr1ZZbdRpZtTzzZpRlEpvHjgwFanKF36EcfSf5g7rLS2MI70iR28gvEYz2oi1hWzpzwz2wUtUV3nB6awoj0By/SL9qFf6Dm/ewg6okOVKg5N6qC4n1Am/Yh0pjZPlr4KTnqgICpRD8ZE6AAdnyTPQnEm4xSC6LDNXmWrMfA9f4VgTbI+/K6+jWvGS7MbdwVg9SiN3w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JhcQQ1EP1DCutWY3e2EZMBx29xpEsHLcXYh1KA25SpE=; b=gGwO/hmoNjATV305G/iGo0uSt3RiK1VowWknvdRwvsOWfAt9jMvcFGnr+Iw4vLybXprCdxxwLYy+jCNcB5JZHwMeYXIX4DyjKiUExiGHPf/zWBG8vfkcq6crO6yT49KXYZydALggfekUP49GMKTJ4tt2qBXW2QnFXvaz4eDXdjg= Received: from DB6PR0301CA0068.eurprd03.prod.outlook.com (2603:10a6:6:30::15) by DU0PR08MB9875.eurprd08.prod.outlook.com (2603:10a6:10:423::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:13:14 +0000 Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com (2603:10a6:6:30:cafe::9) by DB6PR0301CA0068.outlook.office365.com (2603:10a6:6:30::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.22 via Frontend Transport; Tue, 9 Sep 2025 11:13:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:13:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XPL8ox8Vv8aWJk7W8pNjlFJOpvAuy7k6lXalgHSpeRmpwuf3CY5L9csrrvXVt00ZZFUC6q4U/zSc7Q1F9g1gYoabh3b/CUl4fVH4/CA9CZI2tfynWoAO6NryrogVocPvrxd7KvVUAW9qbHnZ5VE4GeBfrwp+d+Y/L5wz5LhRR4Ba8aBBLqY+ruRNF4JhtDxDAngTvUXeN+LVhIP4sWNwsv3eCT6z50p8ojPffmOrxZiJshDA8W8Lmn33MquIbLYczfjMxoFhGiOutgSjwFUpm4wjXBYJmKboyD3nrNW0mLMGRNMvsl0+BK/gG+8tomBYHvpbVKdTl7mxG8gC1kFEDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=JhcQQ1EP1DCutWY3e2EZMBx29xpEsHLcXYh1KA25SpE=; b=Tvp5LlJi9H0PNvN1z3wr2OrRlUkkKWCFpT6JR/57gMy3bafAr5X1kZOUfvvGET2cjOt9uefZ+rRmwf3EF31t3tF9GIPN4fdcJTU3fix/HJwncNb6hFb9X/qkyyLuc995E4fLqB71yKLDDEPV+Aug8HEzzTOnRHI18Excc1zqp2+DgAqzyilOF3RVUG7uTFA/9kkTimPyJzDLuH61eLXktzSMVtMTGUYLmMUrzFGjoWmyQ1iDuiIbTLVMxj4VVjwUIxolLpdF9iODSUrjKU6WH+OKkWVaip+spjhIf3M8UdUGOIQOCmL4W2QmhXK9SsoA+PKgDfEWMdlNKJLmr1zRAA== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JhcQQ1EP1DCutWY3e2EZMBx29xpEsHLcXYh1KA25SpE=; b=gGwO/hmoNjATV305G/iGo0uSt3RiK1VowWknvdRwvsOWfAt9jMvcFGnr+Iw4vLybXprCdxxwLYy+jCNcB5JZHwMeYXIX4DyjKiUExiGHPf/zWBG8vfkcq6crO6yT49KXYZydALggfekUP49GMKTJ4tt2qBXW2QnFXvaz4eDXdjg= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by PAWPR08MB10133.eurprd08.prod.outlook.com (2603:10a6:102:35f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:12:36 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:12:36 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 1/8] atomic: Use builtin atomics with USE_ATOMIC_COMPILER_BUILTINS Thread-Topic: [PATCH 1/8] atomic: Use builtin atomics with USE_ATOMIC_COMPILER_BUILTINS Thread-Index: AQHcIXp3OqzhoHsV+k2H+xUQFIqSOg== Date: Tue, 9 Sep 2025 11:12:36 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|PAWPR08MB10133:EE_|DU2PEPF00028D0F:EE_|DU0PR08MB9875:EE_ X-MS-Office365-Filtering-Correlation-Id: 1cffb29a-4c5c-449e-da63-08ddef91ded3 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|1800799024|376014|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?v8tyV81YyJFglvvrL?= =?iso-8859-1?q?G3BELbOZzxeqeQfuUNLAULr+OiisGOyj6vbzA1VByyvC22pDDp5guV6PVTCE?= =?iso-8859-1?q?QqU1xVUY93UCrGXMjrfQscSft0k94zNUuob/OQNXRLeo7Pq4f6rcdm4wD2kr?= =?iso-8859-1?q?GDhpPuMEOBRUpBZi1oAkvcN8N/VuFVxiW8lv3p8cI1sEkfMIQShwkarCD8mj?= =?iso-8859-1?q?SGpv89bebaJeMyBTuVLI7n6kQ6K+RakLzTUlLiBSUbZ0o6UbteSaeOXo1lWy?= =?iso-8859-1?q?TkxpHZ8Wi153aNGDAcRhjwVuCr2pLUnLaffH3cctOaybXyn0XyY6rDxy0s/3?= =?iso-8859-1?q?gVrt5N5ogbXfS0meY0xT1zG6QpKpTf2z7N1uLk2SIsB3dPtNC726eIdU4ADm?= =?iso-8859-1?q?T/KO0faj7sHOITcBloCkxbwWoP9iZIkkeQWdAF2gEBMGfVnoLRmvde0jrfc2?= =?iso-8859-1?q?4RHI4+zrjfSLhAlM7QNGHhs1NTHet/U6fZrBbN8foSzqkEDxAcGCl5UVXYR3?= =?iso-8859-1?q?chbJQx2NOObA+cFFgcKm4LhmTfFz3DJgiT/QKOxqBBSYI9OtvuPl4FcMPsYn?= =?iso-8859-1?q?k6qFykyiaAdtye/T6s/7Qt6hkOkUGKMASmABnfkzCy5gPmIeM54yy9rvmSQB?= =?iso-8859-1?q?zJTlzwskspjScfXB/1J4GnNQBbt1VRy4/5yVLOHmonIgCZyAPKkAelsVSWNr?= =?iso-8859-1?q?RENCJJ+ozgOeJEkYmcimLklFrMCUBH1lAtTaDrhpuHZ5T6GNZnWAnJOxXKCI?= =?iso-8859-1?q?2lExGesRW0TEe26G1OpIMOAF1lUT+kENRSDLSTyCg54xFzVlFDFJChXiKVvK?= =?iso-8859-1?q?gaRdTcJrlM7X1NKmTGT3QS/B8EWiZkW0IOFhZY597gMOXVEtDulvXKRTrnpa?= =?iso-8859-1?q?4Td20Zqqs7uYi82X5ljwSXcTmPutlpvqzWUYsZuwjxbU+0yOSZXatZYMZd0n?= =?iso-8859-1?q?N4O6zqN0efqDWSY5VsKLph7kpBdt4L08T7y0F4OviREGTPsx0gUgVF37QkVM?= =?iso-8859-1?q?Qw6EubeYYitaK34VpAyIPoUNm21SDNlkXh/WCWN3bgI0EoMP/FsyavWlPlO5?= =?iso-8859-1?q?ZRrRk1jYAXSU1VmlT6Gr3IlWnVH5BitcwRIXX7iCxmuTYu4T8k3B+tSmS1oW?= =?iso-8859-1?q?E71CxMK9oPGKlsx9/+N4Rdnj5KOGrC9u7iJ60Z2JiL9dLDEKfJ5Rvntvuo0x?= =?iso-8859-1?q?p+8E6SxbnFjz0q5k/XBGG0w6r3Om4eb5J3OVnp24ldc2NRzef78JsxO5w8YO?= =?iso-8859-1?q?9pwB7AJXnh2SkVZzUS5BN8s3vJZj7crCkqbk8zc0n7y2g6ZoRubMja0FnCFI?= =?iso-8859-1?q?2R4Kzr4EPGLTrq2u96/YIRqcVtFzRIIN8SpmZ3UsRBx2pk9Z0b90Yt5aqBzv?= =?iso-8859-1?q?ryKDnigPdnKBQLO8WWcErO2rB82sYit8po+9cUzu3jREv1LUP2YYxwAAhpax?= =?iso-8859-1?q?flpv0eVt0kMrkC1IuKh2ycOi1OY+CZ7VKQHhBPBXvr7EffHU7OnamdjbmsG9?= =?iso-8859-1?q?gZ7O4QivnEU/dlKxgPH1ZjUrk8Mc/iR+TtcoqdCKD2s/zA5izkexqp+5dA?= =?iso-8859-1?q?=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10133 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D0F.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c09bbe2a-cb8c-4051-f871-08ddef91c85a X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|35042699022|1800799024|14060799003|36860700013; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?H6pAYMkV8xB/QhDKGJ8xStiS8M?= =?iso-8859-1?q?4VVmqUuA6fm1I3G9cQiZqbrBhE8JFEfoKPEyAFUIQBfYINF6+ynb5EYcvbDS?= =?iso-8859-1?q?azBNJnZZ3TiTuOJF+ML2WTbb+7iDibej0cWTCQ4ZKoiEGekoUq4CZSTo8LM3?= =?iso-8859-1?q?zH6Qgl2FSTrbCnaraUHtLR50WThWXkNPi8OJWCNJApL7KO4VeaAlXUnK2lu3?= =?iso-8859-1?q?8lf9TzjUpHKqIBJhiSn3zXdzFNEiOGjlDZwSE8dyk7hT1kStyB9ztP/2rgJT?= =?iso-8859-1?q?0TYJyM3l7RiYNa2M4RhhIdBTawiqxNOpEeypozWF1YGbIv+w+7okMcjHepSH?= =?iso-8859-1?q?fjKpFSidh0tdHu5mXVyVEbKUX8zFn8I7wuYA9gpFuxgiNCURDa5u7EaIA2hg?= =?iso-8859-1?q?s/KXxTy+AAouNFu92ltrOH0Pyejc1Nb4rynO7TimtkDZ+241UJcg+0gSpoUk?= =?iso-8859-1?q?MuFMfm+InBeI9msdJNW3ktQR4G1kp9BHqR55H79mLzYsN9ELa3veQ4DKYjmh?= =?iso-8859-1?q?tpJK0XYheBQt8Zx5E/snbIYx+KBvn806/4QQBV/UPHjqpO/LUnvj+++fBRAb?= =?iso-8859-1?q?2e1Pjc/RezUgL8/LKr1KJ8TGQFi/+WjRYODu46S/rAWAqM3Gh2VMxZpNUo8H?= =?iso-8859-1?q?aG3ANvCQR4HRRFjuE+bfsu2v/d9Q8xkJo2aG6QzbN0bsg+9gqkpRINelowf0?= =?iso-8859-1?q?qaVuv6W2Knl8bMg2UK6ZP4a0uxTYGLHBdcVuzcUXlb0TmT46efJgGcPn0pWh?= =?iso-8859-1?q?+wYF1pU0SAHua97c7L3eRnBn/ImsMOGKSHAuEuj9eimrWCmihYe9YQoglXjG?= =?iso-8859-1?q?aVE2SeD120Cx9ULQliVGXQ+L0Kw49q8k5n+wDuotMdUzA2lXLMAJKwheQfLT?= =?iso-8859-1?q?1Z3wNYpiZeVv4ckEGt9QHAuPlg+ab9LAAUDwhXBTpAeM01F2Ppkb1jB/vVLX?= =?iso-8859-1?q?tUGTAqVQIMSOBMkok8g4uXCjyPagF4b7Zoti9vRzJAoe4IWQNeOirXnCRj46?= =?iso-8859-1?q?OjgMH2gWr+dA8UgcdIT36QjsIwNdwKbAlyTxPts/Qgydaga0Lm1Lb1UHJaIA?= =?iso-8859-1?q?bMPIqpzPp6WvEOZ8uGxZJhkv3OeZV6lf/mcGPoqghOFNVUIeBbXaoT91D8tb?= =?iso-8859-1?q?CC7t52MO+KB4an0jbvqJZ6RC/SmKsxlUIjvXXRL8A9ayEg6qwnPnzjDLqp36?= =?iso-8859-1?q?LS1ZaCxTtUMTL6ZjMVNGa8NvoS6VPaeGE9W5jLIUPaZYk9LkGbkV7Y3Tu0Uu?= =?iso-8859-1?q?ujdMLhaB/o6/Dbpl7LLCXRSR30NTikaQaIDF/JMy/ZTtGr7t7uENm+ItOk5C?= =?iso-8859-1?q?ZwYHgzgOJxkEhL5MQjPaFI0N6N+JUjc6JGalyCpx5Ghlaks2pd/wboAQ3k7u?= =?iso-8859-1?q?IzLlxad2VunaKI1a4faHDJ1kIkodkwfS72/qUnI8JaYAEJKsJlTLFZBzWESg?= =?iso-8859-1?q?RoATOGQ7cinPadfdahO1gDepHPCvMkst+btmaO6CMbvXQWYy9ia8TZ1FGvMW?= =?iso-8859-1?q?KzDoDe0lZSIkZ8/51LF8U/cCulkk4MYacDikZbtA5FzXjhrL/lySbxq4EskC?= =?iso-8859-1?q?R9/tOYjK11?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(35042699022)(1800799024)(14060799003)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:13:14.3734 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1cffb29a-4c5c-449e-da63-08ddef91ded3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D0F.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9875 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Use builtin atomics for atomic_compare_and_exchange_* and atomic_exchange_and_add if USE_ATOMIC_COMPILER_BUILTINS is enabled. This allows removing target atomic-machine.h headers. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella > diff --git a/include/atomic.h b/include/atomic.h index 16b36d80f186cab8e2bede3a7d7e79907d3344f1..98ba808ee9e3bdd30a81d62bacfdeb8333c061d9 100644 --- a/include/atomic.h +++ b/include/atomic.h @@ -82,6 +82,36 @@ __atg2_result; \ }) +#if USE_ATOMIC_COMPILER_BUILTINS + +# undef atomic_compare_and_exchange_val_acq +# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ + ({ \ + __typeof (*(mem)) __atg3_old = (oldval); \ + atomic_compare_exchange_acquire (mem, (void*)&__atg3_old, newval); \ + __atg3_old; \ + }) + +# undef atomic_compare_and_exchange_val_rel +# define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \ + ({ \ + __typeof (*(mem)) __atg3_old = (oldval); \ + atomic_compare_exchange_release (mem, (void*)&__atg3_old, newval); \ + __atg3_old; \ + }) + +# undef atomic_compare_and_exchange_bool_acq +# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ + ({ \ + __typeof (*(mem)) __atg3_old = (oldval); \ + !atomic_compare_exchange_acquire (mem, (void*)&__atg3_old, newval); \ + }) + +# undef atomic_exchange_and_add +# define atomic_exchange_and_add(mem, val) atomic_fetch_add_relaxed(mem,val) + +#endif + /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. Return the old *MEM value. */ @@ -603,6 +633,19 @@ void __atomic_link_error (void); __atomic_compare_exchange_n ((mem), (expected), (desired), 1, \ __ATOMIC_RELEASE, __ATOMIC_RELAXED); }) +# define atomic_compare_exchange_relaxed(mem, expected, desired) \ + ({ __atomic_check_size((mem)); \ + __atomic_compare_exchange_n ((mem), (expected), (desired), 0, \ + __ATOMIC_RELAXED, __ATOMIC_RELAXED); }) +# define atomic_compare_exchange_acquire(mem, expected, desired) \ + ({ __atomic_check_size((mem)); \ + __atomic_compare_exchange_n ((mem), (expected), (desired), 0, \ + __ATOMIC_ACQUIRE, __ATOMIC_RELAXED); }) +# define atomic_compare_exchange_release(mem, expected, desired) \ + ({ __atomic_check_size((mem)); \ + __atomic_compare_exchange_n ((mem), (expected), (desired), 0, \ + __ATOMIC_RELEASE, __ATOMIC_RELAXED); }) + # define atomic_exchange_relaxed(mem, desired) \ ({ __atomic_check_size((mem)); \ __atomic_exchange_n ((mem), (desired), __ATOMIC_RELAXED); }) From patchwork Tue Sep 9 11:14:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119832 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8A89F3858C53 for ; Tue, 9 Sep 2025 11:16:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8A89F3858C53 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kmXX7411; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kmXX7411 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::6]) by sourceware.org (Postfix) with ESMTPS id 4AF4D3858D35 for ; Tue, 9 Sep 2025 11:15:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4AF4D3858D35 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 4AF4D3858D35 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::6 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416511; cv=pass; b=KDH7AkvRVPDsbnw+1/89yExR6wyt0311iHimDqQ/ZGceUhlHyX+YavlM3WPt3DQJxoentEggm0G6loJIkbcV3CWJillOR+V8vIga7AkCFQgXyVyeVCV6NmINyvItInj1mJRhzTTCr2KlmBM7hsxgm+niCgHasr4fRAIWS+yXNHo= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416511; c=relaxed/simple; bh=Tq+tasBqqfciMUmz8+mSaCC5R6cuLPNRsJ8Rz+9LlCg=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Ses2W5PAAhxs4imnhy0soGJWajBPaw1TApkEDOUCCnHwf2424ynCA1kM+mV6tMKnUluZMarcstP9Ush/fZgk9yRaszHwRZPq8XuIXvKN1eInOdjMG2Q6xzg9QVxKW0UUnjUhoVzdIHg9yGXTCnW3HpHWGnlFU5RSEMlJNtiV6yI= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4AF4D3858D35 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=fsoxjdebi5pSJSP4hIH6jOKEGTgRTNIwSRY1a43W/V9XLouwXzQTdnAWRJnEc6dYB0s4ldwuj2gg3kTK2bvfpV5JbrrwJJgv2cRK60P8LeA3nGDpn1jj4/rgCwSowhvJvsQF8Lq3bxsuhzm2GD0pE6bE+kbF/hYi1JjMP6eZqOgxs/p44jI2fRALRIK6oj50YHdk5FbOt5HN36ISfbU7euJ7JUU3465yAA+yZzFz4HOLKrpumEZB6sl+nk5y1j304Lbmz71r9UID6KJW1Lev7/Dq912sQvEi0rZof4cwZ8OK1bF4CsOTS2LqNQ4Ys0YqK51db4S7VVsj6PB7E7slww== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=B+oByWCwKB+ON6T4ofMWLxyj0BgbPJHxfxNVTwAGoDE=; b=MBuQFSyULy6mWgjx14KD1tT5BHEsifmrAvYUygrkbM1mmbxH3L7Q+96eDz2LGVn8aZ4yRbpOIU4FknQiSAGu4kNcEJD5kGRv5gz2wD8L+95Fp5Hwxup2qzBQzK7SEg4hGCPr/R3angpE83FNXvQgfe31xzXI7EYJ7sO1t9UXKFbW3b6vqr2yKMTq/NLwROEwbym7qX3Ku4p7yq8HYe6WjGG8vxPWhQwz4qnG4A+GT0qn/YSHAE+K+PYWhrVjEvucfonWSKPtYaoaZXFoIoGnh9keFN2IJoPEP1C1lQacdiA08boQe14+3uBohTfZP/qjA9xMcZ+gA40loOttU3ho8w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B+oByWCwKB+ON6T4ofMWLxyj0BgbPJHxfxNVTwAGoDE=; b=kmXX74117EDnA030yAEDAru6rm6lpmTSzq2LJifmxI0CF7UIHS54YtDm8strNUIXMcZoWazo/V0ONIOL8x4GbuH7X5YhtFPuD8YwXiaWPdsdJNzafYB67sLolAoBIdxQcTsKcMZLGUQYCtrvM7Xi+O1ley6uK6lsID7Fyn4SlTE= Received: from DUZPR01CA0215.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b4::9) by AS4PR08MB8168.eurprd08.prod.outlook.com (2603:10a6:20b:58f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:15:07 +0000 Received: from DU6PEPF0000A7E1.eurprd02.prod.outlook.com (2603:10a6:10:4b4:cafe::e4) by DUZPR01CA0215.outlook.office365.com (2603:10a6:10:4b4::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.15 via Frontend Transport; Tue, 9 Sep 2025 11:15:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000A7E1.mail.protection.outlook.com (10.167.8.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:15:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ION9N4abR6+RvzaGAhNJ+PNmfiBBXt4pQO+jXaCM3hcNLr6APwuyWKGwOQtGAXukWEusxhzdzAEhf8qc3tBWUjFqGMfuIC68/cJf6VNAQy1O92+3xPnJKSbDiUsd+UsvVgIoNLio8ArLaze6D+uONKku2qdd1VOedmoPrnK8LnLrSGGdX5oshuXQg6VCW1taYa0nmLQBK81iYpG3okK/Pm5wuCuBygrw+zCmJzG0KU7UTcrG2magf2g8df3wxq4VfjRNBhHXU+cjDv2nWJihwEGJEynsHRS0+3jpWiraryYV5aQJTGipQ7Zpldr4uum/il22vOEyXhTm1koLOYECYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=B+oByWCwKB+ON6T4ofMWLxyj0BgbPJHxfxNVTwAGoDE=; b=u0jjBgtcecMkV86C7Fu9KI+Xi5K8qG4u1ZNtHjdiDTzldvow5MEumUV/OpQTZrx4409sLUHd1AAtDRjMEmsDPxj093zd/1TOAsShwvr8hboegC/zBFS2ziJ7CLCfOfDzETF971fPk8aAYELgCtATCQPdeZKSzAbahuqVd2nr+KbimLEWo3s2kWP5zhiqQdvAbc//Wh1jjWGYcY+OKrX4+zvGPZBuS/2bOyADF0vJ781lS9dmf3BV8gg4BVHi/nqbdpc1hRVlqC2stfayeJl8e1+1CN5vjjxmtZ3XgYjItML3HxfAByZPs4VcKdsdw/8xH1KTZU+wGOPFRBCdhXcIqQ== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B+oByWCwKB+ON6T4ofMWLxyj0BgbPJHxfxNVTwAGoDE=; b=kmXX74117EDnA030yAEDAru6rm6lpmTSzq2LJifmxI0CF7UIHS54YtDm8strNUIXMcZoWazo/V0ONIOL8x4GbuH7X5YhtFPuD8YwXiaWPdsdJNzafYB67sLolAoBIdxQcTsKcMZLGUQYCtrvM7Xi+O1ley6uK6lsID7Fyn4SlTE= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by PAWPR08MB10133.eurprd08.prod.outlook.com (2603:10a6:102:35f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:14:30 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:14:30 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 2/8] atomic: Switch m68k to builtin atomics Thread-Topic: [PATCH 2/8] atomic: Switch m68k to builtin atomics Thread-Index: AQHcIXq0RnR10xCKnUy3q0BQoxD8nw== Date: Tue, 9 Sep 2025 11:14:30 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|PAWPR08MB10133:EE_|DU6PEPF0000A7E1:EE_|AS4PR08MB8168:EE_ X-MS-Office365-Filtering-Correlation-Id: fec5d7e7-0b4a-4b39-36c6-08ddef922117 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|1800799024|376014|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?o7FvtlqBYIVVKU+F1?= =?iso-8859-1?q?bFxVrHXw1+AOGvixZCY8PqoKBsV/mExMkPCWCy5Y0plAQBBYkjtsM1115U5L?= =?iso-8859-1?q?Xa/QIzg+nHSPBaDZItcCGzbBEL+GEVgoLXsm43ZpXgYuHE0fldEhl1DehrwI?= =?iso-8859-1?q?CFCu3Lp7ud1/1MlixEhUqptGBgMsy3jYaKjMkfXlDWyoM1A/Skm102CwhHuM?= =?iso-8859-1?q?/JmwIDlHzo3Z1Wco/7YXZNfU2DkB1li9inj/BwWiD5BSF18No1W8uulVJdTd?= =?iso-8859-1?q?032Lj/W6dTb+dY9vkW+Hk4UVEljDWxC/+j6w2hT0oUlH0jPGnwCsbP5xyanL?= =?iso-8859-1?q?vw+/lI21EXAT1W6bKM4y76k6TIFmLAQt/nXLdP1F5/6DXCX+L/7BURGEhfkg?= =?iso-8859-1?q?7kPBXn34uUPCJHmQaS7/mQdZmpnvGhqf7WKh5L+M8VpLJV80yRhQBjdEtGtN?= =?iso-8859-1?q?i4S9vAWfOeMi9NhYid6XDqUC3MQFz63rsFBTo2bCjVeeGS3UQVb6skM6qQKb?= =?iso-8859-1?q?gpm0Gex6qIR9BffJYW24Gr159VFu0sWGoBNa5+DsDZSVhlSXoOTz7oOqysNG?= =?iso-8859-1?q?8AKsb47JlHOG6ecCjesgh/NBWmNc9KWJVyBS8IULUAC3q2dlDX1bAinIXCRE?= =?iso-8859-1?q?EiSElQtw+k0LyWTjokAIcSKPLZBknMUO1kviBDxLvvl35rEWMSic7uWrvqP6?= =?iso-8859-1?q?EXeVZEZJsrIEoMC+lJV9ytvkNUNigL1v6i03nmKS/wErYxirtTv7bpd81VYF?= =?iso-8859-1?q?x9z3zTHLym1q/KSj4ZROYTLHXKmlO4fvKrRDyeIo6IHOsY1FYi+L2zlNTk7t?= =?iso-8859-1?q?RsXJp36FIXg0i5+17a6zP+VG15ShvcY+0DEcTZ0DLJkfsWhBNRas2E4tK56x?= =?iso-8859-1?q?SMc4x8GTNNiwD/Yrbg3Kmf/vLZ7rqZmjOYlxXl9+Eoeme/a1f/fDzBEl3xFq?= =?iso-8859-1?q?GY80sUKhUiFYSY5G0b9YdbKJhYMna87tk0wkRKkA83YXq9Evj9GOX/+1m/2D?= =?iso-8859-1?q?4l3G6wmpmNMA9Whohb9uZYzZWXPXNyawDwbSyRdlhN69XWJnLp9lHeZuevqZ?= =?iso-8859-1?q?B41KFvKLX7B2wH+7aTTx5H2Arq2s/JHnVGOCpBRQzvQsT2l2ZlzUX9IoFReM?= =?iso-8859-1?q?tBmZlbQ4x/dtol7A96EikichsjsVkvkn4oiYAyMQXy/kSJaPYRT5B3xgWxLr?= =?iso-8859-1?q?6I4y0gzIdDQ9aXWkJ7o6qI1NtVXCAJ2Zc/fF5s7biBhmiMUPhiVOMULjunhU?= =?iso-8859-1?q?2iaFHgS8bsSodpGK40d0uZxlbxPohaphymPtK8hFKYbc61KEhczlBCrJVYHl?= =?iso-8859-1?q?h2cWYBFllNBSWpvLoU6A7FkcV3vBX8Jimj9/zdQ1ETkfTdfQeDv0SOQ7kS3q?= =?iso-8859-1?q?p0cs8MGlwizvFjRqjD0GwA26p5wdNdEvSO6T949ZkQPmyaMieKtr/vlYYWNo?= =?iso-8859-1?q?f9aMBEc6+8oxbu7UIys0B8lZeHQ29Y84IGvQ3fWrp8rFeuciKvdgnP0cZ2ZL?= =?iso-8859-1?q?8a9FrvKjufvYhXJUxWScKNBufd6BOwrHETqIA=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10133 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d7273030-936b-49a8-07fc-08ddef920c3b X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|14060799003|35042699022|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?UNBLX43Uu7jP5fbQ3XBXAcd+76?= =?iso-8859-1?q?e+SDt8VNNaxxjs+FDCv8LrzAkB8mKzNnLE39qy7eF9wMbTO52Q1KPyhaj2qP?= =?iso-8859-1?q?HeSbJuotVY1LHBG4PXHskynF36vuw7Pze5mbZCkenMSVHzdWr7Bav7G3sJeW?= =?iso-8859-1?q?8s1/9XNm1CMzQELdtzwwMzzBTZF+8DVQkltDNeYWskSx08+n55qdFZVfuWnl?= =?iso-8859-1?q?bjAkFfxeKOTD0FPff1/NP3O7+DT7Eo3+JIpQDOLtMDHZuHp9u2VZfeMzf9k8?= =?iso-8859-1?q?eY3sTtGBd0zciEfMN71dv6i6SG//ySOBLi8b8oyst4E8j+BbfiIKX5zUwpYz?= =?iso-8859-1?q?I/ohxbNmKH4vm6m5VJAifmL1Lnt6xT1XvtcNA+ThuOuVT1QbZjyIcx50Ex6k?= =?iso-8859-1?q?rFo0ISaC8Mocsgc7Njz6F6jFSc1rX37wEYRAgwskrPZLIndCjVKfSIZA4+PN?= =?iso-8859-1?q?ryZQuj5WpWm6Gq/m8bacy652GG6V4c6II0Z+ZNeWCpqKxChOKTxsB5trceLL?= =?iso-8859-1?q?+56oLOOG3DOirpno4nHbckekGDrgR//80/fNGYsoDPUWorfZJoQZ+PO/ZGOz?= =?iso-8859-1?q?U/kUe3CnjV9DafMBsqD/m81A4BZdjjQ74i99QdRVYeNmuYkUsyIVsTqeCnoW?= =?iso-8859-1?q?rnWYa1d4kZf9MIho/chLFwBkuDIeFAV2CvQYgvahaAOIa3nrrklZq3ASFpy2?= =?iso-8859-1?q?jEpNrkMGBX/TqGuR9qsxPz2rqgUCPeizR/c8hXXvqI+1TX9DeuEVsA48MDTQ?= =?iso-8859-1?q?RTpbg6nTN89u3Tgpt4zwkNSn+d7xnww2z1Q5T/fsDyOwKH/4TgBmg4hZboTj?= =?iso-8859-1?q?zMStwuBPEzdT7RKNWqCyZcANoJMV5f/MtDWLyKWPx/KPM8WDXoOB6EpfH2gt?= =?iso-8859-1?q?SnsY2Egd13zbtu3OCwwKSS/hqiv0Qya/8V6VNd2tCMBkAKDINGfuttjzSsUO?= =?iso-8859-1?q?H+jn9Hv2ohJQ+SzADUpWyD/q56qcJQmzyUK2rriWowD4aMtIr8X/pz7ieYwe?= =?iso-8859-1?q?2SOLj+0vRnIQfGXMGkMG1CJC3JYgrU8eI2Q+ZmKtKmpzZrdhZ04YReb3dq2g?= =?iso-8859-1?q?qKjkY1DGiOU+rjgCPbb+HAI7TIg964xNw+CTLGjAKtC0MEKbnIqB854Xaecd?= =?iso-8859-1?q?9q/2O3XTeHIcadSUwyyrLyV6eyeQjXu/FDZ0tkWOHSBaZOupVr/+4SdUchyh?= =?iso-8859-1?q?P4hGwYLYX+4LrDMRPNyEVPekOWlGgnSKA5y4UzC4Q1cswOw0vxqHwqZ53Mme?= =?iso-8859-1?q?hlSDbVJGiYqJiZnNefV7I3I6lW2XXi8u+hVl4oXN/g1QDje4YzFEOvHrlE0v?= =?iso-8859-1?q?UBIwOthJEfW6XatldODI21MwPizthRCv7R6aD4TkXSaA3ji+um6/ZLrnM6I3?= =?iso-8859-1?q?TOPGQVjPtQngCKCYAtZ3AjdYqloLhCaDGJEUX6BoPsxndyLySUItTWUOBsC4?= =?iso-8859-1?q?cgiEuAHTz/YueP+2Cdpa6YYnnSZ10qOXCQsW7TrTnj1u228YzUG65Tl1aqEw?= =?iso-8859-1?q?MJ1a9++GhrtQlp8Eq7poMgzwualjNbByer9lXWeNxvG8E85QcAGviCoQtyi0?= =?iso-8859-1?q?sdKlDVnTT/?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700013)(14060799003)(35042699022)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:15:05.5351 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fec5d7e7-0b4a-4b39-36c6-08ddef922117 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8168 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch m68k to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/m68k/coldfire/atomic-machine.h b/sysdeps/m68k/coldfire/atomic-machine.h index bf90dfd34c64ebb43e4750c17235c26c2a0733b0..644c0e204ebeda7ecfff1f1c712a101caee9ab28 100644 --- a/sysdeps/m68k/coldfire/atomic-machine.h +++ b/sysdeps/m68k/coldfire/atomic-machine.h @@ -20,25 +20,9 @@ /* If we have just non-atomic operations, we can as well make them wide. */ #define __HAVE_64B_ATOMICS 1 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 -/* The only basic operation needed is compare and exchange. */ -#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ - ({ __typeof (mem) __gmemp = (mem); \ - __typeof (*mem) __gret = *__gmemp; \ - __typeof (*mem) __gnewval = (newval); \ - \ - if (__gret == (oldval)) \ - *__gmemp = __gnewval; \ - __gret; }) - -#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ - ({ __typeof (mem) __gmemp = (mem); \ - __typeof (*mem) __gnewval = (newval); \ - \ - *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; }) - #endif diff --git a/sysdeps/m68k/m680x0/m68020/atomic-machine.h b/sysdeps/m68k/m680x0/m68020/atomic-machine.h index 9d25fbc194182c9f2dc08fad33031a4de5b2c6bf..f394a20164e69d3c974932327f5a49feeb011d2a 100644 --- a/sysdeps/m68k/m680x0/m68020/atomic-machine.h +++ b/sysdeps/m68k/m680x0/m68020/atomic-machine.h @@ -15,218 +15,8 @@ License along with the GNU C Library. If not, see . */ -#define __HAVE_64B_ATOMICS 1 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define __HAVE_64B_ATOMICS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 - -#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __ret; \ - __asm __volatile ("cas%.b %0,%2,%1" \ - : "=d" (__ret), "+m" (*(mem)) \ - : "d" (newval), "0" (oldval)); \ - __ret; }) - -#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __ret; \ - __asm __volatile ("cas%.w %0,%2,%1" \ - : "=d" (__ret), "+m" (*(mem)) \ - : "d" (newval), "0" (oldval)); \ - __ret; }) - -#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __ret; \ - __asm __volatile ("cas%.l %0,%2,%1" \ - : "=d" (__ret), "+m" (*(mem)) \ - : "d" (newval), "0" (oldval)); \ - __ret; }) - -# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __ret; \ - __typeof (mem) __memp = (mem); \ - __asm __volatile ("cas2%.l %0:%R0,%1:%R1,(%2):(%3)" \ - : "=d" (__ret) \ - : "d" ((__typeof (*(mem))) (newval)), "r" (__memp), \ - "r" ((char *) __memp + 4), "0" (oldval) \ - : "memory"); \ - __ret; }) - -#define atomic_exchange_acq(mem, newvalue) \ - ({ __typeof (*(mem)) __result = *(mem); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("1: cas%.b %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)) \ - : "d" (newvalue), "0" (__result)); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("1: cas%.w %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)) \ - : "d" (newvalue), "0" (__result)); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("1: cas%.l %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)) \ - : "d" (newvalue), "0" (__result)); \ - else \ - { \ - __typeof (mem) __memp = (mem); \ - __asm __volatile ("1: cas2%.l %0:%R0,%1:%R1,(%2):(%3);" \ - " jbne 1b" \ - : "=d" (__result) \ - : "d" ((__typeof (*(mem))) (newvalue)), \ - "r" (__memp), "r" ((char *) __memp + 4), \ - "0" (__result) \ - : "memory"); \ - } \ - __result; }) - -#define atomic_exchange_and_add(mem, value) \ - ({ __typeof (*(mem)) __result = *(mem); \ - __typeof (*(mem)) __temp; \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("1: move%.b %0,%2;" \ - " add%.b %3,%2;" \ - " cas%.b %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)), \ - "=&d" (__temp) \ - : "d" (value), "0" (__result)); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("1: move%.w %0,%2;" \ - " add%.w %3,%2;" \ - " cas%.w %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)), \ - "=&d" (__temp) \ - : "d" (value), "0" (__result)); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("1: move%.l %0,%2;" \ - " add%.l %3,%2;" \ - " cas%.l %0,%2,%1;" \ - " jbne 1b" \ - : "=d" (__result), "+m" (*(mem)), \ - "=&d" (__temp) \ - : "d" (value), "0" (__result)); \ - else \ - { \ - __typeof (mem) __memp = (mem); \ - __asm __volatile ("1: move%.l %0,%1;" \ - " move%.l %R0,%R1;" \ - " add%.l %R2,%R1;" \ - " addx%.l %2,%1;" \ - " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \ - " jbne 1b" \ - : "=d" (__result), "=&d" (__temp) \ - : "d" ((__typeof (*(mem))) (value)), "r" (__memp), \ - "r" ((char *) __memp + 4), "0" (__result) \ - : "memory"); \ - } \ - __result; }) - -#define atomic_add(mem, value) \ - (void) ({ if (sizeof (*(mem)) == 1) \ - __asm __volatile ("add%.b %1,%0" \ - : "+m" (*(mem)) \ - : "id" (value)); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("add%.w %1,%0" \ - : "+m" (*(mem)) \ - : "id" (value)); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("add%.l %1,%0" \ - : "+m" (*(mem)) \ - : "id" (value)); \ - else \ - { \ - __typeof (mem) __memp = (mem); \ - __typeof (*(mem)) __oldval = *__memp; \ - __typeof (*(mem)) __temp; \ - __asm __volatile ("1: move%.l %0,%1;" \ - " move%.l %R0,%R1;" \ - " add%.l %R2,%R1;" \ - " addx%.l %2,%1;" \ - " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \ - " jbne 1b" \ - : "=d" (__oldval), "=&d" (__temp) \ - : "d" ((__typeof (*(mem))) (value)), \ - "r" (__memp), "r" ((char *) __memp + 4), \ - "0" (__oldval) \ - : "memory"); \ - } \ - }) - -#define atomic_increment_and_test(mem) \ - ({ char __result; \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("addq%.b %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("addq%.w %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("addq%.l %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else \ - { \ - __typeof (mem) __memp = (mem); \ - __typeof (*(mem)) __oldval = *__memp; \ - __typeof (*(mem)) __temp; \ - __asm __volatile ("1: move%.l %1,%2;" \ - " move%.l %R1,%R2;" \ - " addq%.l %#1,%R2;" \ - " addx%.l %5,%2;" \ - " seq %0;" \ - " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \ - " jbne 1b" \ - : "=&dm" (__result), "=d" (__oldval), \ - "=&d" (__temp) \ - : "r" (__memp), "r" ((char *) __memp + 4), \ - "d" (0), "1" (__oldval) \ - : "memory"); \ - } \ - __result; }) - -#define atomic_decrement_and_test(mem) \ - ({ char __result; \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("subq%.b %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("subq%.w %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("subq%.l %#1,%1; seq %0" \ - : "=dm" (__result), "+m" (*(mem))); \ - else \ - { \ - __typeof (mem) __memp = (mem); \ - __typeof (*(mem)) __oldval = *__memp; \ - __typeof (*(mem)) __temp; \ - __asm __volatile ("1: move%.l %1,%2;" \ - " move%.l %R1,%R2;" \ - " subq%.l %#1,%R2;" \ - " subx%.l %5,%2;" \ - " seq %0;" \ - " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \ - " jbne 1b" \ - : "=&dm" (__result), "=d" (__oldval), \ - "=&d" (__temp) \ - : "r" (__memp), "r" ((char *) __memp + 4), \ - "d" (0), "1" (__oldval) \ - : "memory"); \ - } \ - __result; }) - -#define atomic_bit_set(mem, bit) \ - __asm __volatile ("bfset %0{%1,#1}" \ - : "+m" (*(mem)) \ - : "di" (sizeof (*(mem)) * 8 - (bit) - 1)) - -#define atomic_bit_test_set(mem, bit) \ - ({ char __result; \ - __asm __volatile ("bfset %1{%2,#1}; sne %0" \ - : "=dm" (__result), "+m" (*(mem)) \ - : "di" (sizeof (*(mem)) * 8 - (bit) - 1)); \ - __result; }) diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h index 5f1b232f42ba88789f311dbb91a7e1cdd4c4827b..f8cdc5631ba995b9f58ded6238639149d32fdc30 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h @@ -24,30 +24,11 @@ kernel provides userspace atomicity operations. Use them. */ #define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 -/* The only basic operation needed is compare and exchange. */ -#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ - ({ \ - /* Use temporary variables to workaround call-clobberness of \ - the registers. */ \ - __typeof (mem) _mem = mem; \ - __typeof (oldval) _oldval = oldval; \ - __typeof (newval) _newval = newval; \ - register uint32_t _d0 asm ("d0") = SYS_ify (atomic_cmpxchg_32); \ - register uint32_t *_a0 asm ("a0") = (uint32_t *) _mem; \ - register uint32_t _d2 asm ("d2") = (uint32_t) _oldval; \ - register uint32_t _d1 asm ("d1") = (uint32_t) _newval; \ - \ - asm ("trap #0" \ - : "+d" (_d0), "+m" (*_a0) \ - : "a" (_a0), "d" (_d2), "d" (_d1)); \ - (__typeof (oldval)) _d0; \ - }) - # define atomic_full_barrier() \ (INTERNAL_SYSCALL_CALL (atomic_barrier), (void) 0) From patchwork Tue Sep 9 11:15:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119833 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DD5C33858C60 for ; Tue, 9 Sep 2025 11:17:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DD5C33858C60 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=P+5MjJ05; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=P+5MjJ05 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c202::7]) by sourceware.org (Postfix) with ESMTPS id 2E3423858C5E for ; Tue, 9 Sep 2025 11:16:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2E3423858C5E 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 2E3423858C5E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c202::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416592; cv=pass; b=oTNAayGSuBL/NMcro58T1QWVPALavnVBkOYjrRWlmE/fpmySrqNCV+Za4594taCPUpOt+5MB5gTwIZxEBs6FBgcYAUzcv4/22DCu8JxpXBoUKzURS9+VwE6PYoC2rElzYry3J66HsGEoJ3/bd+JE1L/noMHDX1SBB4TWDVL6jjU= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416592; c=relaxed/simple; bh=h6acPoAX2LajW0Fr8c6DSB2JRYUklaHWfnYJBXU7jZ0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=PjiEkRGZexDXL0Vy3PV0NeLd/QpAR8CKa7QvVJwyHRKtwafhophLesQIY2LfedfcIHTcJHuPSPCyfHOSuAvjbAOEGAsl9klR/qCds2KThHInO20MN7bsRvZTpiGRYZMlgk4eCsFeCnUc27UbhsMTfArHW8Q22dcPzZqnokMo9mc= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2E3423858C5E ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NQd1pzeOkf+uufM0XgHvHkotmEUds4VfXLH/T56RoYGbL3uxJNtQ7vh+Iar7+lWDI5+HxyrvdUDCP5ToySIWWzPY+3Z33ZGQT6RirpKwjT08OknBQNdjbXN3HEBFcaFkAV1gvmyhxWxyxyLb8V85tGGDH31itLd5YS/AOzDNzIoBJqrXnR2AokxhlaEUXG8f64d7V+h4cA29mmzzl4BPdAlkKlYwRDS3pJXwgaVkeyy6+ySH48aju2+vA6f67YGsBbfJCcMg0w6l6ehj+fj9qHtFtkTwED3Y+LH40KsRhT65nN0f7LouEO0J7G8zUxgOsBuVTs9BJ8S/mvXmYWBbfQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=G552dixMpdI0rzdX3pw6/CmTsmh87zVO6cbiJ7wLEGY=; b=Q3PsNjA7SRM2a77wFsQ1apsbvmgoi8jmAYfyFWsQkdGvM89OVWu4Fb6LV4y7bCo2UFP4jH3edphmHX3WOZWmUkHsYQDK01H1Pcs6STSQ3zQTfFG7tied9i7pzGw3C+C5tUTf918p0jjttrUkiyPBGLYSLQkA104v6tHVDjClbpZnyRriNxVDGUoZX26hI2stAiTgUCgFgbOk2kus+y5yF41LGV+1T/heJqaCejxanzeyQ79w5k8r+Kg32rf3Ug+cAsen88kyF60kNC2FpLM18tKsnEInFRG0pkv4JlV/Z0+Ao+aqnWo/2SugqO++IIriOJlE843Y6FAUQenSnRsBeA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G552dixMpdI0rzdX3pw6/CmTsmh87zVO6cbiJ7wLEGY=; b=P+5MjJ050WVzYlKL6fqvEaXfVPZZQi7nsqqrq0XtxXm+UrZmV6Hd7I3nfJHPaqllJXPOYg5KE34oUfhpK/sZtKv5Xd9k2IFGHE+3f5Kpq8gvKnGtjdLivH0F8pVmWwwwVkaI4nBihhLRvapJDwHbx7Q6ZIK2VnPODN7mwXd8WTA= Received: from AS4P251CA0006.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d2::15) by DU0PR08MB8979.eurprd08.prod.outlook.com (2603:10a6:10:467::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:16:27 +0000 Received: from AM3PEPF00009B9B.eurprd04.prod.outlook.com (2603:10a6:20b:5d2:cafe::12) by AS4P251CA0006.outlook.office365.com (2603:10a6:20b:5d2::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.15 via Frontend Transport; Tue, 9 Sep 2025 11:16:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM3PEPF00009B9B.mail.protection.outlook.com (10.167.16.20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:16:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ld7PlAJ764LPuUP8VMTML09dbnF2s69FPa14dJx+BddP+ztj8zIIZYzsSJl9t6nfAbfMUCCxGml5S8qwNS6o+LAXpUapr2PnuFLn/sRUXyPlwyAFbgAJcbujzitfWzl7w9517S2blrRpKf4W43ISKOrOhjdwkhnYqqI7qDCQZ/OX5fscUw1e6vBdCU5+pZNjEf3V4uCF5CxQdqc0k9O4aG6/ldWR3fAK26qmrljfn9pCSv/oqFtQzKfVMFuiCUaU7c0XVwJGJV7NlN3UkABVNtXNk9ARKab3AZOLf5IpAlM5uMzr47z2CQPNP0fT1p91QV5UJjTpdZBTgUzS8lvdkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=G552dixMpdI0rzdX3pw6/CmTsmh87zVO6cbiJ7wLEGY=; b=gdJ0aoiJzaJ1itQncAiN+co+piMptIjXVv5wtErOyaIk/1ofIkhCQpUsDBe8rVb9tIYcEHP50S5F+Vj9cn3RpkYCWd8Sxkxvo8Tk+3/fO3qPgmIwwVSaK54G0fmVYL/h/OpTfMOQxLmMDfh7AiGK0E0RmLeZqIcph+JwhideWhmmOHFPMZeLLJErSDVshyGLdfvMZAMqaNYQF9e6qZQqwlyYl74nNym7Po/+NZLiPWf51afDdlosQjEnxOyqXKlBy87Ewe9oTqZTqIXX4sJDNEdpwJZ44ziYJgua0ZHUAuRpF6OZ3j/5L9F5kUvue42U7FY9aU4eIP1uiI8i6nyihg== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G552dixMpdI0rzdX3pw6/CmTsmh87zVO6cbiJ7wLEGY=; b=P+5MjJ050WVzYlKL6fqvEaXfVPZZQi7nsqqrq0XtxXm+UrZmV6Hd7I3nfJHPaqllJXPOYg5KE34oUfhpK/sZtKv5Xd9k2IFGHE+3f5Kpq8gvKnGtjdLivH0F8pVmWwwwVkaI4nBihhLRvapJDwHbx7Q6ZIK2VnPODN7mwXd8WTA= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AM8PR08MB6465.eurprd08.prod.outlook.com (2603:10a6:20b:365::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:15:50 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:15:50 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 3/8] atomic: Switch alpha to builtin atomics Thread-Topic: [PATCH 3/8] atomic: Switch alpha to builtin atomics Thread-Index: AQHcIXr8HkeOlesm80Cj/O5KY0R3Nw== Date: Tue, 9 Sep 2025 11:15:50 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AM8PR08MB6465:EE_|AM3PEPF00009B9B:EE_|DU0PR08MB8979:EE_ X-MS-Office365-Filtering-Correlation-Id: ea69fd76-827b-475c-d9f7-08ddef9251b0 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|376014|366016|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?ITauSZfNVQmJM345E?= =?iso-8859-1?q?fT6nYKrVH8nKvRiR0ytlRpWPpMqpi+IQk4+RjebpDbDmydolKkTrqpFhKL10?= =?iso-8859-1?q?qcjpQF995s20nvx+NpgG8AqFhLySSDHLWRoqnHO3OpjT29wcwLi+yDtcVW0A?= =?iso-8859-1?q?om2bmD7Sq2dMfjlXS7IZxOYqlUOOEDmzoK2RKmjDrcQw/m1xKed7XOeg3Ibj?= =?iso-8859-1?q?d6osB5T4ztGLTSqWZRkJ5DQ03mt8L+yT+JqeJ0v8wkP9EM1YwhVWPkQ3KLW9?= =?iso-8859-1?q?F2i3JoPnVcXLrNUBB2k7uW7/DNeqnegV+aRXc4+xsSrjwG2q6NaR8WDymDO2?= =?iso-8859-1?q?twZ8jPtxvKEb8EcBaPvqjQmDLpzM0DUtLoltMMG9hrc6NdkH4295D/DRa/vK?= =?iso-8859-1?q?LaDjT4mVWWCxLbOJA9fxRxwKxpXI8jOje6SYlu8IHSQ1scoeO+ZG90vyKWKZ?= =?iso-8859-1?q?iz25lB+fTEf8758juZnYe6plLg+cw2196oxj1ncYnNLVS4YAM/5XpYdlImSk?= =?iso-8859-1?q?HojHz4GMcZ+0bYV+aPmjitvm0/0/ncPRnhrAYWDlzVPuzDIhBo91JAKLYSlb?= =?iso-8859-1?q?KArneW3lrHQ+zZeBirbcBKI+8blzPVfSKvW/Al8wREtcy4JscpJmRlZd+mzb?= =?iso-8859-1?q?poCiyhAhlU2HUKS1kFFd60VRrjvCDpia0CGZuwZNjFOBNDui+CzB8lagivGq?= =?iso-8859-1?q?7HiNAE6lkcRxr1MtL2yA9fK5VJBhh07p5sLSdbEXfTewmmG64YT+s/0esy1g?= =?iso-8859-1?q?h4fYtYU0YZKfJnKpKaBo9RtNQ7pw5X4Hji2/N4tl6YQVScXUo52OWkb5NMuR?= =?iso-8859-1?q?Y1+e/756W95ackAlGhJWICaKaVb4TkD7k8Dwv5alWWQdenJ2gRosXEbgIE9i?= =?iso-8859-1?q?qaMBDKkFH0kv4a+b5NSWNujjo7z2G70G1PODZHj+Be3M6OQcP69YDhF4kye8?= =?iso-8859-1?q?16bXbgjFfbzIjXYcAdEHbtbs8ADXG8k0Qm41dD+1orXiYQ4Q/DIyWA1Y4GBK?= =?iso-8859-1?q?Q2LZz8DZoeRyXPUUGQ+PolmI5fLyAc4POmr4dsmR2+6soIFSm1M+MB3W3D0a?= =?iso-8859-1?q?KXDtUlye8jdWGspk1Yu8JD+mGOC7z269RdjzChhvcJax0LK52bCH+KLzBtGV?= =?iso-8859-1?q?ZQzJf3fqgwEVgPdUo1RpZXULv+mokWtGn4bkvYsvPk1Pmi0nTI/5I3WNMmZ3?= =?iso-8859-1?q?xfstzo53aPQGAfW9VqVRi1v5kQLGD+wLckzPq9sA93uoj/2ej9rXqNqfsCdC?= =?iso-8859-1?q?TWT2b88c8SkuWV4WJDhPeHQ4v1mJk+3hdR98hXJiZS3RI+5fbKX69JU2fTS2?= =?iso-8859-1?q?9YhXVsRS/rFlaPEGS/e9vAd9+H3QoX0pJIi1RnHr8kZ+de4CkiyJqlWoCCFd?= =?iso-8859-1?q?XwZqcnKoRMU7D0RDzBZhmajN9m1MMpa7EWLHyJPTNUwaLh8OYugk/01MeOdi?= =?iso-8859-1?q?REub+N+6moUddxYZa1oJej4vLUcJJLEXoWKzv2chhlqutNGQB+nPn9Pl8cPR?= =?iso-8859-1?q?P+4QjE9BIMp0/li9GJQEDI7vuBhJNDd4tERzJj5kQ5mMU5sLoJdOqM8UbM?= =?iso-8859-1?q?=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6465 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF00009B9B.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6bbce79b-3fd2-463f-5212-08ddef923bb3 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|14060799003|35042699022|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?ZUYu7RPsc2m8YMzFqFRp72MEIu?= =?iso-8859-1?q?c8wOA7o0Hls5SIydWo3D8zn3Y8AIEXVYSVcrDXxbn0oL/5Bi10JrS9sOCQlO?= =?iso-8859-1?q?dpy41yW+JfDvBGs4Vq5itbAJ1WFvTyJkMmM6Ri8CbjW/Jyi5/ySyM9PExTH6?= =?iso-8859-1?q?WPi0G+PLbvsX4T+6Z5CtN0+7YHq4s7NMDSpNVLo27vtVF1rA6SsTlIvEYT9P?= =?iso-8859-1?q?HI/rfyMdL4PnYEX45DT1AX6aKlHIq3B9TatOyqTm8sSZMgZqhar8D6XK8vOr?= =?iso-8859-1?q?HCUYm97LjBDH54n30Na6McBsVmwglShD01UiJFwxuZBDJl78JyAZ51qu+fNf?= =?iso-8859-1?q?S1qMgdi8PQ9A8CwD+Ecm1/+UNVqyDXGK18k8aAA2/I1eZ8WqQtms2RnR1u9r?= =?iso-8859-1?q?zExmNXzYgvQTZfJv3ZdxcX7+zANpK18zPgXtEjBAI6zhSHOeSM6JJYqScJNy?= =?iso-8859-1?q?0XezipXc4tj+m65STUdO3zJ3qFjR5JUIDZY573C3DgtM4PRbbfbXUvk1FOfu?= =?iso-8859-1?q?Hl2GzSdu0ZPHtDcktDHWuvyMZz6+04KXuQCNc1snR47/lLCu2GTjwoEq2WW1?= =?iso-8859-1?q?0w4t2qIVAHZMV2pytvEEOk3ijTvfuMKnWJG3qcSWf1TxlJRv/oxFdzy7z3gr?= =?iso-8859-1?q?ujLE5ehRFHU307t3QiX+dlYx6k7FovMDXqa2xicxTnM3MWY5aDypgISfPnBx?= =?iso-8859-1?q?u6XNHIP9PAaM4Ert8T0f6sQIx9jQJm2Y9kDceHRDAS35DxqlUMKRPZ7K8OEG?= =?iso-8859-1?q?y9pEmgcdCjf5Md0X5tJq5ilwMElGNlMGFduC4ZY0EpUK7YZsfsSrId7zOeCh?= =?iso-8859-1?q?D5NjcmPEgov4aWP/IrN+8hsZn1d+jiEYfVoYbdOAxYp5awGocg2o3I5VaXXM?= =?iso-8859-1?q?b2zM1djwuc3NUgHwe3FxrNI58nPHkh8Hzh10nCuIa2ukqQnR+LhztsxfZBNt?= =?iso-8859-1?q?APByyvleI3S5z/Jcqu9ie2SM41tujDIjwDi3gJ9Z+nx5fvHB0St6ZWynz6fX?= =?iso-8859-1?q?UCnDM8lXcd+UzxGld3VtoIsmuqOm0GhXvhTeuS6E/94Qqa2ml7yZKCxysk5D?= =?iso-8859-1?q?sVvxHCrttLtcCxXzNb6lkFzl4MElyBK8hkjgKSV4aaSYIJZB2GOvldi32wxz?= =?iso-8859-1?q?A8hdcmkY77LidZg0GpJQLHIgLINdASyvQGfu6hFND91s1y5c5+O5oTe3/3rf?= =?iso-8859-1?q?6JrP/xx7WPXFtFnl/k6dgSz+qyQPJeqDTovJIv4J73bD7aXA7Ka9xAZOQw3z?= =?iso-8859-1?q?1CmEZW2ZQ+xOPs8Ua+iQ7IHpIzql7K4WiYvmEDVGswIlk4jt+Zu7yuNKdurf?= =?iso-8859-1?q?y895oSU3YaHnRSG7tRmCF+CKqzoEbw78yootZoM1oCAugIMXyMVJyszVsuc9?= =?iso-8859-1?q?PH3jD6HLOyYX0afJaEqJ8c/ZCLuQBBuCa8oWU2Fg1ZFXcUx68t4mbrBJhFNT?= =?iso-8859-1?q?FpONmr9hgkIyatKXobIiB00dv4fkJRsyS2qGUpt34JccCd7IWRswp9k53rCb?= =?iso-8859-1?q?SQeNjq7TRX4sUPUQs0qDqUNDXWAaACECywKlX9497e3J0juNWFCE39xUl0wT?= =?iso-8859-1?q?vvG98FTWpW?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(14060799003)(35042699022)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:16:27.0820 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ea69fd76-827b-475c-d9f7-08ddef9251b0 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM3PEPF00009B9B.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8979 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch alpha to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/alpha/atomic-machine.h b/sysdeps/alpha/atomic-machine.h index 393176df08a3119fdbc41db2d09d932a6ca643d4..dcb3b56cc0e9b46c0abc8abc4727312f20f756b2 100644 --- a/sysdeps/alpha/atomic-machine.h +++ b/sysdeps/alpha/atomic-machine.h @@ -18,322 +18,11 @@ #include #define __HAVE_64B_ATOMICS 1 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 - -#define __MB " mb\n" - - -/* Compare and exchange. For all of the "xxx" routines, we expect a - "__prev" and a "__cmp" variable to be provided by the enclosing scope, - in which values are returned. */ - -#define __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2) \ -({ \ - unsigned long __tmp, __snew, __addr64; \ - __asm__ __volatile__ ( \ - mb1 \ - " andnot %[__addr8],7,%[__addr64]\n" \ - " insbl %[__new],%[__addr8],%[__snew]\n" \ - "1: ldq_l %[__tmp],0(%[__addr64])\n" \ - " extbl %[__tmp],%[__addr8],%[__prev]\n" \ - " cmpeq %[__prev],%[__old],%[__cmp]\n" \ - " beq %[__cmp],2f\n" \ - " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \ - " or %[__snew],%[__tmp],%[__tmp]\n" \ - " stq_c %[__tmp],0(%[__addr64])\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - "2:" \ - : [__prev] "=&r" (__prev), \ - [__snew] "=&r" (__snew), \ - [__tmp] "=&r" (__tmp), \ - [__cmp] "=&r" (__cmp), \ - [__addr64] "=&r" (__addr64) \ - : [__addr8] "r" (mem), \ - [__old] "Ir" ((uint64_t)(uint8_t)(uint64_t)(old)), \ - [__new] "r" (new) \ - : "memory"); \ -}) - -#define __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2) \ -({ \ - unsigned long __tmp, __snew, __addr64; \ - __asm__ __volatile__ ( \ - mb1 \ - " andnot %[__addr16],7,%[__addr64]\n" \ - " inswl %[__new],%[__addr16],%[__snew]\n" \ - "1: ldq_l %[__tmp],0(%[__addr64])\n" \ - " extwl %[__tmp],%[__addr16],%[__prev]\n" \ - " cmpeq %[__prev],%[__old],%[__cmp]\n" \ - " beq %[__cmp],2f\n" \ - " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \ - " or %[__snew],%[__tmp],%[__tmp]\n" \ - " stq_c %[__tmp],0(%[__addr64])\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - "2:" \ - : [__prev] "=&r" (__prev), \ - [__snew] "=&r" (__snew), \ - [__tmp] "=&r" (__tmp), \ - [__cmp] "=&r" (__cmp), \ - [__addr64] "=&r" (__addr64) \ - : [__addr16] "r" (mem), \ - [__old] "Ir" ((uint64_t)(uint16_t)(uint64_t)(old)), \ - [__new] "r" (new) \ - : "memory"); \ -}) - -#define __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2) \ -({ \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldl_l %[__prev],%[__mem]\n" \ - " cmpeq %[__prev],%[__old],%[__cmp]\n" \ - " beq %[__cmp],2f\n" \ - " mov %[__new],%[__cmp]\n" \ - " stl_c %[__cmp],%[__mem]\n" \ - " beq %[__cmp],1b\n" \ - mb2 \ - "2:" \ - : [__prev] "=&r" (__prev), \ - [__cmp] "=&r" (__cmp) \ - : [__mem] "m" (*(mem)), \ - [__old] "Ir" ((uint64_t)(int32_t)(uint64_t)(old)), \ - [__new] "Ir" (new) \ - : "memory"); \ -}) - -#define __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2) \ -({ \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldq_l %[__prev],%[__mem]\n" \ - " cmpeq %[__prev],%[__old],%[__cmp]\n" \ - " beq %[__cmp],2f\n" \ - " mov %[__new],%[__cmp]\n" \ - " stq_c %[__cmp],%[__mem]\n" \ - " beq %[__cmp],1b\n" \ - mb2 \ - "2:" \ - : [__prev] "=&r" (__prev), \ - [__cmp] "=&r" (__cmp) \ - : [__mem] "m" (*(mem)), \ - [__old] "Ir" ((uint64_t)(old)), \ - [__new] "Ir" (new) \ - : "memory"); \ -}) - -/* For all "bool" routines, we return FALSE if exchange successful. */ - -#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \ - !__cmp; }) - -#define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \ - !__cmp; }) - -#define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \ - !__cmp; }) - -#define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \ - !__cmp; }) - -/* For all "val" routines, return the old value whether exchange - successful or not. */ - -#define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \ - (typeof (*mem))__prev; }) - -#define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \ - (typeof (*mem))__prev; }) - -#define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \ - (typeof (*mem))__prev; }) - -#define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \ -({ unsigned long __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \ - (typeof (*mem))__prev; }) - -/* Compare and exchange with "acquire" semantics, ie barrier after. */ - -#define atomic_compare_and_exchange_bool_acq(mem, new, old) \ - __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \ - mem, new, old, "", __MB) - -#define atomic_compare_and_exchange_val_acq(mem, new, old) \ - __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ - mem, new, old, "", __MB) - -/* Compare and exchange with "release" semantics, ie barrier before. */ - -#define atomic_compare_and_exchange_val_rel(mem, new, old) \ - __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ - mem, new, old, __MB, "") - - -/* Atomically store value and return the previous value. */ - -#define __arch_exchange_8_int(mem, value, mb1, mb2) \ -({ \ - unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - " andnot %[__addr8],7,%[__addr64]\n" \ - " insbl %[__value],%[__addr8],%[__sval]\n" \ - "1: ldq_l %[__tmp],0(%[__addr64])\n" \ - " extbl %[__tmp],%[__addr8],%[__ret]\n" \ - " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \ - " or %[__sval],%[__tmp],%[__tmp]\n" \ - " stq_c %[__tmp],0(%[__addr64])\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__sval] "=&r" (__sval), \ - [__tmp] "=&r" (__tmp), \ - [__addr64] "=&r" (__addr64) \ - : [__addr8] "r" (mem), \ - [__value] "r" (value) \ - : "memory"); \ - __ret; }) - -#define __arch_exchange_16_int(mem, value, mb1, mb2) \ -({ \ - unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - " andnot %[__addr16],7,%[__addr64]\n" \ - " inswl %[__value],%[__addr16],%[__sval]\n" \ - "1: ldq_l %[__tmp],0(%[__addr64])\n" \ - " extwl %[__tmp],%[__addr16],%[__ret]\n" \ - " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \ - " or %[__sval],%[__tmp],%[__tmp]\n" \ - " stq_c %[__tmp],0(%[__addr64])\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__sval] "=&r" (__sval), \ - [__tmp] "=&r" (__tmp), \ - [__addr64] "=&r" (__addr64) \ - : [__addr16] "r" (mem), \ - [__value] "r" (value) \ - : "memory"); \ - __ret; }) - -#define __arch_exchange_32_int(mem, value, mb1, mb2) \ -({ \ - signed int __tmp; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldl_l %[__ret],%[__mem]\n" \ - " mov %[__val],%[__tmp]\n" \ - " stl_c %[__tmp],%[__mem]\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__tmp] "=&r" (__tmp) \ - : [__mem] "m" (*(mem)), \ - [__val] "Ir" (value) \ - : "memory"); \ - __ret; }) - -#define __arch_exchange_64_int(mem, value, mb1, mb2) \ -({ \ - unsigned long __tmp; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldq_l %[__ret],%[__mem]\n" \ - " mov %[__val],%[__tmp]\n" \ - " stq_c %[__tmp],%[__mem]\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__tmp] "=&r" (__tmp) \ - : [__mem] "m" (*(mem)), \ - [__val] "Ir" (value) \ - : "memory"); \ - __ret; }) - -#define atomic_exchange_acq(mem, value) \ - __atomic_val_bysize (__arch_exchange, int, mem, value, "", __MB) - -#define atomic_exchange_rel(mem, value) \ - __atomic_val_bysize (__arch_exchange, int, mem, value, __MB, "") - - -/* Atomically add value and return the previous (unincremented) value. */ - -#define __arch_exchange_and_add_8_int(mem, value, mb1, mb2) \ - ({ __builtin_trap (); 0; }) - -#define __arch_exchange_and_add_16_int(mem, value, mb1, mb2) \ - ({ __builtin_trap (); 0; }) - -#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \ -({ \ - signed int __tmp; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldl_l %[__ret],%[__mem]\n" \ - " addl %[__ret],%[__val],%[__tmp]\n" \ - " stl_c %[__tmp],%[__mem]\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__tmp] "=&r" (__tmp) \ - : [__mem] "m" (*(mem)), \ - [__val] "Ir" ((signed int)(value)) \ - : "memory"); \ - __ret; }) - -#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \ -({ \ - unsigned long __tmp; __typeof(*mem) __ret; \ - __asm__ __volatile__ ( \ - mb1 \ - "1: ldq_l %[__ret],%[__mem]\n" \ - " addq %[__ret],%[__val],%[__tmp]\n" \ - " stq_c %[__tmp],%[__mem]\n" \ - " beq %[__tmp],1b\n" \ - mb2 \ - : [__ret] "=&r" (__ret), \ - [__tmp] "=&r" (__tmp) \ - : [__mem] "m" (*(mem)), \ - [__val] "Ir" ((unsigned long)(value)) \ - : "memory"); \ - __ret; }) - -/* ??? Barrier semantics for atomic_exchange_and_add appear to be - undefined. Use full barrier for now, as that's safe. */ -#define atomic_exchange_and_add(mem, value) \ - __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB) - - -/* ??? Blah, I'm lazy. Implement these later. Can do better than the - compare-and-exchange loop provided by generic code. - -#define atomic_decrement_if_positive(mem) -#define atomic_bit_test_set(mem, bit) - -*/ - #define atomic_full_barrier() __asm ("mb" : : : "memory"); #define atomic_read_barrier() __asm ("mb" : : : "memory"); #define atomic_write_barrier() __asm ("wmb" : : : "memory"); From patchwork Tue Sep 9 11:17:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119835 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E22373858C52 for ; Tue, 9 Sep 2025 11:19:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E22373858C52 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ndrwpwPG; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ndrwpwPG X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20a::7]) by sourceware.org (Postfix) with ESMTPS id B809C3858D1E for ; Tue, 9 Sep 2025 11:17:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B809C3858D1E 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 B809C3858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20a::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416673; cv=pass; b=JbyBIkkR7IViQjob/OO4EnG1ouKHxQ6Kvz6B3x4fEYH3C/uodJ7oJ3GFir+F1CuUk9nOZqv+blGyP29P5dK3y2BmTD/pe4uATR4J7hRVR5IOZCNz7XUuvBckHfMSYsrwSLbFd0cqVqhHkFHGklRDTmv8JNrKVRTsU9zCIIOD30k= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416673; c=relaxed/simple; bh=/gOQdLSI8tisNVtDPJUvJblUsJIv7GH6Mhj0hhSAVh0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=U/vF0wx1uc3XiaYE+k2fyMOPZjZ3ekWUwpsMUH7L5NyjgNG6BO52nRCW1UIL2fvlBo33hGLnoyjG4vuo5KOIlxnXjmbBGeOXKUStMd80aLjLKN065xHlGFnpc0+pM0gtAlspdkj9M09vkFBFJZhU7sKLUVkkxnh8ZN/FVMCywmQ= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B809C3858D1E ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ux4qxDx/r6ZOgvKMSZXlbT4HjVpM0LVzAHLt579zVvkwC/HhBHoV0A33exNiA1PPfAlWvjRGkq2x40ueeZH3BXeBFct8vL8fqBCa/FpOixu6xlVwKBynA1uy+YjqvuqkSgmSuyqoP/S49jlbjn17FrB2f6QunV26ZlqM/AYXwvLvesmrcZOgQ2I9MNW3LiCvuXSHH7fWYsg72FDSUidAqABn7apjnMFS4Devqz1Wki0eYf/dlTyqcJKFk9jS7ewQMrAzRFCQJF9tERWnAdpf8VAh+uHSNeCLOFQbLB4Z7POQM/C/JGB0toxjHtIPo9XppBEnW5g1gFsd6Wm2TGs0pQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=wyqYMsOpC2G0caAQK/yYzOyBch74n1t8W7XRoYxW5AU=; b=MfcNaTecLBg+mTfODgC+PZ2ud2OlJC4P8WRs7FPRHu/NBpgLTM3GKCAf/PJZU2TGYIHGBDiaKOt1Gwgaa+987quXxOecpIAVVzmnk3FoelyNUQGbg89gvoO7I6FtFcmoFRxxgaaixv6JQsW9cwQvNNTF5r520kRN4rONXUCGvHUDhPYjvtAaeENOdo1rupoT26hvuNOLTF5fYjoBEer3YPZejf8YerrYNJnKnlvGeE6XuQhXa0gN9O/1GXKkifGFOql5C31OukkjGm7z9hy0VJsvnH3oyZ2vP5QUAxCEnUAzR0qkm6nCdVjro6TIgd7AkfLwkkRI9vO2ow1TUpQlwQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wyqYMsOpC2G0caAQK/yYzOyBch74n1t8W7XRoYxW5AU=; b=ndrwpwPGI0RqUpS+GrQyeOZgxl1Ht7WPrE6NOhroUnlDGuUcjKS9aaxZNFKjze7Ykopx3+9RQ0rO80c6wFBCQUI1lX3jF6pOLHfWR9wECN4F7xhsI4mSimGpPk8JpqfgIvHMipHRt26ecNwyFR22Bqak2Q7tudRJdfh8FlzQRH0= Received: from AM0PR02CA0227.eurprd02.prod.outlook.com (2603:10a6:20b:28f::34) by AS1PR08MB7563.eurprd08.prod.outlook.com (2603:10a6:20b:472::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:17:47 +0000 Received: from AMS1EPF00000048.eurprd04.prod.outlook.com (2603:10a6:20b:28f:cafe::61) by AM0PR02CA0227.outlook.office365.com (2603:10a6:20b:28f::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.23 via Frontend Transport; Tue, 9 Sep 2025 11:17:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF00000048.mail.protection.outlook.com (10.167.16.132) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:17:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ezMgh1uJPUgmNgGv5pzqXScBOsK17j+K3Z0cLwGFDJ8vtZA+bruYJorB/CRJRn+5mVhamdpO9edz5eRAahOMX0Po44J7UNgWZxKyZlmewcPA5ABPpceWCS2sjCv3PA1+7IqHwo1Bb0mGuyCCVmjbklfSceVvbai3sP3FiC84i5LIo6mkc5WmQ1K4RHtznzTlMOq7EUFia8m+SIp2rT8q7QImE93+aemIaY9Edbg8eDjTFwpz9hfI8cwZjiuAH+CcIwbRC1KbpNYj7MnEZo5pB0BmrkaKsMVpMsHZEmW0uXLRR+iPatsVOCHWH//SuZwm37DIgvrb4XOn+79sRGUaTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=wyqYMsOpC2G0caAQK/yYzOyBch74n1t8W7XRoYxW5AU=; b=tVyHH+qAoqUAsfKaxL3BSx1R4+VyzHUBjsHJxrb/iBE8ZmiABir/b22LFFfrjOS/Oh97y7QSN7bWb1r/gg+ElE6ijBB5d+/Bxf4nzNhhxOsIz/oDyGegRie4v4MH3RBPqOZKexQC8PO5vLyyDdE+whP5ov/eNHBiFv+6uWtyUBlejnt91nDqw3GyWVjAxsa1hkI/2mrQ0MMlJUA0yruVge9NMG974kFl4Gnicq0/gh8JkdZqzigbZDCBEQg9gczSPA967HdxWsZFfAgQc+Xw+nmXvGezIj5zoAs0QX9AdczJOI2JjMOdPPZ9/zuV9o4neR4aHEKVjowBmSRelpkpYQ== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wyqYMsOpC2G0caAQK/yYzOyBch74n1t8W7XRoYxW5AU=; b=ndrwpwPGI0RqUpS+GrQyeOZgxl1Ht7WPrE6NOhroUnlDGuUcjKS9aaxZNFKjze7Ykopx3+9RQ0rO80c6wFBCQUI1lX3jF6pOLHfWR9wECN4F7xhsI4mSimGpPk8JpqfgIvHMipHRt26ecNwyFR22Bqak2Q7tudRJdfh8FlzQRH0= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AM8PR08MB6465.eurprd08.prod.outlook.com (2603:10a6:20b:365::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:17:15 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:17:15 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 4/8] atomic: Switch microblaze to builtin atomics Thread-Topic: [PATCH 4/8] atomic: Switch microblaze to builtin atomics Thread-Index: AQHcIXssAHjxo5k870uxL9r/Vse4xw== Date: Tue, 9 Sep 2025 11:17:15 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AM8PR08MB6465:EE_|AMS1EPF00000048:EE_|AS1PR08MB7563:EE_ X-MS-Office365-Filtering-Correlation-Id: bada3ee5-30b2-43d0-2d44-08ddef9281a3 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|376014|366016|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?d74ngIHJDiZKBGrGq?= =?iso-8859-1?q?lht29JDgD9DuJ8CYl0/neMWLfJZI3mhDbW7Z/3vvXHJ+5BfzsZBMrmnJCAJf?= =?iso-8859-1?q?2B1X0HypHvyWpbIDPCyX1rInZT7xEZ9biZb+5tqjRe0FKGyvmeijkcp9Dcrd?= =?iso-8859-1?q?F0nlB/9F1m1CY19AA84qMQ2F29sCGqU4LVr4j3DYakTRVrZgbQsqgjmur9aQ?= =?iso-8859-1?q?nyh9gWXkCxBMu8mXT2CRUq60QnB0S0NiLNPwoPul0+01qXxzroVdOLknnmO2?= =?iso-8859-1?q?6EKcmCD1JMWvyeEbJelE3IZXjSFZabPyPPFmbmePjISgmM6UPzcbh7CWjYm3?= =?iso-8859-1?q?zzy1LkxgJAmTiZYJtPMVSNwg072urlJwXybtzgfe/aKe38dbkvHyWFOXKpiS?= =?iso-8859-1?q?a573rFP3FMk+XtPHEtkV5J9SZhhM3wKkbeE7hSMuE4RTvzbJjdEwPCLAfebV?= =?iso-8859-1?q?nzsNTcvdfyJJRk4OrqXbgwVqkekPe+hFyAQGkhy75lARjd7RoujFovyLedid?= =?iso-8859-1?q?vDCZiCEkjBoDG4YReUJR0XbhWmU2MxloDQJ1n8QxmzPHnwfCCZ5xxyPDHlhE?= =?iso-8859-1?q?eNRubVkEyBH+D/q/9O9iEIhuf98eVsiD8lZPyqgfeCYGG82lpBf8ywj3kde2?= =?iso-8859-1?q?t7xGAzNVCjeV8/T9a74YvC4JYh39TAwelnJGzDGsWzDOhuhqVdOVwYuhRAUx?= =?iso-8859-1?q?dO3BKhtaReQoueGaTEu225M7LbXd5YUAIuHuP6NkZLo/EE6vTcZjIKXwu/2S?= =?iso-8859-1?q?D9GUCgbLG5NgrycbFdTv5mYGpjeXkgmre0A9LfCO8x84o5h0bYoFbW9f7+uL?= =?iso-8859-1?q?CH3vqir3si1z/DSJsHXF6018NRP5PdLPVe0gEkaneIKE5ygmVbROVt2OMHDV?= =?iso-8859-1?q?Hy7APFPmvwTK54RU0z5lKNEG5/IHO8OwIXwmirSMHEGZuOX3Dkuibr5b808G?= =?iso-8859-1?q?N7PMaEjsN8xhyRFJH9ZMolBnc/eiajYUjU5KgRKtQPAHXftNWSCDUIhBH+NM?= =?iso-8859-1?q?g3veFq5p2gy8X8y3mKHVYKAuBX4nHeupg6nCKywv7n4VZEd3oFutTj29Kw1J?= =?iso-8859-1?q?gV6EmDbSel3nauLLPJMcc4kCzL9WBuYi2WjVlu+8A1nAqI5dwRgYmLC1zFqp?= =?iso-8859-1?q?dzeIAXGBIeNGJC4EFzu4K3E4MXHBNpRjQ/84mnUv5k+v7qpAcyhf5x+IHb4T?= =?iso-8859-1?q?hBTXuAksfc83C1qWguOqaYb6/EuuPqR+iLM3sGd9PbaIzK01nefLqg5BiLrH?= =?iso-8859-1?q?xPzBM5CPWxRwcaE9I8Os0E9rSiFa9Mu87csth0Yz+XXEkNUTFN+rmdNr/kM1?= =?iso-8859-1?q?Aa+ZuDabzoRlxcYsoB6+g33It8jiQYmLBk1bF2U3d6uNJQIKfVCVmiefJkXx?= =?iso-8859-1?q?zh3qURSdQmXoBzMs4U9S7Z4LecFion3eMoczuaF9FKed0jG7KHp4gf4Am/T3?= =?iso-8859-1?q?JIndga5bMTkn9t4Vp1LfIgs9edKYdhyeXlFwAfKtZ4j9+/VLZlxB/ZQ6uRej?= =?iso-8859-1?q?Fb++osjE6BLpCw9s6JPO3rj7DHUHYxpsGY1Rw=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6465 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000048.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dd28bae5-6cba-4b68-8d6e-08ddef926e62 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|35042699022|14060799003|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?8lNlsrO1m5+9REjy5hrzleSV81?= =?iso-8859-1?q?TCzAZ/x6lxN5tV76uxf8oYMMTQJR7dunbYBUicItM8ogPbMO4E2dBcX9/XJg?= =?iso-8859-1?q?qxmU0thOsSEo8R1lmKzbEHrsefVeLUHPI9Sg/C53SykX3xvbR+2DrlXyOKjc?= =?iso-8859-1?q?gRtSyOWiLAnjBVZexXT9rrDFsl/7w3Zw+fURddnG81f6WYsAF2vY/W0TWsBf?= =?iso-8859-1?q?b6tBDXLalK6ncXSZL6LO4P5BBZr85ZmpnTMM8lfl5t0AyMbAYVinnvXczrPb?= =?iso-8859-1?q?kSC9ynbd0QC8N1FiFu7g84Vp9S0ALdI683WjQoPrfmqBUzFtUUOuu08tfeHR?= =?iso-8859-1?q?Yg/Hmezzn0d9EUCX5akHip3QwQVez/+KewO8j6kcvlmnF7cmiP1WFeMkjCGx?= =?iso-8859-1?q?XSQMXgbg6WvPj0tTmpy8L1p/C0yC9LITzlMtm2Drnhgf6YuJ4rrP2QHeTr2H?= =?iso-8859-1?q?VyOgVzgo7AL8rkJOQy9LIo6e4kGOSzKXKyhVsQOzZPwbTzwhVUBnmczkdV9w?= =?iso-8859-1?q?1C/lrhlsRl4zfC+puK+bmOLysFWjW53f7xolvHhDhsmQrL5j/OlFAh6bXscq?= =?iso-8859-1?q?7jvPH/et70fRvZ90hlDZe1kY7c6B96w+Uo+A1n7DYwok786uvk8BdD9iGBG4?= =?iso-8859-1?q?/FUM0LkyQ2tnEBzP1UKx/NUgQ1xDKMAwKjJGblTiD3wZS5d+7tpStpyS6BAN?= =?iso-8859-1?q?8gYTLrLqHeOvsOvG+FDsw4WXgfKwfA21cP1e4BN5tiJ02cBSm1+44VO3jkWl?= =?iso-8859-1?q?jDahRpYs80FgcDcZ3JV8+Ls8crWToO0JOoSn+zSNwGoBiaejX1NlFaHR4dZc?= =?iso-8859-1?q?/W0fxJ8ka+3qKulrLAszxr9RVdYQCEfH2STSDPkpkT8D6FQdJJdrdbNSlOFZ?= =?iso-8859-1?q?o8satuySpQb7pYpKD/+B8+X9sMpmUu376Uac7Wzm4ZpAodbMmm3h6zwYtlMT?= =?iso-8859-1?q?MVOSQwyOTr3cjADUYRsihsMscaHV6E31w69wma/3U587qzyFpKrE0Q7hMrAd?= =?iso-8859-1?q?GnNIu8naNZRaCIymb3i+6LlY5jeQ/5/QCBJgbO0tHFJ+MnEqEv2JoUNIxfU6?= =?iso-8859-1?q?JCvvIL6RuXPpDIkE6ywAh53dTDnD41hQWMlS8cVMqXHH3lm3iYmL840T1H6n?= =?iso-8859-1?q?su2VbxvJR5as08zUUNOVu1tISn3SiBsycUhIPYDeVvPypD+wyHPugSvDlYeJ?= =?iso-8859-1?q?wWw7FXyrFMcFSR0mkObYBBA1QNHE5KxGZH8z1kbJqoQJOVMBdl25CKGbJ/Sa?= =?iso-8859-1?q?CAqxQ5qFHVOsO2qqsYhqci+o676qLRCZTB9QUpeuUO8HBefQ4fMeKufTsVsz?= =?iso-8859-1?q?PBefi1CMH8jfs5LYHJELKDR5ENJ1y/PbPupv0/m+wM1dNOOSPkqfe3R6GwUV?= =?iso-8859-1?q?uda6d05pKEL1q2W0Qg8Ak2qXmMdpeJmIKcLhQ4opyZpo7Ir7N7S85fIpuvci?= =?iso-8859-1?q?1VZ5htzLG1YIZ1HMoGlANk5y3xUrNKfv/D2jhxna1JUUz9KdAIOC8HcWrFB/?= =?iso-8859-1?q?Q9rDfg7WBoC9ph27tsZoMUglHVr/16ZR0Z7QylvTHk50V6EN2nPSUeQT8OFn?= =?iso-8859-1?q?AhSi/sZKm9?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(35042699022)(14060799003)(376014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:17:47.5192 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bada3ee5-30b2-43d0-2d44-08ddef9281a3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF00000048.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7563 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch microblaze to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/microblaze/atomic-machine.h b/sysdeps/microblaze/atomic-machine.h index 4f695c2c9f08af91f58518924370f40982a30d5a..f67d5095fc85990168559a4ba72a08134b0a06d1 100644 --- a/sysdeps/microblaze/atomic-machine.h +++ b/sysdeps/microblaze/atomic-machine.h @@ -19,234 +19,7 @@ #include #define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 - - -/* Microblaze does not have byte and halfword forms of load and reserve and - store conditional. So for microblaze we stub out the 8- and 16-bit forms. */ -#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \ - (abort (), 0) - -#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \ - (abort (), 0) - -#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - int test; \ - __asm __volatile ( \ - " addc r0, r0, r0;" \ - "1: lwx %0, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - " cmp %1, %0, %4;" \ - " bnei %1, 2f;" \ - " swx %5, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - "2:" \ - : "=&r" (__tmp), \ - "=&r" (test), \ - "=m" (*__memp) \ - : "r" (__memp), \ - "r" (oldval), \ - "r" (newval) \ - : "cc", "memory"); \ - __tmp; \ - }) - -#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_compare_and_exchange_val_32_acq (mem, newval, oldval); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_compare_and_exchange_val_64_acq (mem, newval, oldval); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_compare_and_exchange_val_32_acq (mem, newval, oldval); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_compare_and_exchange_val_64_acq (mem, newval, oldval); \ - else \ - abort (); \ - __result; \ - }) - -#define __arch_atomic_exchange_32_acq(mem, value) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - int test; \ - __asm __volatile ( \ - " addc r0, r0, r0;" \ - "1: lwx %0, %4, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - " swx %3, %4, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - : "=&r" (__tmp), \ - "=&r" (test), \ - "=m" (*__memp) \ - : "r" (value), \ - "r" (__memp) \ - : "cc", "memory"); \ - __tmp; \ - }) - -#define __arch_atomic_exchange_64_acq(mem, newval) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_exchange_acq(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_32_acq (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_64_acq (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_exchange_rel(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_32_acq (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_64_acq (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define __arch_atomic_exchange_and_add_32(mem, value) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - int test; \ - __asm __volatile ( \ - " addc r0, r0, r0;" \ - "1: lwx %0, %4, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - " add %1, %3, %0;" \ - " swx %1, %4, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - : "=&r" (__tmp), \ - "=&r" (test), \ - "=m" (*__memp) \ - : "r" (value), \ - "r" (__memp) \ - : "cc", "memory"); \ - __tmp; \ - }) - -#define __arch_atomic_exchange_and_add_64(mem, value) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_exchange_and_add(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_and_add_32 (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_and_add_64 (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define __arch_atomic_increment_val_32(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - int test; \ - __asm __volatile ( \ - " addc r0, r0, r0;" \ - "1: lwx %0, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - " addi %0, %0, 1;" \ - " swx %0, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - : "=&r" (__val), \ - "=&r" (test), \ - "=m" (*mem) \ - : "r" (mem), \ - "m" (*mem) \ - : "cc", "memory"); \ - __val; \ - }) - -#define __arch_atomic_increment_val_64(mem) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_increment_val(mem) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*(mem)) == 4) \ - __result = __arch_atomic_increment_val_32 (mem); \ - else if (sizeof (*(mem)) == 8) \ - __result = __arch_atomic_increment_val_64 (mem); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_increment(mem) ({ atomic_increment_val (mem); (void) 0; }) - -#define __arch_atomic_decrement_val_32(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - int test; \ - __asm __volatile ( \ - " addc r0, r0, r0;" \ - "1: lwx %0, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - " rsubi %0, %0, 1;" \ - " swx %0, %3, r0;" \ - " addic %1, r0, 0;" \ - " bnei %1, 1b;" \ - : "=&r" (__val), \ - "=&r" (test), \ - "=m" (*mem) \ - : "r" (mem), \ - "m" (*mem) \ - : "cc", "memory"); \ - __val; \ - }) - -#define __arch_atomic_decrement_val_64(mem) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_decrement_val(mem) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*(mem)) == 4) \ - __result = __arch_atomic_decrement_val_32 (mem); \ - else if (sizeof (*(mem)) == 8) \ - __result = __arch_atomic_decrement_val_64 (mem); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_decrement(mem) ({ atomic_decrement_val (mem); (void) 0; }) From patchwork Tue Sep 9 11:18:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119837 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 772573858C83 for ; Tue, 9 Sep 2025 11:20:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 772573858C83 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=CaRUaR6Q; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=CaRUaR6Q X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011026.outbound.protection.outlook.com [40.107.130.26]) by sourceware.org (Postfix) with ESMTPS id 775233858C83 for ; Tue, 9 Sep 2025 11:19:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 775233858C83 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 775233858C83 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.130.26 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416765; cv=pass; b=xLHf54H1u6nQu+KIyE5HlJEVETo0gORszZTDT4Ixif9mJXp3sdx3dS3a9iiAebPgrEzC2aYvzV76aQrTJ6u3P9N8O8ch//yCgeB2IcwDOjWuZQe/vssbEf2V9ED8JWzGCXFiVktpqURHT83qDQz+iHNt026hE2km/8375LTi9nc= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416765; c=relaxed/simple; bh=qd9BBXCMZeEL5YWcAY2WfNPx/joPJozJ3hZ4Hz9wgV0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=I69g8x/zQAUsT4BZmVgTWTkIC4R9hGB24KnpEYMT0V7TQnNFpcrHbpRNzhKn0KhFitTg53I0wBWxN6Jny5Ssg1/AI0vA/0swCJE9hdVIgJStHs0fDDrPFUqALIakd5Wv3hwcEvJkYPW8FrLVHveNfaPZrCNIjYfU8ep2nSFmT3U= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 775233858C83 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=pKDeas/MDUY5h8x/sr/DiVItMDWJier8JAIVrmvhBOxYT6i5bdQFr4su1YYK+6r6z6LUgNNlNA1noRvhYqPQJDwxKqTvzV9GrZm+unxpjBBXV8vSp1UNB45zF8gE2zHnmdjtXPreLvSn2kLJsLO94zz/RA1EUgZnCuU5ubtwBA1UmNoGxJey+SOGqMYOsRqYTnPffom19xfkBBctxSO1rKZzhD2Q2T6L0rMrSEI3NcRCbwe92Mr7+bkC1XwkgVGKHrg2KyEgZtkT9uGc0wceXuNJSSq5lvscSECIsDbWPeA+tMmeylw195CSuuwu69IH52aQ9Da6oN+ktu3WvcRW+A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ogeuZ8LeHEdFsv59VyWII0PEAfK0K1v/gFUml3jP2cc=; b=CqzA4N4o8OstcZBGDEc9qXdkmrmTIb6s0pV2DTk4RVN8PP7333jfspjobiTFBqLzOEMyAtgPyzlbTVj+FwvstfJxhCVWtmQq5pjZgXh72h0WDyLCWt2LrtRh7CZCp560Je9ohfjQXQsoIrD1Y63nhk4hsvAhriEVWwg3/sMmqvfLLO6c3rmEA+CXmgiv9d/bxpEoxDmVrmBO7JP6FvYc12C3XCt4QI198AN6gguTFhgZN3tnQZpfcZVc6SFhFX/7Ic+YUKb+EMIp1yB7eLhGLqgRtCrmDjLCXdJZGswF6HF8OJ/7meunjg13WXWSrF+o09u2jfQ+Xg/Mqu+dY90cmg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ogeuZ8LeHEdFsv59VyWII0PEAfK0K1v/gFUml3jP2cc=; b=CaRUaR6Qda7qfzqgqmFYWok7DveCUCZZKZdwQoBNoLJ3JhUY+VuvYS75nmHiY+gsYb4xVQ6Hc01+5yq4Y6N6v2HAc86pORNpl53xo48EensG4g8ICsQdGDCoNuvqkqI4VsPMTGb1/AE8dD0oPTbUZQz3PvBtqrlkiEcDd65s6m0= Received: from DB8PR06CA0038.eurprd06.prod.outlook.com (2603:10a6:10:120::12) by GV1PR08MB8689.eurprd08.prod.outlook.com (2603:10a6:150:82::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:19:17 +0000 Received: from DB1PEPF000509F8.eurprd02.prod.outlook.com (2603:10a6:10:120:cafe::b9) by DB8PR06CA0038.outlook.office365.com (2603:10a6:10:120::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.23 via Frontend Transport; Tue, 9 Sep 2025 11:19:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509F8.mail.protection.outlook.com (10.167.242.154) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:19:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bxWVnsRT3cmcT8fGJ6DjPtIUuUPxYr4bRaQ0qFmfQaCsjIB+d3l6/ROxtPFwd5fnrUe/gGmUGAU2s3/oCtS5cmWPn/uhlDExc5K8/s4jMLQixOfxdZ1NS8l1rnyaNGt53LXVDfU8NtmOYA5DnKAO5wcTdiQY09xp4Q15+sh6Z9LtIhOHrOO+58eMS8JOj7qWJNkjy7uQOjjwkj5YdEgZzVzbLe4Yeku/dsYs7zV92S+FRhoUI9mzafbXHkrtpY6sF1yuAba+plABRI/qQ/YB+FIV48YcmfK7YpkQpnJV/AwG+kldQj5phtLt8Ov8Z0IlPWxWzdcxkwERVy5Kk48v1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ogeuZ8LeHEdFsv59VyWII0PEAfK0K1v/gFUml3jP2cc=; b=W2mtFqMinPprfpFFlXA7Try5lsx8YzzTghgJmHayVf3f4llg7zHV0heGjFoCMl08IM5lRirADnCThueK266CfCJcvzI8xVxc+U7xWbDN0dzhHlPOH+2vzyYKN6+LWYtMDywZK+xwDIzXfwTwL1MUdzfcqgqWHuQGUa64hUvCUp9EY6Rv8Acus+WOjsgwEVALM/z+w16NeXtkFl07QWZ6YzWTX8IUiLws3hx6XsR/3j4+zCWcugtdcA1w0XpictYbNoLQBUremeOhWjQNUVnnStmJixTG31D3167iAujkTPChHwEXg3cjt9gihw0sTx2s7cWsplRpKlRYK2y6uCETbw== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ogeuZ8LeHEdFsv59VyWII0PEAfK0K1v/gFUml3jP2cc=; b=CaRUaR6Qda7qfzqgqmFYWok7DveCUCZZKZdwQoBNoLJ3JhUY+VuvYS75nmHiY+gsYb4xVQ6Hc01+5yq4Y6N6v2HAc86pORNpl53xo48EensG4g8ICsQdGDCoNuvqkqI4VsPMTGb1/AE8dD0oPTbUZQz3PvBtqrlkiEcDd65s6m0= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by VI1PR08MB5472.eurprd08.prod.outlook.com (2603:10a6:803:13b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:18:39 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:18:39 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 5/8] atomic: Switch sh to builtin atomics Thread-Topic: [PATCH 5/8] atomic: Switch sh to builtin atomics Thread-Index: AQHcIXtcDcmyEmFt4EeUl1+cv/Eztg== Date: Tue, 9 Sep 2025 11:18:39 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|VI1PR08MB5472:EE_|DB1PEPF000509F8:EE_|GV1PR08MB8689:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b10eb91-3d59-44ee-73ee-08ddef92b692 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?PykCM9s4S58mCWFQw?= =?iso-8859-1?q?nSaLA2vAWbKf8udineRSwPm39ediO7OWDWw0BddXo9LLR/XaoCxYYMUoh8zL?= =?iso-8859-1?q?RG+aa+7yxK9bxxTIevFHO5wW965OwH88pnaxMZsco/jAptoRdp21DOdaWMvu?= =?iso-8859-1?q?YFYjFXprlH1r+nC1jUS17V74cimV5Q7cpmozfX3WwALipsL3uKHnf8IRgwJF?= =?iso-8859-1?q?GZtMssouJ+fE2h5TaGNb5kpSgcrkqrvlmv1hLgAzk8drfxz3WJHpgH3WJHlH?= =?iso-8859-1?q?hUvIfBw40h7vbsWh8FuXyWcZDRfww7scLIbpNxU3jaA58Tdf2mHbRMadwEN/?= =?iso-8859-1?q?MGgKZOMqPZM4q30W5iJ1aJB6c4Vku+5g49TPLKN4CeukojetbGvI0xnD77xL?= =?iso-8859-1?q?jN2OAs7f4AIu+KJ5yVbpwek4pMUsOeT47cU8Xchm3/Wbfxzfwqq4dd/q+YZi?= =?iso-8859-1?q?mSjw94EpbONJsxhT7kKEVp4y5wdzuS0UkC8pfsc5vDibse8atlVJTINIAibQ?= =?iso-8859-1?q?ZfWvkm6cOvdhRWELw4ynr8pPK3/+JEx4BZZKFDja8dBt/9dRgOQgTPKP+uvK?= =?iso-8859-1?q?COZP+VdJhlX9MUJxMg2yDJFGEjLf8hTc+cZ0awvcGUyn0WQQg7bBFWKSVFeS?= =?iso-8859-1?q?VAG5fesbxn//oQb0GM8k1kca5XmQ4yrETOilUDhn3tz3X23er76pYZbKK1jH?= =?iso-8859-1?q?tbzJcMIgkltePfyJx+Tp0/dzb8HRp7A3LeKqtgOFzHDGzrLXLTITFqHSb0ZW?= =?iso-8859-1?q?q4KFNBCZp8NZ3rxWdMlgFA9TzmoulRdKdsJiIb36ymEL6yGSS3YgFae9jZFw?= =?iso-8859-1?q?SSYILQYd98AOyCKaakBRrIbdL3CRhufyO6bxlU3GYf6Zanxvsy5pN8jipOwJ?= =?iso-8859-1?q?n3QfTrEcJWxmn14YfJEPW/wqEd9VxTIpNm1fR88UxJ2jwCFqjto+67zVQoiz?= =?iso-8859-1?q?jD/2t7mex+OJjFt7/KgxR0T3wonE21xlQKhqZEUFLCjRs2GEN7Ba7pMnPQWM?= =?iso-8859-1?q?h/j7o9sScRuncYCtXFapXIE92kxVHYBz6c3QVz2ceNQk+CCOp81bH6SE1B09?= =?iso-8859-1?q?Ifv8fCXeZ3p66T5wVfSxt0j6G9loLfomLZGbCXc7Q+OnuUErnONJoWQ950ss?= =?iso-8859-1?q?MaA0rvTgVcuz58Wj/RTHWu3D0QPu1d1MmIp5qt3vTNZM19ZbVQPtGVxxuAjQ?= =?iso-8859-1?q?CwzDq6YtSdPluwLyMmxFxgBWiS1xMOghzg9a8EjaPyEQGywSstpVFheo+7Jg?= =?iso-8859-1?q?siOIi1Zt5IXiBO4uROar4BqAdDbepUs6yvWwURmd9b/N2COU/O6/QT9jgti5?= =?iso-8859-1?q?AXk+S3HRUtJxayvx/45XfTSFl78F/rVYuYa5i0DL8cz+eYdD1eq8byAnrkti?= =?iso-8859-1?q?c2veq1Nujh4ZHewBhqykHw5fHSlYiWAAjdiUeDh+9Eovr9aA3vPIWvQkPy+a?= =?iso-8859-1?q?VJ+/NJESkCrpQnEEpMEcxa5eKUT3fDiYWrsAdvOOI0d5dgdBLDREdc=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5472 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F8.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f27bf232-c112-439e-2264-08ddef92a063 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|35042699022|36860700013|82310400026|14060799003; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?XMlvWyokoVO0j1QcBlTu10UI/W?= =?iso-8859-1?q?PH7t49PI9Rl1GnqEqmp6AmEhVlTRdKMYFNmspSeYZTebXwUYFAceR8tQgZNK?= =?iso-8859-1?q?khBgXdWJ+smDvsihv7Jcc/fzGfORvTMRx2MZlPiJy6efVY8glCOPJAmNfiWq?= =?iso-8859-1?q?OsDx0Jg4ZBFAk3rRgCc0iKlkw6j5/wFJ64i+AbA5ualMlXUpdytNpqclc5y6?= =?iso-8859-1?q?sVRy2JTmV6s/bGEyoao0Y0tLpd+VbERa4X30oqqE3MwqjVdoiqyYyE2w9BB1?= =?iso-8859-1?q?m3zlXpmZYYaeYfWJ7JXwaYR324A0f9EiYPwnkw32zNvxJIhsH1FNA6jBELYD?= =?iso-8859-1?q?2Lj0tMaAyXktQGq8w4IiekbwRONTpsaYbwh80R/GvDCPB3CUuuiiDsx02rR2?= =?iso-8859-1?q?9iSiLohSku2EpI6TL9VbVKCEIb8SVNjJP9LwUluJ2JI+9q3C0qHSGhxRvyqZ?= =?iso-8859-1?q?rQSp0HpKlsCoisL8EFdqoa9MIX9PWWxJWa+XOiFGyuFYZmtO2j9PPJf3J1CD?= =?iso-8859-1?q?L2V6DRAVRRuA5H3Stpe9J5JQsMZP4AMsfZSzRY19FKWVB4UFeBPZG67BHCdx?= =?iso-8859-1?q?14e+SF9hDn9snW0TLtVN7yhgQ06TZjyekfD3sqDR3jmzHz+4Ts0pd+O9lgUX?= =?iso-8859-1?q?4Vz6en1OGuu4UMaXyFbc5TzulvoMLWhvVm0mXGiUO+0pThZmEJmvYegDeBUz?= =?iso-8859-1?q?1/9R3kojFYHvlcDaCXjzvKuzfwmxhIYS2lud1MxzoLuvDyDLp2xKJPqHXly1?= =?iso-8859-1?q?sqjtjJFcI7+cOJOz54RiPcA4uHnnDH2GvdEx2+W7sDxwj7ONlK2SQAKS/3dr?= =?iso-8859-1?q?54idl2LjDSW64aonNJWKc+a7WQ43qlPRrFpMOb0BuzQJULFgp1JdCYS5UPxe?= =?iso-8859-1?q?tG1Zzj8OgS1gwVJE782SXpK0/mchjghgvkMaskL2Ft0OD4r9CxmRm3mlpqnu?= =?iso-8859-1?q?vnl1sM+8J7SUsJeJW7eaIs0pYmG1aRtonOUOCW0MXfjnXGX5J1isXqGdZRgM?= =?iso-8859-1?q?8Us1kaY1KcoDpBe2X9ruvFxjQphNqbw8xjN1GbH0AEUHpkL3mgsHadgTR50V?= =?iso-8859-1?q?ihb+IGFFGEYrWMa0vy/NYXfx+Sj09T49raOQroz4R/vy5W0VEhBKfPZPLq1C?= =?iso-8859-1?q?4ppg4kAa4A1Qm5ypooyKPhOX8ctuWycgh2Ht9gBUze31mTD+wWzNim1bwwom?= =?iso-8859-1?q?J33SjnZdlwhwZQdpyj2YDRpMlBcJCwWX61FdXFcMZTpL53sRul3uEwZ1op1K?= =?iso-8859-1?q?J0+U2Grjv7MbhH1K+px3VngMFdZEluBcjxXt6U8wb2cXGehSKHJ5jW15i6vu?= =?iso-8859-1?q?i/Y4l7QO7lzFHy7IOSDCbOpxJH+UXoMrNqzvesuMDsaDK/zXTBOovwsPWRmG?= =?iso-8859-1?q?1NOXd+ZlTgzXm5KaZmHGCpUyRxlTXM/46SiHCfUbJDDjDJCPZ2MWRfjOhNat?= =?iso-8859-1?q?CGgA8HcaJWIeKX2l4A+LM6d2pysyg6UYdlQoqa48FiweAP5Al+GzWfkzZYoh?= =?iso-8859-1?q?cGEtpuEruK5PzkSvOephADHfh9vQ=3D=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(376014)(35042699022)(36860700013)(82310400026)(14060799003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:19:16.3129 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b10eb91-3d59-44ee-73ee-08ddef92b692 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509F8.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8689 X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP, URI_DOTEDU 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch m68k to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/unix/sysv/linux/sh/atomic-machine.h b/sysdeps/unix/sysv/linux/sh/atomic-machine.h index fc37d6d6ce4de66057712ef206b1e907d0d29e40..95d6561bb902c4b4ca3ee726b1bfd098b1d9d018 100644 --- a/sysdeps/unix/sysv/linux/sh/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/sh/atomic-machine.h @@ -17,381 +17,7 @@ . */ #define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 - -/* SH kernel has implemented a gUSA ("g" User Space Atomicity) support - for the user space atomicity. The atomicity macros use this scheme. - - Reference: - Niibe Yutaka, "gUSA: Simple and Efficient User Space Atomicity - Emulation with Little Kernel Modification", Linux Conference 2002, - Japan. http://lc.linux.or.jp/lc2002/papers/niibe0919h.pdf (in - Japanese). - - B.N. Bershad, D. Redell, and J. Ellis, "Fast Mutual Exclusion for - Uniprocessors", Proceedings of the Fifth Architectural Support for - Programming Languages and Operating Systems (ASPLOS), pp. 223-233, - October 1992. http://www.cs.washington.edu/homes/bershad/Papers/Rcs.ps - - SuperH ABI: - r15: -(size of atomic instruction sequence) < 0 - r0: end point - r1: saved stack pointer -*/ - -#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __result; \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%1,%0\n\ - cmp/eq %0,%3\n\ - bf 1f\n\ - mov.b %2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__result) : "u" (mem), "u" (newval), "u" (oldval) \ - : "r0", "r1", "t", "memory"); \ - __result; }) - -#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __result; \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - mov #-8,r15\n\ - 0: mov.w @%1,%0\n\ - cmp/eq %0,%3\n\ - bf 1f\n\ - mov.w %2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__result) : "u" (mem), "u" (newval), "u" (oldval) \ - : "r0", "r1", "t", "memory"); \ - __result; }) - -#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ - ({ __typeof (*(mem)) __result; \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%1,%0\n\ - cmp/eq %0,%3\n\ - bf 1f\n\ - mov.l %2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__result) : "u" (mem), "u" (newval), "u" (oldval) \ - : "r0", "r1", "t", "memory"); \ - __result; }) - -/* XXX We do not really need 64-bit compare-and-exchange. At least - not in the moment. Using it would mean causing portability - problems since not many other 32-bit architectures have support for - such an operation. So don't define any code for now. */ - -# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) - -#define atomic_exchange_and_add(mem, value) \ - ({ __typeof (*(mem)) __result, __tmp, __value = (value); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%2,%0\n\ - mov %1,r2\n\ - add %0,r2\n\ - mov.b r2,@%2\n\ - 1: mov r1,r15"\ - : "=&r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%2,%0\n\ - mov %1,r2\n\ - add %0,r2\n\ - mov.w r2,@%2\n\ - 1: mov r1,r15"\ - : "=&r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%2,%0\n\ - mov %1,r2\n\ - add %0,r2\n\ - mov.l r2,@%2\n\ - 1: mov r1,r15"\ - : "=&r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else \ - { \ - __typeof (mem) memp = (mem); \ - do \ - __result = *memp; \ - while (__arch_compare_and_exchange_val_64_acq \ - (memp, __result + __value, __result) == __result); \ - (void) __value; \ - } \ - __result; }) - -#define atomic_add(mem, value) \ - (void) ({ __typeof (*(mem)) __tmp, __value = (value); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%1,r2\n\ - add %0,r2\n\ - mov.b r2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__tmp) : "u" (mem), "0" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%1,r2\n\ - add %0,r2\n\ - mov.w r2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__tmp) : "u" (mem), "0" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%1,r2\n\ - add %0,r2\n\ - mov.l r2,@%1\n\ - 1: mov r1,r15"\ - : "=&r" (__tmp) : "u" (mem), "0" (__value) \ - : "r0", "r1", "r2", "memory"); \ - else \ - { \ - __typeof (*(mem)) oldval; \ - __typeof (mem) memp = (mem); \ - do \ - oldval = *memp; \ - while (__arch_compare_and_exchange_val_64_acq \ - (memp, oldval + __value, oldval) == oldval); \ - (void) __value; \ - } \ - }) - -#define atomic_add_negative(mem, value) \ - ({ unsigned char __result; \ - __typeof (*(mem)) __tmp, __value = (value); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%2,r2\n\ - add %1,r2\n\ - mov.b r2,@%2\n\ - 1: mov r1,r15\n\ - shal r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%2,r2\n\ - add %1,r2\n\ - mov.w r2,@%2\n\ - 1: mov r1,r15\n\ - shal r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%2,r2\n\ - add %1,r2\n\ - mov.l r2,@%2\n\ - 1: mov r1,r15\n\ - shal r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else \ - abort (); \ - __result; }) - -#define atomic_add_zero(mem, value) \ - ({ unsigned char __result; \ - __typeof (*(mem)) __tmp, __value = (value); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%2,r2\n\ - add %1,r2\n\ - mov.b r2,@%2\n\ - 1: mov r1,r15\n\ - tst r2,r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%2,r2\n\ - add %1,r2\n\ - mov.w r2,@%2\n\ - 1: mov r1,r15\n\ - tst r2,r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%2,r2\n\ - add %1,r2\n\ - mov.l r2,@%2\n\ - 1: mov r1,r15\n\ - tst r2,r2\n\ - movt %0"\ - : "=r" (__result), "=&r" (__tmp) : "u" (mem), "1" (__value) \ - : "r0", "r1", "r2", "t", "memory"); \ - else \ - abort (); \ - __result; }) - -#define atomic_increment_and_test(mem) atomic_add_zero((mem), 1) -#define atomic_decrement_and_test(mem) atomic_add_zero((mem), -1) - -#define atomic_bit_set(mem, bit) \ - (void) ({ unsigned int __mask = 1 << (bit); \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%0,r2\n\ - or %1,r2\n\ - mov.b r2,@%0\n\ - 1: mov r1,r15"\ - : : "u" (mem), "u" (__mask) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%0,r2\n\ - or %1,r2\n\ - mov.w r2,@%0\n\ - 1: mov r1,r15"\ - : : "u" (mem), "u" (__mask) \ - : "r0", "r1", "r2", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - mov r15,r1\n\ - .align 2\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%0,r2\n\ - or %1,r2\n\ - mov.l r2,@%0\n\ - 1: mov r1,r15"\ - : : "u" (mem), "u" (__mask) \ - : "r0", "r1", "r2", "memory"); \ - else \ - abort (); \ - }) - -#define atomic_bit_test_set(mem, bit) \ - ({ unsigned int __mask = 1 << (bit); \ - unsigned int __result = __mask; \ - if (sizeof (*(mem)) == 1) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.b @%2,r2\n\ - mov r2,r3\n\ - or %1,r2\n\ - mov.b r2,@%2\n\ - 1: mov r1,r15\n\ - and r3,%0"\ - : "=&r" (__result), "=&r" (__mask) \ - : "u" (mem), "0" (__result), "1" (__mask) \ - : "r0", "r1", "r2", "r3", "memory"); \ - else if (sizeof (*(mem)) == 2) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.w @%2,r2\n\ - mov r2,r3\n\ - or %1,r2\n\ - mov.w %1,@%2\n\ - 1: mov r1,r15\n\ - and r3,%0"\ - : "=&r" (__result), "=&r" (__mask) \ - : "u" (mem), "0" (__result), "1" (__mask) \ - : "r0", "r1", "r2", "r3", "memory"); \ - else if (sizeof (*(mem)) == 4) \ - __asm __volatile ("\ - mova 1f,r0\n\ - .align 2\n\ - mov r15,r1\n\ - mov #(0f-1f),r15\n\ - 0: mov.l @%2,r2\n\ - mov r2,r3\n\ - or r2,%1\n\ - mov.l %1,@%2\n\ - 1: mov r1,r15\n\ - and r3,%0"\ - : "=&r" (__result), "=&r" (__mask) \ - : "u" (mem), "0" (__result), "1" (__mask) \ - : "r0", "r1", "r2", "r3", "memory"); \ - else \ - abort (); \ - __result; }) From patchwork Tue Sep 9 11:19:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119838 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AACB93858407 for ; Tue, 9 Sep 2025 11:22:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AACB93858407 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ao6pbdkz; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ao6pbdkz X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011053.outbound.protection.outlook.com [40.107.130.53]) by sourceware.org (Postfix) with ESMTPS id 2A65F3858CB6 for ; Tue, 9 Sep 2025 11:20:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2A65F3858CB6 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 2A65F3858CB6 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.130.53 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416838; cv=pass; b=R6se6Gh9tpEi/2JEPeELhw9ronl9HU/0P8iaS+/Ed+0GLPnwQqKEIQKbrgYRuQokfEZqWqr4/bwNz7CnhLH0YioCnCeriPfp85aASMCOcm7PJMaFohcv60o0mJZ6dtiIJUbxYlxsMvvEhTlKNnG/LPYDcvdmG0p10ieloJiWpJ0= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416838; c=relaxed/simple; bh=rue7Y4t2Wd67YqC4vLKNzOQPgi/3ZwMlbcP07TWK54s=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=WqhL9vyanOEJAqgrwe0E/wxboc2lGbaYwT5QyHDmUB0IEOJO99VYJB3gqFE8tP6gF2zCY59ltuZJb+8zwahZE5Gf9KVvWvj8RPi4BFecc1Y8ss/x0zKVjE3GdfI43QrBsMmXsNFd1/Q851XuPqnZ8lr7Bn8jb20Bh9I7UAul+X8= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2A65F3858CB6 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Px7ThLTY502R7OBwvBgg51ybbef4LpSrzFKUCZinwtIhHObaE3Vvqp9mihFPe9rRhOG7zeolyXDUFEkPvxmn3Qiw68pvP4dikblkmsPMN4WHZZdyUv1o6sE28Gv5BL0XqgbLaT952HELtSUpr+lA7zL1OSCFGcXrUD9NCWvdotCtlsJMgbRFSTmzvZjjyRmZjDvgwjvbFTnXP3n8VzvKctchXMOFA0tpZHX0DJ9do7PXHY/FJ7HfmmMuhQxLyOLguEnfZ9dI4xOFnq3WKm0ZoHZYT1emLfwPRPFr4rvVxHzyi5S9fi9/hZHQiviNr9Pa3isUmPpIg5P2szOcpbU9Ng== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=LJRPToRDVk9Bu+SGRlPb/Za0JFje7AL+Yx+yLdX62lY=; b=n++dGcaI9FqxxeL4xpV5RjpiqBg8ku4vcCm29enh/TsSX/MjqDaPsf3y78SqBz4Zh7oKdvFy7rLMdXtFU3AeLkhOrNgsMXTxfqJ2PbxEwnFeuzjsMaL1DKiJrn4HNT11MCoQwpLzpKKiwm7BcHMQ50FSNXimw2mVWaFyHjSVGb7QzFfGgh6MwEbz4Yycgv8I7W91kFwmCZXsiPpQZh52XpYvnOOAHn2yFf+SqYoy2xnNAJgbUpSAT//gV++0lsmyDm0+lgg+9Ea5iN+yRDgOmabFb0iL/aOYeC1CPocEezivt4vJL1mO5hH6oI3u3VgRYZd6ZATpMQnTkONfGo8WbQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LJRPToRDVk9Bu+SGRlPb/Za0JFje7AL+Yx+yLdX62lY=; b=ao6pbdkzjTNPnNHmzoHAdb+oiDRl90AlKnDfuZkV5+JYL9ygRdok0CKIbDb/XOoZ+9MAJg/F4bFKjeQjb46qu94DHH7kvkbLtbubab5NcbYniGSOgTo8a/OC8xN9AD7kaRmI4WZxw90JxeBDJKEXPjZ5XXRGtsxaPTlPh2x8cEU= Received: from AS4P190CA0008.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::14) by PA4PR08MB6319.eurprd08.prod.outlook.com (2603:10a6:102:e8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:20:31 +0000 Received: from AMS0EPF00000194.eurprd05.prod.outlook.com (2603:10a6:20b:5de:cafe::a) by AS4P190CA0008.outlook.office365.com (2603:10a6:20b:5de::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.15 via Frontend Transport; Tue, 9 Sep 2025 11:20:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF00000194.mail.protection.outlook.com (10.167.16.214) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:20:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=d98/L9pRxDP2iW6A401F6ZvI4ZhXsLfs/0voustft0knC0LOgPIKM9iFYKHHk/jqZrgzbIVj+rR43btRliyAeARvA+gz4sWCFe2QuziOYpl3J96wY6NFrsI0e8+Wd1i5+MwaKR67Hn2O8H75rR59gagtHoSUapMM8X9bMWSXWpoBJ0ddZH4jaHNBKtrHnx+kYtz9EHG0StgsGdFWEdyBFFDq0AK1OI/+9kyYP8W+LevfOM5+unv2+IfuWYtMLDlI8/l8AKRADFW3TQbfg22oYlEuUpwqCypfr9w9JLvDabmA5u7Ssx3FoFg4g9x8uVM5qAzjbCNK5Q85M+QrpoxLzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=LJRPToRDVk9Bu+SGRlPb/Za0JFje7AL+Yx+yLdX62lY=; b=rMpuptgls0ykJVHLn39AjqQCcF3IlkQWE7L62Zd/v/0VeOuFddAeZOgLojZSgkn0/Ume8MSuyOF7jDU8oQKg4RkbQfOjNgccqZkUvmkPFY6eNZ6cPY4HAMjh/v4ePyn2Nd1pt6jbTp2/YPKoX4jRjlLDFGtkgfFksmDUs79IkJaaUoiVsXdinQoAthqDVpjhzd3ttzcuOqoR5fhGPvMMMcaZDA0OmaNyhzhvu0U8SLwyFPG3yb+fFcBKrm1dbPz6uPw7Nhs59u8e5qsyE8iLmfbGCQ1Ep6MEeeuOAHFiq7oYVfaciXOKrUf+Qh3S+/cx+MDzGcxPuW9ulJY4YU+U1w== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LJRPToRDVk9Bu+SGRlPb/Za0JFje7AL+Yx+yLdX62lY=; b=ao6pbdkzjTNPnNHmzoHAdb+oiDRl90AlKnDfuZkV5+JYL9ygRdok0CKIbDb/XOoZ+9MAJg/F4bFKjeQjb46qu94DHH7kvkbLtbubab5NcbYniGSOgTo8a/OC8xN9AD7kaRmI4WZxw90JxeBDJKEXPjZ5XXRGtsxaPTlPh2x8cEU= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by VI1PR08MB5472.eurprd08.prod.outlook.com (2603:10a6:803:13b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:19:59 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:19:58 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 6/8] atomic: Switch hppa to builtin atomics Thread-Topic: [PATCH 6/8] atomic: Switch hppa to builtin atomics Thread-Index: AQHcIXuIIUBaeYJkb0WwkzSXNHhMIA== Date: Tue, 9 Sep 2025 11:19:58 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|VI1PR08MB5472:EE_|AMS0EPF00000194:EE_|PA4PR08MB6319:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a820e75-7d97-42a1-f28a-08ddef92e341 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?fXuYqqr3lnU1oGjrS?= =?iso-8859-1?q?/iiSLC9z8cTVlWq1PDj7EkcDJqSPrhXPOqQr6JyZFNVN3qzTA3wpmjOHeUTj?= =?iso-8859-1?q?5zwqpTImKrkMpQO4Fy5u4oRmWhL5dh9yQdwYuRHID/VjdBF3yBIQeii86b+M?= =?iso-8859-1?q?oYHfAZHdP8W2mFgktYNct6oeJXr8nkkJh8Z+ld9moxnH5q6UtVHalDdSdRGi?= =?iso-8859-1?q?3CuUmJg7EOHiryLhPSYLRxDQuFYVmCbHsoYn69LLraPIw+hzTp6B57qkJKOn?= =?iso-8859-1?q?N+bfJMd58OKQ/l101MuCIi6u7jGPp//Iqfyielw0ojXaQgfxuCqYuP81dH1O?= =?iso-8859-1?q?tnFUIP6w4mxDtIw8O8jNVSuOXKVGZWYTryhrNdEJAKnSDqahmkqz2k0XhV+T?= =?iso-8859-1?q?P1YT0DU2jpRUTX1hbQzaS+kONxZUltrc3Xs/I39Ng99aNCy1hFR0/xYMMmUv?= =?iso-8859-1?q?To061Qf9Va8SjJnvmIlqdpYxEcSr3qfMsDuJRFLIgxyls07EEEVLEV/Ntp3s?= =?iso-8859-1?q?g3gWSIb/1AvaEhpPOovRjXojcX0XsyvAxn5MQCoJH22cUubaRGJJhnz4w18f?= =?iso-8859-1?q?WXxK1gnl52FoNCpo8sb4syDLlhWPp4D0iSoUyoZWf9+QtmkLvvvwTAYuKT6D?= =?iso-8859-1?q?kot0ATHy5buFKwV7J+9nMeWZVjjaxOQT1/J+qFPNgqi3A7T28P3B2OMP7McT?= =?iso-8859-1?q?HqFhjgeR1c2pgBQMLFva/Rh11LlbVG1k52EFH4inPnexWVciD9srNpFfmlAz?= =?iso-8859-1?q?L7Ny23yPCLvqvL71GfBv7bWgYee3LFDDQ3rQtlMcZW2ZYOrI9yS5ZnvJEB8n?= =?iso-8859-1?q?QJmiHHFUP4OWayxicGzx08BRNMlSn2hgxXe5oJrN2D0G2EqTwA8ejt8h7iND?= =?iso-8859-1?q?1tuMzMYATP9WkeGV5phUNtFYNRO3tZdoM83y6dZKFzB3Qg9EStnFisHMUGTy?= =?iso-8859-1?q?FAYb7poYLeTL4KNpNHpjDb8cGNitaTVlwzJGCnvfxER7WfBqaVgAxKgGlU0H?= =?iso-8859-1?q?4SAZfZrjGMMxvGtZtTA7xuy6gk89pYemRvAJcsEZTTn6JzeuVAZmMCm5Vtep?= =?iso-8859-1?q?pno0Crzt0B51fVWE2cykES5PM/EZ7bQhMC2730vHkJ4BRkJHfXX8u5vthTZ7?= =?iso-8859-1?q?Lh+TFlMfNGiOtoKoAQB5g/5WbbrF1ZPOD2Yao5wUbpNA4x646qPFsrOOzAE0?= =?iso-8859-1?q?79dci1LwdMsde6BHzUHbUuaVJZFzKwrbIMTd3Cq/sf1WC1gOjLeOdCp3MhPN?= =?iso-8859-1?q?dz7ShoSwSddfsNSQKZVWxJy+jDzOkZgR03y/3Gx2Z83CZwtyN6qQcRk87VDo?= =?iso-8859-1?q?rQOQcZHEjprKc214ZaaYyuWCSnYoNwDdgN3qofNmcBRsec6sldKP+jWUiZn7?= =?iso-8859-1?q?9w2NmEH/bjmIva7LN19DuuM72SIyP3CHqQvtgtah1T+kt2tyFgheDU+4NwVq?= =?iso-8859-1?q?o6kSf42XOE/zC4UyextrNHa15A3bWG/Z8C3+SL2oD+xfDkNyagL2Mk5Ozk9U?= =?iso-8859-1?q?iUEnlWinlLhxZANZM+PdlHK+dpq/YdO5cRdrA=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5472 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF00000194.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4d048610-b265-455f-b4bc-08ddef92cfe9 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|35042699022|1800799024|14060799003|36860700013; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?dd+54WJaA6oj0/LgBMy25Uek68?= =?iso-8859-1?q?G8AmLUXpE0TVTBr6dgLQllWHx3Rfie5ZTWKfPIWpKALtKE7BF6pIBFKjgkxv?= =?iso-8859-1?q?Ss43wAoUbDA1NVMjj7oUxv19pqecotdrpBq0lyc56dtRuyr5T+dWz+F9g1mg?= =?iso-8859-1?q?YSpW90gjuds31DpmJwXYc3y1A8TCF0gttgq+FXxCRBmWJFBRi4kXgy7e/eYB?= =?iso-8859-1?q?NkK2Yw0NalEgLaJjxmLp4QZ8/aPi8DMWAxBaNtFuhBGPLCcvRD0g4jPKb865?= =?iso-8859-1?q?efsXcX6btd0aRaGZyEGGvvQ47Cepui6f/Y/kI64I+WluraipoqNQmUSal3vY?= =?iso-8859-1?q?gNQiYl0oNb2L3JFNn2cZSHkHFikVi1pKZzS5LVLRjY201Q+5YQ2uq6j0kpvG?= =?iso-8859-1?q?n248fodFtDOLsa4CEnRpecEhaRDffHuWk1gtoawZC0ToBfzI8+B2MqIZAZXN?= =?iso-8859-1?q?PMTAOKE5aWvRccqWpstgxBIaOo/CZGhbl7HdnLLmxPFDbjdP6SH0C16YaPhK?= =?iso-8859-1?q?OQxAkDiMv4jz3utFwW4GMY6JZdlXOUW0KSdXAAR1ov5pC/2mQ+sErD/UZiBk?= =?iso-8859-1?q?aBtcYI3XpARbFYoDrx14skaVLAruozlhFrl528sX1w5oMTdfyJ4p5h1eP1El?= =?iso-8859-1?q?a3i/7XkV2mxjsOgdCkai/t5qgoeK5vCZnYlo1byqdIbAsOHWVVqfO2PFKCsO?= =?iso-8859-1?q?O2VfIB0buYtkgrAwGlQCz6O08hxjAYSbjeORdxc2mHL1MuscFCY8/P733rfp?= =?iso-8859-1?q?aS9yG+Ihbw4sQA/lbo3p9z2tcXLL6ap8MvOa60CamE3Uj5PaU5yDzSkKA5Jx?= =?iso-8859-1?q?E/2m7Kk/J/g6OJsdZnnoScLK20KPPt5+zjlnO0dildyJ43A5sEHYSwoErwih?= =?iso-8859-1?q?z4PYvPrw2daXd8JeXL/EdqvCc7KOSEQ2D+skNT/BWjCFW0nkfImvGT7UCUSF?= =?iso-8859-1?q?iqbT6lQd7HQzF9bcKwGDJr7c/LtfFBTr34bau0ytLsoaH/41C3DY1DQswrL2?= =?iso-8859-1?q?xf9M72lrpxIPYWSoE5pb+b/Lfwkfl57wpIJiHCPhapnfwnx3y1cSfPF3Ou/2?= =?iso-8859-1?q?hRJ9W1W6idZ0bcPLxPoNWawhKf9wP9DPM3KYkYb1OWYYGrUP0W9gVNG7y/99?= =?iso-8859-1?q?tXpBV4clV08P7jA8BqJ3WsDZ9yzDnl6zM7BZrcYyY9AwPqvCZySnx7U1o4yR?= =?iso-8859-1?q?yb2272iJOvggMZP++5pFsJavh5h7UF4k/hB8uoPkrDtZCb6A5jjb5N2Io1Rq?= =?iso-8859-1?q?T89wV/CJCNckHqSt4jJmfmKSXu5IOJZ+a4vjkNQSRix/DBslGV2s84boXhsu?= =?iso-8859-1?q?kf/+IzBhNU4ocv0WuyhSyYK8MY6yA4M4Qrjx2WnJHxTIGW4RWtDYsrNqy92i?= =?iso-8859-1?q?2oebDruycN8CGhpCVDDelTHe6L8+VbcvGh3N9XIubVn9GvlIC31ADMeCzV+T?= =?iso-8859-1?q?3Cps2H77qe7JYEaqp6UPUiKEzz4It5s1TEhqNdmDbk7aWQyeL2x67adviWn+?= =?iso-8859-1?q?NAs5N+k6oEFvDnO4/2fS1oQVbJbpnf9qNYnnbEL3YimWIXADt1bK0wvBfnKW?= =?iso-8859-1?q?Fn05VjHd2r?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(35042699022)(1800799024)(14060799003)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:20:31.3147 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4a820e75-7d97-42a1-f28a-08ddef92e341 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000194.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6319 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch hppa to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/unix/sysv/linux/hppa/atomic-machine.h b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h index 85b820ddd629e87b29a184ac66eb76e90968528a..0e2f6e441e027affa12aa94e909e5a48ec967ad3 100644 --- a/sysdeps/unix/sysv/linux/hppa/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h @@ -21,84 +21,9 @@ #define atomic_full_barrier() __sync_synchronize () #define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 - -/* We use the compiler atomic load and store builtins as the generic - defines are not atomic. In particular, we need to use compare and - exchange for stores as the implementation is synthesized. */ -void __atomic_link_error (void); -#define __atomic_check_size_ls(mem) \ - if ((sizeof (*mem) != 1) && (sizeof (*mem) != 2) && sizeof (*mem) != 4) \ - __atomic_link_error (); - -#define atomic_load_relaxed(mem) \ - ({ __atomic_check_size_ls((mem)); \ - __atomic_load_n ((mem), __ATOMIC_RELAXED); }) -#define atomic_load_acquire(mem) \ - ({ __atomic_check_size_ls((mem)); \ - __atomic_load_n ((mem), __ATOMIC_ACQUIRE); }) - -#define atomic_store_relaxed(mem, val) \ - do { \ - __atomic_check_size_ls((mem)); \ - __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); \ - } while (0) -#define atomic_store_release(mem, val) \ - do { \ - __atomic_check_size_ls((mem)); \ - __atomic_store_n ((mem), (val), __ATOMIC_RELEASE); \ - } while (0) +#define USE_ATOMIC_COMPILER_BUILTINS 1 /* XXX Is this actually correct? */ #define ATOMIC_EXCHANGE_USES_CAS 1 -/* prev = *addr; - if (prev == old) - *addr = new; - return prev; */ - -/* Use the kernel atomic light weight syscalls on hppa. */ -#define _LWS "0xb0" -#define _LWS_CAS "0" -/* Note r31 is the link register. */ -#define _LWS_CLOBBER "r1", "r23", "r22", "r20", "r31", "memory" -/* String constant for -EAGAIN. */ -#define _ASM_EAGAIN "-11" -/* String constant for -EDEADLOCK. */ -#define _ASM_EDEADLOCK "-45" - -/* The only basic operation needed is compare and exchange. The mem - pointer must be word aligned. We no longer loop on deadlock. */ -#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ - ({ \ - register long lws_errno asm("r21"); \ - register unsigned long lws_ret asm("r28"); \ - register unsigned long lws_mem asm("r26") = (unsigned long)(mem); \ - register unsigned long lws_old asm("r25") = (unsigned long)(oldval);\ - register unsigned long lws_new asm("r24") = (unsigned long)(newval);\ - __asm__ __volatile__( \ - "0: \n\t" \ - "ble " _LWS "(%%sr2, %%r0) \n\t" \ - "ldi " _LWS_CAS ", %%r20 \n\t" \ - "cmpiclr,<> " _ASM_EAGAIN ", %%r21, %%r0\n\t" \ - "b,n 0b \n\t" \ - "cmpclr,= %%r0, %%r21, %%r0 \n\t" \ - "iitlbp %%r0,(%%sr0, %%r0) \n\t" \ - : "=r" (lws_ret), "=r" (lws_errno) \ - : "r" (lws_mem), "r" (lws_old), "r" (lws_new) \ - : _LWS_CLOBBER \ - ); \ - \ - (__typeof (oldval)) lws_ret; \ - }) - -#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ - ({ \ - __typeof__ (*mem) ret; \ - ret = atomic_compare_and_exchange_val_acq(mem, newval, oldval); \ - /* Return 1 if it was already acquired. */ \ - (ret != oldval); \ - }) - #endif -/* _ATOMIC_MACHINE_H */ From patchwork Tue Sep 9 11:21:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119839 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5589E3858C53 for ; Tue, 9 Sep 2025 11:23:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5589E3858C53 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=g8TIsKUr; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=g8TIsKUr X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011006.outbound.protection.outlook.com [40.107.130.6]) by sourceware.org (Postfix) with ESMTPS id 057AA3858C54 for ; Tue, 9 Sep 2025 11:22:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 057AA3858C54 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 057AA3858C54 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.130.6 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416927; cv=pass; b=ULsM2fv8eeA+xNeJ1YanRAoJav81lWFSTDEcmUtwSNUqauxl011aekVE02BTKAKBtZtyjZD+AQdnZ+jwlpes7thXuDZZQTfkfIZq8mwFqwlLq0HqbB0mAH6gPC1UKTVP0qsmDiBcndYjlZn02UmkAECIGzZjj0EcQ4icHgkBx8Y= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757416927; c=relaxed/simple; bh=VUiPUN6WYA0yy359LQjo7rf3xNrSAXB8KN9KPdMdT+Q=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Wk6BXNRdtrRwJOla70Fl6AD0BAV8SH/8Kmw9tNEf0QaHVe2pl8ri1ZKaSzQ5taZbK1tCwvUajtxqLESTrUhgGaUtB71GzGAt813mGBx89GEVTTlOoAWSRSsrU91F9yJ3BJ2uJ8s5NP0wcXSMr+Vy1xvlDISIQbuyEG6cIC54lk0= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 057AA3858C54 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=OgkOUX6rbPNjEzz1pfWQbe9tTE7PZrAWtUJ5WfYURdYD2eF2tvLPX1sWc8IQSnwhp+1Yef/YQ9LuVGv3RiAzzcMsbaPqV2nP2SEsYoDf8PVOah13JmHEpLgb9xMFtMNra8yMBNl63caJaG6pP0BzCrlNMfuVB48MVpbvxFV9nWfwzbhlUxGXBqMxZYod6zFyEYLDJBY3ZTMAVWIjT6p0zms3Ka4w7XPYwxk0fJsl+pmZ3c2jDxwDWVUGwIdcLqnrIM86F7bZuRFMJfWtzI8QEv4b08DwTiTObGvr5hFl/hngKTMcjFhBCCqtaEz2g5+deGGTNMv08ur8+HF6U61Pig== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=PadKFIavnLhe7kzaj7RNbg0pAFfZsg2asJV/CA2kzDc=; b=QvuYfSQIEFjz3E4HBxOH+QXGOw3lEWVYD5vF+QZjvdLGCZ3popdTSclOBypIx1WD3Z17SWK9P4DClM27P9OR7/57jHzW3u2M82Qo8yqZNhwp1/gyz/nNGvVR6QtLAvBj864BXxdi55oj0GIp1Ebz0hJ3BEFHXKniYySnQS25Faw6qqeNnLxmQ/AGel4DH58HgllpDBRGKgYNm69HaljC8zuIQTn6nOAOeCGJk5MEXK0BL+bUBjDHQ4IuGiIMHsrqgZfG4GR6KaGQLgt9g+ewC42OIo4jbT5ajamdQAhcQWERV+tXTVR2AKdUljRk1wfK1LrOsLYLGubuAyw3QY0B6g== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PadKFIavnLhe7kzaj7RNbg0pAFfZsg2asJV/CA2kzDc=; b=g8TIsKUrPQdGYAo8Npa4wu1onlJQtZN+u7DKfBszeU3lidCJAm3kdfAIib+4hhDxkWMky1lQJ5/Sn+qHFmnrdrfxTd4GT/PrkzzQ6hdTsi1GYw4SRGvUN5TtqGcAhGs6Gd1ZBToiv2tgHWpiwv8yqBF/zyAPPQ9gMV8Pzxy/7Cg= Received: from AM9P192CA0028.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:21d::33) by AM9PR08MB6722.eurprd08.prod.outlook.com (2603:10a6:20b:302::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:21:59 +0000 Received: from AMS1EPF00000040.eurprd04.prod.outlook.com (2603:10a6:20b:21d:cafe::16) by AM9P192CA0028.outlook.office365.com (2603:10a6:20b:21d::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.23 via Frontend Transport; Tue, 9 Sep 2025 11:21:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF00000040.mail.protection.outlook.com (10.167.16.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:21:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FYMFKR7LCuB9hbBDNBFPuuw6gjZFslpH+/2WCxttUXwgWzCjOHj7851IpjqBXapBsvQy9QSKjpJZ0rX5LE8KAvLlcfCUL/IzvglSCsRG8PCkVn6+qoKUymrssGWoVCyKE578e+RYmWu9r2QqhTjrNPoWuuBQ4XIjAoNovMQkXPrHCrppc3PU+XawzvY7cs13D1Xu1C/IKfpLM6enwqWTZKpbq8O4rtaC6LRMK0L3WGfcsJcqunkZ0/SFDwbFimfFfXJDjWdTa5c2pVkUrg6O7ZlIdOJpLJDygWLeOWuL96ft/RJhGj1+8iOEnFUe+XRKHWtmc5K2Q0PzX/ezB5lKaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=PadKFIavnLhe7kzaj7RNbg0pAFfZsg2asJV/CA2kzDc=; b=Z8amdeFc4cl9Z1/C608R4rDeioUMipEVZ6uGPa+Aya9brstcevZBT0GGvs19dYQFOBDO232ggly1HdIBtsgXvrm9FYt8BU0pw/8X5CfI/CTSowDpxAkcIkbsboB8Ax0ifzT7+JhmlyNS5Qymlae/dMBbAlcqB7A2DLs8B9hFByceo4dFQsaT0AR/GtF3MFiXMitCPwwAe36xXjS0pdnu1WZrU6gxeSf2QBXxm5p2+pOHsU9/9fmHw+Mn26VYFJmDMfWDQpm+T84ZpTmhholyhAEMrmHkkGkl2hXc07OeJRMQ36G3sEpSzfBxLv/fBgXvme6v+2vxqkn8FN43zzLXCg== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PadKFIavnLhe7kzaj7RNbg0pAFfZsg2asJV/CA2kzDc=; b=g8TIsKUrPQdGYAo8Npa4wu1onlJQtZN+u7DKfBszeU3lidCJAm3kdfAIib+4hhDxkWMky1lQJ5/Sn+qHFmnrdrfxTd4GT/PrkzzQ6hdTsi1GYw4SRGvUN5TtqGcAhGs6Gd1ZBToiv2tgHWpiwv8yqBF/zyAPPQ9gMV8Pzxy/7Cg= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by VI1PR08MB5472.eurprd08.prod.outlook.com (2603:10a6:803:13b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:21:22 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:21:22 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 7/8] atomic: Switch power to builtin atomics Thread-Topic: [PATCH 7/8] atomic: Switch power to builtin atomics Thread-Index: AQHcIXu+yM8JYPy6LE++blByWbupOw== Date: Tue, 9 Sep 2025 11:21:22 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|VI1PR08MB5472:EE_|AMS1EPF00000040:EE_|AM9PR08MB6722:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b9cb7be-f6d6-4b04-e425-08ddef931787 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?3VY+G2gHxMHNPSN6A?= =?iso-8859-1?q?aaGAq2Ll/Pp06Dj7Oj6UN24skTB47DKw/30QrCs+oBEfqdB+xzeeha3hc7aW?= =?iso-8859-1?q?LbQZBHfzUIelBshfn1s0hhbNwJZ4+642A78AploE8hhVWZgwkGMHAcaAxFtL?= =?iso-8859-1?q?DoKO2EwM0ERLLehoYsKIZbveS9O3PnSsb5AQ7EOeR0D5u17iUKJuNDrruMN9?= =?iso-8859-1?q?D1yo3KeRq4HWfaoWSnm4N5tG6/7K4A5ksvQ3Lpd3ygwJTb4vpm7Z0JevKNUI?= =?iso-8859-1?q?r7MRLB1FV2GDa61edRzWnsliAUYxQq7EGMGyXuOBhnthSiC6K0ITErTTyVE2?= =?iso-8859-1?q?f3QJQuGYuWQCHrdDF5QK+PRlJxM1o17MIpuVAKSBkbd7Pnm4L73VA/4WblMR?= =?iso-8859-1?q?PO6faWWX4R9wcegBphYRPc8U9WIjEcZIbyK1rkISEAuzjoTbafa3cxTrsDl7?= =?iso-8859-1?q?YtndbSMNozcqlLatV5A6+m9nEiaIheOulGJgyjyhbh8zrjIj/nxUXHVkilpJ?= =?iso-8859-1?q?iQJTTFiIeAzvA2fGPSk6sGqihvc89YiTDiWlFQ3HQUnZvok3u997P4ro2QZ3?= =?iso-8859-1?q?wGWnu170sXGFTqafo67QaPDiQNJfW8aUfUa93kXSg29hn3m8ILC0fSvBQO4x?= =?iso-8859-1?q?/7XU8QTAEDasyNekKnL5RfctnzwdRJQlQgdgP4125UZcTbCbb/8ZciPMLP6v?= =?iso-8859-1?q?SXSZwqtGit6mM1E/15pa74c8LTjwpHgtQsOSIv7H44i+ZdyYK34sSDcOuKbw?= =?iso-8859-1?q?+aOFbR/FfrmJp5GBI16bdXZ7/ElG+G2EafLQOCSdQLpV50LHqgQ0USgbVsdc?= =?iso-8859-1?q?iBpFgaZBLrPuF8xJZvadxx+VlZWudZUJz70xvR+xzbQA6DNRSa37pPFSxXo7?= =?iso-8859-1?q?1p9VQoDByghCXdydx4x6d83Vx64MIwAMfVl2gqG5e2+EjgiN5VZOsXRldPDs?= =?iso-8859-1?q?BS2P7WQi9bmL1jJ62AtRrBnJ/MX5/VaFPFS6g/5wMHoUaSv1/ztPwmkQblnx?= =?iso-8859-1?q?lNUJkbFk61/IB8N5LXLVzvHJnZ8ziZnj9Cg7mI0Nn/pV1KqDluuAI6oeEhlT?= =?iso-8859-1?q?nLKAgPyObE5/q3Rz0Rl0EwNcgAueCDnBxC1watBIxd2G27gGi/tELpyoA1qL?= =?iso-8859-1?q?+eC+Mq81JKwqGXHvKjx9Ce7bmJHxzYBNllIumvK0okRaYVkkTvCnZl/YLtBR?= =?iso-8859-1?q?hjhbkvDojRIRtCXrldTpBhuQWHmCVtMMr0u+awoCvxKKSKWENW7evZTy22Cd?= =?iso-8859-1?q?/o8JmXzxkhvXPTfCPccMEWvzCQEz2ojh8S+bmw9mEBm+2PpeWHdaLP9pbqC1?= =?iso-8859-1?q?orOLyUEkOTKnpy9yyK3LqDLOFS5c8yb+uWem2BYf0fswgIJYmENqJHz5QfUJ?= =?iso-8859-1?q?Yf2QoTSESyc6qpi5erbQFwWCI+RRmBQTe1JAw9z14+jQZguiImXvx2lXaXNj?= =?iso-8859-1?q?a+6Rm1OXQOvC0EXb8fNxGSlwCy5e9Sf8DKB71TXgzvekIDY1fL/sw9T9Biqo?= =?iso-8859-1?q?z7bYIvVtOxLl30DgiyrJm6q7VoAFP2nMfcO8g=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5472 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000040.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c81e813e-ca6c-44f5-1c5d-08ddef9301df X-Microsoft-Antispam: BCL:0; ARA:13230040|35042699022|82310400026|14060799003|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?1YT5OHeYASJNkbmFTMofI2LfgH?= =?iso-8859-1?q?D0/P8mRxYsnKYzHR8TLre/cBT61mDOV9sagSo8bOTahzJlLQpro3CDwQXqIT?= =?iso-8859-1?q?J9dT6GFCsnw6gSVOUjORvELQCJlTWyZV5+c8fVe4XDjCGES2OarfNYV0wDpJ?= =?iso-8859-1?q?VRYYObgsj7QJ2Hwm+4qceI+1mneNuYRcvOETldE0wfTHvyJYEDaOJqF/m8vg?= =?iso-8859-1?q?FKOJCZva/Mt/YvRxbxw+6PO4eZqamsJl6GAWg6aCW2ioCLKD/+Iz2w9E9a24?= =?iso-8859-1?q?YOvTP8urfTgAg/pDBkYQmLJsXkTYvJ8FyjtCDStWNZdJ68nhkxMXthpxyac6?= =?iso-8859-1?q?Hs4ivezYfirDNwkAtHylUCkdBOaQ0HmI2UlNeKKQbJz2WbNB0uho5KNDSC+6?= =?iso-8859-1?q?LihsIiOIGvUSQbs06QQ8pBKqlR4iI5mXYUCMVH4YGoHu505MWJpAKN/H5nUu?= =?iso-8859-1?q?ZWhFWMwnaYO72/BcFXksub++oc4rHuEDwqVXBn7QMNoc5fVDTJsJesKLC1DU?= =?iso-8859-1?q?fwDATQPpk76bB+dkceRhnoArpX8Fo77D/yWBbrYSoGYbiBdNWbMiD/HdhBsL?= =?iso-8859-1?q?PhPgnhQnmhBWyW9qBuLBjSuoLSqcYyaBAIs0A8SXUbtLFRGfHm7bY+Kmqeyk?= =?iso-8859-1?q?5NE6XnvM4wQVfDPsB6+qkukFc8uYJr1Bck8hOPhalmCyCgelnGZHv5fBr9hJ?= =?iso-8859-1?q?F3FmrHNQ/n++grBhSR5MzacytIoLovuNA3cscexa2pCxymvpTP7rPm7wNHeB?= =?iso-8859-1?q?8D+GG99y3gSRc7OdTLCgH4leJinwR6EV4tlBZW6ClTYD4i5GnpWBCAzZoQco?= =?iso-8859-1?q?UV7ouYPCKbmN4UXDVm7QxuZYWAIU/oy4Lh+R15qj8WeUZtjkeiEWaJLhBxpx?= =?iso-8859-1?q?ZX/sCVAJdo7Ie5mBq8wCrVUg/aRZ6/6n1pBvNxy89aLTSdIbrgocF1cuq+5i?= =?iso-8859-1?q?WbS3+NtZK8wrj9hjrDPkytmPcjMwoGhRmrOz7cgS2Dirzr+ZKaKf/pPFn+Mn?= =?iso-8859-1?q?5rO2huA9kz/11T7v2VntVAttXVbIQunzedyuspyuG0RVD1VZENd2csER06pH?= =?iso-8859-1?q?jZP+wwRnOqlhedbJTIlzayjLfZYDox65QkKFObXE5BHd/XJwyUCq80JytAEb?= =?iso-8859-1?q?XE/CoyqczGEUmKbwX+TgqwbhWP7jy59/jqYDEU0QlaUGQSy6pkVkqKv1aJbP?= =?iso-8859-1?q?44uc8ZkzQf3HVNi6Uwiq4yWwENs/7pI14YT0ZOXXjOSTXKj5nYlBiGg9Few3?= =?iso-8859-1?q?UndhBXeGrDNdOHyh9VL4bx2NZTbJ0p6HbxerH0hupL4znfpoSeB8iVY0FT7c?= =?iso-8859-1?q?4iv1smESHgdNJoN6pzLLPIZ02/jDaQy6wRilix+3v+EhBZ3Af0lWtR+1+oAV?= =?iso-8859-1?q?OSYCK5L0caf98cwrs6tKjT3ZyBLmbxtztsZyUrLdFpAtHSFEnx05tX/3H/TZ?= =?iso-8859-1?q?8b/0w50aDy6QTLDtFsylsyBRLU3arLSbygxWVT3oajaQ0736zcHlFxhbaAVC?= =?iso-8859-1?q?vWHMkciSzTQY65JpT7C3MEbsZFavZMeGXYwTDXpjfWoi/WUqulKjKLyaFnbn?= =?iso-8859-1?q?lm53TkjYac?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(35042699022)(82310400026)(14060799003)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:21:58.9967 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b9cb7be-f6d6-4b04-e425-08ddef931787 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF00000040.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6722 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch power to builtin atomics. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/sysdeps/powerpc/atomic-machine.h b/sysdeps/powerpc/atomic-machine.h index f5624572d8bef4baa6b46e893277bfbc1c3511a0..12f4b782222944d10650d8255a01dd2bc4d8ce60 100644 --- a/sysdeps/powerpc/atomic-machine.h +++ b/sysdeps/powerpc/atomic-machine.h @@ -25,16 +25,6 @@ * as appropriate and which in turn include this file. */ -/* - * Powerpc does not have byte and halfword forms of load and reserve and - * store conditional. So for powerpc we stub out the 8- and 16-bit forms. - */ -#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \ - (abort (), 0) - -#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \ - (abort (), 0) - #define __ARCH_ACQ_INSTR "isync" #ifndef __ARCH_REL_INSTR # define __ARCH_REL_INSTR "sync" @@ -49,268 +39,3 @@ #define atomic_full_barrier() __asm ("sync" ::: "memory") -#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - __asm __volatile ( \ - "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \ - " cmpw %0,%2\n" \ - " bne 2f\n" \ - " stwcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&r" (__tmp) \ - : "b" (__memp), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp; \ - }) - -#define __arch_compare_and_exchange_val_32_rel(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \ - " cmpw %0,%2\n" \ - " bne 2f\n" \ - " stwcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " \ - : "=&r" (__tmp) \ - : "b" (__memp), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp; \ - }) - -#define __arch_atomic_exchange_32_acq(mem, value) \ - ({ \ - __typeof (*mem) __val; \ - __asm __volatile ( \ - "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \ - " stwcx. %3,0,%2\n" \ - " bne- 1b\n" \ - " " __ARCH_ACQ_INSTR \ - : "=&r" (__val), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_32_rel(mem, value) \ - ({ \ - __typeof (*mem) __val; \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \ - " stwcx. %3,0,%2\n" \ - " bne- 1b" \ - : "=&r" (__val), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_32(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile ("1: lwarx %0,0,%3\n" \ - " add %1,%0,%4\n" \ - " stwcx. %1,0,%3\n" \ - " bne- 1b" \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_32_acq(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile ("1: lwarx %0,0,%3" MUTEX_HINT_ACQ "\n" \ - " add %1,%0,%4\n" \ - " stwcx. %1,0,%3\n" \ - " bne- 1b\n" \ - __ARCH_ACQ_INSTR \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_32_rel(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: lwarx %0,0,%3" MUTEX_HINT_REL "\n" \ - " add %1,%0,%4\n" \ - " stwcx. %1,0,%3\n" \ - " bne- 1b" \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_increment_val_32(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - __asm __volatile ("1: lwarx %0,0,%2\n" \ - " addi %0,%0,1\n" \ - " stwcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (__val), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_decrement_val_32(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - __asm __volatile ("1: lwarx %0,0,%2\n" \ - " subi %0,%0,1\n" \ - " stwcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (__val), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_decrement_if_positive_32(mem) \ - ({ int __val, __tmp; \ - __asm __volatile ("1: lwarx %0,0,%3\n" \ - " cmpwi 0,%0,0\n" \ - " addi %1,%0,-1\n" \ - " ble 2f\n" \ - " stwcx. %1,0,%3\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_compare_and_exchange_val_32_rel(mem, newval, oldval); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_compare_and_exchange_val_64_rel(mem, newval, oldval); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_exchange_acq(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_32_acq (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_64_acq (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_exchange_rel(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_32_rel (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_64_rel (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_exchange_and_add(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_and_add_32 (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_and_add_64 (mem, value); \ - else \ - abort (); \ - __result; \ - }) -#define atomic_exchange_and_add_acq(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_and_add_32_acq (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_and_add_64_acq (mem, value); \ - else \ - abort (); \ - __result; \ - }) -#define atomic_exchange_and_add_rel(mem, value) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_exchange_and_add_32_rel (mem, value); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_exchange_and_add_64_rel (mem, value); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_increment_val(mem) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*(mem)) == 4) \ - __result = __arch_atomic_increment_val_32 (mem); \ - else if (sizeof (*(mem)) == 8) \ - __result = __arch_atomic_increment_val_64 (mem); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_increment(mem) ({ atomic_increment_val (mem); (void) 0; }) - -#define atomic_decrement_val(mem) \ - ({ \ - __typeof (*(mem)) __result; \ - if (sizeof (*(mem)) == 4) \ - __result = __arch_atomic_decrement_val_32 (mem); \ - else if (sizeof (*(mem)) == 8) \ - __result = __arch_atomic_decrement_val_64 (mem); \ - else \ - abort (); \ - __result; \ - }) - -#define atomic_decrement(mem) ({ atomic_decrement_val (mem); (void) 0; }) - - -/* Decrement *MEM if it is > 0, and return the old value. */ -#define atomic_decrement_if_positive(mem) \ - ({ __typeof (*(mem)) __result; \ - if (sizeof (*mem) == 4) \ - __result = __arch_atomic_decrement_if_positive_32 (mem); \ - else if (sizeof (*mem) == 8) \ - __result = __arch_atomic_decrement_if_positive_64 (mem); \ - else \ - abort (); \ - __result; \ - }) diff --git a/sysdeps/powerpc/powerpc32/atomic-machine.h b/sysdeps/powerpc/powerpc32/atomic-machine.h index 4534f307407d557d011f4c5811d106817fbc03ba..2e9860cb9da5423621dc6da21a5876b4e74e65bb 100644 --- a/sysdeps/powerpc/powerpc32/atomic-machine.h +++ b/sysdeps/powerpc/powerpc32/atomic-machine.h @@ -33,67 +33,9 @@ #endif #define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 #define ATOMIC_EXCHANGE_USES_CAS 1 -/* - * The 32-bit exchange_bool is different on powerpc64 because the subf - * does signed 64-bit arithmetic while the lwarx is 32-bit unsigned - * (a load word and zero (high 32) form). So powerpc64 has a slightly - * different version in sysdeps/powerpc/powerpc64/atomic-machine.h. - */ -#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \ -({ \ - unsigned int __tmp; \ - __asm __volatile ( \ - "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \ - " subf. %0,%2,%0\n" \ - " bne 2f\n" \ - " stwcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&r" (__tmp) \ - : "b" (mem), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp != 0; \ -}) - -/* Powerpc32 processors don't implement the 64-bit (doubleword) forms of - load and reserve (ldarx) and store conditional (stdcx.) instructions. - So for powerpc32 we stub out the 64-bit forms. */ -#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \ - (abort (), 0) - -#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) - -#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) - -#define __arch_atomic_exchange_64_acq(mem, value) \ - ({ abort (); (*mem) = (value); }) - -#define __arch_atomic_exchange_64_rel(mem, value) \ - ({ abort (); (*mem) = (value); }) - -#define __arch_atomic_exchange_and_add_64(mem, value) \ - ({ abort (); (*mem) = (value); }) - -#define __arch_atomic_exchange_and_add_64_acq(mem, value) \ - ({ abort (); (*mem) = (value); }) - -#define __arch_atomic_exchange_and_add_64_rel(mem, value) \ - ({ abort (); (*mem) = (value); }) - -#define __arch_atomic_increment_val_64(mem) \ - ({ abort (); (*mem)++; }) - -#define __arch_atomic_decrement_val_64(mem) \ - ({ abort (); (*mem)--; }) - -#define __arch_atomic_decrement_if_positive_64(mem) \ - ({ abort (); (*mem)--; }) - #ifdef _ARCH_PWR4 /* * Newer powerpc64 processors support the new "light weight" sync (lwsync) diff --git a/sysdeps/powerpc/powerpc64/atomic-machine.h b/sysdeps/powerpc/powerpc64/atomic-machine.h index 3754b55dda0ad554f05ebf9cfdb105bcaabbd89e..9ae48a907d8e71eea0c2b06fd95645893210427e 100644 --- a/sysdeps/powerpc/powerpc64/atomic-machine.h +++ b/sysdeps/powerpc/powerpc64/atomic-machine.h @@ -33,195 +33,9 @@ #endif #define __HAVE_64B_ATOMICS 1 -#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 #define ATOMIC_EXCHANGE_USES_CAS 1 -/* The 32-bit exchange_bool is different on powerpc64 because the subf - does signed 64-bit arithmetic while the lwarx is 32-bit unsigned - (a load word and zero (high 32) form) load. - In powerpc64 register values are 64-bit by default, including oldval. - The value in old val unknown sign extension, lwarx loads the 32-bit - value as unsigned. So we explicitly clear the high 32 bits in oldval. */ -#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \ -({ \ - unsigned int __tmp, __tmp2; \ - __asm __volatile (" clrldi %1,%1,32\n" \ - "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \ - " subf. %0,%1,%0\n" \ - " bne 2f\n" \ - " stwcx. %4,0,%2\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&r" (__tmp), "=r" (__tmp2) \ - : "b" (mem), "1" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp != 0; \ -}) - -/* - * Only powerpc64 processors support Load doubleword and reserve index (ldarx) - * and Store doubleword conditional indexed (stdcx) instructions. So here - * we define the 64-bit forms. - */ -#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \ -({ \ - unsigned long __tmp; \ - __asm __volatile ( \ - "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \ - " subf. %0,%2,%0\n" \ - " bne 2f\n" \ - " stdcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&r" (__tmp) \ - : "b" (mem), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp != 0; \ -}) - -#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - __asm __volatile ( \ - "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \ - " cmpd %0,%2\n" \ - " bne 2f\n" \ - " stdcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&r" (__tmp) \ - : "b" (__memp), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp; \ - }) - -#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \ - ({ \ - __typeof (*(mem)) __tmp; \ - __typeof (mem) __memp = (mem); \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \ - " cmpd %0,%2\n" \ - " bne 2f\n" \ - " stdcx. %3,0,%1\n" \ - " bne- 1b\n" \ - "2: " \ - : "=&r" (__tmp) \ - : "b" (__memp), "r" (oldval), "r" (newval) \ - : "cr0", "memory"); \ - __tmp; \ - }) - -#define __arch_atomic_exchange_64_acq(mem, value) \ - ({ \ - __typeof (*mem) __val; \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \ - " stdcx. %3,0,%2\n" \ - " bne- 1b\n" \ - " " __ARCH_ACQ_INSTR \ - : "=&r" (__val), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_64_rel(mem, value) \ - ({ \ - __typeof (*mem) __val; \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \ - " stdcx. %3,0,%2\n" \ - " bne- 1b" \ - : "=&r" (__val), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_64(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile ("1: ldarx %0,0,%3\n" \ - " add %1,%0,%4\n" \ - " stdcx. %1,0,%3\n" \ - " bne- 1b" \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_64_acq(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile ("1: ldarx %0,0,%3" MUTEX_HINT_ACQ "\n" \ - " add %1,%0,%4\n" \ - " stdcx. %1,0,%3\n" \ - " bne- 1b\n" \ - __ARCH_ACQ_INSTR \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_exchange_and_add_64_rel(mem, value) \ - ({ \ - __typeof (*mem) __val, __tmp; \ - __asm __volatile (__ARCH_REL_INSTR "\n" \ - "1: ldarx %0,0,%3" MUTEX_HINT_REL "\n" \ - " add %1,%0,%4\n" \ - " stdcx. %1,0,%3\n" \ - " bne- 1b" \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "r" (value), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_increment_val_64(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - __asm __volatile ("1: ldarx %0,0,%2\n" \ - " addi %0,%0,1\n" \ - " stdcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (__val), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_decrement_val_64(mem) \ - ({ \ - __typeof (*(mem)) __val; \ - __asm __volatile ("1: ldarx %0,0,%2\n" \ - " subi %0,%0,1\n" \ - " stdcx. %0,0,%2\n" \ - " bne- 1b" \ - : "=&b" (__val), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - -#define __arch_atomic_decrement_if_positive_64(mem) \ - ({ int __val, __tmp; \ - __asm __volatile ("1: ldarx %0,0,%3\n" \ - " cmpdi 0,%0,0\n" \ - " addi %1,%0,-1\n" \ - " ble 2f\n" \ - " stdcx. %1,0,%3\n" \ - " bne- 1b\n" \ - "2: " __ARCH_ACQ_INSTR \ - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \ - : "b" (mem), "m" (*mem) \ - : "cr0", "memory"); \ - __val; \ - }) - /* * All powerpc64 processors support the new "light weight" sync (lwsync). */ From patchwork Tue Sep 9 11:22:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 119840 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 324DB3858D1E for ; Tue, 9 Sep 2025 11:25:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 324DB3858D1E Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ntJ/468W; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ntJ/468W X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::3]) by sourceware.org (Postfix) with ESMTPS id 6D3233858C54 for ; Tue, 9 Sep 2025 11:23:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6D3233858C54 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 6D3233858C54 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::3 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757417017; cv=pass; b=O9ifewpnVliHnM8vUydi6XojxdXVpqtqb/ZOr4YdBmSBzEuaHiWOUjB8NIyzajUi+NYqOraOVUVgZGuiDzgU59H3vnrQqGbbDHrtRH3FRGFu/dq+OyDfD5UJV/63F0T1CMzQegyH43mT5A1INIzwEqYNfapypRb8jUnJgPIBcTg= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1757417017; c=relaxed/simple; bh=eMOth9KU2Tc6NrW59XYGIAElnHrTesjggUe03Qv8gGs=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=rSAI6hfcmeMxr/YwnRrnt2Qsi0Bd/8PYJPUNyi8fm7pqA5pYwPuqG99T8TXpb4BbpGWo61BqDP/JAaJlll2qXpIvTYalz+Bu2bPfNJQv6UmmLyuM9xIu9tWJHdaDzMu/ixQ7/D1iMb6NrDpwrwKpv5GxEQb+CXmF19KP2AOLp4E= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6D3233858C54 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=yqQicodFmAftQ5vhrDu9jXURUaC+Wp94P0B0m+ldyPa5XVr/TY33KDyPfHFYDhG1ZCjG6B69+8JRpm3I56DLCd4S4CA/wqK947go44jidP7SSEAUas/cmwRuR7IeUtjIABKLJkH5i2wkJwYDD6Xmvg7L+XJRCk4xbR5o4u+bM6JJhOu6HuvgXp7bDwvx5TWImf7oXMlSEnqXd9hjARVzrbApnh9V1mnyXXjbVS2UxiedNqJ6rq3xQFHl+N+b9P0XyGSZi9Tx/IAzdzgp6XXr4qRIzT3Kip5yfquFRm+uVjWEt8sJp8bGUPtSAXwgZQGURo6bD548C4ezgPA7eRJf3Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=JtVcdAa7U/7QnAKMJquWy8R0beiMPvVu56zb7Ta3nNw=; b=VmhiwrDDCMraS5/dzEmj0pxxnNCNoIXBC+e2/2+knwn6wgmTe5IGQGpd4IiJ7tm9l+PAF7g/HP4LWJA3Nu6EnIWthG3pMLKmQJ+70R1zvqsRoXJuWmFi8U82O77rP8gEIjVOpmtuyWv5TKjVjs3nohBWa2oATm6mK+g+P0nhEe2A8WmasKsFwWs7dRy2VquWoUyDwe8vHKbopxCE0JTuCKNhhIWGf1z/p/cbyO/2ZFuuYBaFPZz+gD4d81h779q9mGvSjJaAeWLRtvCncobqQ9HRZpJDtx/5HktSUCCwLyUjoNm7ZcIXPWU+mO4b63dNodtdLrjAyciO8S1q1YJ7Hg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JtVcdAa7U/7QnAKMJquWy8R0beiMPvVu56zb7Ta3nNw=; b=ntJ/468WK0ShrHokc01F2kGc5fWHVZ9mGNzK05DTKncSZGa5PGi1Nb874ol0iarnHXzRyz2sWq1Y77T59tcQr07pQXH3+PNpE0GvNTWS0sdh/YTvvcjMHODpeUj2DGtoHhHBrPsY8rIlrsr9sjM5HpsYlcDRuTPazEmsc2w9Pic= Received: from PAZP264CA0187.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:236::7) by VI0PR08MB11229.eurprd08.prod.outlook.com (2603:10a6:800:2c8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:23:25 +0000 Received: from AM2PEPF0001C709.eurprd05.prod.outlook.com (2603:10a6:102:236:cafe::75) by PAZP264CA0187.outlook.office365.com (2603:10a6:102:236::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9094.22 via Frontend Transport; Tue, 9 Sep 2025 11:23:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM2PEPF0001C709.mail.protection.outlook.com (10.167.16.197) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9115.13 via Frontend Transport; Tue, 9 Sep 2025 11:23:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tSJTwOAO8W1cwPwqGCRx/iorfahlqQShyOoRcir0QRuNd/XEIR9eaj6iuf9NC/xVq7R/nIYxoUBesc9gP2u+E6S38mBxWxYcrP1yEhF7UFKGHTMYl2hpC+ugXEcUF2FfXes/cpOXd15k9NE0j/FOcHvH3QjFdyVlmiu+t1BwSLRhY3691kW5xEjIVqboSjcT1SuoaiesJdr43S+tTzn13q/ytXdhPGp6QRZndftXXSO9XjRY3BShs1E5yzC+Gi2DfG/doVW3l+dtpe/oWQ3OJGSHfAsj7xxN7Q4UCYOhc5INyOUv+IhGOyuVF+8rGJbTEWR6XYEqn+7brj4wIJ3YWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=JtVcdAa7U/7QnAKMJquWy8R0beiMPvVu56zb7Ta3nNw=; b=Er/AoPpURkbtvb6zk2WMMUjhHrnKc3iS9n7KqSln/QNNjvyQLnk3S2JmLijPHkjblJFXylXI8bBwqn0WG3qhH2Z62P8B28eDWwAKRomiyvcxRtKQXnoCyWLwYKUYOoqULnv3QRfXKPNn2J4s6uTvnoosoGzWWc5Ebo+TKM6GmPFwupusl3WLf99cN0mdDoM6Cmw9J3hyqJ+nDbopkRU48rXify2wng13wJKyEP3rTevTkTIY+vgvQ/4yrUfArts5GinxpAbtK7GKL/R/oKrbmUVTiDT+iERLzTvMDo0JNTNAQymRqEgqyiNeCu+3rgJo5XMvhVJVnsN/Fo+LzTgBYA== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JtVcdAa7U/7QnAKMJquWy8R0beiMPvVu56zb7Ta3nNw=; b=ntJ/468WK0ShrHokc01F2kGc5fWHVZ9mGNzK05DTKncSZGa5PGi1Nb874ol0iarnHXzRyz2sWq1Y77T59tcQr07pQXH3+PNpE0GvNTWS0sdh/YTvvcjMHODpeUj2DGtoHhHBrPsY8rIlrsr9sjM5HpsYlcDRuTPazEmsc2w9Pic= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AM9PR08MB6099.eurprd08.prod.outlook.com (2603:10a6:20b:286::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 11:22:52 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.9094.021; Tue, 9 Sep 2025 11:22:51 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: glibc developers Subject: [PATCH 8/8] atomic: Switch atomic.h to builtin atomics Thread-Topic: [PATCH 8/8] atomic: Switch atomic.h to builtin atomics Thread-Index: AQHcIXvvVXE5kJWgPEeyabHZ1nKuTg== Date: Tue, 9 Sep 2025 11:22:51 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AM9PR08MB6099:EE_|AM2PEPF0001C709:EE_|VI0PR08MB11229:EE_ X-MS-Office365-Filtering-Correlation-Id: b2e42381-2b09-42d7-b22f-08ddef934b09 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?QyUHwNgh9c//2qQit?= =?iso-8859-1?q?K2uyNNbZ6fXgIsngC7Ht53/zyAGl+xXJRuJCmv5EHsxoWN8g8syNAOjbiZ7e?= =?iso-8859-1?q?TDsYwimo6B5PNlCW78C5yC8rnPDKy3aOYQxFK0sWtp4ETvwSuWsITFbZdbCc?= =?iso-8859-1?q?r5gH01nrJauAbT4aPtT6nuMgmeA1oaQDOIP2vHUFGOCQsWTYAq63p7N6ptvh?= =?iso-8859-1?q?eqXc/LivIX4+pzvlHkhnkqylQg5LmjulfCyH/5F2ekxw8EQWM5MZCdsoqsaD?= =?iso-8859-1?q?rrqmqIFoVb79HklF13jcy09iK1RA6rrcvYB5I7HGJwYLSX+AFkrqrGg7cEED?= =?iso-8859-1?q?6IdYwzqJg86P2Q1ARr1tX4pat+cF2iRYZl1P52PUf12RqJP9Xh3o4qZo36RA?= =?iso-8859-1?q?ZzQgeX8hfq3w17DMEE3heX94ZIIKAq4QipRqNSWAdW/yqI+xmh/9a31JoSFk?= =?iso-8859-1?q?zy34kxrZQsX+gLhGzoZ8DCwC32SMdEiQXxsObQV0zNaT47AOtEYznha8Vr59?= =?iso-8859-1?q?uK3irLMkE5p7AB7BI47jUhyYafERvLc6C7tNjiApewU5Q8B8ADXeygEgMEcN?= =?iso-8859-1?q?jPQJhDb89CFjsNggPc5/P4HEXyN2aE5hZJ+eMF/iwwQVW/Zg5OtqtMXs7Z17?= =?iso-8859-1?q?i4OHqroefP6aVgk/OPx93Nc118/Z+xsHOzFr2IqsmUkQxi3SaMlLtzLllTS9?= =?iso-8859-1?q?D80cNV8re4iBbXkCb91PuCJD8Hv2z0sADUBZbqQyEiw691ggNzMHT7nm82LG?= =?iso-8859-1?q?/BLtbil9MZJIyBr2xuEeLjWhyIBFBJxSggyYUw013eBShstReKHGUorqyXaH?= =?iso-8859-1?q?WFmh08QkCKwR4CFNYotnY0GTjU+6ZqlrrsdYHgU+PY0u4UzQ9jP5czCvuPy/?= =?iso-8859-1?q?vnaTs2hGNjwYKH2ELLF42HbdUwuENmMgb6/SksL5YHHHiDpJ0lM41cekR0bb?= =?iso-8859-1?q?FZeoOE13QcZ1GgAYiX/bx5TTGxGmLD9RAu2qb0bvXv1hNlX5w+TAUBBjb0Ar?= =?iso-8859-1?q?yQ3rIpOKfwg5FO4eOkmBxSOy0XWfomH3Z42Y3U4mWa3h/OLOjPG0GXv2dB1p?= =?iso-8859-1?q?FULUePXYivcaAn7ygqtdD/F77DHqjby7Sku0s0+he6hZ7wLi8OGVFXpONYMs?= =?iso-8859-1?q?PcAS6Dn8eTcH1OCCL5Fj5+skirVPBn6VJBqdVQ3AXduujN9G1OiFmWGZX4Xh?= =?iso-8859-1?q?xybr5qj97aU5HMWGg6Lh/AsNjRMctFg7fSnNdGKmoH/fZNmAJg0OhgV5uBWH?= =?iso-8859-1?q?oi+3JMYSA8vk4X4gzVudobHabiapozYf+X495886T4+S0Xcarndl6QfAQqV/?= =?iso-8859-1?q?h3mFWIai09RERWD/4VnZhjRt2pObw6sWheno+r3qpgmiBcZVuDGDIvur3sqT?= =?iso-8859-1?q?1BYbJnb6f8T21KlOkwg3IbckgwT/xUoQ6w+7u2nGJaurT/C4YSUth0BNxoC9?= =?iso-8859-1?q?sBYLFzUSkpG7MhlE8Tvs+6w8gHrZozGEeqJalC28zkXkCZS6/ptx8bQtSjXb?= =?iso-8859-1?q?7h15+JhdhdFgh0yLDmB/V2i2Jb9824uWs7c+6jvmA3nfT6he++2BUHjVRY?= =?iso-8859-1?q?=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6099 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM2PEPF0001C709.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7a0e2a11-e9d0-4ab6-5afd-08ddef933705 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|35042699022|82310400026|1800799024|36860700013|14060799003; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?nDxr0S+lMDFmRk8p7cJvQIpEZe?= =?iso-8859-1?q?RcwALm9a1iNDhV4ZjufQlC9BWBzIxi9NK7EomDBzR2QuRrW0IpzOfV7DboKv?= =?iso-8859-1?q?65VzY/ESVaYfxwiLQDRS5y0XReZ5/ptBKnFOtLZulIn0CLckmW3+sM4vpJne?= =?iso-8859-1?q?vOU/c3t70yCDhipY5thUzHkb/TtadRwHh3TpBVTh8a1+qPyEMBjpAfvd4ZGl?= =?iso-8859-1?q?lmTfFIxMGNmAyLtkbqPbuygntIoW60NOtgHjPs/CKbuhVdspxsZ868stq3gu?= =?iso-8859-1?q?v+aoY+71wKtNfeyBi9ahpSM1yB5N6/vyNlXX9xV9ZMFzuPbvuIu+CyGQO62H?= =?iso-8859-1?q?Rth1jApBvdHnZntn7KgNsJzvpIQBTADvHYDH2cLVzNDs8HfsmCU9gG7tDYxS?= =?iso-8859-1?q?UnG8RjgE9O2Q8/FSVo3exzypwq3wI2K2L3s3GHybe2t2MDAF6JPdvq5OUJAw?= =?iso-8859-1?q?roflc8itrJHO956XMqV7pR4AOn+CCgLQt743RW0/FPbcXv+rnruzktSZnILS?= =?iso-8859-1?q?7N4+Uz93tPzhsSwkIKoMa/03WbI2braeeIWUtv7v05jgSoq/1yT58mNlGGqg?= =?iso-8859-1?q?qRveJB4cXMPDDblHBSKmcHM5pUgliScMxpva/XxgVsdEXy0r2X7up4/QbiwT?= =?iso-8859-1?q?IX6YhAwigZ1GFaeewXkd1oxwVGH9nlVxyWyz7qUnVI1r8qbi+8QG6rP1opSq?= =?iso-8859-1?q?jih+UBjDOMkIDIikfYJno2XspyPq9wrmR9cdIyrlZAvuKsUKGSk2L4lxEaOp?= =?iso-8859-1?q?NJEA5KUvnyaCIVDLFFbSSDDFCxDIYtrrw8n+W0J9N/6zjHfHm42/2/6Y8Wml?= =?iso-8859-1?q?59AHmzQGkYiH+yw6YOI2m/KkA1qPiVobd9s8iT0lGwsVlnRuI5aqLBnubeDR?= =?iso-8859-1?q?g0jM+YdWAzj/AlzCRwHyktzZ6N3uGjUwwqL8NutIc9JMPJ5fqjK6JGZg/D6C?= =?iso-8859-1?q?s1sqAuxKXm78KDklvtG3CQHJZjAstydlYXlyfKqBA3a2r4OOkMMNUQtGIkzE?= =?iso-8859-1?q?CY4UK3l89pm/jXgwwPlrfqjLjsmyebAk8Yifx7dqQhRcGig99t5rB0FGSqzG?= =?iso-8859-1?q?98nzi7pHb0Q5PqC1amVIHGmPwcKhn+SzgVSBUhJLaCW1fXToGEwIfWQ8YxEE?= =?iso-8859-1?q?RY1evW8ocUtapHh26duC2bHdGYLEM9PiGMOitI67JNOXs0ewFs/AuKKmxJrE?= =?iso-8859-1?q?O6DaPccLFrtnpDhj/AvfeimB5z8sufmGU4NSLkWVEAhXzpjWLRRaWjgH4eln?= =?iso-8859-1?q?fllvbzu+2t6anBm5OIVMSGbjWIPXKdcVuv05Mt2x9n7qjd2ABzaA/5SlcSLZ?= =?iso-8859-1?q?/EVbXVHW2HZEJ1lllrRMFvgu9YODBXmiCUw6dSx9E0q8FRfXUp6pC33LQM/n?= =?iso-8859-1?q?l/TBaGa8eRVZz/9k+0XJPhkL0t0qy3630zftXGxVOmEKL/EkTMJZL0OXBolK?= =?iso-8859-1?q?yBXr4PY2mOw6240IpsekrfrWRMqzhYpVx4UwS8+dgKntSWTpKyoWW2k8NEIX?= =?iso-8859-1?q?eUiMuhsdcXt8YF4Hymmm4np+Qq7fP0wQ+s9aek2WMvMHNLatcAXmH+8C7/Z2?= =?iso-8859-1?q?tX+0P4RImq?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(35042699022)(82310400026)(1800799024)(36860700013)(14060799003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2025 11:23:25.4099 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b2e42381-2b09-42d7-b22f-08ddef934b09 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF0001C709.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11229 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, SPF_HELO_PASS, SPF_NONE, TXREP 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Switch to standard builtin atomics by removing the defines for !USE_ATOMIC_COMPILER_BUILTINS. Passes buildmanyglibc, OK for commit? Reviewed-by: Adhemerval Zanella diff --git a/include/atomic.h b/include/atomic.h index 98ba808ee9e3bdd30a81d62bacfdeb8333c061d9..690bdabeb4029a1ce7739a13d36f8949f0a46053 100644 --- a/include/atomic.h +++ b/include/atomic.h @@ -563,10 +563,6 @@ C11. Usually, a function named atomic_OP_MO(args) is equivalent to C11's atomic_OP_explicit(args, memory_order_MO); exceptions noted below. */ -/* Each arch can request to use compiler built-ins for C11 atomics. If it - does, all atomics will be based on these. */ -#if USE_ATOMIC_COMPILER_BUILTINS - /* We require 32b atomic operations; some archs also support 64b atomic operations. */ void __atomic_link_error (void); @@ -693,167 +689,6 @@ void __atomic_link_error (void); ({ __atomic_check_size((mem)); \ __atomic_fetch_xor ((mem), (operand), __ATOMIC_RELEASE); }) -#else /* !USE_ATOMIC_COMPILER_BUILTINS */ - -/* By default, we assume that read, write, and full barriers are equivalent - to acquire, release, and seq_cst barriers. Archs for which this does not - hold have to provide custom definitions of the fences. */ -# ifndef atomic_thread_fence_acquire -# define atomic_thread_fence_acquire() atomic_read_barrier () -# endif -# ifndef atomic_thread_fence_release -# define atomic_thread_fence_release() atomic_write_barrier () -# endif -# ifndef atomic_thread_fence_seq_cst -# define atomic_thread_fence_seq_cst() atomic_full_barrier () -# endif - -# ifndef atomic_load_relaxed -# define atomic_load_relaxed(mem) \ - ({ __typeof ((__typeof (*(mem))) *(mem)) __atg100_val; \ - __asm ("" : "=r" (__atg100_val) : "0" (*(mem))); \ - __atg100_val; }) -# endif -# ifndef atomic_load_acquire -# define atomic_load_acquire(mem) \ - ({ __typeof (*(mem)) __atg101_val = atomic_load_relaxed (mem); \ - atomic_thread_fence_acquire (); \ - __atg101_val; }) -# endif - -# ifndef atomic_store_relaxed -/* XXX Use inline asm here? */ -# define atomic_store_relaxed(mem, val) do { *(mem) = (val); } while (0) -# endif -# ifndef atomic_store_release -# define atomic_store_release(mem, val) \ - do { \ - atomic_thread_fence_release (); \ - atomic_store_relaxed ((mem), (val)); \ - } while (0) -# endif - -/* On failure, this CAS has memory_order_relaxed semantics. */ -/* XXX This potentially has one branch more than necessary, but archs - currently do not define a CAS that returns both the previous value and - the success flag. */ -# ifndef atomic_compare_exchange_weak_acquire -# define atomic_compare_exchange_weak_acquire(mem, expected, desired) \ - ({ typeof (*(expected)) __atg102_expected = *(expected); \ - *(expected) = \ - atomic_compare_and_exchange_val_acq ((mem), (desired), *(expected)); \ - *(expected) == __atg102_expected; }) -# endif -# ifndef atomic_compare_exchange_weak_relaxed -/* XXX Fall back to CAS with acquire MO because archs do not define a weaker - CAS. */ -# define atomic_compare_exchange_weak_relaxed(mem, expected, desired) \ - atomic_compare_exchange_weak_acquire ((mem), (expected), (desired)) -# endif -# ifndef atomic_compare_exchange_weak_release -# define atomic_compare_exchange_weak_release(mem, expected, desired) \ - ({ typeof (*(expected)) __atg103_expected = *(expected); \ - *(expected) = \ - atomic_compare_and_exchange_val_rel ((mem), (desired), *(expected)); \ - *(expected) == __atg103_expected; }) -# endif - -/* XXX Fall back to acquire MO because archs do not define a weaker - atomic_exchange. */ -# ifndef atomic_exchange_relaxed -# define atomic_exchange_relaxed(mem, val) \ - atomic_exchange_acq ((mem), (val)) -# endif -# ifndef atomic_exchange_acquire -# define atomic_exchange_acquire(mem, val) \ - atomic_exchange_acq ((mem), (val)) -# endif -# ifndef atomic_exchange_release -# define atomic_exchange_release(mem, val) \ - atomic_exchange_rel ((mem), (val)) -# endif - -# ifndef atomic_fetch_add_acquire -# define atomic_fetch_add_acquire(mem, operand) \ - atomic_exchange_and_add_acq ((mem), (operand)) -# endif -# ifndef atomic_fetch_add_relaxed -/* XXX Fall back to acquire MO because the MO semantics of - atomic_exchange_and_add are not documented; the generic version falls back - to atomic_exchange_and_add_acq if atomic_exchange_and_add is not defined, - and vice versa. */ -# define atomic_fetch_add_relaxed(mem, operand) \ - atomic_fetch_add_acquire ((mem), (operand)) -# endif -# ifndef atomic_fetch_add_release -# define atomic_fetch_add_release(mem, operand) \ - atomic_exchange_and_add_rel ((mem), (operand)) -# endif -# ifndef atomic_fetch_add_acq_rel -# define atomic_fetch_add_acq_rel(mem, operand) \ - ({ atomic_thread_fence_release (); \ - atomic_exchange_and_add_acq ((mem), (operand)); }) -# endif - -/* XXX Fall back to acquire MO because archs do not define a weaker - atomic_and_val. */ -# ifndef atomic_fetch_and_relaxed -# define atomic_fetch_and_relaxed(mem, operand) \ - atomic_fetch_and_acquire ((mem), (operand)) -# endif -/* XXX The default for atomic_and_val has acquire semantics, but this is not - documented. */ -# ifndef atomic_fetch_and_acquire -# define atomic_fetch_and_acquire(mem, operand) \ - atomic_and_val ((mem), (operand)) -# endif -# ifndef atomic_fetch_and_release -/* XXX This unnecessarily has acquire MO. */ -# define atomic_fetch_and_release(mem, operand) \ - ({ atomic_thread_fence_release (); \ - atomic_and_val ((mem), (operand)); }) -# endif - -/* XXX The default for atomic_or_val has acquire semantics, but this is not - documented. */ -# ifndef atomic_fetch_or_acquire -# define atomic_fetch_or_acquire(mem, operand) \ - atomic_or_val ((mem), (operand)) -# endif -/* XXX Fall back to acquire MO because archs do not define a weaker - atomic_or_val. */ -# ifndef atomic_fetch_or_relaxed -# define atomic_fetch_or_relaxed(mem, operand) \ - atomic_fetch_or_acquire ((mem), (operand)) -# endif -/* XXX Contains an unnecessary acquire MO because archs do not define a weaker - atomic_or_val. */ -# ifndef atomic_fetch_or_release -# define atomic_fetch_or_release(mem, operand) \ - ({ atomic_thread_fence_release (); \ - atomic_fetch_or_acquire ((mem), (operand)); }) -# endif - -# ifndef atomic_fetch_xor_release -/* Failing the atomic_compare_exchange_weak_release reloads the value in - __atg104_expected, so we need only do the XOR again and retry. */ -# define atomic_fetch_xor_release(mem, operand) \ - ({ __typeof (mem) __atg104_memp = (mem); \ - __typeof (*(mem)) __atg104_expected = (*__atg104_memp); \ - __typeof (*(mem)) __atg104_desired; \ - __typeof (*(mem)) __atg104_op = (operand); \ - \ - do \ - __atg104_desired = __atg104_expected ^ __atg104_op; \ - while (__glibc_unlikely \ - (atomic_compare_exchange_weak_release ( \ - __atg104_memp, &__atg104_expected, __atg104_desired) \ - == 0)); \ - __atg104_expected; }) -#endif - -#endif /* !USE_ATOMIC_COMPILER_BUILTINS */ - /* This operation does not affect synchronization semantics but can be used in the body of a spin loop to potentially improve its efficiency. */ #ifndef atomic_spin_nop