xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/pru/pru-abi.h (revision 4c3eb207d36f67d31994830c0a694161fc1ca39b)
1 /* Header file for PRU ABI versions of libgcc functions.
2    Copyright (C) 2011-2020 Free Software Foundation, Inc.
3    Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
4    Based on c6x/c6x-abi.h
5 
6    This file is part of GCC.
7 
8    GCC is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published
10    by the Free Software Foundation; either version 3, or (at your
11    option) any later version.
12 
13    GCC is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17 
18    Under Section 7 of GPL version 3, you are granted additional
19    permissions described in the GCC Runtime Library Exception, version
20    3.1, as published by the Free Software Foundation.
21 
22    You should have received a copy of the GNU General Public License
23    along with GCC; see the file COPYING3.  If not see
24    <http://www.gnu.org/licenses/>.  */
25 
26 /* Make __pruabi_AEABI_NAME an alias for __GCC_NAME.  */
27 #define RENAME_LIBRARY(GCC_NAME, AEABI_NAME)			\
28   __asm__ (".globl\t__pruabi_" #AEABI_NAME "\n"		\
29 	   ".set\t__pruabi_" #AEABI_NAME			\
30 	   ", __gnu_" #GCC_NAME "\n");
31 
32 /* Rename helper functions to the names specified in the PRU ELF ABI.  */
33 #ifdef L_divsi3
34 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divsi3, divi)
35 #endif
36 #ifdef L_divdi3
37 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (divdi3, divlli)
38 #endif
39 #ifdef L_udivsi3
40 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivsi3, divu)
41 #endif
42 #ifdef L_udivdi3
43 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivdi3, divull)
44 #endif
45 #ifdef L_udivmoddi4
46 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (udivmoddi4, divremull)
47 #endif
48 #ifdef L_modsi3
49 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (modsi3, remi)
50 #endif
51 #ifdef L_moddi3
52 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (moddi3, remlli)
53 #endif
54 #ifdef L_umodsi3
55 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umodsi3, remu)
56 #endif
57 #ifdef L_umoddi3
58 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (umoddi3, remull)
59 #endif
60 #ifdef L_negdi2
61 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (negdi2, negll)
62 #endif
63 #ifdef L_muldi3
64 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, mpyll)
65 #endif
66 #ifdef L_ashrdi3
67 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashrdi3, asrll)
68 #endif
69 #ifdef L_lshrdi3
70 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (lshrdi3, lsrll)
71 #endif
72 #ifdef L_ashldi3
73 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (ashldi3, lslll)
74 #endif
75 
76 /* The following are excluded from softfp due to softfp_exclude_libgcc2,
77    so we rename them here rather than in sfp-machine.h.  */
78 #ifdef L_fixdfdi
79 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, fixdlli)
80 #endif
81 #ifdef L_fixunsdfsi
82 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfsi, fixdu)
83 #endif
84 #ifdef L_fixunsdfdi
85 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, fixdull)
86 #endif
87 #ifdef L_fixsfdi
88 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, fixflli)
89 #endif
90 #ifdef L_fixunssfsi
91 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfsi, fixfu)
92 #endif
93 #ifdef L_fixunssfdi
94 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, fixfull)
95 #endif
96 #ifdef L_floatdidf
97 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, fltllid)
98 #endif
99 #ifdef L_floatundidf
100 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundidf, fltulld)
101 #endif
102 #ifdef L_floatdisf
103 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, fltllif)
104 #endif
105 #ifdef L_floatundisf
106 #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatundisf, fltullf)
107 #endif
108 
109 #define LIBGCC2_GNU_PREFIX
110