qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/5] target-tile: Firstly add to qemu with minim


From: Chris Metcalf
Subject: Re: [Qemu-devel] [PATCH 1/5] target-tile: Firstly add to qemu with minimized features
Date: Fri, 13 Feb 2015 22:37:39 -0500
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 2/13/2015 10:08 PM, Chen Gang S wrote:
On 2/14/15 08:26, Peter Maydell wrote:
On 13 February 2015 at 23:50, Chen Gang S <address@hidden> wrote:
On 2/13/15 05:15, Chen Gang S wrote:
It almost likes a template for adding an architecture target.

Signed-off-by: Chen Gang <address@hidden>
---
  configure                             |   7 ++
  default-configs/tilegx-linux-user.mak |   1 +
  target-tile/Makefile.objs             |   1 +
  target-tile/cpu-qom.h                 |  72 +++++++++++++++
  target-tile/cpu.c                     | 159 ++++++++++++++++++++++++++++++++++
  target-tile/cpu.h                     |  84 ++++++++++++++++++
  target-tile/helper.h                  |   0
  target-tile/translate.c               |  54 ++++++++++++
  8 files changed, 378 insertions(+)
  create mode 100644 default-configs/tilegx-linux-user.mak
  create mode 100644 target-tile/Makefile.objs
  create mode 100644 target-tile/cpu-qom.h
  create mode 100644 target-tile/cpu.c
  create mode 100644 target-tile/cpu.h
  create mode 100644 target-tile/helper.h
  create mode 100644 target-tile/translate.c

diff --git a/configure b/configure
index 7ba4bcb..ffb4d56 100755
--- a/configure
+++ b/configure
@@ -5191,6 +5191,9 @@ case "$target_name" in
    s390x)
      gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml"
    ;;
+  tilegx)
+    TARGET_ARCH=tile
+  ;;
Oh, it needs to use "TARGET_ARCH=tilegx" instead of "TARGET_ARCH=tile",
or can not put "CONFIG_TILE_DIS=y" to config-all-disas.mak, below (when
I am adding "disas/tilegx.c", I meet it).
You need to make up your mind about what your architecture
is called: is it "tile" or "tilegx"? Be consistent...

Oh, after think of, for me, I shall follow the other architectures has
done (e.g. i386).

  - Still use target-tile directory, since 'tile' is the architecture
    name.

  - 'tilegx' is one kind of cpu of tile, so I need consider about it just
    like another architectures have done (e.g. i386).

I recommend pretty strongly that you use "tilegx" consistently for qemu.  There is enough commonality in the Linux arch 
code that I chose "tile" to support both tilepro and tilegx.  But elsewhere, we use "tilegx" vs 
"tilepro", for example in binutils and gcc.  I would argue "qemu" is much more like binutils or gcc.  Also, 
note that while x86_64 can run i386 binaries, tilegx can not run tilepro binaries.

You should only add this bit to configure in the patchset
where you add a Tile disassembler.
Yeah, I shall add disassembler firstly, before generate tcg code:

  - binutils tilegx disassembler is easy to be integrated into qemu.

  - I shall reuse part of the tilegx disassembler code for generating tcg
    code.

  - For me, dumping disassemble code in qemu is much helpful for testing.

At present, I have integrated binutils tilegx disassembler into qemu, it
is passed building, and I shall give a test for it tonight. If no any
issues, I plan to send related patch too.

The license issue is tricky with qemu.  The tilegx support was only returned to 
the community in release 2.22, and binutils has been GPL v3 since 2.18 or so.  
So you can't use that code.  On the other hand, there is disassembly code in 
the kernel that we released under the kernel's GPL v2; see 
arch/tile/kernel/tile-desc_64.c and the matching include file.  So maybe there 
is enough there for you to use to implement the disassembly code.

I'm not sure whether Tilera can simply re-release the tilegx-specific stuff 
from binutils as a separate tarball with GPL v2 licensing.  Hopefully we can 
avoid having to figure that out. :-)

--
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com




reply via email to

[Prev in Thread] Current Thread [Next in Thread]