xref: /aosp_15_r20/external/lzma/Asm/x86/7zAsm.asm (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker; 7zAsm.asm -- ASM macros
2*f6dc9357SAndroid Build Coastguard Worker; 2023-12-08 : Igor Pavlov : Public domain
3*f6dc9357SAndroid Build Coastguard Worker
4*f6dc9357SAndroid Build Coastguard Worker
5*f6dc9357SAndroid Build Coastguard Worker; UASM can require these changes
6*f6dc9357SAndroid Build Coastguard Worker; OPTION FRAMEPRESERVEFLAGS:ON
7*f6dc9357SAndroid Build Coastguard Worker; OPTION PROLOGUE:NONE
8*f6dc9357SAndroid Build Coastguard Worker; OPTION EPILOGUE:NONE
9*f6dc9357SAndroid Build Coastguard Worker
10*f6dc9357SAndroid Build Coastguard Workerifdef @wordsize
11*f6dc9357SAndroid Build Coastguard Worker; @wordsize is defined only in JWASM and ASMC and is not defined in MASM
12*f6dc9357SAndroid Build Coastguard Worker; @wordsize eq 8 for 64-bit x64
13*f6dc9357SAndroid Build Coastguard Worker; @wordsize eq 2 for 32-bit x86
14*f6dc9357SAndroid Build Coastguard Workerif @wordsize eq 8
15*f6dc9357SAndroid Build Coastguard Worker  x64 equ 1
16*f6dc9357SAndroid Build Coastguard Workerendif
17*f6dc9357SAndroid Build Coastguard Workerelse
18*f6dc9357SAndroid Build Coastguard Workerifdef RAX
19*f6dc9357SAndroid Build Coastguard Worker  x64 equ 1
20*f6dc9357SAndroid Build Coastguard Workerendif
21*f6dc9357SAndroid Build Coastguard Workerendif
22*f6dc9357SAndroid Build Coastguard Worker
23*f6dc9357SAndroid Build Coastguard Worker
24*f6dc9357SAndroid Build Coastguard Workerifdef x64
25*f6dc9357SAndroid Build Coastguard Worker  IS_X64 equ 1
26*f6dc9357SAndroid Build Coastguard Workerelse
27*f6dc9357SAndroid Build Coastguard Worker  IS_X64 equ 0
28*f6dc9357SAndroid Build Coastguard Workerendif
29*f6dc9357SAndroid Build Coastguard Worker
30*f6dc9357SAndroid Build Coastguard Workerifdef ABI_LINUX
31*f6dc9357SAndroid Build Coastguard Worker  IS_LINUX equ 1
32*f6dc9357SAndroid Build Coastguard Workerelse
33*f6dc9357SAndroid Build Coastguard Worker  IS_LINUX equ 0
34*f6dc9357SAndroid Build Coastguard Workerendif
35*f6dc9357SAndroid Build Coastguard Worker
36*f6dc9357SAndroid Build Coastguard Workerifndef x64
37*f6dc9357SAndroid Build Coastguard Worker; Use ABI_CDECL for x86 (32-bit) only
38*f6dc9357SAndroid Build Coastguard Worker; if ABI_CDECL is not defined, we use fastcall abi
39*f6dc9357SAndroid Build Coastguard Workerifdef ABI_CDECL
40*f6dc9357SAndroid Build Coastguard Worker  IS_CDECL equ 1
41*f6dc9357SAndroid Build Coastguard Workerelse
42*f6dc9357SAndroid Build Coastguard Worker  IS_CDECL equ 0
43*f6dc9357SAndroid Build Coastguard Workerendif
44*f6dc9357SAndroid Build Coastguard Workerendif
45*f6dc9357SAndroid Build Coastguard Worker
46*f6dc9357SAndroid Build Coastguard WorkerOPTION PROLOGUE:NONE
47*f6dc9357SAndroid Build Coastguard WorkerOPTION EPILOGUE:NONE
48*f6dc9357SAndroid Build Coastguard Worker
49*f6dc9357SAndroid Build Coastguard WorkerMY_ASM_START macro
50*f6dc9357SAndroid Build Coastguard Worker  ifdef x64
51*f6dc9357SAndroid Build Coastguard Worker    .code
52*f6dc9357SAndroid Build Coastguard Worker  else
53*f6dc9357SAndroid Build Coastguard Worker    .386
54*f6dc9357SAndroid Build Coastguard Worker    .model flat
55*f6dc9357SAndroid Build Coastguard Worker    _TEXT$00 SEGMENT PARA PUBLIC 'CODE'
56*f6dc9357SAndroid Build Coastguard Worker  endif
57*f6dc9357SAndroid Build Coastguard Workerendm
58*f6dc9357SAndroid Build Coastguard Worker
59*f6dc9357SAndroid Build Coastguard WorkerMY_PROC macro name:req, numParams:req
60*f6dc9357SAndroid Build Coastguard Worker  align 16
61*f6dc9357SAndroid Build Coastguard Worker  proc_numParams = numParams
62*f6dc9357SAndroid Build Coastguard Worker  if (IS_X64 gt 0)
63*f6dc9357SAndroid Build Coastguard Worker    proc_name equ name
64*f6dc9357SAndroid Build Coastguard Worker  elseif (IS_LINUX gt 0)
65*f6dc9357SAndroid Build Coastguard Worker    proc_name equ name
66*f6dc9357SAndroid Build Coastguard Worker  elseif (IS_CDECL gt 0)
67*f6dc9357SAndroid Build Coastguard Worker    proc_name equ @CatStr(_,name)
68*f6dc9357SAndroid Build Coastguard Worker  else
69*f6dc9357SAndroid Build Coastguard Worker    proc_name equ @CatStr(@,name,@, %numParams * 4)
70*f6dc9357SAndroid Build Coastguard Worker  endif
71*f6dc9357SAndroid Build Coastguard Worker  proc_name PROC
72*f6dc9357SAndroid Build Coastguard Workerendm
73*f6dc9357SAndroid Build Coastguard Worker
74*f6dc9357SAndroid Build Coastguard WorkerMY_ENDP macro
75*f6dc9357SAndroid Build Coastguard Worker    if (IS_X64 gt 0)
76*f6dc9357SAndroid Build Coastguard Worker        ret
77*f6dc9357SAndroid Build Coastguard Worker    elseif (IS_CDECL gt 0)
78*f6dc9357SAndroid Build Coastguard Worker        ret
79*f6dc9357SAndroid Build Coastguard Worker    elseif (proc_numParams LT 3)
80*f6dc9357SAndroid Build Coastguard Worker        ret
81*f6dc9357SAndroid Build Coastguard Worker    else
82*f6dc9357SAndroid Build Coastguard Worker        ret (proc_numParams - 2) * 4
83*f6dc9357SAndroid Build Coastguard Worker    endif
84*f6dc9357SAndroid Build Coastguard Worker  proc_name ENDP
85*f6dc9357SAndroid Build Coastguard Workerendm
86*f6dc9357SAndroid Build Coastguard Worker
87*f6dc9357SAndroid Build Coastguard Worker
88*f6dc9357SAndroid Build Coastguard Workerifdef x64
89*f6dc9357SAndroid Build Coastguard Worker  REG_SIZE equ 8
90*f6dc9357SAndroid Build Coastguard Worker  REG_LOGAR_SIZE equ 3
91*f6dc9357SAndroid Build Coastguard Workerelse
92*f6dc9357SAndroid Build Coastguard Worker  REG_SIZE equ 4
93*f6dc9357SAndroid Build Coastguard Worker  REG_LOGAR_SIZE equ 2
94*f6dc9357SAndroid Build Coastguard Workerendif
95*f6dc9357SAndroid Build Coastguard Worker
96*f6dc9357SAndroid Build Coastguard Worker  x0 equ EAX
97*f6dc9357SAndroid Build Coastguard Worker  x1 equ ECX
98*f6dc9357SAndroid Build Coastguard Worker  x2 equ EDX
99*f6dc9357SAndroid Build Coastguard Worker  x3 equ EBX
100*f6dc9357SAndroid Build Coastguard Worker  x4 equ ESP
101*f6dc9357SAndroid Build Coastguard Worker  x5 equ EBP
102*f6dc9357SAndroid Build Coastguard Worker  x6 equ ESI
103*f6dc9357SAndroid Build Coastguard Worker  x7 equ EDI
104*f6dc9357SAndroid Build Coastguard Worker
105*f6dc9357SAndroid Build Coastguard Worker  x0_W equ AX
106*f6dc9357SAndroid Build Coastguard Worker  x1_W equ CX
107*f6dc9357SAndroid Build Coastguard Worker  x2_W equ DX
108*f6dc9357SAndroid Build Coastguard Worker  x3_W equ BX
109*f6dc9357SAndroid Build Coastguard Worker
110*f6dc9357SAndroid Build Coastguard Worker  x5_W equ BP
111*f6dc9357SAndroid Build Coastguard Worker  x6_W equ SI
112*f6dc9357SAndroid Build Coastguard Worker  x7_W equ DI
113*f6dc9357SAndroid Build Coastguard Worker
114*f6dc9357SAndroid Build Coastguard Worker  x0_L equ AL
115*f6dc9357SAndroid Build Coastguard Worker  x1_L equ CL
116*f6dc9357SAndroid Build Coastguard Worker  x2_L equ DL
117*f6dc9357SAndroid Build Coastguard Worker  x3_L equ BL
118*f6dc9357SAndroid Build Coastguard Worker
119*f6dc9357SAndroid Build Coastguard Worker  x0_H equ AH
120*f6dc9357SAndroid Build Coastguard Worker  x1_H equ CH
121*f6dc9357SAndroid Build Coastguard Worker  x2_H equ DH
122*f6dc9357SAndroid Build Coastguard Worker  x3_H equ BH
123*f6dc9357SAndroid Build Coastguard Worker
124*f6dc9357SAndroid Build Coastguard Worker;  r0_L equ AL
125*f6dc9357SAndroid Build Coastguard Worker;  r1_L equ CL
126*f6dc9357SAndroid Build Coastguard Worker;  r2_L equ DL
127*f6dc9357SAndroid Build Coastguard Worker;  r3_L equ BL
128*f6dc9357SAndroid Build Coastguard Worker
129*f6dc9357SAndroid Build Coastguard Worker;  r0_H equ AH
130*f6dc9357SAndroid Build Coastguard Worker;  r1_H equ CH
131*f6dc9357SAndroid Build Coastguard Worker;  r2_H equ DH
132*f6dc9357SAndroid Build Coastguard Worker;  r3_H equ BH
133*f6dc9357SAndroid Build Coastguard Worker
134*f6dc9357SAndroid Build Coastguard Worker
135*f6dc9357SAndroid Build Coastguard Workerifdef x64
136*f6dc9357SAndroid Build Coastguard Worker  x5_L equ BPL
137*f6dc9357SAndroid Build Coastguard Worker  x6_L equ SIL
138*f6dc9357SAndroid Build Coastguard Worker  x7_L equ DIL
139*f6dc9357SAndroid Build Coastguard Worker  x8_L equ r8b
140*f6dc9357SAndroid Build Coastguard Worker  x9_L equ r9b
141*f6dc9357SAndroid Build Coastguard Worker  x10_L equ r10b
142*f6dc9357SAndroid Build Coastguard Worker  x11_L equ r11b
143*f6dc9357SAndroid Build Coastguard Worker  x12_L equ r12b
144*f6dc9357SAndroid Build Coastguard Worker  x13_L equ r13b
145*f6dc9357SAndroid Build Coastguard Worker  x14_L equ r14b
146*f6dc9357SAndroid Build Coastguard Worker  x15_L equ r15b
147*f6dc9357SAndroid Build Coastguard Worker
148*f6dc9357SAndroid Build Coastguard Worker  r0 equ RAX
149*f6dc9357SAndroid Build Coastguard Worker  r1 equ RCX
150*f6dc9357SAndroid Build Coastguard Worker  r2 equ RDX
151*f6dc9357SAndroid Build Coastguard Worker  r3 equ RBX
152*f6dc9357SAndroid Build Coastguard Worker  r4 equ RSP
153*f6dc9357SAndroid Build Coastguard Worker  r5 equ RBP
154*f6dc9357SAndroid Build Coastguard Worker  r6 equ RSI
155*f6dc9357SAndroid Build Coastguard Worker  r7 equ RDI
156*f6dc9357SAndroid Build Coastguard Worker  x8 equ r8d
157*f6dc9357SAndroid Build Coastguard Worker  x9 equ r9d
158*f6dc9357SAndroid Build Coastguard Worker  x10 equ r10d
159*f6dc9357SAndroid Build Coastguard Worker  x11 equ r11d
160*f6dc9357SAndroid Build Coastguard Worker  x12 equ r12d
161*f6dc9357SAndroid Build Coastguard Worker  x13 equ r13d
162*f6dc9357SAndroid Build Coastguard Worker  x14 equ r14d
163*f6dc9357SAndroid Build Coastguard Worker  x15 equ r15d
164*f6dc9357SAndroid Build Coastguard Workerelse
165*f6dc9357SAndroid Build Coastguard Worker  r0 equ x0
166*f6dc9357SAndroid Build Coastguard Worker  r1 equ x1
167*f6dc9357SAndroid Build Coastguard Worker  r2 equ x2
168*f6dc9357SAndroid Build Coastguard Worker  r3 equ x3
169*f6dc9357SAndroid Build Coastguard Worker  r4 equ x4
170*f6dc9357SAndroid Build Coastguard Worker  r5 equ x5
171*f6dc9357SAndroid Build Coastguard Worker  r6 equ x6
172*f6dc9357SAndroid Build Coastguard Worker  r7 equ x7
173*f6dc9357SAndroid Build Coastguard Workerendif
174*f6dc9357SAndroid Build Coastguard Worker
175*f6dc9357SAndroid Build Coastguard Worker  x0_R equ r0
176*f6dc9357SAndroid Build Coastguard Worker  x1_R equ r1
177*f6dc9357SAndroid Build Coastguard Worker  x2_R equ r2
178*f6dc9357SAndroid Build Coastguard Worker  x3_R equ r3
179*f6dc9357SAndroid Build Coastguard Worker  x4_R equ r4
180*f6dc9357SAndroid Build Coastguard Worker  x5_R equ r5
181*f6dc9357SAndroid Build Coastguard Worker  x6_R equ r6
182*f6dc9357SAndroid Build Coastguard Worker  x7_R equ r7
183*f6dc9357SAndroid Build Coastguard Worker  x8_R equ r8
184*f6dc9357SAndroid Build Coastguard Worker  x9_R equ r9
185*f6dc9357SAndroid Build Coastguard Worker  x10_R equ r10
186*f6dc9357SAndroid Build Coastguard Worker  x11_R equ r11
187*f6dc9357SAndroid Build Coastguard Worker  x12_R equ r12
188*f6dc9357SAndroid Build Coastguard Worker  x13_R equ r13
189*f6dc9357SAndroid Build Coastguard Worker  x14_R equ r14
190*f6dc9357SAndroid Build Coastguard Worker  x15_R equ r15
191*f6dc9357SAndroid Build Coastguard Worker
192*f6dc9357SAndroid Build Coastguard Workerifdef x64
193*f6dc9357SAndroid Build Coastguard Workerifdef ABI_LINUX
194*f6dc9357SAndroid Build Coastguard Worker
195*f6dc9357SAndroid Build Coastguard WorkerMY_PUSH_2_REGS macro
196*f6dc9357SAndroid Build Coastguard Worker    push    r3
197*f6dc9357SAndroid Build Coastguard Worker    push    r5
198*f6dc9357SAndroid Build Coastguard Workerendm
199*f6dc9357SAndroid Build Coastguard Worker
200*f6dc9357SAndroid Build Coastguard WorkerMY_POP_2_REGS macro
201*f6dc9357SAndroid Build Coastguard Worker    pop     r5
202*f6dc9357SAndroid Build Coastguard Worker    pop     r3
203*f6dc9357SAndroid Build Coastguard Workerendm
204*f6dc9357SAndroid Build Coastguard Worker
205*f6dc9357SAndroid Build Coastguard Workerendif
206*f6dc9357SAndroid Build Coastguard Workerendif
207*f6dc9357SAndroid Build Coastguard Worker
208*f6dc9357SAndroid Build Coastguard Worker
209*f6dc9357SAndroid Build Coastguard WorkerMY_PUSH_4_REGS macro
210*f6dc9357SAndroid Build Coastguard Worker    push    r3
211*f6dc9357SAndroid Build Coastguard Worker    push    r5
212*f6dc9357SAndroid Build Coastguard Worker    push    r6
213*f6dc9357SAndroid Build Coastguard Worker    push    r7
214*f6dc9357SAndroid Build Coastguard Workerendm
215*f6dc9357SAndroid Build Coastguard Worker
216*f6dc9357SAndroid Build Coastguard WorkerMY_POP_4_REGS macro
217*f6dc9357SAndroid Build Coastguard Worker    pop     r7
218*f6dc9357SAndroid Build Coastguard Worker    pop     r6
219*f6dc9357SAndroid Build Coastguard Worker    pop     r5
220*f6dc9357SAndroid Build Coastguard Worker    pop     r3
221*f6dc9357SAndroid Build Coastguard Workerendm
222*f6dc9357SAndroid Build Coastguard Worker
223*f6dc9357SAndroid Build Coastguard Worker
224*f6dc9357SAndroid Build Coastguard Worker; for fastcall and for WIN-x64
225*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_0_x   equ x1
226*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_0     equ r1
227*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_1_x   equ x2
228*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_1     equ r2
229*f6dc9357SAndroid Build Coastguard Worker
230*f6dc9357SAndroid Build Coastguard Workerifndef x64
231*f6dc9357SAndroid Build Coastguard Worker; for x86-fastcall
232*f6dc9357SAndroid Build Coastguard Worker
233*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0_x equ REG_PARAM_0_x
234*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0   equ REG_PARAM_0
235*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1_x equ REG_PARAM_1_x
236*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1   equ REG_PARAM_1
237*f6dc9357SAndroid Build Coastguard Worker
238*f6dc9357SAndroid Build Coastguard WorkerMY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
239*f6dc9357SAndroid Build Coastguard Worker        MY_PUSH_4_REGS
240*f6dc9357SAndroid Build Coastguard Workerendm
241*f6dc9357SAndroid Build Coastguard Worker
242*f6dc9357SAndroid Build Coastguard WorkerMY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
243*f6dc9357SAndroid Build Coastguard Worker        MY_POP_4_REGS
244*f6dc9357SAndroid Build Coastguard Workerendm
245*f6dc9357SAndroid Build Coastguard Worker
246*f6dc9357SAndroid Build Coastguard Workerelse
247*f6dc9357SAndroid Build Coastguard Worker; x64
248*f6dc9357SAndroid Build Coastguard Worker
249*f6dc9357SAndroid Build Coastguard Workerif  (IS_LINUX eq 0)
250*f6dc9357SAndroid Build Coastguard Worker
251*f6dc9357SAndroid Build Coastguard Worker; for WIN-x64:
252*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_2_x   equ x8
253*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_2     equ r8
254*f6dc9357SAndroid Build Coastguard WorkerREG_PARAM_3     equ r9
255*f6dc9357SAndroid Build Coastguard Worker
256*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0_x equ REG_PARAM_0_x
257*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0   equ REG_PARAM_0
258*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1_x equ REG_PARAM_1_x
259*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1   equ REG_PARAM_1
260*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_2_x equ REG_PARAM_2_x
261*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_2   equ REG_PARAM_2
262*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_3   equ REG_PARAM_3
263*f6dc9357SAndroid Build Coastguard Worker
264*f6dc9357SAndroid Build Coastguard Workerelse
265*f6dc9357SAndroid Build Coastguard Worker; for LINUX-x64:
266*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_0_x equ x7
267*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_0   equ r7
268*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_1_x equ x6
269*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_1   equ r6
270*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_2   equ r2
271*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_3   equ r1
272*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_4_x equ x8
273*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_4   equ r8
274*f6dc9357SAndroid Build Coastguard WorkerREG_LINUX_PARAM_5   equ r9
275*f6dc9357SAndroid Build Coastguard Worker
276*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0_x equ REG_LINUX_PARAM_0_x
277*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_0   equ REG_LINUX_PARAM_0
278*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1_x equ REG_LINUX_PARAM_1_x
279*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_1   equ REG_LINUX_PARAM_1
280*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_2   equ REG_LINUX_PARAM_2
281*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_3   equ REG_LINUX_PARAM_3
282*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_4_x equ REG_LINUX_PARAM_4_x
283*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_4   equ REG_LINUX_PARAM_4
284*f6dc9357SAndroid Build Coastguard WorkerREG_ABI_PARAM_5   equ REG_LINUX_PARAM_5
285*f6dc9357SAndroid Build Coastguard Worker
286*f6dc9357SAndroid Build Coastguard WorkerMY_ABI_LINUX_TO_WIN_2 macro
287*f6dc9357SAndroid Build Coastguard Worker        mov     r2, r6
288*f6dc9357SAndroid Build Coastguard Worker        mov     r1, r7
289*f6dc9357SAndroid Build Coastguard Workerendm
290*f6dc9357SAndroid Build Coastguard Worker
291*f6dc9357SAndroid Build Coastguard WorkerMY_ABI_LINUX_TO_WIN_3 macro
292*f6dc9357SAndroid Build Coastguard Worker        mov     r8, r2
293*f6dc9357SAndroid Build Coastguard Worker        mov     r2, r6
294*f6dc9357SAndroid Build Coastguard Worker        mov     r1, r7
295*f6dc9357SAndroid Build Coastguard Workerendm
296*f6dc9357SAndroid Build Coastguard Worker
297*f6dc9357SAndroid Build Coastguard WorkerMY_ABI_LINUX_TO_WIN_4 macro
298*f6dc9357SAndroid Build Coastguard Worker        mov     r9, r1
299*f6dc9357SAndroid Build Coastguard Worker        mov     r8, r2
300*f6dc9357SAndroid Build Coastguard Worker        mov     r2, r6
301*f6dc9357SAndroid Build Coastguard Worker        mov     r1, r7
302*f6dc9357SAndroid Build Coastguard Workerendm
303*f6dc9357SAndroid Build Coastguard Worker
304*f6dc9357SAndroid Build Coastguard Workerendif ; IS_LINUX
305*f6dc9357SAndroid Build Coastguard Worker
306*f6dc9357SAndroid Build Coastguard Worker
307*f6dc9357SAndroid Build Coastguard WorkerMY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
308*f6dc9357SAndroid Build Coastguard Worker    if  (IS_LINUX gt 0)
309*f6dc9357SAndroid Build Coastguard Worker        MY_PUSH_2_REGS
310*f6dc9357SAndroid Build Coastguard Worker    else
311*f6dc9357SAndroid Build Coastguard Worker        MY_PUSH_4_REGS
312*f6dc9357SAndroid Build Coastguard Worker    endif
313*f6dc9357SAndroid Build Coastguard Workerendm
314*f6dc9357SAndroid Build Coastguard Worker
315*f6dc9357SAndroid Build Coastguard WorkerMY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
316*f6dc9357SAndroid Build Coastguard Worker    if  (IS_LINUX gt 0)
317*f6dc9357SAndroid Build Coastguard Worker        MY_POP_2_REGS
318*f6dc9357SAndroid Build Coastguard Worker    else
319*f6dc9357SAndroid Build Coastguard Worker        MY_POP_4_REGS
320*f6dc9357SAndroid Build Coastguard Worker    endif
321*f6dc9357SAndroid Build Coastguard Workerendm
322*f6dc9357SAndroid Build Coastguard Worker
323*f6dc9357SAndroid Build Coastguard Worker
324*f6dc9357SAndroid Build Coastguard WorkerMY_PUSH_PRESERVED_ABI_REGS macro
325*f6dc9357SAndroid Build Coastguard Worker    MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11
326*f6dc9357SAndroid Build Coastguard Worker        push    r12
327*f6dc9357SAndroid Build Coastguard Worker        push    r13
328*f6dc9357SAndroid Build Coastguard Worker        push    r14
329*f6dc9357SAndroid Build Coastguard Worker        push    r15
330*f6dc9357SAndroid Build Coastguard Workerendm
331*f6dc9357SAndroid Build Coastguard Worker
332*f6dc9357SAndroid Build Coastguard Worker
333*f6dc9357SAndroid Build Coastguard WorkerMY_POP_PRESERVED_ABI_REGS macro
334*f6dc9357SAndroid Build Coastguard Worker        pop     r15
335*f6dc9357SAndroid Build Coastguard Worker        pop     r14
336*f6dc9357SAndroid Build Coastguard Worker        pop     r13
337*f6dc9357SAndroid Build Coastguard Worker        pop     r12
338*f6dc9357SAndroid Build Coastguard Worker    MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11
339*f6dc9357SAndroid Build Coastguard Workerendm
340*f6dc9357SAndroid Build Coastguard Worker
341*f6dc9357SAndroid Build Coastguard Workerendif ; x64
342