OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [common/] [v2_0/] [include/] [hal_endian.h] - Blame information for rev 663

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_HAL_HAL_ENDIAN_H
2
#define CYGONCE_HAL_HAL_ENDIAN_H
3
 
4
//=============================================================================
5
//
6
//      hal_endian.h
7
//
8
//      Endian conversion macros
9
//
10
//=============================================================================
11
//####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later version.
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23
// for more details.
24
//
25
// You should have received a copy of the GNU General Public License along
26
// with eCos; if not, write to the Free Software Foundation, Inc.,
27
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28
//
29
// As a special exception, if other files instantiate templates or use macros
30
// or inline functions from this file, or you compile this file and link it
31
// with other works to produce a work based on this file, this file does not
32
// by itself cause the resulting work to be covered by the GNU General Public
33
// License. However the source code for this file must still be made available
34
// in accordance with section (3) of the GNU General Public License.
35
//
36
// This exception does not invalidate any other reasons why a work based on
37
// this file might be covered by the GNU General Public License.
38
//
39
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40
// at http://sources.redhat.com/ecos/ecos-license/
41
// -------------------------------------------
42
//####ECOSGPLCOPYRIGHTEND####
43
//=============================================================================
44
//#####DESCRIPTIONBEGIN####
45
//
46
// Author(s):   jskov
47
// Contributors:jskov
48
// Date:        2001-10-04
49
// Purpose:     Endian conversion macros
50
// Usage:       #include <cyg/hal/hal_endian.h>
51
//                           
52
//####DESCRIPTIONEND####
53
//
54
//=============================================================================
55
 
56
#include <pkgconf/hal.h>                // CYGBLD_HAL_ENDIAN_H
57
#include <cyg/infra/cyg_type.h>         // endian setting
58
 
59
// Allow HALs to override the generic implementation of swap macros
60
#ifdef CYGBLD_HAL_ENDIAN_H
61
# include CYGBLD_HAL_ENDIAN_H
62
#endif
63
 
64
#ifndef CYG_SWAP16
65
# define CYG_SWAP16(_x_)                                        \
66
    ({ cyg_uint16 _x = (_x_); ((_x << 8) | (_x >> 8)); })
67
#endif
68
 
69
#ifndef CYG_SWAP32
70
# define CYG_SWAP32(_x_)                        \
71
    ({ cyg_uint32 _x = (_x_);                   \
72
       ((_x << 24) |                            \
73
       ((0x0000FF00UL & _x) <<  8) |            \
74
       ((0x00FF0000UL & _x) >>  8) |            \
75
       (_x  >> 24)); })
76
#endif
77
 
78
 
79
#if (CYG_BYTEORDER == CYG_LSBFIRST)
80
# define CYG_CPU_TO_BE16(_x_) CYG_SWAP16((_x_))
81
# define CYG_CPU_TO_BE32(_x_) CYG_SWAP32((_x_))
82
# define CYG_BE16_TO_CPU(_x_) CYG_SWAP16((_x_))
83
# define CYG_BE32_TO_CPU(_x_) CYG_SWAP32((_x_))
84
 
85
# define CYG_CPU_TO_LE16(_x_) (_x_)
86
# define CYG_CPU_TO_LE32(_x_) (_x_)
87
# define CYG_LE16_TO_CPU(_x_) (_x_)
88
# define CYG_LE32_TO_CPU(_x_) (_x_)
89
 
90
#elif (CYG_BYTEORDER == CYG_MSBFIRST)
91
 
92
# define CYG_CPU_TO_BE16(_x_) (_x_)
93
# define CYG_CPU_TO_BE32(_x_) (_x_)
94
# define CYG_BE16_TO_CPU(_x_) (_x_)
95
# define CYG_BE32_TO_CPU(_x_) (_x_)
96
 
97
# define CYG_CPU_TO_LE16(_x_) CYG_SWAP16((_x_))
98
# define CYG_CPU_TO_LE32(_x_) CYG_SWAP32((_x_))
99
# define CYG_LE16_TO_CPU(_x_) CYG_SWAP16((_x_))
100
# define CYG_LE32_TO_CPU(_x_) CYG_SWAP32((_x_))
101
 
102
#else
103
 
104
# error "Endian mode not selected"
105
 
106
#endif
107
 
108
//-----------------------------------------------------------------------------
109
#endif // CYGONCE_HAL_HAL_ENDIAN_H
110
// End of hal_endian.h

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.