|  | #! /bin/bash -e | 
|  |  | 
|  | OVERLAY="$1" | 
|  | NAME="$2" | 
|  | FREQ=40000 | 
|  | BASE=$(dirname "$0") | 
|  | TARGET="$BASE"/core-$NAME | 
|  |  | 
|  | [ $# -ge 2 -a -f "$OVERLAY" ] || { cat <<EOF | 
|  | Usage: $0 overlay-archive-to-import core-name [frequency-in-KHz] | 
|  | overlay-archive-to-import:  file name of xtensa-config-overlay.tar.gz | 
|  | to import configuration from. | 
|  | core-name:                  QEMU name of the imported core. Must be valid | 
|  | C identifier. | 
|  | frequency-in-KHz:           core frequency (40MHz if not specified). | 
|  | EOF | 
|  | exit | 
|  | } | 
|  |  | 
|  | [ $# -ge 3 ] && FREQ="$3" | 
|  | mkdir -p "$TARGET" | 
|  | tar -xf "$OVERLAY" -C "$TARGET" --strip-components=1 \ | 
|  | --xform='s/core/core-isa/' config/core.h | 
|  | tar -xf "$OVERLAY" -O gdb/xtensa-config.c | \ | 
|  | sed -n '1,/*\//p;/XTREG/,/XTREG_END/p' > "$TARGET"/gdb-config.c | 
|  |  | 
|  | cat <<EOF > "${TARGET}.c" | 
|  | #include "cpu.h" | 
|  | #include "exec/exec-all.h" | 
|  | #include "exec/gdbstub.h" | 
|  | #include "qemu/host-utils.h" | 
|  |  | 
|  | #include "core-$NAME/core-isa.h" | 
|  | #include "overlay_tool.h" | 
|  |  | 
|  | static XtensaConfig $NAME __attribute__((unused)) = { | 
|  | .name = "$NAME", | 
|  | .gdb_regmap = { | 
|  | .reg = { | 
|  | #include "core-$NAME/gdb-config.c" | 
|  | } | 
|  | }, | 
|  | .clock_freq_khz = $FREQ, | 
|  | DEFAULT_SECTIONS | 
|  | }; | 
|  |  | 
|  | REGISTER_CORE($NAME) | 
|  | EOF | 
|  |  | 
|  | grep -q core-${NAME}.o "$BASE"/Makefile.objs || \ | 
|  | echo "obj-y += core-${NAME}.o" >> "$BASE"/Makefile.objs |