]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/ppc/sim-endian-n.h
* support sim-fpu.c for correct FP emulation.
[thirdparty/binutils-gdb.git] / sim / ppc / sim-endian-n.h
CommitLineData
c906108c
SS
1/* This file is part of the program psim.
2
3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
4
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.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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, MA 02111-1307, USA.
18
19 */
20
21
22#ifndef N
23#error "N must be #defined"
24#endif
25
26/* NOTE: See end of file for #undef */
27#define unsigned_N XCONCAT2(unsigned_,N)
28#define endian_t2h_N XCONCAT2(endian_t2h_,N)
29#define endian_h2t_N XCONCAT2(endian_h2t_,N)
30#define _SWAP_N XCONCAT2(_SWAP_,N)
31#define swap_N XCONCAT2(swap_,N)
32#define endian_h2be_N XCONCAT2(endian_h2be_,N)
33#define endian_be2h_N XCONCAT2(endian_be2h_,N)
34#define endian_h2le_N XCONCAT2(endian_h2le_,N)
35#define endian_le2h_N XCONCAT2(endian_le2h_,N)
36
37
d29d5195 38INLINE_PSIM_ENDIAN\
c906108c
SS
39(unsigned_N)
40endian_t2h_N(unsigned_N raw_in)
41{
42 if (CURRENT_TARGET_BYTE_ORDER == CURRENT_HOST_BYTE_ORDER) {
43 return raw_in;
44 }
45 else {
46 _SWAP_N(return,raw_in);
47 }
48}
49
50
d29d5195 51INLINE_PSIM_ENDIAN\
c906108c
SS
52(unsigned_N)
53endian_h2t_N(unsigned_N raw_in)
54{
55 if (CURRENT_TARGET_BYTE_ORDER == CURRENT_HOST_BYTE_ORDER) {
56 return raw_in;
57 }
58 else {
59 _SWAP_N(return,raw_in);
60 }
61}
62
63
d29d5195 64INLINE_PSIM_ENDIAN\
c906108c
SS
65(unsigned_N)
66swap_N(unsigned_N raw_in)
67{
68 _SWAP_N(return,raw_in);
69}
70
71
72
d29d5195 73INLINE_PSIM_ENDIAN\
c906108c
SS
74(unsigned_N)
75endian_h2be_N(unsigned_N raw_in)
76{
77 if (CURRENT_HOST_BYTE_ORDER == BIG_ENDIAN) {
78 return raw_in;
79 }
80 else {
81 _SWAP_N(return,raw_in);
82 }
83}
84
85
d29d5195 86INLINE_PSIM_ENDIAN\
c906108c
SS
87(unsigned_N)
88endian_be2h_N(unsigned_N raw_in)
89{
90 if (CURRENT_HOST_BYTE_ORDER == BIG_ENDIAN) {
91 return raw_in;
92 }
93 else {
94 _SWAP_N(return,raw_in);
95 }
96}
97
98
d29d5195 99INLINE_PSIM_ENDIAN\
c906108c
SS
100(unsigned_N)
101endian_h2le_N(unsigned_N raw_in)
102{
103 if (CURRENT_HOST_BYTE_ORDER == LITTLE_ENDIAN) {
104 return raw_in;
105 }
106 else {
107 _SWAP_N(return,raw_in);
108 }
109}
110
111
d29d5195 112INLINE_PSIM_ENDIAN\
c906108c
SS
113(unsigned_N)
114endian_le2h_N(unsigned_N raw_in)
115{
116 if (CURRENT_HOST_BYTE_ORDER == LITTLE_ENDIAN) {
117 return raw_in;
118 }
119 else {
120 _SWAP_N(return,raw_in);
121 }
122}
123
124
125/* NOTE: See start of file for #define */
126#undef unsigned_N
127#undef endian_t2h_N
128#undef endian_h2t_N
129#undef _SWAP_N
130#undef swap_N
131#undef endian_h2be_N
132#undef endian_be2h_N
133#undef endian_h2le_N
134#undef endian_le2h_N