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