| .. | .. |
|---|
| 12 | 12 | #define _INFUTIL_H |
|---|
| 13 | 13 | |
|---|
| 14 | 14 | #include <linux/zlib.h> |
|---|
| 15 | +#ifdef CONFIG_ZLIB_DFLTCC |
|---|
| 16 | +#include "../zlib_dfltcc/dfltcc.h" |
|---|
| 17 | +#include <asm/page.h> |
|---|
| 18 | +#endif |
|---|
| 15 | 19 | |
|---|
| 16 | 20 | /* memory allocation for inflation */ |
|---|
| 17 | 21 | |
|---|
| 18 | 22 | struct inflate_workspace { |
|---|
| 19 | 23 | struct inflate_state inflate_state; |
|---|
| 20 | | - unsigned char working_window[1 << MAX_WBITS]; |
|---|
| 24 | +#ifdef CONFIG_ZLIB_DFLTCC |
|---|
| 25 | + struct dfltcc_state dfltcc_state; |
|---|
| 26 | + unsigned char working_window[(1 << MAX_WBITS) + PAGE_SIZE]; |
|---|
| 27 | +#else |
|---|
| 28 | + unsigned char working_window[(1 << MAX_WBITS)]; |
|---|
| 29 | +#endif |
|---|
| 21 | 30 | }; |
|---|
| 22 | 31 | |
|---|
| 23 | | -#define WS(z) ((struct inflate_workspace *)(z->workspace)) |
|---|
| 32 | +#ifdef CONFIG_ZLIB_DFLTCC |
|---|
| 33 | +/* dfltcc_state must be doubleword aligned for DFLTCC call */ |
|---|
| 34 | +static_assert(offsetof(struct inflate_workspace, dfltcc_state) % 8 == 0); |
|---|
| 35 | +#endif |
|---|
| 36 | + |
|---|
| 37 | +#define WS(strm) ((struct inflate_workspace *)(strm->workspace)) |
|---|
| 24 | 38 | |
|---|
| 25 | 39 | #endif |
|---|