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