1*9663SMark.Logan@Sun.COM /* 2*9663SMark.Logan@Sun.COM libparted - a library for manipulating disk partitions 3*9663SMark.Logan@Sun.COM Copyright (C) 1998-2002, 2007 Free Software Foundation, Inc. 4*9663SMark.Logan@Sun.COM 5*9663SMark.Logan@Sun.COM This program is free software; you can redistribute it and/or modify 6*9663SMark.Logan@Sun.COM it under the terms of the GNU General Public License as published by 7*9663SMark.Logan@Sun.COM the Free Software Foundation; either version 3 of the License, or 8*9663SMark.Logan@Sun.COM (at your option) any later version. 9*9663SMark.Logan@Sun.COM 10*9663SMark.Logan@Sun.COM This program is distributed in the hope that it will be useful, 11*9663SMark.Logan@Sun.COM but WITHOUT ANY WARRANTY; without even the implied warranty of 12*9663SMark.Logan@Sun.COM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*9663SMark.Logan@Sun.COM GNU General Public License for more details. 14*9663SMark.Logan@Sun.COM 15*9663SMark.Logan@Sun.COM You should have received a copy of the GNU General Public License 16*9663SMark.Logan@Sun.COM along with this program. If not, see <http://www.gnu.org/licenses/>. 17*9663SMark.Logan@Sun.COM */ 18*9663SMark.Logan@Sun.COM 19*9663SMark.Logan@Sun.COM /* should only be #included by files in libparted */ 20*9663SMark.Logan@Sun.COM 21*9663SMark.Logan@Sun.COM #ifndef PED_ENDIAN_H_INCLUDED 22*9663SMark.Logan@Sun.COM #define PED_ENDIAN_H_INCLUDED 23*9663SMark.Logan@Sun.COM 24*9663SMark.Logan@Sun.COM #include <stdint.h> 25*9663SMark.Logan@Sun.COM 26*9663SMark.Logan@Sun.COM /* returns the n'th least significant byte */ 27*9663SMark.Logan@Sun.COM #define _GET_BYTE(x, n) ( ((x) >> (8 * (n))) & 0xff ) 28*9663SMark.Logan@Sun.COM 29*9663SMark.Logan@Sun.COM #define _PED_SWAP16(x) ( (_GET_BYTE(x, 0) << 8) \ 30*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 1) << 0) ) 31*9663SMark.Logan@Sun.COM 32*9663SMark.Logan@Sun.COM #define _PED_SWAP32(x) ( (_GET_BYTE(x, 0) << 24) \ 33*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 1) << 16) \ 34*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 2) << 8) \ 35*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 3) << 0) ) 36*9663SMark.Logan@Sun.COM 37*9663SMark.Logan@Sun.COM #define _PED_SWAP64(x) ( (_GET_BYTE(x, 0) << 56) \ 38*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 1) << 48) \ 39*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 2) << 40) \ 40*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 3) << 32) \ 41*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 4) << 24) \ 42*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 5) << 16) \ 43*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 6) << 8) \ 44*9663SMark.Logan@Sun.COM + (_GET_BYTE(x, 7) << 0) ) 45*9663SMark.Logan@Sun.COM 46*9663SMark.Logan@Sun.COM #define PED_SWAP16(x) ((uint16_t) _PED_SWAP16( (uint16_t) (x) )) 47*9663SMark.Logan@Sun.COM #define PED_SWAP32(x) ((uint32_t) _PED_SWAP32( (uint32_t) (x) )) 48*9663SMark.Logan@Sun.COM #define PED_SWAP64(x) ((uint64_t) _PED_SWAP64( (uint64_t) (x) )) 49*9663SMark.Logan@Sun.COM 50*9663SMark.Logan@Sun.COM #ifdef WORDS_BIGENDIAN 51*9663SMark.Logan@Sun.COM 52*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE16(x) PED_SWAP16(x) 53*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE16(x) (x) 54*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE32(x) PED_SWAP32(x) 55*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE32(x) (x) 56*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE64(x) PED_SWAP64(x) 57*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE64(x) (x) 58*9663SMark.Logan@Sun.COM 59*9663SMark.Logan@Sun.COM #define PED_LE16_TO_CPU(x) PED_SWAP16(x) 60*9663SMark.Logan@Sun.COM #define PED_BE16_TO_CPU(x) (x) 61*9663SMark.Logan@Sun.COM #define PED_LE32_TO_CPU(x) PED_SWAP32(x) 62*9663SMark.Logan@Sun.COM #define PED_BE32_TO_CPU(x) (x) 63*9663SMark.Logan@Sun.COM #define PED_LE64_TO_CPU(x) PED_SWAP64(x) 64*9663SMark.Logan@Sun.COM #define PED_BE64_TO_CPU(x) (x) 65*9663SMark.Logan@Sun.COM 66*9663SMark.Logan@Sun.COM #else /* !WORDS_BIGENDIAN */ 67*9663SMark.Logan@Sun.COM 68*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE16(x) (x) 69*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE16(x) PED_SWAP16(x) 70*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE32(x) (x) 71*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE32(x) PED_SWAP32(x) 72*9663SMark.Logan@Sun.COM #define PED_CPU_TO_LE64(x) (x) 73*9663SMark.Logan@Sun.COM #define PED_CPU_TO_BE64(x) PED_SWAP64(x) 74*9663SMark.Logan@Sun.COM 75*9663SMark.Logan@Sun.COM #define PED_LE16_TO_CPU(x) (x) 76*9663SMark.Logan@Sun.COM #define PED_BE16_TO_CPU(x) PED_SWAP16(x) 77*9663SMark.Logan@Sun.COM #define PED_LE32_TO_CPU(x) (x) 78*9663SMark.Logan@Sun.COM #define PED_BE32_TO_CPU(x) PED_SWAP32(x) 79*9663SMark.Logan@Sun.COM #define PED_LE64_TO_CPU(x) (x) 80*9663SMark.Logan@Sun.COM #define PED_BE64_TO_CPU(x) PED_SWAP64(x) 81*9663SMark.Logan@Sun.COM 82*9663SMark.Logan@Sun.COM #endif /* !WORDS_BIGENDIAN */ 83*9663SMark.Logan@Sun.COM 84*9663SMark.Logan@Sun.COM #endif /* PED_ENDIAN_H_INCLUDED */ 85*9663SMark.Logan@Sun.COM 86