blob: e17f1559318b7d54152c1eefbb96d9a3f5c6c3de [file] [log] [blame]
Andrew Scullfbc938a2018-08-20 14:09:28 +01001#pragma once
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01002
3#include <stddef.h>
4#include <stdint.h>
5
6void *memset(void *s, int c, size_t n);
7void *memcpy(void *dst, const void *src, size_t n);
8void *memmove(void *dst, const void *src, size_t n);
9int memcmp(const void *a, const void *b, size_t n);
10
11size_t strlen(const char *str);
12int strcmp(const char *a, const char *b);
13
Andrew Scullf12b35d2018-07-16 12:12:59 +010014#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010015
Andrew Scullf12b35d2018-07-16 12:12:59 +010016#define be16toh(v) __builtin_bswap16(v)
17#define be32toh(v) __builtin_bswap32(v)
18#define be64toh(v) __builtin_bswap64(v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010019
Andrew Scullf12b35d2018-07-16 12:12:59 +010020#define htobe16(v) __builtin_bswap16(v)
21#define htobe32(v) __builtin_bswap32(v)
22#define htobe64(v) __builtin_bswap64(v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010023
Andrew Scullf12b35d2018-07-16 12:12:59 +010024#define le16toh(v) (v)
25#define le32toh(v) (v)
26#define le64toh(v) (v)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010027
Andrew Scullf12b35d2018-07-16 12:12:59 +010028#define htole16(v) (v)
29#define htole32(v) (v)
30#define htole64(v) (v)
31
32#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
33
34#define be16toh(v) (v)
35#define be32toh(v) (v)
36#define be64toh(v) (v)
37
38#define htobe16(v) (v)
39#define htobe32(v) (v)
40#define htobe64(v) (v)
41
42#define le16toh(v) __builtin_bswap16(v)
43#define le32toh(v) __builtin_bswap32(v)
44#define le64toh(v) __builtin_bswap64(v)
45
46#define htole16(v) __builtin_bswap16(v)
47#define htole32(v) __builtin_bswap32(v)
48#define htole64(v) __builtin_bswap64(v)
49
Andrew Scull4f170f52018-07-19 12:58:20 +010050#else /* __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ && \
51 __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ */
Andrew Scullf12b35d2018-07-16 12:12:59 +010052
53#error "Unsupported byte order"
54
55#endif