1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __XZ_CONFIG_H__ 3#define __XZ_CONFIG_H__ 4 5/* 6 * most of this is copied from lib/xz/xz_private.h, we can't use their defines 7 * since the boot wrapper is not built in the same environment as the rest of 8 * the kernel. 9 */ 10 11#include "types.h" 12#include "swab.h" 13 14static inline uint32_t swab32p(void *p) 15{ 16 uint32_t *q = p; 17 18 return swab32(*q); 19} 20 21#ifdef __LITTLE_ENDIAN__ 22#define get_le32(p) (*((uint32_t *) (p))) 23#define cpu_to_be32(x) swab32(x) 24static inline u32 be32_to_cpup(const u32 *p) 25{ 26 return swab32p((u32 *)p); 27} 28#else 29#define get_le32(p) swab32p(p) 30#define cpu_to_be32(x) (x) 31static inline u32 be32_to_cpup(const u32 *p) 32{ 33 return *p; 34} 35#endif 36 37static inline uint32_t get_unaligned_be32(const void *p) 38{ 39 return be32_to_cpup(p); 40} 41 42static inline void put_unaligned_be32(u32 val, void *p) 43{ 44 *((u32 *)p) = cpu_to_be32(val); 45} 46 47#define memeq(a, b, size) (memcmp(a, b, size) == 0) 48#define memzero(buf, size) memset(buf, 0, size) 49 50/* prevent the inclusion of the xz-preboot MM headers */ 51#define DECOMPR_MM_H 52#define memmove memmove 53#define XZ_EXTERN static 54 55/* xz.h needs to be included directly since we need enum xz_mode */ 56#include "../../../include/linux/xz.h" 57 58#undef XZ_EXTERN 59 60#endif 61