Subversion Repositories HelenOS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4300 trochtova 1
/*
2
 *  The PCI Library -- System-Dependent Stuff
3
 *
4
 *  Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
5
 *
6
 *  May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
7
 *
8
 *  Can be freely distributed and used under the terms of the GNU GPL.
9
 */
10
 
11
#ifdef __GNUC__
12
#define UNUSED __attribute__((unused))
13
#define NONRET __attribute__((noreturn))
14
#else
15
#define UNUSED
16
#define NONRET
17
#define inline
18
#endif
19
 
20
typedef u8 byte;
21
typedef u16 word;
22
 
23
static inline void swap(u8 *x, u8 *y)
24
{
25
    u8 z = *x;
26
    *x = *y;
27
    *y = z;
28
}
29
 
30
static inline u16 invert_endianess_16(u16 x)
31
{
32
    u8 *px = (u8 *)&x;
33
    swap(&px[0], &px[1]);
34
    return x;
35
}
36
 
37
static inline u32 invert_endianess_32(u32 x)
38
{
39
    u8 *px = (u8 *)&x;
40
    swap(&px[0], &px[3]);
41
    swap(&px[1], &px[2]);
42
    return x;
43
}
44
 
45
#ifdef UARCH_sparc64
46
    #define cpu_to_le16(x) (invert_endianess_16(x))
47
    #define cpu_to_le32(x) (invert_endianess_32(x))
48
    #define le16_to_cpu(x) (invert_endianess_16(x))
49
    #define le32_to_cpu(x) (invert_endianess_32(x))
50
#else
51
    #define cpu_to_le16(x) (x)
52
    #define cpu_to_le32(x) (x)
53
    #define le16_to_cpu(x) (x)
54
    #define le32_to_cpu(x) (x)
55
#endif