summaryrefslogtreecommitdiff
path: root/neozip/arch/s390/dfltcc_common.h
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 19:56:09 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 19:56:09 +0300
commit7fb132859fda54aa96bc9dd46d302b343eeb5a02 (patch)
treeb43ae77d7451fb470a260c03349a1caf2846c5e5 /neozip/arch/s390/dfltcc_common.h
parentb1e34e861b5d732afe828d58aad2c638135061fd (diff)
parentc2712b8a345191f6ed79558c089777df94590087 (diff)
downloadProject-Tick-7fb132859fda54aa96bc9dd46d302b343eeb5a02.tar.gz
Project-Tick-7fb132859fda54aa96bc9dd46d302b343eeb5a02.zip
Add 'neozip/' from commit 'c2712b8a345191f6ed79558c089777df94590087'
git-subtree-dir: neozip git-subtree-mainline: b1e34e861b5d732afe828d58aad2c638135061fd git-subtree-split: c2712b8a345191f6ed79558c089777df94590087
Diffstat (limited to 'neozip/arch/s390/dfltcc_common.h')
-rw-r--r--neozip/arch/s390/dfltcc_common.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/neozip/arch/s390/dfltcc_common.h b/neozip/arch/s390/dfltcc_common.h
new file mode 100644
index 0000000000..a6527ab5df
--- /dev/null
+++ b/neozip/arch/s390/dfltcc_common.h
@@ -0,0 +1,119 @@
+#ifndef DFLTCC_COMMON_H
+#define DFLTCC_COMMON_H
+
+#include "zutil.h"
+
+/*
+ Parameter Block for Query Available Functions.
+ */
+struct dfltcc_qaf_param {
+ char fns[16];
+ char reserved1[8];
+ char fmts[2];
+ char reserved2[6];
+} ALIGNED_(8);
+
+/*
+ Parameter Block for Generate Dynamic-Huffman Table, Compress and Expand.
+ */
+struct dfltcc_param_v0 {
+ uint16_t pbvn; /* Parameter-Block-Version Number */
+ uint8_t mvn; /* Model-Version Number */
+ uint8_t ribm; /* Reserved for IBM use */
+ uint32_t reserved32 : 31;
+ uint32_t cf : 1; /* Continuation Flag */
+ uint8_t reserved64[8];
+ uint32_t nt : 1; /* New Task */
+ uint32_t reserved129 : 1;
+ uint32_t cvt : 1; /* Check Value Type */
+ uint32_t reserved131 : 1;
+ uint32_t htt : 1; /* Huffman-Table Type */
+ uint32_t bcf : 1; /* Block-Continuation Flag */
+ uint32_t bcc : 1; /* Block Closing Control */
+ uint32_t bhf : 1; /* Block Header Final */
+ uint32_t reserved136 : 1;
+ uint32_t reserved137 : 1;
+ uint32_t dhtgc : 1; /* DHT Generation Control */
+ uint32_t reserved139 : 5;
+ uint32_t reserved144 : 5;
+ uint32_t sbb : 3; /* Sub-Byte Boundary */
+ uint8_t oesc; /* Operation-Ending-Supplemental Code */
+ uint32_t reserved160 : 12;
+ uint32_t ifs : 4; /* Incomplete-Function Status */
+ uint16_t ifl; /* Incomplete-Function Length */
+ uint8_t reserved192[8];
+ uint8_t reserved256[8];
+ uint8_t reserved320[4];
+ uint16_t hl; /* History Length */
+ uint32_t reserved368 : 1;
+ uint16_t ho : 15; /* History Offset */
+ uint32_t cv; /* Check Value */
+ uint32_t eobs : 15; /* End-of-block Symbol */
+ uint32_t reserved431: 1;
+ uint8_t eobl : 4; /* End-of-block Length */
+ uint32_t reserved436 : 12;
+ uint32_t reserved448 : 4;
+ uint16_t cdhtl : 12; /* Compressed-Dynamic-Huffman Table
+ Length */
+ uint8_t reserved464[6];
+ uint8_t cdht[288]; /* Compressed-Dynamic-Huffman Table */
+ uint8_t reserved[24];
+ uint8_t ribm2[8]; /* Reserved for IBM use */
+ uint8_t csb[1152]; /* Continuation-State Buffer */
+} ALIGNED_(8);
+
+/*
+ Extension of inflate_state and deflate_state.
+ */
+struct dfltcc_state {
+ struct dfltcc_param_v0 param; /* Parameter block. */
+ struct dfltcc_qaf_param af; /* Available functions. */
+ char msg[64]; /* Buffer for strm->msg */
+};
+
+typedef struct {
+ struct dfltcc_state common;
+ uint16_t level_mask; /* Levels on which to use DFLTCC */
+ uint32_t block_size; /* New block each X bytes */
+ size_t block_threshold; /* New block after total_in > X */
+ uint32_t dht_threshold; /* New block only if avail_in >= X */
+} arch_deflate_state;
+
+typedef struct {
+ struct dfltcc_state common;
+} arch_inflate_state;
+
+/*
+ History buffer size.
+ */
+#define HB_BITS 15
+#define HB_SIZE (1 << HB_BITS)
+
+/*
+ Sizes of deflate block parts.
+ */
+#define DFLTCC_BLOCK_HEADER_BITS 3
+#define DFLTCC_HLITS_COUNT_BITS 5
+#define DFLTCC_HDISTS_COUNT_BITS 5
+#define DFLTCC_HCLENS_COUNT_BITS 4
+#define DFLTCC_MAX_HCLENS 19
+#define DFLTCC_HCLEN_BITS 3
+#define DFLTCC_MAX_HLITS 286
+#define DFLTCC_MAX_HDISTS 30
+#define DFLTCC_MAX_HLIT_HDIST_BITS 7
+#define DFLTCC_MAX_SYMBOL_BITS 16
+#define DFLTCC_MAX_EOBS_BITS 15
+#define DFLTCC_MAX_PADDING_BITS 7
+
+#define DEFLATE_BOUND_COMPLEN(source_len) \
+ ((DFLTCC_BLOCK_HEADER_BITS + \
+ DFLTCC_HLITS_COUNT_BITS + \
+ DFLTCC_HDISTS_COUNT_BITS + \
+ DFLTCC_HCLENS_COUNT_BITS + \
+ DFLTCC_MAX_HCLENS * DFLTCC_HCLEN_BITS + \
+ (DFLTCC_MAX_HLITS + DFLTCC_MAX_HDISTS) * DFLTCC_MAX_HLIT_HDIST_BITS + \
+ (source_len) * DFLTCC_MAX_SYMBOL_BITS + \
+ DFLTCC_MAX_EOBS_BITS + \
+ DFLTCC_MAX_PADDING_BITS) >> 3)
+
+#endif