root/lib/lzo/lzodefs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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)

/* [<][>][^][v][top][bottom][index][help] */