aboutsummaryrefslogtreecommitdiff
path: root/Asm/x86/7zAsm.asm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Asm/x86/7zAsm.asm68
1 files changed, 60 insertions, 8 deletions
diff --git a/Asm/x86/7zAsm.asm b/Asm/x86/7zAsm.asm
index 19c40da..8910d16 100644
--- a/Asm/x86/7zAsm.asm
+++ b/Asm/x86/7zAsm.asm
@@ -1,5 +1,5 @@
1; 7zAsm.asm -- ASM macros 1; 7zAsm.asm -- ASM macros
2; 2022-05-16 : Igor Pavlov : Public domain 2; 2023-12-08 : Igor Pavlov : Public domain
3 3
4 4
5; UASM can require these changes 5; UASM can require these changes
@@ -43,7 +43,7 @@ else
43endif 43endif
44endif 44endif
45 45
46OPTION PROLOGUE:NONE 46OPTION PROLOGUE:NONE
47OPTION EPILOGUE:NONE 47OPTION EPILOGUE:NONE
48 48
49MY_ASM_START macro 49MY_ASM_START macro
@@ -121,10 +121,29 @@ endif
121 x2_H equ DH 121 x2_H equ DH
122 x3_H equ BH 122 x3_H equ BH
123 123
124; r0_L equ AL
125; r1_L equ CL
126; r2_L equ DL
127; r3_L equ BL
128
129; r0_H equ AH
130; r1_H equ CH
131; r2_H equ DH
132; r3_H equ BH
133
134
124ifdef x64 135ifdef x64
125 x5_L equ BPL 136 x5_L equ BPL
126 x6_L equ SIL 137 x6_L equ SIL
127 x7_L equ DIL 138 x7_L equ DIL
139 x8_L equ r8b
140 x9_L equ r9b
141 x10_L equ r10b
142 x11_L equ r11b
143 x12_L equ r12b
144 x13_L equ r13b
145 x14_L equ r14b
146 x15_L equ r15b
128 147
129 r0 equ RAX 148 r0 equ RAX
130 r1 equ RCX 149 r1 equ RCX
@@ -153,6 +172,22 @@ else
153 r7 equ x7 172 r7 equ x7
154endif 173endif
155 174
175 x0_R equ r0
176 x1_R equ r1
177 x2_R equ r2
178 x3_R equ r3
179 x4_R equ r4
180 x5_R equ r5
181 x6_R equ r6
182 x7_R equ r7
183 x8_R equ r8
184 x9_R equ r9
185 x10_R equ r10
186 x11_R equ r11
187 x12_R equ r12
188 x13_R equ r13
189 x14_R equ r14
190 x15_R equ r15
156 191
157ifdef x64 192ifdef x64
158ifdef ABI_LINUX 193ifdef ABI_LINUX
@@ -200,6 +235,14 @@ REG_ABI_PARAM_0 equ REG_PARAM_0
200REG_ABI_PARAM_1_x equ REG_PARAM_1_x 235REG_ABI_PARAM_1_x equ REG_PARAM_1_x
201REG_ABI_PARAM_1 equ REG_PARAM_1 236REG_ABI_PARAM_1 equ REG_PARAM_1
202 237
238MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
239 MY_PUSH_4_REGS
240endm
241
242MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
243 MY_POP_4_REGS
244endm
245
203else 246else
204; x64 247; x64
205 248
@@ -261,12 +304,25 @@ endm
261endif ; IS_LINUX 304endif ; IS_LINUX
262 305
263 306
264MY_PUSH_PRESERVED_ABI_REGS macro 307MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
265 if (IS_LINUX gt 0) 308 if (IS_LINUX gt 0)
266 MY_PUSH_2_REGS 309 MY_PUSH_2_REGS
267 else 310 else
268 MY_PUSH_4_REGS 311 MY_PUSH_4_REGS
269 endif 312 endif
313endm
314
315MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
316 if (IS_LINUX gt 0)
317 MY_POP_2_REGS
318 else
319 MY_POP_4_REGS
320 endif
321endm
322
323
324MY_PUSH_PRESERVED_ABI_REGS macro
325 MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11
270 push r12 326 push r12
271 push r13 327 push r13
272 push r14 328 push r14
@@ -279,11 +335,7 @@ MY_POP_PRESERVED_ABI_REGS macro
279 pop r14 335 pop r14
280 pop r13 336 pop r13
281 pop r12 337 pop r12
282 if (IS_LINUX gt 0) 338 MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11
283 MY_POP_2_REGS
284 else
285 MY_POP_4_REGS
286 endif
287endm 339endm
288 340
289endif ; x64 341endif ; x64