diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 134111fe2e..5d4fb35355 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,9 @@ +2000-12-13 Ben Elliston + + * cgen.sh: Set prefix/PREFIX (append ISA if applicable). Factor + sed expressions into $sedscript, substituting @prefix@/@PREFIX@. + (defs): New action. + 2000-12-12 Geoffrey Keating * sim-endian.h: Don't have parameters on macro definitions which diff --git a/sim/common/cgen.sh b/sim/common/cgen.sh index 58449af7f3..14fa247773 100644 --- a/sim/common/cgen.sh +++ b/sim/common/cgen.sh @@ -1,8 +1,8 @@ #! /bin/sh # Generate CGEN simulator files. # -# Usage: /bin/sh cgen.sh {"arch"|"cpu"|"decode"|"cpu-decode"} srcdir \ -# cgen cgendir cgenflags \ +# Usage: /bin/sh cgen.sh {"arch"|"cpu"|"decode"|"defs"|"cpu-decode"} \ +# srcdir cgen cgendir cgenflags \ # arch archflags cpu mach suffix extrafiles # # We store the generated files in the source directory until we decide to @@ -21,21 +21,30 @@ arch=$6 archflags=$7 cpu=$8 isa=$9 -# bring parms past 9 portably into view +# portably bring parameters beyond $9 into view shift ; mach=$9 shift ; suffix=$9 shift ; extrafiles=$9 rootdir=${srcdir}/../.. +if test -z "$isa" ; then + isa=all + prefix=$cpu +else + prefix=${cpu}_$isa +fi + lowercase='abcdefghijklmnopqrstuvwxyz' uppercase='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ARCH=`echo ${arch} | tr "${lowercase}" "${uppercase}"` CPU=`echo ${cpu} | tr "${lowercase}" "${uppercase}"` +PREFIX=`echo ${prefix} | tr "${lowercase}" "${uppercase}"` -if test -z "$isa" ; then - isa=all -fi +sedscript="\ +-e s/@ARCH@/${ARCH}/g -e s/@arch@/${arch}/g \ +-e s/@CPU@/${CPU}/g -e s/@cpu@/${cpu}/g \ +-e s/@PREFIX@/${PREFIX}/g -e s/@prefix@/${prefix}/g" case $action in arch) @@ -53,11 +62,11 @@ arch) -A tmp-arch.h1 \ -B tmp-arch.c1 \ -N tmp-all.h1 - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" < tmp-arch.h1 > tmp-arch.h + sed $sedscript < tmp-arch.h1 > tmp-arch.h ${rootdir}/move-if-change tmp-arch.h ${srcdir}/arch.h - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" < tmp-arch.c1 > tmp-arch.c + sed $sedscript < tmp-arch.c1 > tmp-arch.c ${rootdir}/move-if-change tmp-arch.c ${srcdir}/arch.c - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" < tmp-all.h1 > tmp-all.h + sed $sedscript < tmp-all.h1 > tmp-all.h ${rootdir}/move-if-change tmp-all.h ${srcdir}/cpuall.h rm -f tmp-arch.h1 tmp-arch.c1 tmp-all.h1 @@ -102,30 +111,30 @@ cpu | decode | cpu-decode) case $action in *cpu*) - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-cpu.h1 > tmp-cpu.h + sed $sedscript < tmp-cpu.h1 > tmp-cpu.h ${rootdir}/move-if-change tmp-cpu.h ${srcdir}/cpu${suffix}.h - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-cpu.c1 > tmp-cpu.c + sed $sedscript < tmp-cpu.c1 > tmp-cpu.c ${rootdir}/move-if-change tmp-cpu.c ${srcdir}/cpu${suffix}.c - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-mod.c1 > tmp-mod.c + sed $sedscript < tmp-mod.c1 > tmp-mod.c ${rootdir}/move-if-change tmp-mod.c ${srcdir}/model${suffix}.c if test -f tmp-ext.c1 ; then \ - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-ext.c1 > tmp-ext.c ; \ + sed $sedscript < tmp-ext.c1 > tmp-ext.c ; \ ${rootdir}/move-if-change tmp-ext.c ${srcdir}/extract${suffix}.c ; \ fi if test -f tmp-read.c1 ; then \ - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-read.c1 > tmp-read.c ; \ + sed $sedscript < tmp-read.c1 > tmp-read.c ; \ ${rootdir}/move-if-change tmp-read.c ${srcdir}/read${suffix}.c ; \ fi if test -f tmp-write.c1 ; then \ - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-write.c1 > tmp-write.c ; \ + sed $sedscript < tmp-write.c1 > tmp-write.c ; \ ${rootdir}/move-if-change tmp-write.c ${srcdir}/write${suffix}.c ; \ fi if test -f tmp-sem.c1 ; then \ - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-sem.c1 > tmp-sem.c ; \ + sed $sedscript < tmp-sem.c1 > tmp-sem.c ; \ ${rootdir}/move-if-change tmp-sem.c ${srcdir}/sem${suffix}.c ; \ fi if test -f tmp-semsw.c1 ; then \ - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-semsw.c1 > tmp-semsw.c ; \ + sed $sedscript < tmp-semsw.c1 > tmp-semsw.c ; \ ${rootdir}/move-if-change tmp-semsw.c ${srcdir}/sem${suffix}-switch.c ; \ fi @@ -137,9 +146,9 @@ cpu | decode | cpu-decode) case $action in *decode*) - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-dec.h1 > tmp-dec.h + sed $sedscript < tmp-dec.h1 > tmp-dec.h ${rootdir}/move-if-change tmp-dec.h ${srcdir}/decode${suffix}.h - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" -e "s/@CPU@/${CPU}/g" -e "s/@cpu@/${cpu}/g" < tmp-dec.c1 > tmp-dec.c + sed $sedscript < tmp-dec.c1 > tmp-dec.c ${rootdir}/move-if-change tmp-dec.c ${srcdir}/decode${suffix}.c rm -f tmp-dec.h1 tmp-dec.c1 @@ -148,6 +157,21 @@ cpu | decode | cpu-decode) ;; +defs) + rm -f tmp-defs.h1 tmp-defs.h + + ${cgen} -s ${cgendir}/cgen-sim.scm \ + -s ${cgendir} \ + ${cgenflags} \ + -f "${archflags}" \ + -m ${mach} \ + -a ${arch} \ + -i ${isa} \ + -G tmp-defs.h1 + sed $sedscript < tmp-defs.h1 > tmp-defs.h + ${rootdir}/move-if-change tmp-defs.h ${srcdir}/defs${suffix}.h + ;; + desc) rm -f tmp-desc.h1 tmp-desc.h rm -f tmp-desc.c1 tmp-desc.c @@ -163,19 +187,18 @@ desc) -H tmp-desc.h1 \ -C tmp-desc.c1 \ -O tmp-opc.h1 - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" < tmp-desc.h1 > tmp-desc.h + sed $sedscript < tmp-desc.h1 > tmp-desc.h ${rootdir}/move-if-change tmp-desc.h ${srcdir}/${arch}-desc.h - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" \ - -e "s/@prefix@/${arch}/" < tmp-desc.c1 > tmp-desc.c + sed $sedscript < tmp-desc.c1 > tmp-desc.c ${rootdir}/move-if-change tmp-desc.c ${srcdir}/${arch}-desc.c - sed -e "s/@ARCH@/${ARCH}/g" -e "s/@arch@/${arch}/g" < tmp-opc.h1 > tmp-opc.h + sed $sedscript < tmp-opc.h1 > tmp-opc.h ${rootdir}/move-if-change tmp-opc.h ${srcdir}/${arch}-opc.h rm -f tmp-desc.h1 tmp-desc.c1 tmp-opc.h1 ;; *) - echo "cgen.sh: bad action: ${action}" >&2 + echo "`basename $0`: unknown action: ${action}" >&2 exit 1 ;;