Subversion Repositories HelenOS

Rev

Rev 2794 | Rev 3648 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2794 Rev 2797
Line 33... Line 33...
33
 */
33
 */
34
 
34
 
35
#ifndef KERN_BYTEORDER_H_
35
#ifndef KERN_BYTEORDER_H_
36
#define KERN_BYTEORDER_H_
36
#define KERN_BYTEORDER_H_
37
 
37
 
-
 
38
#include <arch/byteorder.h>
-
 
39
 
-
 
40
#if !(defined(ARCH_IS_BIG_ENDIAN) ^ defined(ARCH_IS_LITTLE_ENDIAN))
-
 
41
#error The architecture must be either big-endian or little-endian.
-
 
42
#endif
-
 
43
 
-
 
44
#ifdef ARCH_IS_BIG_ENDIAN
-
 
45
 
-
 
46
#define uint16_t_le2host(n)     uint16_t_byteorder_swap(n)
-
 
47
#define uint32_t_le2host(n)     uint32_t_byteorder_swap(n)
-
 
48
#define uint64_t_le2host(n)     uint64_t_byteorder_swap(n)
-
 
49
 
-
 
50
#define uint16_t_be2host(n)     (n)
-
 
51
#define uint32_t_be2host(n)     (n)
-
 
52
#define uint64_t_be2host(n)     (n)
-
 
53
 
-
 
54
#else
-
 
55
 
-
 
56
#define uint16_t_le2host(n)     (n)
-
 
57
#define uint32_t_le2host(n)     (n)
-
 
58
#define uint64_t_le2host(n)     (n)
-
 
59
 
-
 
60
#define uint16_t_be2host(n)     uint16_t_byteorder_swap(n)
-
 
61
#define uint32_t_be2host(n)     uint32_t_byteorder_swap(n)
-
 
62
#define uint64_t_be2host(n)     uint64_t_byteorder_swap(n)
-
 
63
 
-
 
64
#endif
-
 
65
 
38
static inline uint64_t uint64_t_byteorder_swap(uint64_t n)
66
static inline uint64_t uint64_t_byteorder_swap(uint64_t n)
39
{
67
{
40
    return ((n & 0xff) << 56) |
68
    return ((n & 0xff) << 56) |
41
        ((n & 0xff00) << 40) |
69
        ((n & 0xff00) << 40) |
42
        ((n & 0xff0000) << 24) |
70
        ((n & 0xff0000) << 24) |