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