grub2: bring back build of aros-side grub2 tools
[AROS.git] / workbench / devs / networks / rtl8029 / endian.h
blob392da7be8e3d73388b438ab0ab4849002d9df591
1 /*
3 Copyright (C) 2001-2005 Neil Cafferkey
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18 MA 02111-1307, USA.
22 #ifndef ENDIAN_H
23 #define ENDIAN_H
26 #include <exec/types.h>
28 /* Endianness macros */
30 #define FlipWord(A) \
31 ({ \
32 UWORD _FlipWord_A = (A); \
33 _FlipWord_A = (_FlipWord_A << 8) | (_FlipWord_A >> 8); \
36 #define FlipLong(A) \
37 ({ \
38 ULONG _FlipLong_A = (A); \
39 _FlipLong_A = \
40 (FlipWord(_FlipLong_A) << 16) | FlipWord(_FlipLong_A >> 16); \
43 #ifndef __i386__ /* Big endian */
45 #define BEWord(A) \
46 (A)
48 #define BELong(A) \
49 (A)
51 #define LEWord(A) \
52 FlipWord(A)
54 #define LELong(A) \
55 FlipLong(A)
57 #else
59 #define BEWord(A) \
60 FlipWord(A)
62 #define BELong(A) \
63 FlipLong(A)
65 #define LEWord(A) \
66 (A)
68 #define LELong(A) \
69 (A)
71 #endif
73 #define MakeBEWord(A) \
74 BEWord(A)
76 #define MakeBELong(A) \
77 BELong(A)
79 #define MakeLEWord(A) \
80 LEWord(A)
82 #define MakeLELong(A) \
83 LELong(A)
86 #endif