* testsuite/26_numerics/headers/cmath/hypot.cc: XFAIL on AIX.
[official-gcc.git] / libsanitizer / tsan / tsan_rtl_mips64.S
blobb1c9d8bb12d893fc4453485d5e8ef28df36b0f90
1 .section .text
2 .hidden __tsan_setjmp
3 .comm _ZN14__interception11real_setjmpE,8,8
4 .globl setjmp
5 .type setjmp, @function
6 setjmp:
8   // save env parameters
9   daddiu $sp,$sp,-40
10   sd $s0,32($sp)
11   sd $ra,24($sp)
12   sd $fp,16($sp)
13   sd $gp,8($sp)
15   // calculate and save pointer to GOT
16   lui $gp,%hi(%neg(%gp_rel(setjmp)))
17   daddu $gp,$gp,$t9
18   daddiu $gp,$gp,%lo(%neg(%gp_rel(setjmp)))
19   move $s0,$gp
21   // save jmp_buf
22   sd $a0,0($sp)
24   // obtain $sp
25   dadd $a0,$zero,$sp
27   // call tsan interceptor
28   jal __tsan_setjmp
29   daddiu $a1,$a0,40
31   // restore jmp_buf
32   ld $a0,0($sp)
34   // restore gp
35   move $gp,$s0
37   // load pointer of libc setjmp to t9
38   dla $t9,(_ZN14__interception11real_setjmpE) 
40   // restore env parameters
41   ld $gp,8($sp)
42   ld $fp,16($sp)
43   ld $ra,24($sp)
44   ld $s0,32($sp)
45   daddiu $sp,$sp,40
47   // tail jump to libc setjmp
48   ld $t9,0($t9)
49   jr $t9
50   nop
52 .size setjmp, .-setjmp
54 .hidden __tsan_setjmp
55 .globl _setjmp
56 .comm _ZN14__interception12real__setjmpE,8,8
57 .type _setjmp, @function
58 _setjmp:
60   // Save env parameters
61   daddiu $sp,$sp,-40
62   sd $s0,32($sp)
63   sd $ra,24($sp)
64   sd $fp,16($sp)
65   sd $gp,8($sp)
67   // calculate and save pointer to GOT
68   lui $gp,%hi(%neg(%gp_rel(_setjmp)))
69   daddu $gp,$gp,$t9
70   daddiu $gp,$gp,%lo(%neg(%gp_rel(_setjmp)))
71   move $s0,$gp
73   // save jmp_buf
74   sd $a0,0($sp)
76   // obtain $sp
77   dadd $a0,$zero,$sp
79   // call tsan interceptor
80   jal __tsan_setjmp
81   daddiu $a1,$a0,40
83   // restore jmp_buf
84   ld $a0,0($sp)
86   // restore gp
87   move $gp,$s0
89   // load pointer of libc _setjmp to t9
90   dla $t9,(_ZN14__interception12real__setjmpE)
92   // restore env parameters
93   ld $gp,8($sp)
94   ld $fp,16($sp)
95   ld $ra,24($sp)
96   ld $s0,32($sp)
97   daddiu $sp,$sp,40
99   // tail jump to libc _setjmp
100   ld $t9,0($t9)
101   jr $t9
102   nop
104 .size _setjmp, .-_setjmp
106 .hidden __tsan_setjmp
107 .globl sigsetjmp
108 .comm _ZN14__interception14real_sigsetjmpE,8,8
109 .type sigsetjmp, @function
110 sigsetjmp:
112   // Save env parameters
113   daddiu $sp,$sp,-48
114   sd $s0,40($sp)
115   sd $ra,32($sp)
116   sd $fp,24($sp)
117   sd $gp,16($sp)
119   // calculate and save pointer to GOT
120   lui $gp,%hi(%neg(%gp_rel(sigsetjmp)))
121   daddu $gp,$gp,$t9
122   daddiu $gp,$gp,%lo(%neg(%gp_rel(sigsetjmp)))
123   move $s0,$gp
125   // save jmp_buf and savesig
126   sd $a0,0($sp)
127   sd $a1,8($sp)
129   // obtain $sp
130   dadd $a0,$zero,$sp
132   // call tsan interceptor
133   jal __tsan_setjmp
134   daddiu $a1,$a0,48
136   // restore jmp_buf and savesig
137   ld $a0,0($sp)
138   ld $a1,8($sp)
140   // restore gp
141   move $gp,$s0
143   // load pointer of libc sigsetjmp to t9
144   dla $t9,(_ZN14__interception14real_sigsetjmpE) 
146   // restore env parameters
147   ld $gp,16($sp)
148   ld $fp,24($sp)
149   ld $ra,32($sp)
150   ld $s0,40($sp)
151   daddiu $sp,$sp,48
153   // tail jump to libc sigsetjmp
154   ld $t9,0($t9)
155   jr $t9
156   nop
158 .size sigsetjmp, .-sigsetjmp
160 .hidden __tsan_setjmp
161 .comm _ZN14__interception16real___sigsetjmpE,8,8
162 .globl __sigsetjmp
163 .type __sigsetjmp, @function
164 __sigsetjmp:
166   // Save env parameters
167   daddiu $sp,$sp,-48
168   sd $s0,40($sp)
169   sd $ra,32($sp)
170   sd $fp,24($sp)
171   sd $gp,16($sp)
173   // calculate and save pointer to GOT
174   lui $gp,%hi(%neg(%gp_rel(__sigsetjmp)))
175   daddu $gp,$gp,$t9
176   daddiu $gp,$gp,%lo(%neg(%gp_rel(__sigsetjmp)))
177   move $s0,$gp
179   // save jmp_buf and savesig
180   sd $a0,0($sp)
181   sd $a1,8($sp)
183   // obtain $sp
184   dadd $a0,$zero,$sp
186   // call tsan interceptor
187   jal __tsan_setjmp
188   daddiu $a1,$a0,48
190   // restore jmp_buf and savesig
191   ld $a0,0($sp)
192   ld $a1,8($sp)
194   // restore gp
195   move $gp,$s0
197   // load pointer to libc __sigsetjmp in t9
198   dla $t9,(_ZN14__interception16real___sigsetjmpE)
200   // restore env parameters
201   ld $gp,16($sp)
202   ld $fp,24($sp)
203   ld $ra,32($sp)
204   ld $s0,40($sp)
205   daddiu $sp,$sp,48
207   // tail jump to libc __sigsetjmp
208   ld $t9,0($t9)
209   jr $t9
210   nop
212 .size __sigsetjmp, .-__sigsetjmp