]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Library/LzmaCustomDecompressLib/Sdk/C/Bra.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Library / LzmaCustomDecompressLib / Sdk / C / Bra.h
CommitLineData
11ff2c71 1/* Bra.h -- Branch converters for executables\r
1e230224 22013-01-18 : Igor Pavlov : Public domain */\r
11ff2c71
LG
3\r
4#ifndef __BRA_H\r
5#define __BRA_H\r
6\r
1e230224
LG
7#include "7zTypes.h"\r
8\r
9EXTERN_C_BEGIN\r
11ff2c71
LG
10\r
11/*\r
12These functions convert relative addresses to absolute addresses\r
13in CALL instructions to increase the compression ratio.\r
ba39402f 14\r
11ff2c71
LG
15 In:\r
16 data - data buffer\r
17 size - size of data\r
18 ip - current virtual Instruction Pinter (IP) value\r
19 state - state variable for x86 converter\r
20 encoding - 0 (for decoding), 1 (for encoding)\r
ba39402f 21\r
11ff2c71
LG
22 Out:\r
23 state - state variable for x86 converter\r
24\r
25 Returns:\r
26 The number of processed bytes. If you call these functions with multiple calls,\r
27 you must start next call with first byte after block of processed bytes.\r
ba39402f 28\r
11ff2c71 29 Type Endian Alignment LookAhead\r
ba39402f 30\r
11ff2c71
LG
31 x86 little 1 4\r
32 ARMT little 2 2\r
33 ARM little 4 0\r
34 PPC big 4 0\r
35 SPARC big 4 0\r
36 IA64 little 16 0\r
37\r
38 size must be >= Alignment + LookAhead, if it's not last block.\r
39 If (size < Alignment + LookAhead), converter returns 0.\r
40\r
41 Example:\r
42\r
43 UInt32 ip = 0;\r
44 for ()\r
45 {\r
46 ; size must be >= Alignment + LookAhead, if it's not last block\r
47 SizeT processed = Convert(data, size, ip, 1);\r
48 data += processed;\r
49 size -= processed;\r
50 ip += processed;\r
51 }\r
52*/\r
53\r
1436aea4
MK
54#define x86_Convert_Init(state) { state = 0; }\r
55SizeT\r
56x86_Convert (\r
57 Byte *data,\r
58 SizeT size,\r
59 UInt32 ip,\r
60 UInt32 *state,\r
61 int encoding\r
62 );\r
63\r
64SizeT\r
65ARM_Convert (\r
66 Byte *data,\r
67 SizeT size,\r
68 UInt32 ip,\r
69 int encoding\r
70 );\r
71\r
72SizeT\r
73ARMT_Convert (\r
74 Byte *data,\r
75 SizeT size,\r
76 UInt32 ip,\r
77 int encoding\r
78 );\r
79\r
80SizeT\r
81PPC_Convert (\r
82 Byte *data,\r
83 SizeT size,\r
84 UInt32 ip,\r
85 int encoding\r
86 );\r
87\r
88SizeT\r
89SPARC_Convert (\r
90 Byte *data,\r
91 SizeT size,\r
92 UInt32 ip,\r
93 int encoding\r
94 );\r
95\r
96SizeT\r
97IA64_Convert (\r
98 Byte *data,\r
99 SizeT size,\r
100 UInt32 ip,\r
101 int encoding\r
102 );\r
11ff2c71 103\r
1e230224
LG
104EXTERN_C_END\r
105\r
11ff2c71 106#endif\r