/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __XZ_CONFIG_H__
#define __XZ_CONFIG_H__

/*
 * most of this is copied from lib/xz/xz_private.h, we can't use their defines
 * since the boot wrapper is not built in the same environment as the rest of
 * the kernel.
 */

#include "types.h"
#include "swab.h"

static inline uint32_t swab32p(void *p)
{
	uint32_t *q = p;

	return swab32(*q);
}

#ifdef __LITTLE_ENDIAN__
#define get_le32(p) (*((uint32_t *) (p)))
#define cpu_to_be32(x) swab32(x)
static inline u32 be32_to_cpup(const u32 *p)
{
	return swab32p((u32 *)p);
}
#else
#define get_le32(p) swab32p(p)
#define cpu_to_be32(x) (x)
static inline u32 be32_to_cpup(const u32 *p)
{
	return *p;
}
#endif

static inline uint32_t get_unaligned_be32(const void *p)
{
	return be32_to_cpup(p);
}

static inline void put_unaligned_be32(u32 val, void *p)
{
	*((u32 *)p) = cpu_to_be32(val);
}

#define memeq(a, b, size) (memcmp(a, b, size) == 0)
#define memzero(buf, size) memset(buf, 0, size)

/* prevent the inclusion of the xz-preboot MM headers */
#define DECOMPR_MM_H
#define memmove memmove

/* xz.h needs to be included directly since we need enum xz_mode */
#include "../../../include/linux/xz.h"

#endif
