3 .globl __tsan_trace_switch_thunk
4 __tsan_trace_switch_thunk:
6 # Save scratch registers.
8 .cfi_adjust_cfa_offset 8
9 .cfi_rel_offset %rax, 0
11 .cfi_adjust_cfa_offset 8
12 .cfi_rel_offset %rcx, 0
14 .cfi_adjust_cfa_offset 8
15 .cfi_rel_offset %rdx, 0
17 .cfi_adjust_cfa_offset 8
18 .cfi_rel_offset %rsi, 0
20 .cfi_adjust_cfa_offset 8
21 .cfi_rel_offset %rdi, 0
23 .cfi_adjust_cfa_offset 8
24 .cfi_rel_offset %r8, 0
26 .cfi_adjust_cfa_offset 8
27 .cfi_rel_offset %r9, 0
29 .cfi_adjust_cfa_offset 8
30 .cfi_rel_offset %r10, 0
32 .cfi_adjust_cfa_offset 8
33 .cfi_rel_offset %r11, 0
35 push %rbx # non-scratch
36 .cfi_adjust_cfa_offset 8
37 .cfi_rel_offset %rbx, 0
38 mov %rsp, %rbx # save current rsp
39 .cfi_def_cfa_register %rbx
40 shr $4, %rsp # clear 4 lsb, align to 16
43 call __tsan_trace_switch
45 # Unalign stack frame back.
46 mov %rbx, %rsp # restore the original rsp
47 .cfi_def_cfa_register %rsp
49 .cfi_adjust_cfa_offset -8
50 # Restore scratch registers.
52 .cfi_adjust_cfa_offset -8
54 .cfi_adjust_cfa_offset -8
56 .cfi_adjust_cfa_offset -8
58 .cfi_adjust_cfa_offset -8
60 .cfi_adjust_cfa_offset -8
62 .cfi_adjust_cfa_offset -8
64 .cfi_adjust_cfa_offset -8
66 .cfi_adjust_cfa_offset -8
68 .cfi_adjust_cfa_offset -8
82 .globl __tsan_report_race_thunk
83 __tsan_report_race_thunk:
85 # Save scratch registers.
87 .cfi_adjust_cfa_offset 8
88 .cfi_rel_offset %rax, 0
90 .cfi_adjust_cfa_offset 8
91 .cfi_rel_offset %rcx, 0
93 .cfi_adjust_cfa_offset 8
94 .cfi_rel_offset %rdx, 0
96 .cfi_adjust_cfa_offset 8
97 .cfi_rel_offset %rsi, 0
99 .cfi_adjust_cfa_offset 8
100 .cfi_rel_offset %rdi, 0
102 .cfi_adjust_cfa_offset 8
103 .cfi_rel_offset %r8, 0
105 .cfi_adjust_cfa_offset 8
106 .cfi_rel_offset %r9, 0
108 .cfi_adjust_cfa_offset 8
109 .cfi_rel_offset %r10, 0
111 .cfi_adjust_cfa_offset 8
112 .cfi_rel_offset %r11, 0
114 push %rbx # non-scratch
115 .cfi_adjust_cfa_offset 8
116 .cfi_rel_offset %rbx, 0
117 mov %rsp, %rbx # save current rsp
118 .cfi_def_cfa_register %rbx
119 shr $4, %rsp # clear 4 lsb, align to 16
122 call __tsan_report_race
124 # Unalign stack frame back.
125 mov %rbx, %rsp # restore the original rsp
126 .cfi_def_cfa_register %rsp
128 .cfi_adjust_cfa_offset -8
129 # Restore scratch registers.
131 .cfi_adjust_cfa_offset -8
133 .cfi_adjust_cfa_offset -8
135 .cfi_adjust_cfa_offset -8
137 .cfi_adjust_cfa_offset -8
139 .cfi_adjust_cfa_offset -8
141 .cfi_adjust_cfa_offset -8
143 .cfi_adjust_cfa_offset -8
145 .cfi_adjust_cfa_offset -8
147 .cfi_adjust_cfa_offset -8
162 /* We do not need executable stack. */
163 .section .note.GNU-stack,"",@progbits