| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | /* | 
|---|
| 3 | *  lzodefs.h -- architecture, OS and compiler specific defines | 
|---|
| 4 | * | 
|---|
| 5 | *  Copyright (C) 1996-2012 Markus F.X.J. Oberhumer <markus@oberhumer.com> | 
|---|
| 6 | * | 
|---|
| 7 | *  The full LZO package can be found at: | 
|---|
| 8 | *  http://www.oberhumer.com/opensource/lzo/ | 
|---|
| 9 | * | 
|---|
| 10 | *  Changed for Linux kernel use by: | 
|---|
| 11 | *  Nitin Gupta <nitingupta910@gmail.com> | 
|---|
| 12 | *  Richard Purdie <rpurdie@openedhand.com> | 
|---|
| 13 | */ | 
|---|
| 14 |  | 
|---|
| 15 |  | 
|---|
| 16 | /* Version | 
|---|
| 17 | * 0: original lzo version | 
|---|
| 18 | * 1: lzo with support for RLE | 
|---|
| 19 | */ | 
|---|
| 20 | #define LZO_VERSION 1 | 
|---|
| 21 |  | 
|---|
| 22 | #define COPY4(dst, src)	\ | 
|---|
| 23 | put_unaligned(get_unaligned((const u32 *)(src)), (u32 *)(dst)) | 
|---|
| 24 | #if defined(CONFIG_X86_64) || defined(CONFIG_ARM64) | 
|---|
| 25 | #define COPY8(dst, src)	\ | 
|---|
| 26 | put_unaligned(get_unaligned((const u64 *)(src)), (u64 *)(dst)) | 
|---|
| 27 | #else | 
|---|
| 28 | #define COPY8(dst, src)	\ | 
|---|
| 29 | COPY4(dst, src); COPY4((dst) + 4, (src) + 4) | 
|---|
| 30 | #endif | 
|---|
| 31 |  | 
|---|
| 32 | #if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN) | 
|---|
| 33 | #error "conflicting endian definitions" | 
|---|
| 34 | #elif defined(CONFIG_X86_64) || defined(CONFIG_ARM64) | 
|---|
| 35 | #define LZO_USE_CTZ64	1 | 
|---|
| 36 | #define LZO_USE_CTZ32	1 | 
|---|
| 37 | #define LZO_FAST_64BIT_MEMORY_ACCESS | 
|---|
| 38 | #elif defined(CONFIG_X86) || defined(CONFIG_PPC) | 
|---|
| 39 | #define LZO_USE_CTZ32	1 | 
|---|
| 40 | #elif defined(CONFIG_ARM) && (__LINUX_ARM_ARCH__ >= 5) | 
|---|
| 41 | #define LZO_USE_CTZ32	1 | 
|---|
| 42 | #endif | 
|---|
| 43 |  | 
|---|
| 44 | #define M1_MAX_OFFSET	0x0400 | 
|---|
| 45 | #define M2_MAX_OFFSET	0x0800 | 
|---|
| 46 | #define M3_MAX_OFFSET	0x4000 | 
|---|
| 47 | #define M4_MAX_OFFSET_V0	0xbfff | 
|---|
| 48 | #define M4_MAX_OFFSET_V1	0xbffe | 
|---|
| 49 |  | 
|---|
| 50 | #define M1_MIN_LEN	2 | 
|---|
| 51 | #define M1_MAX_LEN	2 | 
|---|
| 52 | #define M2_MIN_LEN	3 | 
|---|
| 53 | #define M2_MAX_LEN	8 | 
|---|
| 54 | #define M3_MIN_LEN	3 | 
|---|
| 55 | #define M3_MAX_LEN	33 | 
|---|
| 56 | #define M4_MIN_LEN	3 | 
|---|
| 57 | #define M4_MAX_LEN	9 | 
|---|
| 58 |  | 
|---|
| 59 | #define M1_MARKER	0 | 
|---|
| 60 | #define M2_MARKER	64 | 
|---|
| 61 | #define M3_MARKER	32 | 
|---|
| 62 | #define M4_MARKER	16 | 
|---|
| 63 |  | 
|---|
| 64 | #define MIN_ZERO_RUN_LENGTH	4 | 
|---|
| 65 | #define MAX_ZERO_RUN_LENGTH	(2047 + MIN_ZERO_RUN_LENGTH) | 
|---|
| 66 |  | 
|---|
| 67 | #define lzo_dict_t      unsigned short | 
|---|
| 68 | #define D_BITS		13 | 
|---|
| 69 | #define D_SIZE		(1u << D_BITS) | 
|---|
| 70 | #define D_MASK		(D_SIZE - 1) | 
|---|
| 71 | #define D_HIGH		((D_MASK >> 1) + 1) | 
|---|
| 72 |  | 
|---|