diagnostic-show-locus.c: remove unused field from class colorizer
[official-gcc.git] / libitm / config / sh / sjlj.S
blob0159fed2b473fb7ff205ec6f1517f584a12a0bf1
1 /* Copyright (C) 2011-2017 Free Software Foundation, Inc.
3    This file is part of the GNU Transactional Memory Library (libitm).
5    Libitm is free software; you can redistribute it and/or modify it
6    under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
10    Libitm is distributed in the hope that it will be useful, but WITHOUT ANY
11    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13    more details.
15    Under Section 7 of GPL version 3, you are granted additional
16    permissions described in the GCC Runtime Library Exception, version
17    3.1, as published by the Free Software Foundation.
19    You should have received a copy of the GNU General Public License and
20    a copy of the GCC Runtime Library Exception along with this program;
21    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22    <http://www.gnu.org/licenses/>.  */
24 #include "asmcfi.h"
26         .text
27         .align  2
28         .global _ITM_beginTransaction
29         .type   _ITM_beginTransaction, %function
31 _ITM_beginTransaction:
32         cfi_startproc
33         mov     r15, r1
34 #ifdef __SH_FPU_ANY__
35         fmov.s  fr15, @-r15
36         fmov.s  fr14, @-r15
37         fmov.s  fr13, @-r15
38         fmov.s  fr12, @-r15
39         sts.l   fpscr, @-r15
40 #endif /* __SH_FPU_ANY__ */
41         stc.l   gbr, @-r15
42         sts.l   pr, @-r15
43         mov.l   r1, @-r15
44         mov.l   r14, @-r15
45         mov.l   r13, @-r15
46         mov.l   r12, @-r15
47         mov.l   r11, @-r15
48         mov.l   r10, @-r15
49         mov.l   r9, @-r15
50         mov.l   r8, @-r15
51 #ifdef __SH_FPU_ANY__
52         cfi_def_cfa_offset (4*15)
53 #else
54         cfi_def_cfa_offset (4*10)
55 #endif
56 #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__
57         mov.l   .Lbegin, r1
58         jsr     @r1
59          mov    r15, r5
60 #else
61         mov.l   .Lbegin, r1
62         bsrf    r1
63          mov    r15, r5
64 .Lbegin0:
65         mov.l   @(4*4,r15), r12
66 #endif
67         mov.l   @(8*4,r15), r1
68         lds     r1, pr
69 #ifdef __SH_FPU_ANY__
70         add     #(15*4), r15
71 #else
72         add     #(10*5), r15
73 #endif
74         cfi_def_cfa_offset (0)
75         rts
76          nop
77         cfi_endproc
79         .align  2
80 .Lbegin:
81 #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__
82         .long   GTM_begin_transaction
83 #else
84         .long   GTM_begin_transaction@PCREL-(.Lbegin0-.)
85 #endif
86         .size   _ITM_beginTransaction, . - _ITM_beginTransaction
88         .global GTM_longjmp
89         .hidden GTM_longjmp
90         .type   GTM_longjmp, %function
92 GTM_longjmp:
93         mov.l   @r5+, r8
94         mov.l   @r5+, r9
95         mov.l   @r5+, r10
96         mov.l   @r5+, r11
97         mov.l   @r5+, r12
98         mov.l   @r5+, r13
99         mov.l   @r5+, r14
100         mov.l   @r5+, r15
101         lds.l   @r5+, pr
102         ldc.l   @r5+, gbr
103 #ifdef __SH_FPU_ANY__
104         lds.l   @r5+, fpscr
105         fmov.s  @r5+, fr12
106         fmov.s  @r5+, fr13
107         fmov.s  @r5+, fr14
108         fmov.s  @r5+, fr15
109 #endif
110         rts
111          mov    r4, r0
113         .size   GTM_longjmp, . - GTM_longjmp
115 #ifdef __linux__
116 .section .note.GNU-stack, "", %progbits
117 #endif