h8300: Add support of EXR register
[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 \
604259a0
FCE
6# arch archflags cpu mach suffix extrafiles
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
FCE
26shift ; suffix=$9
27shift ; extrafiles=$9
28
29rootdir=${srcdir}/../..
30
fd5d712e
BE
31if test -z "$isa" ; then
32 isa=all
33 prefix=$cpu
34else
35 prefix=${cpu}_$isa
36fi
37
604259a0
FCE
38lowercase='abcdefghijklmnopqrstuvwxyz'
39uppercase='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
40ARCH=`echo ${arch} | tr "${lowercase}" "${uppercase}"`
41CPU=`echo ${cpu} | tr "${lowercase}" "${uppercase}"`
fd5d712e 42PREFIX=`echo ${prefix} | tr "${lowercase}" "${uppercase}"`
604259a0 43
fd5d712e
BE
44sedscript="\
45-e s/@ARCH@/${ARCH}/g -e s/@arch@/${arch}/g \
46-e s/@CPU@/${CPU}/g -e s/@cpu@/${cpu}/g \
47-e s/@PREFIX@/${PREFIX}/g -e s/@prefix@/${prefix}/g"
e4f5c43e 48
604259a0
FCE
49case $action in
50arch)
51 rm -f tmp-arch.h1 tmp-arch.h
52 rm -f tmp-arch.c1 tmp-arch.c
53 rm -f tmp-all.h1 tmp-all.h
54
55 ${cgen} -s ${cgendir}/cgen-sim.scm \
56 -s ${cgendir} \
57 ${cgenflags} \
58 -f "${archflags}" \
59 -m ${mach} \
60 -a ${arch} \
e4f5c43e 61 -i ${isa} \
604259a0
FCE
62 -A tmp-arch.h1 \
63 -B tmp-arch.c1 \
64 -N tmp-all.h1
fd5d712e 65 sed $sedscript < tmp-arch.h1 > tmp-arch.h
604259a0 66 ${rootdir}/move-if-change tmp-arch.h ${srcdir}/arch.h
fd5d712e 67 sed $sedscript < tmp-arch.c1 > tmp-arch.c
604259a0 68 ${rootdir}/move-if-change tmp-arch.c ${srcdir}/arch.c
fd5d712e 69 sed $sedscript < tmp-all.h1 > tmp-all.h
604259a0
FCE
70 ${rootdir}/move-if-change tmp-all.h ${srcdir}/cpuall.h
71
72 rm -f tmp-arch.h1 tmp-arch.c1 tmp-all.h1
73 ;;
74
75cpu | decode | cpu-decode)
76
77 fileopts=""
78 case $action in
79 *cpu*)
80 rm -f tmp-cpu.h1 tmp-cpu.c1
81 rm -f tmp-ext.c1 tmp-read.c1 tmp-write.c1
82 rm -f tmp-sem.c1 tmp-semsw.c1
83 rm -f tmp-mod.c1
84 rm -f tmp-cpu.h tmp-cpu.c
85 rm -f tmp-ext.c tmp-read.c tmp-write.c
86 rm -f tmp-sem.c tmp-semsw.c tmp-mod.c
87 fileopts="$fileopts \
88 -C tmp-cpu.h1 \
89 -U tmp-cpu.c1 \
90 -M tmp-mod.c1 \
91 ${extrafiles}"
92 ;;
93 esac
94 case $action in
95 *decode*)
96 rm -f tmp-dec.h1 tmp-dec.h tmp-dec.c1 tmp-dec.c
97 fileopts="$fileopts \
98 -T tmp-dec.h1 \
99 -D tmp-dec.c1"
63fe1038
BE
100 case "$extrafiles" in
101 ignored) # Do nothing.
102 ;;
103 *) fileopts="$fileopts $extrafiles"
104 ;;
105 esac
604259a0
FCE
106 ;;
107 esac
108
109 ${cgen} -s ${cgendir}/cgen-sim.scm \
110 -s ${cgendir} \
111 ${cgenflags} \
112 -f "${archflags}" \
113 -m ${mach} \
114 -a ${arch} \
e4f5c43e 115 -i ${isa} \
604259a0
FCE
116 ${fileopts}
117
118 case $action in
119 *cpu*)
fd5d712e 120 sed $sedscript < tmp-cpu.h1 > tmp-cpu.h
604259a0 121 ${rootdir}/move-if-change tmp-cpu.h ${srcdir}/cpu${suffix}.h
fd5d712e 122 sed $sedscript < tmp-cpu.c1 > tmp-cpu.c
604259a0 123 ${rootdir}/move-if-change tmp-cpu.c ${srcdir}/cpu${suffix}.c
fd5d712e 124 sed $sedscript < tmp-mod.c1 > tmp-mod.c
604259a0
FCE
125 ${rootdir}/move-if-change tmp-mod.c ${srcdir}/model${suffix}.c
126 if test -f tmp-ext.c1 ; then \
fd5d712e 127 sed $sedscript < tmp-ext.c1 > tmp-ext.c ; \
604259a0
FCE
128 ${rootdir}/move-if-change tmp-ext.c ${srcdir}/extract${suffix}.c ; \
129 fi
130 if test -f tmp-read.c1 ; then \
fd5d712e 131 sed $sedscript < tmp-read.c1 > tmp-read.c ; \
604259a0
FCE
132 ${rootdir}/move-if-change tmp-read.c ${srcdir}/read${suffix}.c ; \
133 fi
134 if test -f tmp-write.c1 ; then \
fd5d712e 135 sed $sedscript < tmp-write.c1 > tmp-write.c ; \
604259a0
FCE
136 ${rootdir}/move-if-change tmp-write.c ${srcdir}/write${suffix}.c ; \
137 fi
138 if test -f tmp-sem.c1 ; then \
fd5d712e 139 sed $sedscript < tmp-sem.c1 > tmp-sem.c ; \
604259a0
FCE
140 ${rootdir}/move-if-change tmp-sem.c ${srcdir}/sem${suffix}.c ; \
141 fi
142 if test -f tmp-semsw.c1 ; then \
fd5d712e 143 sed $sedscript < tmp-semsw.c1 > tmp-semsw.c ; \
604259a0
FCE
144 ${rootdir}/move-if-change tmp-semsw.c ${srcdir}/sem${suffix}-switch.c ; \
145 fi
146
147 rm -f tmp-cpu.h1 tmp-cpu.c1
148 rm -f tmp-ext.c1 tmp-read.c1 tmp-write.c1
149 rm -f tmp-sem.c1 tmp-semsw.c1 tmp-mod.c1
150 ;;
151 esac
152
153 case $action in
154 *decode*)
fd5d712e 155 sed $sedscript < tmp-dec.h1 > tmp-dec.h
604259a0 156 ${rootdir}/move-if-change tmp-dec.h ${srcdir}/decode${suffix}.h
fd5d712e 157 sed $sedscript < tmp-dec.c1 > tmp-dec.c
604259a0
FCE
158 ${rootdir}/move-if-change tmp-dec.c ${srcdir}/decode${suffix}.c
159
63fe1038
BE
160 if test -f tmp-sem.c1 ; then \
161 sed $sedscript < tmp-sem.c1 > tmp-sem.c ; \
162 ${rootdir}/move-if-change tmp-sem.c ${srcdir}/sem${suffix}.c ; \
163 fi
164 if test -f tmp-semsw.c1 ; then \
165 sed $sedscript < tmp-semsw.c1 > tmp-semsw.c ; \
166 ${rootdir}/move-if-change tmp-semsw.c ${srcdir}/sem${suffix}-switch.c ; \
167 fi
168
604259a0
FCE
169 rm -f tmp-dec.h1 tmp-dec.c1
170 ;;
171 esac
172
173 ;;
174
fd5d712e
BE
175defs)
176 rm -f tmp-defs.h1 tmp-defs.h
177
178 ${cgen} -s ${cgendir}/cgen-sim.scm \
179 -s ${cgendir} \
180 ${cgenflags} \
181 -f "${archflags}" \
182 -m ${mach} \
183 -a ${arch} \
184 -i ${isa} \
185 -G tmp-defs.h1
186 sed $sedscript < tmp-defs.h1 > tmp-defs.h
187 ${rootdir}/move-if-change tmp-defs.h ${srcdir}/defs${suffix}.h
188 ;;
189
604259a0
FCE
190desc)
191 rm -f tmp-desc.h1 tmp-desc.h
192 rm -f tmp-desc.c1 tmp-desc.c
193 rm -f tmp-opc.h1 tmp-opc.h
194
195 ${cgen} -s ${cgendir}/cgen-opc.scm \
196 -s ${cgendir} \
197 ${cgenflags} \
198 -f "${archflags}" \
199 -m ${mach} \
200 -a ${arch} \
e4f5c43e 201 -i ${isa} \
604259a0
FCE
202 -H tmp-desc.h1 \
203 -C tmp-desc.c1 \
204 -O tmp-opc.h1
fd5d712e 205 sed $sedscript < tmp-desc.h1 > tmp-desc.h
604259a0 206 ${rootdir}/move-if-change tmp-desc.h ${srcdir}/${arch}-desc.h
fd5d712e 207 sed $sedscript < tmp-desc.c1 > tmp-desc.c
604259a0 208 ${rootdir}/move-if-change tmp-desc.c ${srcdir}/${arch}-desc.c
fd5d712e 209 sed $sedscript < tmp-opc.h1 > tmp-opc.h
604259a0
FCE
210 ${rootdir}/move-if-change tmp-opc.h ${srcdir}/${arch}-opc.h
211
212 rm -f tmp-desc.h1 tmp-desc.c1 tmp-opc.h1
213 ;;
214
215*)
fd5d712e 216 echo "`basename $0`: unknown action: ${action}" >&2
604259a0
FCE
217 exit 1
218 ;;
219
220esac
221
222exit 0
This page took 0.100712 seconds and 4 git commands to generate.