xref: /netbsd-src/lib/libm/arch/m68060/makeas.sh (revision f349ddea9b6247ceb98471c9b13d93e1258c21e1)
1#!/bin/sh
2
3# $NetBSD: makeas.sh,v 1.16 2024/05/07 22:30:16 riastradh Exp $
4
5# Copyright (c) 1999, 2000 Ignatios Souvatzis
6# All rights reserved.
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions
10# are met:
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13# 2. Redistributions in binary form must reproduce the above copyright
14#    notice, this list of conditions and the following disclaimer in the
15#    documentation and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28set -eu
29
30RCSID='$NetBSD: makeas.sh,v 1.16 2024/05/07 22:30:16 riastradh Exp $'
31
32RCSID=${RCSID#\$}
33RCSID=${RCSID% \$}
34
35REALCODE=fplsp_wrap.S
36FILELIST=Makefile.list
37
38dummy () {
39	local F
40
41	for F; do
42		/bin/cat > $F.S << EOM
43/* \$NetBSD\$ */
44
45/*
46 * Dummy file. Real code is elsewhere.
47 *
48 * DO NOT EDIT - this file is automatically generated by;
49 *
50 *	$RCSID
51 *
52 */
53EOM
54		echo -n " " $F.S >> $FILELIST
55	done
56}
57
58linebreak () {
59	echo " \\" >> ${FILELIST}
60	echo -n "	" >> ${FILELIST}
61}
62
63mk () {
64	local NAME ALIAS OFFS THESRC
65
66	NAME=$1
67	ALIAS=$2
68	OFFS=$3
69	THESRC=$4.S
70	shift; shift; shift; shift
71
72	echo -n " " ${THESRC} >> $FILELIST
73	/bin/cat > ${THESRC} << EOJ
74/* \$NetBSD\$ */
75
76/*
77 * FPLSP wrapper for ${ALIAS:-$NAME}
78 * DO NOT EDIT - this file is automatically generated by:
79 *
80 *	$RCSID
81 */
82
83#include <machine/asm.h>
84
85EOJ
86	if [ -n "$ALIAS" ]; then
87		/bin/cat >> ${THESRC} << EOJ
88WEAK_ALIAS($ALIAS, $NAME)
89
90EOJ
91	fi
92	/bin/cat >> ${THESRC} << EOJ
93ENTRY($NAME)
94#ifdef __SVR4_ABI__
95	bral PIC_PLT(_C_LABEL(__fplsp060_$OFFS))
96#else
97	movel %sp@(8),%sp@-
98	movel %sp@(8),%sp@-
99	bsrl PIC_PLT(_C_LABEL(__fplsp060_$OFFS))
100	fmoved %fp0,%sp@
101	movel %sp@+,%d0
102	movel %sp@+,%d1
103	rts
104#endif
105END($NAME)
106EOJ
107	dummy "$@"
108}
109
110mks () {
111	local NAME ALIAS OFFS THESRC
112
113	NAME=$1
114	ALIAS=$2
115	OFFS=$3
116	THESRC=$4.S
117	shift; shift; shift; shift
118
119	echo -n " " ${THESRC} >> $FILELIST
120	/bin/cat > ${THESRC} << EOJ
121/* \$NetBSD\$ */
122
123/*
124 * FPLSP wrapper for ${ALIAS:-$NAME}
125 * DO NOT EDIT - this file is automatically generated by:
126 *
127 *	$RCSID
128 */
129
130#include <machine/asm.h>
131
132EOJ
133	if [ -n "$ALIAS" ]; then
134		/bin/cat >> ${THESRC} << EOJ
135WEAK_ALIAS($ALIAS, $NAME)
136
137EOJ
138	fi
139	/bin/cat >> ${THESRC} << EOJ
140ENTRY($NAME)
141#ifdef __SVR4_ABI__
142	bral PIC_PLT(_C_LABEL(__fplsp060_$OFFS))
143#else
144	movel %sp@(4),%sp@-
145	bsrl PIC_PLT(_C_LABEL(__fplsp060_$OFFS))
146	fmoves %fp0,%sp@
147	movel %sp@+,%d0
148	rts
149#endif
150END($NAME)
151EOJ
152	dummy "$@"
153}
154
155/bin/cat > ${REALCODE} << EOJ
156/* \$NetBSD\$ */
157
158/*
159 * FPLSP wrapper.
160 *
161 * DO NOT EDIT - this file is automatically generated by:
162 *
163 *	$RCSID
164 */
165
166#include <machine/asm.h>
167
168EOJ
169
170/bin/cat > ${FILELIST} << EOJ
171# \$NetBSD\$
172
173#
174# list of M68060 architecture dependent files for libm.
175#
176# Created by:
177#
178#	$RCSID
179#
180# Do not edit manually!
181#
182
183EOJ
184
185echo -n ARCH_SRCS = >> $FILELIST
186
187mks	__ieee754_acosf	''	0000	e_acosf
188mk	__ieee754_acos	''	0008	e_acos
189mks	__ieee754_asinf	''	0018	e_asinf
190mk	__ieee754_asin	''	0020	e_asin
191linebreak
192mks	_atanf		atanf	0030	s_atanf
193mk	_atan		atan	0038	s_atan
194mks	__ieee754_atanhf ''	0048	e_atanhf
195mk	__ieee754_atanh	''	0050	e_atanh
196linebreak
197mks	_cosf		cosf	0060	s_cosf
198mk	_cos		cos	0068	s_cos
199mks	__ieee754_coshf	''	0078	e_coshf
200mk	__ieee754_cosh	''	0080	e_cosh
201linebreak
202mks	__ieee754_expf	''	0090	e_expf
203mk	__ieee754_exp	''	0098	e_exp
204mks	_expm1f		expm1f	00a8	s_expm1f
205mk	_expm1		expm1	00b0	s_expm1
206linebreak
207mks	__ieee754_log10f ''	00f0	e_log10f
208mk	__ieee754_log10	''	00f8	e_log10
209mks	_logbf		logbf	0108	s_logbf
210mk	_logb		logb	0110	s_logb
211linebreak
212mks	__ieee754_logf	''	0120	e_logf
213mk	__ieee754_log	''	0128	e_log
214mks	_log1pf		log1pf	0138	s_log1pf
215mk	_log1p		log1p	0140	s_log1p
216linebreak
217mks	_sinf		sinf	0198	s_sinf
218mk	_sin		sin	01a0	s_sin
219mks	__ieee754_sinhf	''	01c8	e_sinhf
220mk	__ieee754_sinh	''	01d0	e_sinh
221linebreak
222mks	_tanf		tanf	01e0	s_tanf k_tanf
223mk	_tan		tan	01e8	s_tan k_tan
224mks	_tanhf		tanhf	01f8	s_tanhf
225mk	_tanh		tanh	0200	s_tanh
226linebreak
227mks	__ieee754_sqrtf	''	02e8	e_sqrtf
228mk	__ieee754_sqrt	''	02f0	e_sqrt
229
230/bin/cat >> ${REALCODE} << EOJ
231
232L060FPLSP_BASE:
233#include "fplsp.hex"
234EOJ
235
236echo ""	>> ${FILELIST}
237echo ARCH_ADDS = ${REALCODE} >> ${FILELIST}
238