Daily bump.
[official-gcc.git] / libsanitizer / tsan / tsan_rtl_riscv64.S
blob8e6b9b9432ef837da8d30f3eb062701c22c802bc
1 #include "sanitizer_common/sanitizer_asm.h"
3 .section .text
5 .comm _ZN14__interception11real_setjmpE,8,8
6 .globl ASM_SYMBOL_INTERCEPTOR(setjmp)
7 ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(setjmp))
8 ASM_SYMBOL_INTERCEPTOR(setjmp):
9   CFI_STARTPROC
11   // Save frame pointer and return address register
12   addi sp, sp, -32
13   sd ra, 24(sp)
14   sd s0, 16(sp)
15   CFI_DEF_CFA_OFFSET (32)
16   CFI_OFFSET (1, -8)
17   CFI_OFFSET (8, -16)
19   // Adjust the SP for previous frame
20   addi s0, sp, 32
21   CFI_DEF_CFA_REGISTER (8)
23   // Save env parameter
24   sd a0, 8(sp)
25   CFI_OFFSET (10, -24)
27   // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
28   addi  a0, s0, 0
30   // call tsan interceptor
31   call ASM_SYMBOL(__tsan_setjmp)
33   // Restore env parameter
34   ld a0, 8(sp)
35   CFI_RESTORE (10)
37   // Restore frame/link register
38   ld s0, 16(sp)
39   ld ra, 24(sp)
40   addi sp, sp, 32
41   CFI_RESTORE (8)
42   CFI_RESTORE (1)
43   CFI_DEF_CFA (2, 0)
45   // tail jump to libc setjmp
46   la t1, _ZN14__interception11real_setjmpE
47   ld t1, 0(t1)
48   jr t1
50   CFI_ENDPROC
51 ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(setjmp))
53 .comm _ZN14__interception12real__setjmpE,8,8
54 .globl ASM_SYMBOL_INTERCEPTOR(_setjmp)
55 ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(_setjmp))
56 ASM_SYMBOL_INTERCEPTOR(_setjmp):
57   CFI_STARTPROC
59   // Save frame pointer and return address register
60   addi sp, sp, -32
61   sd ra, 24(sp)
62   sd s0, 16(sp)
63   CFI_DEF_CFA_OFFSET (32)
64   CFI_OFFSET (1, -8)
65   CFI_OFFSET (8, -16)
67   // Adjust the SP for previous frame
68   addi s0, sp, 32
69   CFI_DEF_CFA_REGISTER (8)
71   // Save env parameter
72   sd a0, 8(sp)
73   CFI_OFFSET (10, -24)
75   // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
76   addi  a0, s0, 0
78   // call tsan interceptor
79   call ASM_SYMBOL(__tsan_setjmp)
81   // Restore env parameter
82   ld a0, 8(sp)
83   CFI_RESTORE (10)
85   // Restore frame/link register
86   ld s0, 16(sp)
87   ld ra, 24(sp)
88   addi sp, sp, 32
89   CFI_RESTORE (8)
90   CFI_RESTORE (1)
91   CFI_DEF_CFA (2, 0)
93   // tail jump to libc setjmp
94   la t1, _ZN14__interception12real__setjmpE
95   ld t1, 0(t1)
96   jr t1
98   CFI_ENDPROC
99 ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(_setjmp))
101 .comm _ZN14__interception14real_sigsetjmpE,8,8
102 .globl ASM_SYMBOL_INTERCEPTOR(sigsetjmp)
103 ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))
104 ASM_SYMBOL_INTERCEPTOR(sigsetjmp):
105   CFI_STARTPROC
107   // Save frame pointer and return address register
108   addi sp, sp, -32
109   sd ra, 24(sp)
110   sd s0, 16(sp)
111   CFI_DEF_CFA_OFFSET (32)
112   CFI_OFFSET (1, -8)
113   CFI_OFFSET (8, -16)
115   // Adjust the SP for previous frame
116   addi s0, sp, 32
117   CFI_DEF_CFA_REGISTER (8)
119   // Save env parameter
120   sd a0, 8(sp)
121   sd a1, 0(sp)
122   CFI_OFFSET (10, -24)
123   CFI_OFFSET (11, -32)
125   // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
126   addi  a0, s0, 0
128   // call tsan interceptor
129   call      ASM_SYMBOL(__tsan_setjmp)
131   // Restore env parameter
132   ld a0, 8(sp)
133   ld a1, 0(sp)
134   CFI_RESTORE (10)
135   CFI_RESTORE (11)
137   // Restore frame/link register
138   ld s0, 16(sp)
139   ld ra, 24(sp)
140   addi sp, sp, 32
141   CFI_RESTORE (8)
142   CFI_RESTORE (1)
143   CFI_DEF_CFA (2, 0)
145   // tail jump to libc setjmp
146   la t1, _ZN14__interception14real_sigsetjmpE
147   ld t1, 0(t1)
148   jr t1
150   CFI_ENDPROC
151 ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(sigsetjmp))
153 .comm _ZN14__interception16real___sigsetjmpE,8,8
154 .globl ASM_SYMBOL_INTERCEPTOR(__sigsetjmp)
155 ASM_TYPE_FUNCTION(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))
156 ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):
157   CFI_STARTPROC
159   // Save frame pointer and return address register
160   addi sp, sp, -32
161   sd ra, 24(sp)
162   sd s0, 16(sp)
163   CFI_DEF_CFA_OFFSET (32)
164   CFI_OFFSET (1, -8)
165   CFI_OFFSET (8, -16)
167   // Adjust the SP for previous frame
168   addi s0, sp, 32
169   CFI_DEF_CFA_REGISTER (8)
171   // Save env parameter
172   sd a0, 8(sp)
173   sd a1, 0(sp)
174   CFI_OFFSET (10, -24)
175   CFI_OFFSET (11, -32)
177   // Obtain SP, first argument to `void __tsan_setjmp(uptr sp)`
178   addi  a0, s0, 0
180   // call tsan interceptor
181   call      ASM_SYMBOL(__tsan_setjmp)
183   // Restore env parameter
184   ld a0, 8(sp)
185   ld a1, 0(sp)
186   CFI_RESTORE (10)
187   CFI_RESTORE (11)
189   // Restore frame/link register
190   ld s0, 16(sp)
191   ld ra, 24(sp)
192   addi sp, sp, 32
193   CFI_RESTORE (8)
194   CFI_RESTORE (1)
195   CFI_DEF_CFA (2, 0)
197   // tail jump to libc setjmp
198   la t1, _ZN14__interception16real___sigsetjmpE
199   ld t1, 0(t1)
200   jr t1
202   CFI_ENDPROC
203 ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))