perf: Clean up perf_{session,alloc} management
[akaros.git] / kern / include / endian.h
1 /* Copyright (c) 2010 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * Macros to convert to and from endian-data */
6
7 #pragma once
8
9 #include <ros/common.h>
10 #include <arch/endian.h>
11
12 /* Endian-generic versions.  Let the compiler figure it out, plan 9-style */
13 #define l16get(p)       (((p)[1]<<8)|(p)[0])
14 #define l32get(p)       (((uint32_t)l16get(p+2)<<16)|l16get(p))
15 #define l64get(p)       (((uint64_t)l32get(p+4)<<32)|l32get(p))
16
17 #ifdef LITTLE_ENDIAN
18
19 #define __LITTLE_ENDIAN
20
21 #define cpu_to_le16(x) ((uint16_t)(x))
22 #define cpu_to_le32(x) ((uint32_t)(x))
23 #define cpu_to_le64(x) ((uint64_t)(x))
24 #define le16_to_cpu(x) ((uint16_t)(x))
25 #define le32_to_cpu(x) ((uint32_t)(x))
26 #define le64_to_cpu(x) ((uint64_t)(x))
27
28 #define cpu_to_be16(x) byte_swap16((x))
29 #define cpu_to_be32(x) byte_swap32((x))
30 #define cpu_to_be64(x) byte_swap64((x))
31 #define be16_to_cpu(x) byte_swap16((x))
32 #define be32_to_cpu(x) byte_swap32((x))
33 #define be64_to_cpu(x) byte_swap64((x))
34
35 #define PP_HTONS(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8))
36 #define PP_NTOHS(x) PP_HTONS(x)
37 #define PP_HTONL(x) ((((x) & 0xff) << 24) | \
38                      (((x) & 0xff00) << 8) | \
39                      (((x) & 0xff0000UL) >> 8) | \
40                      (((x) & 0xff000000UL) >> 24))
41 #define PP_NTOHL(x) PP_HTONL(x)
42
43 #else /* big endian */
44
45 # ifndef BIG_ENDIAN
46 # error "Need an endianness defined"
47 # endif
48
49 #define __BIG_ENDIAN
50
51 #define cpu_to_le16(x) byte_swap16((x))
52 #define cpu_to_le32(x) byte_swap32((x))
53 #define cpu_to_le64(x) byte_swap64((x))
54 #define le16_to_cpu(x) byte_swap16((x))
55 #define le32_to_cpu(x) byte_swap32((x))
56 #define le64_to_cpu(x) byte_swap64((x))
57
58 #define cpu_to_be16(x) ((uint16_t)(x))
59 #define cpu_to_be32(x) ((uint32_t)(x))
60 #define cpu_to_be64(x) ((uint64_t)(x))
61 #define be16_to_cpu(x) ((uint16_t)(x))
62 #define be32_to_cpu(x) ((uint32_t)(x))
63 #define be64_to_cpu(x) ((uint64_t)(x))
64
65 #define PP_HTONS(x) (x)
66 #define PP_NTOHS(x) (x)
67 #define PP_HTONL(x) (x)
68 #define PP_NTOHL(x) (x)
69
70 #endif /* endian */