xref: /freebsd/sys/contrib/libfdt/libfdt_env.h (revision 52baf267be42c3e14a9d843c24c953efae7195bd)
121fdc27aSRafal Jaworowski #ifndef _LIBFDT_ENV_H
221fdc27aSRafal Jaworowski #define _LIBFDT_ENV_H
321fdc27aSRafal Jaworowski 
421d30ec1SRafal Jaworowski #ifdef _KERNEL
521d30ec1SRafal Jaworowski #include <sys/cdefs.h>
621d30ec1SRafal Jaworowski #include <sys/param.h>
721d30ec1SRafal Jaworowski #include <sys/types.h>
821d30ec1SRafal Jaworowski #include <sys/systm.h>
921d30ec1SRafal Jaworowski #include <sys/stdint.h>
1021d30ec1SRafal Jaworowski #else
1121fdc27aSRafal Jaworowski #include <stddef.h>
1221fdc27aSRafal Jaworowski #include <stdint.h>
1321fdc27aSRafal Jaworowski #include <string.h>
1421d30ec1SRafal Jaworowski #endif
1521fdc27aSRafal Jaworowski 
16*52baf267SWarner Losh #define EXTRACT_BYTE(n)	((unsigned long long)((uint8_t *)&x)[n])
17*52baf267SWarner Losh static inline uint16_t fdt16_to_cpu(uint16_t x)
18*52baf267SWarner Losh {
19*52baf267SWarner Losh 	return (EXTRACT_BYTE(0) << 8) | EXTRACT_BYTE(1);
20*52baf267SWarner Losh }
21*52baf267SWarner Losh #define cpu_to_fdt16(x) fdt16_to_cpu(x)
22*52baf267SWarner Losh 
2321fdc27aSRafal Jaworowski static inline uint32_t fdt32_to_cpu(uint32_t x)
2421fdc27aSRafal Jaworowski {
25*52baf267SWarner Losh 	return (EXTRACT_BYTE(0) << 24) | (EXTRACT_BYTE(1) << 16) | (EXTRACT_BYTE(2) << 8) | EXTRACT_BYTE(3);
2621fdc27aSRafal Jaworowski }
2721fdc27aSRafal Jaworowski #define cpu_to_fdt32(x) fdt32_to_cpu(x)
2821fdc27aSRafal Jaworowski 
2921fdc27aSRafal Jaworowski static inline uint64_t fdt64_to_cpu(uint64_t x)
3021fdc27aSRafal Jaworowski {
31*52baf267SWarner Losh 	return (EXTRACT_BYTE(0) << 56) | (EXTRACT_BYTE(1) << 48) | (EXTRACT_BYTE(2) << 40) | (EXTRACT_BYTE(3) << 32)
32*52baf267SWarner Losh 		| (EXTRACT_BYTE(4) << 24) | (EXTRACT_BYTE(5) << 16) | (EXTRACT_BYTE(6) << 8) | EXTRACT_BYTE(7);
3321fdc27aSRafal Jaworowski }
3421fdc27aSRafal Jaworowski #define cpu_to_fdt64(x) fdt64_to_cpu(x)
35*52baf267SWarner Losh #undef EXTRACT_BYTE
3621fdc27aSRafal Jaworowski 
3721fdc27aSRafal Jaworowski #endif /* _LIBFDT_ENV_H */
38