Go to most recent revision | 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 |