grub2: bring back build of aros-side grub2 tools
[AROS.git] / workbench / devs / networks / rhine / endian.h
blob3ce9b4c7e63c9a64b5db2a97d3dd34a61001b02d
1 /*
3 Copyright (C) 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>
29 /* Endianness macros */
31 #define FlipWord(A) \
32 ({ \
33 UWORD _FlipWord_A = (A); \
34 _FlipWord_A = (_FlipWord_A << 8) | (_FlipWord_A >> 8); \
37 #define FlipLong(A) \
38 ({ \
39 ULONG _FlipLong_A = (A); \
40 _FlipLong_A = \
41 (FlipWord(_FlipLong_A) << 16) | FlipWord(_FlipLong_A >> 16); \
44 #ifndef __i386__ /* Big endian */
46 #define BEWord(A) \
47 (A)
49 #define BELong(A) \
50 (A)
52 #define LEWord(A) \
53 FlipWord(A)
55 #define LELong(A) \
56 FlipLong(A)
58 #else
60 #define BEWord(A) \
61 FlipWord(A)
63 #define BELong(A) \
64 FlipLong(A)
66 #define LEWord(A) \
67 (A)
69 #define LELong(A) \
70 (A)
72 #endif
74 #define MakeBEWord(A) \
75 BEWord(A)
77 #define MakeBELong(A) \
78 BELong(A)
80 #define MakeLEWord(A) \
81 LEWord(A)
83 #define MakeLELong(A) \
84 LELong(A)
87 #endif