1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME COMPONENTS -- 4-- -- 5-- S Y S T E M . B Y T E _ S W A P P I N G -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 2006-2018, AdaCore -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. -- 17-- -- 18-- As a special exception under Section 7 of GPL version 3, you are granted -- 19-- additional permissions described in the GCC Runtime Library Exception, -- 20-- version 3.1, as published by the Free Software Foundation. -- 21-- -- 22-- You should have received a copy of the GNU General Public License and -- 23-- a copy of the GCC Runtime Library Exception along with this program; -- 24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 25-- <http://www.gnu.org/licenses/>. -- 26-- -- 27-- GNAT was originally developed by the GNAT team at New York University. -- 28-- Extensive contributions were provided by Ada Core Technologies Inc. -- 29-- -- 30------------------------------------------------------------------------------ 31 32-- Intrinsic routines for byte swapping. These are used by the expanded code 33-- (supporting alternative byte ordering), and by the GNAT.Byte_Swapping run 34-- time package which provides user level routines for byte swapping. 35 36package System.Byte_Swapping is 37 38 pragma Pure; 39 40 type U16 is mod 2**16; 41 type U32 is mod 2**32; 42 type U64 is mod 2**64; 43 44 function Bswap_16 (X : U16) return U16; 45 pragma Import (Intrinsic, Bswap_16, "__builtin_bswap16"); 46 47 function Bswap_32 (X : U32) return U32; 48 pragma Import (Intrinsic, Bswap_32, "__builtin_bswap32"); 49 50 function Bswap_64 (X : U64) return U64; 51 pragma Import (Intrinsic, Bswap_64, "__builtin_bswap64"); 52 53end System.Byte_Swapping; 54