Differences From Artifact [bd0fafe6da]:
- File
src/invocation/apple-call-x86_64.S
— part of check-in
[adc1dedc5f]
at
2021-02-08 02:04:32
on branch trunk
— Revert apple-call-x86_64.S back to AT&T syntax
Intel syntax is too buggy in the Apple assembler. (user: js, size: 2451) [annotate] [blame] [check-ins using]
To Artifact [7278670544]:
- File src/invocation/apple-call-x86_64.S — part of check-in [efca87b509] at 2021-04-30 22:26:43 on branch invoke-invocation — Merge trunk into branch "invoke-invocation" (user: js, size: 2383) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
13 14 15 16 17 18 19 | * file. */ #include "config.h" #include "invoke-x86_64.h" | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | * file. */ #include "config.h" #include "invoke-x86_64.h" .globl _OFInvocationCall .section __TEXT, __text, regular, pure_instructions _OFInvocationCall: pushq %rbp movq %rsp, %rbp subq $16, %rsp andq $-16, %rsp movq %rdi, -8(%rbp) leaq offsetStack(%rdi), %rdx movq offsetStackSize(%rdi), %rcx testq $1, %rcx jnz Lfix_align Lfill_stack: testq %rcx, %rcx jz Lstack_filled decq %rcx movq (%rdx,%rcx,8), %r11 pushq %r11 jmp Lfill_stack Lstack_filled: movb offsetNumSSEUsed(%rdi), %al movaps offsetSSEInOut+112(%rdi), %xmm7 movaps offsetSSEInOut+96(%rdi), %xmm6 movaps offsetSSEInOut+80(%rdi), %xmm5 movaps offsetSSEInOut+64(%rdi), %xmm4 movaps offsetSSEInOut+48(%rdi), %xmm3 movaps offsetSSEInOut+32(%rdi), %xmm2 movaps offsetSSEInOut+16(%rdi), %xmm1 movaps offsetSSEInOut(%rdi), %xmm0 movq offsetGPRIn+40(%rdi), %r9 movq offsetGPRIn+32(%rdi), %r8 movq offsetGPRIn+24(%rdi), %rcx movq offsetGPRIn+16(%rdi), %rdx movq offsetGPRIn+8(%rdi), %rsi movb offsetReturnType(%rdi), %r11b movq offsetGPRIn(%rdi), %rdi cmpb $returnTypeStret, %r11b je Lcall_send_stret cmpb $returnTypeJmp, %r11b je _objc_msgSend cmpb $returnTypeJmpStret, %r11b je _objc_msgSend_stret call _objc_msgSend Lafter_send: movq -8(%rbp), %rdi movq %rax, offsetGPROut(%rdi) movq %rdx, offsetGPROut+8(%rdi) movaps %xmm0, offsetSSEInOut(%rdi) movaps %xmm1, offsetSSEInOut+16(%rdi) movb offsetReturnType(%rdi), %r11b cmpb $returnTypeX87, %r11b je Lpop_long_double cmpb $returnTypeComplexX87, %r11b je Lpop_complex_long_double Lreturn: movq %rbp, %rsp popq %rbp ret Lfix_align: xorq %r11, %r11 pushq %r11 jmp Lfill_stack Lcall_send_stret: call _objc_msgSend_stret jmp Lafter_send Lpop_long_double: fstpt offsetX87Out(%rdi) jmp Lreturn Lpop_complex_long_double: fstpt offsetX87Out(%rdi) fstpt offsetX87Out+16(%rdi) jmp Lreturn |