diff options
author | Dan Albert <danalbert@google.com> | 2015-10-13 16:28:19 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-10-13 16:28:19 -0700 |
commit | a8c075f72b231c37823661ba0d7d082a21cd39d9 (patch) | |
tree | 395aa3b848d56037292e50466643453485073018 /gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb | |
parent | 5aff2e0142aca13849b4e51de503e71d5010efa6 (diff) | |
download | toolchain_gcc-a8c075f72b231c37823661ba0d7d082a21cd39d9.tar.gz toolchain_gcc-a8c075f72b231c37823661ba0d7d082a21cd39d9.tar.bz2 toolchain_gcc-a8c075f72b231c37823661ba0d7d082a21cd39d9.zip |
Remove gcc-4.8.
Change-Id: Iee9c6985c613f58c82e33a91722d371579eb290f
Diffstat (limited to 'gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb')
-rw-r--r-- | gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb | 809 |
1 files changed, 0 insertions, 809 deletions
diff --git a/gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb b/gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb deleted file mode 100644 index 4116e32b3..000000000 --- a/gcc-4.8/gcc/ada/s-auxdec-vms-alpha.adb +++ /dev/null @@ -1,809 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT COMPILER COMPONENTS -- --- -- --- S Y S T E M . A U X _ D E C -- --- -- --- B o d y -- --- -- --- Copyright (C) 1992-2011, 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 is the Alpha/VMS version. - -pragma Style_Checks (All_Checks); --- Turn off alpha ordering check on subprograms, this unit is laid --- out to correspond to the declarations in the DEC 83 System unit. - -with System.Machine_Code; use System.Machine_Code; -package body System.Aux_DEC is - - ------------------------ - -- Fetch_From_Address -- - ------------------------ - - function Fetch_From_Address (A : Address) return Target is - type T_Ptr is access all Target; - function To_T_Ptr is new Ada.Unchecked_Conversion (Address, T_Ptr); - Ptr : constant T_Ptr := To_T_Ptr (A); - begin - return Ptr.all; - end Fetch_From_Address; - - ----------------------- - -- Assign_To_Address -- - ----------------------- - - procedure Assign_To_Address (A : Address; T : Target) is - type T_Ptr is access all Target; - function To_T_Ptr is new Ada.Unchecked_Conversion (Address, T_Ptr); - Ptr : constant T_Ptr := To_T_Ptr (A); - begin - Ptr.all := T; - end Assign_To_Address; - - ----------------------- - -- Clear_Interlocked -- - ----------------------- - - procedure Clear_Interlocked - (Bit : in out Boolean; - Old_Value : out Boolean) - is - use ASCII; - Clr_Bit : Boolean := Bit; - Old_Bit : Boolean; - - begin - -- All these ASM sequences should be commented. I suggest defining - -- a constant called E which is LF & HT and then you have more space - -- for line by line comments ??? - - System.Machine_Code.Asm - ( - "lda $16, %2" & LF & HT & - "mb" & LF & HT & - "sll $16, 3, $17 " & LF & HT & - "bis $31, 1, $1" & LF & HT & - "and $17, 63, $18" & LF & HT & - "bic $17, 63, $17" & LF & HT & - "sra $17, 3, $17" & LF & HT & - "bis $31, 1, %1" & LF & HT & - "sll %1, $18, $18" & LF & HT & - "1:" & LF & HT & - "ldq_l $1, 0($17)" & LF & HT & - "and $1, $18, %1" & LF & HT & - "bic $1, $18, $1" & LF & HT & - "stq_c $1, 0($17)" & LF & HT & - "cmpeq %1, 0, %1" & LF & HT & - "beq $1, 1b" & LF & HT & - "mb" & LF & HT & - "xor %1, 1, %1" & LF & HT & - "trapb", - Outputs => (Boolean'Asm_Output ("=m", Clr_Bit), - Boolean'Asm_Output ("=r", Old_Bit)), - Inputs => Boolean'Asm_Input ("m", Clr_Bit), - Clobber => "$1, $16, $17, $18", - Volatile => True); - - Bit := Clr_Bit; - Old_Value := Old_Bit; - end Clear_Interlocked; - - procedure Clear_Interlocked - (Bit : in out Boolean; - Old_Value : out Boolean; - Retry_Count : Natural; - Success_Flag : out Boolean) - is - use ASCII; - Clr_Bit : Boolean := Bit; - Succ, Old_Bit : Boolean; - - begin - System.Machine_Code.Asm - ( - "lda $16, %3" & LF & HT & - "mb" & LF & HT & - "sll $16, 3, $18 " & LF & HT & - "bis $31, 1, %1" & LF & HT & - "and $18, 63, $19" & LF & HT & - "bic $18, 63, $18" & LF & HT & - "sra $18, 3, $18" & LF & HT & - "bis $31, %4, $17" & LF & HT & - "sll %1, $19, $19" & LF & HT & - "1:" & LF & HT & - "ldq_l %2, 0($18)" & LF & HT & - "and %2, $19, %1" & LF & HT & - "bic %2, $19, %2" & LF & HT & - "stq_c %2, 0($18)" & LF & HT & - "beq %2, 2f" & LF & HT & - "cmpeq %1, 0, %1" & LF & HT & - "br 3f" & LF & HT & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "3:" & LF & HT & - "mb" & LF & HT & - "xor %1, 1, %1" & LF & HT & - "trapb", - Outputs => (Boolean'Asm_Output ("=m", Clr_Bit), - Boolean'Asm_Output ("=r", Old_Bit), - Boolean'Asm_Output ("=r", Succ)), - Inputs => (Boolean'Asm_Input ("m", Clr_Bit), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$16, $17, $18, $19", - Volatile => True); - - Bit := Clr_Bit; - Old_Value := Old_Bit; - Success_Flag := Succ; - end Clear_Interlocked; - - --------------------- - -- Set_Interlocked -- - --------------------- - - procedure Set_Interlocked - (Bit : in out Boolean; - Old_Value : out Boolean) - is - use ASCII; - Set_Bit : Boolean := Bit; - Old_Bit : Boolean; - - begin - -- Don't we need comments on these long asm sequences??? - - System.Machine_Code.Asm - ( - "lda $16, %2" & LF & HT & - "sll $16, 3, $17 " & LF & HT & - "bis $31, 1, $1" & LF & HT & - "and $17, 63, $18" & LF & HT & - "mb" & LF & HT & - "bic $17, 63, $17" & LF & HT & - "sra $17, 3, $17" & LF & HT & - "bis $31, 1, %1" & LF & HT & - "sll %1, $18, $18" & LF & HT & - "1:" & LF & HT & - "ldq_l $1, 0($17)" & LF & HT & - "and $1, $18, %1" & LF & HT & - "bis $1, $18, $1" & LF & HT & - "stq_c $1, 0($17)" & LF & HT & - "cmovne %1, 1, %1" & LF & HT & - "beq $1, 1b" & LF & HT & - "mb" & LF & HT & - "trapb", - Outputs => (Boolean'Asm_Output ("=m", Set_Bit), - Boolean'Asm_Output ("=r", Old_Bit)), - Inputs => Boolean'Asm_Input ("m", Set_Bit), - Clobber => "$1, $16, $17, $18", - Volatile => True); - - Bit := Set_Bit; - Old_Value := Old_Bit; - end Set_Interlocked; - - procedure Set_Interlocked - (Bit : in out Boolean; - Old_Value : out Boolean; - Retry_Count : Natural; - Success_Flag : out Boolean) - is - use ASCII; - Set_Bit : Boolean := Bit; - Succ, Old_Bit : Boolean; - - begin - System.Machine_Code.Asm - ( - "lda $16, %3" & LF & HT & -- Address of Bit - "mb" & LF & HT & - "sll $16, 3, $18 " & LF & HT & -- Byte address to bit address - "bis $31, 1, %1" & LF & HT & -- Set temp to 1 for the sll - "and $18, 63, $19" & LF & HT & -- Quadword bit offset - "bic $18, 63, $18" & LF & HT & -- Quadword bit address - "sra $18, 3, $18" & LF & HT & -- Quadword address - "bis $31, %4, $17" & LF & HT & -- Retry_Count -> $17 - "sll %1, $19, $19" & LF & -- $19 = 1 << bit_offset - "1:" & LF & HT & - "ldq_l %2, 0($18)" & LF & HT & -- Load & lock - "and %2, $19, %1" & LF & HT & -- Previous value -> %1 - "bis %2, $19, %2" & LF & HT & -- Set Bit - "stq_c %2, 0($18)" & LF & HT & -- Store conditional - "beq %2, 2f" & LF & HT & -- Goto 2: if failed - "cmovne %1, 1, %1" & LF & HT & -- Set Old_Bit - "br 3f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & -- Retry_Count - 1 - "bgt $17, 1b" & LF & -- Retry ? - "3:" & LF & HT & - "mb" & LF & HT & - "trapb", - Outputs => (Boolean'Asm_Output ("=m", Set_Bit), - Boolean'Asm_Output ("=r", Old_Bit), - Boolean'Asm_Output ("=r", Succ)), - Inputs => (Boolean'Asm_Input ("m", Set_Bit), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$16, $17, $18, $19", - Volatile => True); - - Bit := Set_Bit; - Old_Value := Old_Bit; - Success_Flag := Succ; - end Set_Interlocked; - - --------------------- - -- Add_Interlocked -- - --------------------- - - procedure Add_Interlocked - (Addend : Short_Integer; - Augend : in out Aligned_Word; - Sign : out Integer) - is - use ASCII; - Overflowed : Boolean := False; - - begin - System.Machine_Code.Asm - ( - "lda $18, %0" & LF & HT & - "bic $18, 6, $21" & LF & HT & - "mb" & LF & HT & - "1:" & LF & HT & - "ldq_l $0, 0($21)" & LF & HT & - "extwl $0, $18, $19" & LF & HT & - "mskwl $0, $18, $0" & LF & HT & - "addq $19, %3, $20" & LF & HT & - "inswl $20, $18, $17" & LF & HT & - "xor $19, %3, $19" & LF & HT & - "bis $17, $0, $0" & LF & HT & - "stq_c $0, 0($21)" & LF & HT & - "beq $0, 1b" & LF & HT & - "srl $20, 16, $0" & LF & HT & - "mb" & LF & HT & - "srl $20, 12, $21" & LF & HT & - "zapnot $20, 3, $20" & LF & HT & - "and $0, 1, $0" & LF & HT & - "and $21, 8, $21" & LF & HT & - "bis $21, $0, $0" & LF & HT & - "cmpeq $20, 0, $21" & LF & HT & - "xor $20, 2, $20" & LF & HT & - "sll $21, 2, $21" & LF & HT & - "bis $21, $0, $0" & LF & HT & - "bic $20, $19, $21" & LF & HT & - "srl $21, 14, $21" & LF & HT & - "and $21, 2, $21" & LF & HT & - "bis $21, $0, $0" & LF & HT & - "and $0, 2, %2" & LF & HT & - "bne %2, 2f" & LF & HT & - "and $0, 4, %1" & LF & HT & - "cmpeq %1, 0, %1" & LF & HT & - "and $0, 8, $0" & LF & HT & - "lda $16, -1" & LF & HT & - "cmovne $0, $16, %1" & LF & HT & - "2:", - Outputs => (Aligned_Word'Asm_Output ("=m", Augend), - Integer'Asm_Output ("=r", Sign), - Boolean'Asm_Output ("=r", Overflowed)), - Inputs => (Short_Integer'Asm_Input ("r", Addend), - Aligned_Word'Asm_Input ("m", Augend)), - Clobber => "$0, $1, $16, $17, $18, $19, $20, $21", - Volatile => True); - - if Overflowed then - raise Constraint_Error; - end if; - end Add_Interlocked; - - ---------------- - -- Add_Atomic -- - ---------------- - - procedure Add_Atomic - (To : in out Aligned_Integer; - Amount : Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "addl $1, %2, $0" & LF & HT & - "stl_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", Amount)), - Clobber => "$0, $1", - Volatile => True); - end Add_Atomic; - - procedure Add_Atomic - (To : in out Aligned_Integer; - Amount : Integer; - Retry_Count : Natural; - Old_Value : out Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "addl $1, %4, $0" & LF & HT & - "stl_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stl $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Integer'Asm_Output ("=m", To), - Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", Amount), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end Add_Atomic; - - procedure Add_Atomic - (To : in out Aligned_Long_Integer; - Amount : Long_Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "addq $1, %2, $0" & LF & HT & - "stq_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Long_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", Amount)), - Clobber => "$0, $1", - Volatile => True); - end Add_Atomic; - - procedure Add_Atomic - (To : in out Aligned_Long_Integer; - Amount : Long_Integer; - Retry_Count : Natural; - Old_Value : out Long_Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "addq $1, %4, $0" & LF & HT & - "stq_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stq $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Long_Integer'Asm_Output ("=m", To), - Long_Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", Amount), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end Add_Atomic; - - ---------------- - -- And_Atomic -- - ---------------- - - procedure And_Atomic - (To : in out Aligned_Integer; - From : Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "and $1, %2, $0" & LF & HT & - "stl_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", From)), - Clobber => "$0, $1", - Volatile => True); - end And_Atomic; - - procedure And_Atomic - (To : in out Aligned_Integer; - From : Integer; - Retry_Count : Natural; - Old_Value : out Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "and $1, %4, $0" & LF & HT & - "stl_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stl $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Integer'Asm_Output ("=m", To), - Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", From), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end And_Atomic; - - procedure And_Atomic - (To : in out Aligned_Long_Integer; - From : Long_Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "and $1, %2, $0" & LF & HT & - "stq_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Long_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", From)), - Clobber => "$0, $1", - Volatile => True); - end And_Atomic; - - procedure And_Atomic - (To : in out Aligned_Long_Integer; - From : Long_Integer; - Retry_Count : Natural; - Old_Value : out Long_Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "and $1, %4, $0" & LF & HT & - "stq_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stq $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Long_Integer'Asm_Output ("=m", To), - Long_Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", From), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end And_Atomic; - - --------------- - -- Or_Atomic -- - --------------- - - procedure Or_Atomic - (To : in out Aligned_Integer; - From : Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "bis $1, %2, $0" & LF & HT & - "stl_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", From)), - Clobber => "$0, $1", - Volatile => True); - end Or_Atomic; - - procedure Or_Atomic - (To : in out Aligned_Integer; - From : Integer; - Retry_Count : Natural; - Old_Value : out Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldl_l $1, %0" & LF & HT & - "bis $1, %4, $0" & LF & HT & - "stl_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stl $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Integer'Asm_Output ("=m", To), - Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Integer'Asm_Input ("m", To), - Integer'Asm_Input ("rJ", From), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end Or_Atomic; - - procedure Or_Atomic - (To : in out Aligned_Long_Integer; - From : Long_Integer) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "bis $1, %2, $0" & LF & HT & - "stq_c $0, %1" & LF & HT & - "beq $0, 1b" & LF & HT & - "mb", - Outputs => Aligned_Long_Integer'Asm_Output ("=m", To), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", From)), - Clobber => "$0, $1", - Volatile => True); - end Or_Atomic; - - procedure Or_Atomic - (To : in out Aligned_Long_Integer; - From : Long_Integer; - Retry_Count : Natural; - Old_Value : out Long_Integer; - Success_Flag : out Boolean) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "mb" & LF & HT & - "bis $31, %5, $17" & LF & - "1:" & LF & HT & - "ldq_l $1, %0" & LF & HT & - "bis $1, %4, $0" & LF & HT & - "stq_c $0, %3" & LF & HT & - "beq $0, 2f" & LF & - "3:" & LF & HT & - "mb" & LF & HT & - "stq $0, %2" & LF & HT & - "stq $1, %1" & LF & HT & - "br 4f" & LF & - "2:" & LF & HT & - "subq $17, 1, $17" & LF & HT & - "bgt $17, 1b" & LF & HT & - "br 3b" & LF & - "4:", - Outputs => (Aligned_Long_Integer'Asm_Output ("=m", To), - Long_Integer'Asm_Output ("=m", Old_Value), - Boolean'Asm_Output ("=m", Success_Flag)), - Inputs => (Aligned_Long_Integer'Asm_Input ("m", To), - Long_Integer'Asm_Input ("rJ", From), - Natural'Asm_Input ("rJ", Retry_Count)), - Clobber => "$0, $1, $17", - Volatile => True); - end Or_Atomic; - - ------------ - -- Insqhi -- - ------------ - - procedure Insqhi - (Item : Address; - Header : Address; - Status : out Insq_Status) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "bis $31, %1, $17" & LF & HT & - "bis $31, %2, $16" & LF & HT & - "mb" & LF & HT & - "call_pal 0x87" & LF & HT & - "mb", - Outputs => Insq_Status'Asm_Output ("=v", Status), - Inputs => (Address'Asm_Input ("rJ", Item), - Address'Asm_Input ("rJ", Header)), - Clobber => "$16, $17", - Volatile => True); - end Insqhi; - - ------------ - -- Remqhi -- - ------------ - - procedure Remqhi - (Header : Address; - Item : out Address; - Status : out Remq_Status) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "bis $31, %2, $16" & LF & HT & - "mb" & LF & HT & - "call_pal 0x93" & LF & HT & - "mb" & LF & HT & - "bis $31, $1, %1", - Outputs => (Remq_Status'Asm_Output ("=v", Status), - Address'Asm_Output ("=r", Item)), - Inputs => Address'Asm_Input ("rJ", Header), - Clobber => "$1, $16", - Volatile => True); - end Remqhi; - - ------------ - -- Insqti -- - ------------ - - procedure Insqti - (Item : Address; - Header : Address; - Status : out Insq_Status) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "bis $31, %1, $17" & LF & HT & - "bis $31, %2, $16" & LF & HT & - "mb" & LF & HT & - "call_pal 0x88" & LF & HT & - "mb", - Outputs => Insq_Status'Asm_Output ("=v", Status), - Inputs => (Address'Asm_Input ("rJ", Item), - Address'Asm_Input ("rJ", Header)), - Clobber => "$16, $17", - Volatile => True); - end Insqti; - - ------------ - -- Remqti -- - ------------ - - procedure Remqti - (Header : Address; - Item : out Address; - Status : out Remq_Status) - is - use ASCII; - - begin - System.Machine_Code.Asm - ( - "bis $31, %2, $16" & LF & HT & - "mb" & LF & HT & - "call_pal 0x94" & LF & HT & - "mb" & LF & HT & - "bis $31, $1, %1", - Outputs => (Remq_Status'Asm_Output ("=v", Status), - Address'Asm_Output ("=r", Item)), - Inputs => Address'Asm_Input ("rJ", Header), - Clobber => "$1, $16", - Volatile => True); - end Remqti; - -end System.Aux_DEC; |