* som.c (log2): Rename to exact_log2. Adjust all callers.
[deliverable/binutils-gdb.git] / sim / common / cgen.sh
CommitLineData
604259a0
FCE
1#! /bin/sh
2# Generate CGEN simulator files.
3#
fd5d712e
BE
4# Usage: /bin/sh cgen.sh {"arch"|"cpu"|"decode"|"defs"|"cpu-decode"} \
5# srcdir cgen cgendir cgenflags \
ea52ff81 6# arch archflags cpu mach suffix archfile extrafiles
604259a0
FCE
7#
8# We store the generated files in the source directory until we decide to
9# ship a Scheme interpreter (or other implementation) with gdb/binutils.
10# Maybe we never will.
11
12# We want to behave like make, any error forces us to stop.
13set -e
14
15action=$1
16srcdir=$2
17cgen=$3
18cgendir=$4
19cgenflags=$5
20arch=$6
21archflags=$7
22cpu=$8
e4f5c43e 23isa=$9
fd5d712e 24# portably bring parameters beyond $9 into view
e4f5c43e 25shift ; mach=$9
604259a0 26shift ; suffix=$9
ea52ff81 27shift ; archfile=$9
604259a0
FCE
28shift ; extrafiles=$9
29
30rootdir=${srcdir}/../..
31
fd5d712e
BE
32if test -z "$isa" ; then
33 isa=all
34 prefix=$cpu
35else
36 prefix=${cpu}_$isa
37fi
38
604259a0
FCE
39lowercase='abcdefghijklmnopqrstuvwxyz'
40uppercase='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
41ARCH=`echo ${arch} | tr "${lowercase}" "${uppercase}"`
42CPU=`echo ${cpu} | tr "${lowercase}" "${uppercase}"`
fd5d712e 43PREFIX=`echo ${prefix} | tr "${lowercase}" "${uppercase}"`
604259a0 44
fd5d712e
BE
45sedscript="\
46-e s/@ARCH@/${ARCH}/g -e s/@arch@/${arch}/g \
47-e s/@CPU@/${CPU}/g -e s/@cpu@/${cpu}/g \
48-e s/@PREFIX@/${PREFIX}/g -e s/@prefix@/${prefix}/g"
e4f5c43e 49
604259a0
FCE
50case $action in
51arch)
52 rm -f tmp-arch.h1 tmp-arch.h
53 rm -f tmp-arch.c1 tmp-arch.c
54 rm -f tmp-all.h1 tmp-all.h
55
56 ${cgen} -s ${cgendir}/cgen-sim.scm \
57 -s ${cgendir} \
58 ${cgenflags} \
59 -f "${archflags}" \
60 -m ${mach} \
ea52ff81 61 -a ${archfile} \
e4f5c43e 62 -i ${isa} \
604259a0
FCE
63 -A tmp-arch.h1 \
64 -B tmp-arch.c1 \
65 -N tmp-all.h1
fd5d712e 66 sed $sedscript < tmp-arch.h1 > tmp-arch.h
604259a0 67 ${rootdir}/move-if-change tmp-arch.h ${srcdir}/arch.h
fd5d712e 68 sed $sedscript < tmp-arch.c1 > tmp-arch.c
604259a0 69 ${rootdir}/move-if-change tmp-arch.c ${srcdir}/arch.c
fd5d712e 70 sed $sedscript < tmp-all.h1 > tmp-all.h
604259a0
FCE
71 ${rootdir}/move-if-change tmp-all.h ${srcdir}/cpuall.h
72
73 rm -f tmp-arch.h1 tmp-arch.c1 tmp-all.h1
74 ;;
75
76cpu | decode | cpu-decode)
77
78 fileopts=""
79 case $action in
80 *cpu*)
81 rm -f tmp-cpu.h1 tmp-cpu.c1
82 rm -f tmp-ext.c1 tmp-read.c1 tmp-write.c1
83 rm -f tmp-sem.c1 tmp-semsw.c1
84 rm -f tmp-mod.c1
85 rm -f tmp-cpu.h tmp-cpu.c
86 rm -f tmp-ext.c tmp-read.c tmp-write.c
87 rm -f tmp-sem.c tmp-semsw.c tmp-mod.c
88 fileopts="$fileopts \
89 -C tmp-cpu.h1 \
90 -U tmp-cpu.c1 \
91 -M tmp-mod.c1 \
92 ${extrafiles}"
93 ;;
94 esac
95 case $action in
96 *decode*)
97 rm -f tmp-dec.h1 tmp-dec.h tmp-dec.c1 tmp-dec.c
98 fileopts="$fileopts \
99 -T tmp-dec.h1 \
100 -D tmp-dec.c1"
63fe1038
BE
101 case "$extrafiles" in
102 ignored) # Do nothing.
103 ;;
104 *) fileopts="$fileopts $extrafiles"
105 ;;
106 esac
604259a0
FCE
107 ;;
108 esac
109
110 ${cgen} -s ${cgendir}/cgen-sim.scm \
111 -s ${cgendir} \
112 ${cgenflags} \
113 -f "${archflags}" \
114 -m ${mach} \
ea52ff81 115 -a ${archfile} \
e4f5c43e 116 -i ${isa} \
604259a0
FCE
117 ${fileopts}
118
119 case $action in
120 *cpu*)
fd5d712e 121 sed $sedscript < tmp-cpu.h1 > tmp-cpu.h
604259a0 122 ${rootdir}/move-if-change tmp-cpu.h ${srcdir}/cpu${suffix}.h
fd5d712e 123 sed $sedscript < tmp-cpu.c1 > tmp-cpu.c
604259a0 124 ${rootdir}/move-if-change tmp-cpu.c ${srcdir}/cpu${suffix}.c
fd5d712e 125 sed $sedscript < tmp-mod.c1 > tmp-mod.c
604259a0
FCE
126 ${rootdir}/move-if-change tmp-mod.c ${srcdir}/model${suffix}.c
127 if test -f tmp-ext.c1 ; then \
fd5d712e 128 sed $sedscript < tmp-ext.c1 > tmp-ext.c ; \
604259a0
FCE
129 ${rootdir}/move-if-change tmp-ext.c ${srcdir}/extract${suffix}.c ; \
130 fi
131 if test -f tmp-read.c1 ; then \
fd5d712e 132 sed $sedscript < tmp-read.c1 > tmp-read.c ; \
604259a0
FCE
133 ${rootdir}/move-if-change tmp-read.c ${srcdir}/read${suffix}.c ; \
134 fi
135 if test -f tmp-write.c1 ; then \
fd5d712e 136 sed $sedscript < tmp-write.c1 > tmp-write.c ; \
604259a0
FCE
137 ${rootdir}/move-if-change tmp-write.c ${srcdir}/write${suffix}.c ; \
138 fi
139 if test -f tmp-sem.c1 ; then \
fd5d712e 140 sed $sedscript < tmp-sem.c1 > tmp-sem.c ; \
604259a0
FCE
141 ${rootdir}/move-if-change tmp-sem.c ${srcdir}/sem${suffix}.c ; \
142 fi
143 if test -f tmp-semsw.c1 ; then \
fd5d712e 144 sed $sedscript < tmp-semsw.c1 > tmp-semsw.c ; \
604259a0
FCE
145 ${rootdir}/move-if-change tmp-semsw.c ${srcdir}/sem${suffix}-switch.c ; \
146 fi
147
148 rm -f tmp-cpu.h1 tmp-cpu.c1
149 rm -f tmp-ext.c1 tmp-read.c1 tmp-write.c1
150 rm -f tmp-sem.c1 tmp-semsw.c1 tmp-mod.c1
151 ;;
152 esac
153
154 case $action in
155 *decode*)
fd5d712e 156 sed $sedscript < tmp-dec.h1 > tmp-dec.h
604259a0 157 ${rootdir}/move-if-change tmp-dec.h ${srcdir}/decode${suffix}.h
fd5d712e 158 sed $sedscript < tmp-dec.c1 > tmp-dec.c
604259a0
FCE
159 ${rootdir}/move-if-change tmp-dec.c ${srcdir}/decode${suffix}.c
160
63fe1038
BE
161 if test -f tmp-sem.c1 ; then \
162 sed $sedscript < tmp-sem.c1 > tmp-sem.c ; \
163 ${rootdir}/move-if-change tmp-sem.c ${srcdir}/sem${suffix}.c ; \
164 fi
165 if test -f tmp-semsw.c1 ; then \
166 sed $sedscript < tmp-semsw.c1 > tmp-semsw.c ; \
167 ${rootdir}/move-if-change tmp-semsw.c ${srcdir}/sem${suffix}-switch.c ; \
168 fi
169
604259a0
FCE
170 rm -f tmp-dec.h1 tmp-dec.c1
171 ;;
172 esac
173
174 ;;
175
fd5d712e
BE
176defs)
177 rm -f tmp-defs.h1 tmp-defs.h
178
179 ${cgen} -s ${cgendir}/cgen-sim.scm \
180 -s ${cgendir} \
181 ${cgenflags} \
182 -f "${archflags}" \
183 -m ${mach} \
ea52ff81 184 -a ${archfile} \
fd5d712e
BE
185 -i ${isa} \
186 -G tmp-defs.h1
187 sed $sedscript < tmp-defs.h1 > tmp-defs.h
188 ${rootdir}/move-if-change tmp-defs.h ${srcdir}/defs${suffix}.h
189 ;;
190
604259a0
FCE
191desc)
192 rm -f tmp-desc.h1 tmp-desc.h
193 rm -f tmp-desc.c1 tmp-desc.c
194 rm -f tmp-opc.h1 tmp-opc.h
195
196 ${cgen} -s ${cgendir}/cgen-opc.scm \
197 -s ${cgendir} \
198 ${cgenflags} \
199 -f "${archflags}" \
200 -m ${mach} \
ea52ff81 201 -a ${archfile} \
e4f5c43e 202 -i ${isa} \
604259a0
FCE
203 -H tmp-desc.h1 \
204 -C tmp-desc.c1 \
205 -O tmp-opc.h1
fd5d712e 206 sed $sedscript < tmp-desc.h1 > tmp-desc.h
604259a0 207 ${rootdir}/move-if-change tmp-desc.h ${srcdir}/${arch}-desc.h
fd5d712e 208 sed $sedscript < tmp-desc.c1 > tmp-desc.c
604259a0 209 ${rootdir}/move-if-change tmp-desc.c ${srcdir}/${arch}-desc.c
fd5d712e 210 sed $sedscript < tmp-opc.h1 > tmp-opc.h
604259a0
FCE
211 ${rootdir}/move-if-change tmp-opc.h ${srcdir}/${arch}-opc.h
212
213 rm -f tmp-desc.h1 tmp-desc.c1 tmp-opc.h1
214 ;;
215
216*)
fd5d712e 217 echo "`basename $0`: unknown action: ${action}" >&2
604259a0
FCE
218 exit 1
219 ;;
220
221esac
222
223exit 0
This page took 0.191158 seconds and 4 git commands to generate.