diff mbox

[7/8] tcg: Add tcg interpreter to configure / make

Message ID 1316289634-18786-7-git-send-email-weil@mail.berlios.de
State Superseded
Headers show

Commit Message

Stefan Weil Sept. 17, 2011, 8 p.m. UTC
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 Makefile.target |    1 +
 configure       |   30 ++++++++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)

Comments

Blue Swirl Sept. 18, 2011, 9:37 a.m. UTC | #1
On Sat, Sep 17, 2011 at 8:00 PM, Stefan Weil <weil@mail.berlios.de> wrote:
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
>  Makefile.target |    1 +
>  configure       |   30 ++++++++++++++++++++++++++++--
>  2 files changed, 29 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile.target b/Makefile.target
> index 88d2f1f..a2c3a4a 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -69,6 +69,7 @@ all: $(PROGS) stap
>  # cpu emulator library
>  libobj-y = exec.o translate-all.o cpu-exec.o translate.o
>  libobj-y += tcg/tcg.o tcg/optimize.o
> +libobj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
>  libobj-y += fpu/softfloat.o
>  libobj-y += op_helper.o helper.o
>  ifeq ($(TARGET_BASE_ARCH), i386)
> diff --git a/configure b/configure
> index ad924c4..1d800e1 100755
> --- a/configure
> +++ b/configure
> @@ -138,6 +138,7 @@ debug_tcg="no"
>  debug_mon="no"
>  debug="no"
>  strip_opt="yes"
> +tcg_interpreter="no"
>  bigendian="no"
>  mingw32="no"
>  EXESUF=""
> @@ -647,6 +648,10 @@ for opt do
>   ;;
>   --enable-kvm) kvm="yes"
>   ;;
> +  --disable-tcg-interpreter) tcg_interpreter="no"
> +  ;;
> +  --enable-tcg-interpreter) tcg_interpreter="yes"
> +  ;;
>   --disable-spice) spice="no"
>   ;;
>   --enable-spice) spice="yes"
> @@ -997,6 +1002,7 @@ echo "  --enable-bluez           enable bluez stack connectivity"
>  echo "  --disable-slirp          disable SLIRP userspace network connectivity"
>  echo "  --disable-kvm            disable KVM acceleration support"
>  echo "  --enable-kvm             enable KVM acceleration support"
> +echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
>  echo "  --disable-nptl           disable usermode NPTL support"
>  echo "  --enable-nptl            enable usermode NPTL support"
>  echo "  --enable-system          enable all system emulation targets"
> @@ -2714,6 +2720,7 @@ echo "Linux AIO support $linux_aio"
>  echo "ATTR/XATTR support $attr"
>  echo "Install blobs     $blobs"
>  echo "KVM support       $kvm"
> +echo "TCG interpreter   $tcg_interpreter"
>  echo "fdt support       $fdt"
>  echo "preadv support    $preadv"
>  echo "fdatasync         $fdatasync"
> @@ -2761,6 +2768,15 @@ case "$cpu" in
>   armv4b|armv4l)
>     ARCH=arm
>   ;;
> +  *)
> +    if test "$tcg_interpreter" = "yes" ; then
> +        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
> +        ARCH=unknown

ARCH=TCI or 'all' would be more accurate.

> +    else
> +        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
> +        exit 1
> +    fi
> +  ;;
>  esac
>  echo "ARCH=$ARCH" >> $config_host_mak
>  if test "$debug_tcg" = "yes" ; then
> @@ -2994,6 +3010,9 @@ fi
>  if test "$signalfd" = "yes" ; then
>   echo "CONFIG_SIGNALFD=y" >> $config_host_mak
>  fi
> +if test "$tcg_interpreter" = "yes" ; then
> +  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
> +fi
>  if test "$need_offsetof" = "yes" ; then
>   echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
>  fi
> @@ -3454,7 +3473,9 @@ cflags=""
>  includes=""
>  ldflags=""
>
> -if test "$ARCH" = "sparc64" ; then
> +if test "$tcg_interpreter" = "yes"; then

Here the test should be against ARCH for consistency.

> +  includes="-I\$(SRC_PATH)/tcg/bytecode $includes"
> +elif test "$ARCH" = "sparc64" ; then
>   includes="-I\$(SRC_PATH)/tcg/sparc $includes"
>  elif test "$ARCH" = "s390x" ; then
>   includes="-I\$(SRC_PATH)/tcg/s390 $includes"
> @@ -3577,7 +3598,12 @@ if test "$gprof" = "yes" ; then
>   fi
>  fi
>
> -linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
> +if test "$ARCH" = "unknown"; then
> +  linker_script=""
> +else
> +  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
> +fi
> +
>  if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
>   case "$ARCH" in
>   sparc)
> --
> 1.7.2.5
>
>
>
Stefan Weil Sept. 18, 2011, 10:14 a.m. UTC | #2
Am 18.09.2011 11:37, schrieb Blue Swirl:
> On Sat, Sep 17, 2011 at 8:00 PM, Stefan Weil <weil@mail.berlios.de> wrote:
>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>> ---
>>  Makefile.target |    1 +
>>  configure       |   30 ++++++++++++++++++++++++++++--
>>  2 files changed, 29 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile.target b/Makefile.target
>> index 88d2f1f..a2c3a4a 100644
>> --- a/Makefile.target
>> +++ b/Makefile.target
>> @@ -69,6 +69,7 @@ all: $(PROGS) stap
>>  # cpu emulator library
>>  libobj-y = exec.o translate-all.o cpu-exec.o translate.o
>>  libobj-y += tcg/tcg.o tcg/optimize.o
>> +libobj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
>>  libobj-y += fpu/softfloat.o
>>  libobj-y += op_helper.o helper.o
>>  ifeq ($(TARGET_BASE_ARCH), i386)
>> diff --git a/configure b/configure
[snip]
>> @@ -2761,6 +2768,15 @@ case "$cpu" in
>>   armv4b|armv4l)
>>     ARCH=arm
>>   ;;
>> +  *)
>> +    if test "$tcg_interpreter" = "yes" ; then
>> +        echo "Unsupported CPU = $cpu, will use TCG with TCI 
>> (experimental)"
>> +        ARCH=unknown
>
> ARCH=TCI or 'all' would be more accurate.

Ok, I'll change it to ARCH=all (or 'any' or 'tci', if that is preferred).

>> +if test "$tcg_interpreter" = "yes"; then
>
> Here the test should be against ARCH for consistency.

That would not work:

There are 3 supported setups: no tcg interpreter, tcg interpreter
with known ARCH and tcg interpreter with unknown ARCH.

For the include path, I must test $tcg_interpreter.
For the linker script, I test $ARCH (see below).

>> +  includes="-I\$(SRC_PATH)/tcg/bytecode $includes"
>> +elif test "$ARCH" = "sparc64" ; then
>>    includes="-I\$(SRC_PATH)/tcg/sparc $includes"
>>   elif test "$ARCH" = "s390x" ; then
>>    includes="-I\$(SRC_PATH)/tcg/s390 $includes"
>> @@ -3577,7 +3598,12 @@ if test "$gprof" = "yes" ; then
>>    fi
>>   fi
>>
>> -linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
>> +if test "$ARCH" = "unknown"; then
>> +  linker_script=""
>> +else
>> +  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
>> +fi
>> +
diff mbox

Patch

diff --git a/Makefile.target b/Makefile.target
index 88d2f1f..a2c3a4a 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -69,6 +69,7 @@  all: $(PROGS) stap
 # cpu emulator library
 libobj-y = exec.o translate-all.o cpu-exec.o translate.o
 libobj-y += tcg/tcg.o tcg/optimize.o
+libobj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
 libobj-y += fpu/softfloat.o
 libobj-y += op_helper.o helper.o
 ifeq ($(TARGET_BASE_ARCH), i386)
diff --git a/configure b/configure
index ad924c4..1d800e1 100755
--- a/configure
+++ b/configure
@@ -138,6 +138,7 @@  debug_tcg="no"
 debug_mon="no"
 debug="no"
 strip_opt="yes"
+tcg_interpreter="no"
 bigendian="no"
 mingw32="no"
 EXESUF=""
@@ -647,6 +648,10 @@  for opt do
   ;;
   --enable-kvm) kvm="yes"
   ;;
+  --disable-tcg-interpreter) tcg_interpreter="no"
+  ;;
+  --enable-tcg-interpreter) tcg_interpreter="yes"
+  ;;
   --disable-spice) spice="no"
   ;;
   --enable-spice) spice="yes"
@@ -997,6 +1002,7 @@  echo "  --enable-bluez           enable bluez stack connectivity"
 echo "  --disable-slirp          disable SLIRP userspace network connectivity"
 echo "  --disable-kvm            disable KVM acceleration support"
 echo "  --enable-kvm             enable KVM acceleration support"
+echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
 echo "  --disable-nptl           disable usermode NPTL support"
 echo "  --enable-nptl            enable usermode NPTL support"
 echo "  --enable-system          enable all system emulation targets"
@@ -2714,6 +2720,7 @@  echo "Linux AIO support $linux_aio"
 echo "ATTR/XATTR support $attr"
 echo "Install blobs     $blobs"
 echo "KVM support       $kvm"
+echo "TCG interpreter   $tcg_interpreter"
 echo "fdt support       $fdt"
 echo "preadv support    $preadv"
 echo "fdatasync         $fdatasync"
@@ -2761,6 +2768,15 @@  case "$cpu" in
   armv4b|armv4l)
     ARCH=arm
   ;;
+  *)
+    if test "$tcg_interpreter" = "yes" ; then
+        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
+        ARCH=unknown
+    else
+        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
+        exit 1
+    fi
+  ;;
 esac
 echo "ARCH=$ARCH" >> $config_host_mak
 if test "$debug_tcg" = "yes" ; then
@@ -2994,6 +3010,9 @@  fi
 if test "$signalfd" = "yes" ; then
   echo "CONFIG_SIGNALFD=y" >> $config_host_mak
 fi
+if test "$tcg_interpreter" = "yes" ; then
+  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
+fi
 if test "$need_offsetof" = "yes" ; then
   echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
 fi
@@ -3454,7 +3473,9 @@  cflags=""
 includes=""
 ldflags=""
 
-if test "$ARCH" = "sparc64" ; then
+if test "$tcg_interpreter" = "yes"; then
+  includes="-I\$(SRC_PATH)/tcg/bytecode $includes"
+elif test "$ARCH" = "sparc64" ; then
   includes="-I\$(SRC_PATH)/tcg/sparc $includes"
 elif test "$ARCH" = "s390x" ; then
   includes="-I\$(SRC_PATH)/tcg/s390 $includes"
@@ -3577,7 +3598,12 @@  if test "$gprof" = "yes" ; then
   fi
 fi
 
-linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
+if test "$ARCH" = "unknown"; then
+  linker_script=""
+else
+  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
+fi
+
 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
   case "$ARCH" in
   sparc)