lzodefs.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 <[email protected]>
  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 <[email protected]>
  12. * Richard Purdie <[email protected]>
  13. */
  14. /* Version
  15. * 0: original lzo version
  16. * 1: lzo with support for RLE
  17. */
  18. #define LZO_VERSION 1
  19. #define COPY4(dst, src) \
  20. put_unaligned(get_unaligned((const u32 *)(src)), (u32 *)(dst))
  21. #if defined(CONFIG_X86_64) || defined(CONFIG_ARM64)
  22. #define COPY8(dst, src) \
  23. put_unaligned(get_unaligned((const u64 *)(src)), (u64 *)(dst))
  24. #else
  25. #define COPY8(dst, src) \
  26. COPY4(dst, src); COPY4((dst) + 4, (src) + 4)
  27. #endif
  28. #if defined(__BIG_ENDIAN) && defined(__LITTLE_ENDIAN)
  29. #error "conflicting endian definitions"
  30. #elif defined(CONFIG_X86_64) || defined(CONFIG_ARM64)
  31. #define LZO_USE_CTZ64 1
  32. #define LZO_USE_CTZ32 1
  33. #define LZO_FAST_64BIT_MEMORY_ACCESS
  34. #elif defined(CONFIG_X86) || defined(CONFIG_PPC)
  35. #define LZO_USE_CTZ32 1
  36. #elif defined(CONFIG_ARM) && (__LINUX_ARM_ARCH__ >= 5)
  37. #define LZO_USE_CTZ32 1
  38. #endif
  39. #define M1_MAX_OFFSET 0x0400
  40. #define M2_MAX_OFFSET 0x0800
  41. #define M3_MAX_OFFSET 0x4000
  42. #define M4_MAX_OFFSET_V0 0xbfff
  43. #define M4_MAX_OFFSET_V1 0xbffe
  44. #define M1_MIN_LEN 2
  45. #define M1_MAX_LEN 2
  46. #define M2_MIN_LEN 3
  47. #define M2_MAX_LEN 8
  48. #define M3_MIN_LEN 3
  49. #define M3_MAX_LEN 33
  50. #define M4_MIN_LEN 3
  51. #define M4_MAX_LEN 9
  52. #define M1_MARKER 0
  53. #define M2_MARKER 64
  54. #define M3_MARKER 32
  55. #define M4_MARKER 16
  56. #define MIN_ZERO_RUN_LENGTH 4
  57. #define MAX_ZERO_RUN_LENGTH (2047 + MIN_ZERO_RUN_LENGTH)
  58. #define lzo_dict_t unsigned short
  59. #define D_BITS 13
  60. #define D_SIZE (1u << D_BITS)
  61. #define D_MASK (D_SIZE - 1)
  62. #define D_HIGH ((D_MASK >> 1) + 1)