1204431Sraj#ifndef _LIBFDT_ENV_H
2204431Sraj#define _LIBFDT_ENV_H
3204431Sraj
4208750Sraj#ifdef _KERNEL
5208750Sraj#include <sys/cdefs.h>
6208750Sraj#include <sys/param.h>
7208750Sraj#include <sys/types.h>
8208750Sraj#include <sys/systm.h>
9208750Sraj#include <sys/stdint.h>
10208750Sraj#else
11204431Sraj#include <stddef.h>
12204431Sraj#include <stdint.h>
13204431Sraj#include <string.h>
14208750Sraj#endif
15204431Sraj
16238742Simp#define EXTRACT_BYTE(n)	((unsigned long long)((uint8_t *)&x)[n])
17238742Simpstatic inline uint16_t fdt16_to_cpu(uint16_t x)
18238742Simp{
19238742Simp	return (EXTRACT_BYTE(0) << 8) | EXTRACT_BYTE(1);
20238742Simp}
21238742Simp#define cpu_to_fdt16(x) fdt16_to_cpu(x)
22238742Simp
23204431Srajstatic inline uint32_t fdt32_to_cpu(uint32_t x)
24204431Sraj{
25238742Simp	return (EXTRACT_BYTE(0) << 24) | (EXTRACT_BYTE(1) << 16) | (EXTRACT_BYTE(2) << 8) | EXTRACT_BYTE(3);
26204431Sraj}
27204431Sraj#define cpu_to_fdt32(x) fdt32_to_cpu(x)
28204431Sraj
29204431Srajstatic inline uint64_t fdt64_to_cpu(uint64_t x)
30204431Sraj{
31238742Simp	return (EXTRACT_BYTE(0) << 56) | (EXTRACT_BYTE(1) << 48) | (EXTRACT_BYTE(2) << 40) | (EXTRACT_BYTE(3) << 32)
32238742Simp		| (EXTRACT_BYTE(4) << 24) | (EXTRACT_BYTE(5) << 16) | (EXTRACT_BYTE(6) << 8) | EXTRACT_BYTE(7);
33204431Sraj}
34204431Sraj#define cpu_to_fdt64(x) fdt64_to_cpu(x)
35238742Simp#undef EXTRACT_BYTE
36204431Sraj
37204431Sraj#endif /* _LIBFDT_ENV_H */
38