Differences From Artifact [83aad377c2]:
- File
src/invocation/call-x86_64-elf.S
— part of check-in
[541b66cc87]
at
2021-02-08 02:08:00
on branch trunk
— Revert call-x86_64-elf.S back to AT&T syntax
This is for consistency with the Mach-O version. (user: js, size: 2882) [annotate] [blame] [check-ins using]
To Artifact [7750c118a3]:
- File src/invocation/call-x86_64-elf.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: 2801) [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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | * file. */ #include "config.h" #include "invoke-x86_64.h" .globl OFInvocationCall .section .text OFInvocationCall: pushq %rbp movq %rsp, %rbp subq $16, %rsp andq $-16, %rsp movq %rdi, -8(%rbp) movb offsetReturnType(%rdi), %r11b cmpb $returnTypeStret, %r11b je .Llookup_stret cmpb $returnTypeJmpStret, %r11b je .Llookup_stret movq offsetGPRIn+8(%rdi), %rsi movq offsetGPRIn+0(%rdi), %rdi call objc_msg_lookup@PLT .Lafter_lookup: movq %rax, -16(%rbp) movq -8(%rbp), %rdi 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 $returnTypeJmp, %r11b je .Ljmp_into_method cmpb $returnTypeJmpStret, %r11b je .Ljmp_into_method movq -16(%rbp), %r11 call *%r11 .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 .Llookup_stret: movq offsetGPRIn+16(%rdi), %rsi movq offsetGPRIn+8(%rdi), %rdi call objc_msg_lookup_stret@PLT jmp .Lafter_lookup .Ljmp_into_method: movq -16(%rbp), %r11 jmp *%r11 .Lpop_long_double: fstpt offsetX87Out(%rdi) jmp .Lreturn .Lpop_complex_long_double: fstpt offsetX87Out(%rdi) fstpt offsetX87Out+16(%rdi) jmp .Lreturn #ifdef OF_LINUX .section .note.GNU-stack, "", %progbits #endif |