diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2021-12-30 18:05:48 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2022-01-11 13:24:44 +0000 |
commit | 4180f273c59cf9d01b675830bce1fe6825b1008c (patch) | |
tree | 655cf60eb93c2681bb848534f03e99ed4acbf699 /gcc | |
parent | 5b417b35824fb5c15e3ee958cb86436b3409ebea (diff) | |
download | gcc-4180f273c59cf9d01b675830bce1fe6825b1008c.zip gcc-4180f273c59cf9d01b675830bce1fe6825b1008c.tar.gz gcc-4180f273c59cf9d01b675830bce1fe6825b1008c.tar.bz2 |
[Ada] Use atomic builtins for atomic counters on x86 (32bit)
gcc/ada/
* Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of
System.Atomic_Counters.
* libgnat/s-atocou__x86.adb: Remove.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/Makefile.rtl | 2 | ||||
-rw-r--r-- | gcc/ada/libgnat/s-atocou__x86.adb | 112 |
2 files changed, 1 insertions, 113 deletions
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl index 7d319ea..1b066ad 100644 --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -898,7 +898,7 @@ ATOMICS_BUILTINS_TARGET_PAIRS = \ X86_TARGET_PAIRS = \ a-nuauco.ads<libgnat/a-nuauco__x86.ads \ - s-atocou.adb<libgnat/s-atocou__x86.adb + s-atocou.adb<libgnat/s-atocou__builtin.adb X86_64_TARGET_PAIRS = \ a-nuauco.ads<libgnat/a-nuauco__x86.ads \ diff --git a/gcc/ada/libgnat/s-atocou__x86.adb b/gcc/ada/libgnat/s-atocou__x86.adb deleted file mode 100644 index 8704d9df3e..0000000 --- a/gcc/ada/libgnat/s-atocou__x86.adb +++ /dev/null @@ -1,112 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . A T O M I C _ C O U N T E R S -- --- -- --- B o d y -- --- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This implementation of the package for x86 processor. GCC can't generate --- code for atomic builtins for 386 CPU. Only increment/decrement instructions --- are supported, thus this implementaton uses machine code insertions to --- access the necessary instructions. - -with System.Machine_Code; - -package body System.Atomic_Counters is - - -- Add comments showing in normal asm language what we generate??? - - --------------- - -- Decrement -- - --------------- - - function Decrement (Item : aliased in out Atomic_Unsigned) return Boolean is - Aux : Boolean; - - begin - System.Machine_Code.Asm - (Template => - "lock%; decl" & ASCII.HT & "%0" & ASCII.LF & ASCII.HT - & "sete %1", - Outputs => - (Atomic_Unsigned'Asm_Output ("=m", Item), - Boolean'Asm_Output ("=qm", Aux)), - Inputs => Atomic_Unsigned'Asm_Input ("m", Item), - Volatile => True); - - return Aux; - end Decrement; - - procedure Decrement (Item : aliased in out Atomic_Unsigned) is - begin - if Decrement (Item) then - null; - end if; - end Decrement; - - function Decrement (Item : in out Atomic_Counter) return Boolean is - begin - return Decrement (Item.Value); - end Decrement; - - --------------- - -- Increment -- - --------------- - - procedure Increment (Item : aliased in out Atomic_Unsigned) is - begin - System.Machine_Code.Asm - (Template => "lock%; incl" & ASCII.HT & "%0", - Outputs => Atomic_Unsigned'Asm_Output ("=m", Item), - Inputs => Atomic_Unsigned'Asm_Input ("m", Item), - Volatile => True); - end Increment; - - procedure Increment (Item : in out Atomic_Counter) is - begin - Increment (Item.Value); - end Increment; - - ---------------- - -- Initialize -- - ---------------- - - procedure Initialize (Item : out Atomic_Counter) is - begin - Item.Value := 1; - end Initialize; - - ------------ - -- Is_One -- - ------------ - - function Is_One (Item : Atomic_Counter) return Boolean is - begin - return Item.Value = 1; - end Is_One; - -end System.Atomic_Counters; |