diff mbox series

[v31,20/22] Add rx-softmmu

Message ID 20200223065102.61652-21-ysato@users.sourceforge.jp
State New
Headers show
Series Add RX archtecture support | expand

Commit Message

Yoshinori Sato Feb. 23, 2020, 6:51 a.m. UTC
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Message-Id: <20190607091116.49044-17-ysato@users.sourceforge.jp>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
pick ed65c02993 target/rx: Add RX to SysEmuTarget
pick 01372568ae tests: Add rx to machine-none-test.c
[PMD: Squashed patches from Richard Henderson modifying
      qapi/common.json and tests/machine-none-test.c]
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 configure                       | 11 ++++++++++-
 default-configs/rx-softmmu.mak  |  3 +++
 qapi/machine.json               |  2 +-
 include/exec/poison.h           |  1 +
 include/sysemu/arch_init.h      |  1 +
 arch_init.c                     |  2 ++
 tests/qtest/machine-none-test.c |  1 +
 hw/Kconfig                      |  1 +
 8 files changed, 20 insertions(+), 2 deletions(-)
 create mode 100644 default-configs/rx-softmmu.mak

Comments

Eric Blake Feb. 24, 2020, 3:11 p.m. UTC | #1
On 2/23/20 12:51 AM, Yoshinori Sato wrote:
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> Message-Id: <20190607091116.49044-17-ysato@users.sourceforge.jp>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> pick ed65c02993 target/rx: Add RX to SysEmuTarget
> pick 01372568ae tests: Add rx to machine-none-test.c
> [PMD: Squashed patches from Richard Henderson modifying
>        qapi/common.json and tests/machine-none-test.c]
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---

> +++ b/qapi/machine.json
> @@ -26,7 +26,7 @@
>     'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
>                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
>                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
> -             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
> +             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',

Missing mention of the new enum member with a 'since 5.0' designation in 
the documentation.
Philippe Mathieu-Daudé Feb. 24, 2020, 3:15 p.m. UTC | #2
On 2/24/20 4:11 PM, Eric Blake wrote:
> On 2/23/20 12:51 AM, Yoshinori Sato wrote:
>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
>> Message-Id: <20190607091116.49044-17-ysato@users.sourceforge.jp>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> pick ed65c02993 target/rx: Add RX to SysEmuTarget
>> pick 01372568ae tests: Add rx to machine-none-test.c
>> [PMD: Squashed patches from Richard Henderson modifying
>>        qapi/common.json and tests/machine-none-test.c]
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
> 
>> +++ b/qapi/machine.json
>> @@ -26,7 +26,7 @@
>>     'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
>>                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
>>                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
>> -             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
>> +             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
> 
> Missing mention of the new enum member with a 'since 5.0' designation in 
> the documentation.

Is this something we can automate? Maybe dumping all the qapi data when 
we do a release, then check the differences before the next release?
Eric Blake Feb. 24, 2020, 3:30 p.m. UTC | #3
On 2/24/20 9:15 AM, Philippe Mathieu-Daudé wrote:
> On 2/24/20 4:11 PM, Eric Blake wrote:
>> On 2/23/20 12:51 AM, Yoshinori Sato wrote:
>>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
>>> Message-Id: <20190607091116.49044-17-ysato@users.sourceforge.jp>
>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>> pick ed65c02993 target/rx: Add RX to SysEmuTarget
>>> pick 01372568ae tests: Add rx to machine-none-test.c
>>> [PMD: Squashed patches from Richard Henderson modifying
>>>        qapi/common.json and tests/machine-none-test.c]
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>
>>> +++ b/qapi/machine.json
>>> @@ -26,7 +26,7 @@
>>>     'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 
>>> 'lm32',
>>>                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
>>>                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
>>> -             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
>>> +             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
>>
>> Missing mention of the new enum member with a 'since 5.0' designation 
>> in the documentation.
> 
> Is this something we can automate? Maybe dumping all the qapi data when 
> we do a release, then check the differences before the next release?

Probably. It's already easy to automate a dump of qmp introspection data 
from an arbitrary commit, and diffing the output between the previous 
commit release point and the current proposed release should be 
technically possible.  Our QAPI generator also generates the docs, which 
means it can be enhanced to denote which doc elements are tagged to 
which versions.  Might make a good GSOC project.
Aleksandar Markovic Feb. 24, 2020, 5:53 p.m. UTC | #4
On Mon, Feb 24, 2020 at 4:31 PM Eric Blake <eblake@redhat.com> wrote:
>
> On 2/24/20 9:15 AM, Philippe Mathieu-Daudé wrote:
> > On 2/24/20 4:11 PM, Eric Blake wrote:
> >> On 2/23/20 12:51 AM, Yoshinori Sato wrote:
> >>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> >>> Message-Id: <20190607091116.49044-17-ysato@users.sourceforge.jp>
> >>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> >>> pick ed65c02993 target/rx: Add RX to SysEmuTarget
> >>> pick 01372568ae tests: Add rx to machine-none-test.c
> >>> [PMD: Squashed patches from Richard Henderson modifying
> >>>        qapi/common.json and tests/machine-none-test.c]
> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>> ---
> >>
> >>> +++ b/qapi/machine.json
> >>> @@ -26,7 +26,7 @@
> >>>     'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386',
> >>> 'lm32',
> >>>                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
> >>>                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
> >>> -             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
> >>> +             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
> >>
> >> Missing mention of the new enum member with a 'since 5.0' designation
> >> in the documentation.
> >
> > Is this something we can automate? Maybe dumping all the qapi data when
> > we do a release, then check the differences before the next release?
>
> Probably. It's already easy to automate a dump of qmp introspection data
> from an arbitrary commit, and diffing the output between the previous
> commit release point and the current proposed release should be
> technically possible.  Our QAPI generator also generates the docs, which
> means it can be enhanced to denote which doc elements are tagged to
> which versions.  Might make a good GSOC project.
>

Hello, all (but mostly Peter and Eric).

Just want to bring to your attention a point that is not clear to me here.
(forgive me for being an outsider in this area)

Could you please take a look at commit:

bb5ccf225e81d2801c03e63d16c371f0617270e8
<https://github.com/qemu/qemu/commit/bb5ccf225e81d2801c03e63d16c371f0617270e8#diff-d7db5c644ce52a6080e77ef1e7a3811b>

I am not familiar with QAPI doc generator, but shouldn't "Since: 3.0"
cause the same problem as "ppcemb: dropped in 3.1"? If not, why?

Yours,
Aleksandar

> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc.           +1-919-301-3226
> Virtualization:  qemu.org | libvirt.org
>
>
Eric Blake Feb. 24, 2020, 6:31 p.m. UTC | #5
On 2/24/20 11:53 AM, Aleksandar Markovic wrote:

>>>> Missing mention of the new enum member with a 'since 5.0' designation
>>>> in the documentation.
>>>

> Just want to bring to your attention a point that is not clear to me here.
> (forgive me for being an outsider in this area)

No problem - asking questions is how we learn.

> 
> Could you please take a look at commit:
> 
> bb5ccf225e81d2801c03e63d16c371f0617270e8
> <https://github.com/qemu/qemu/commit/bb5ccf225e81d2801c03e63d16c371f0617270e8#diff-d7db5c644ce52a6080e77ef1e7a3811b>
> 
> I am not familiar with QAPI doc generator, but shouldn't "Since: 3.0"
> cause the same problem as "ppcemb: dropped in 3.1"? If not, why?

That was the opposite direction - in that commit, we were removing stale 
comments about a member that was no longer present (if the member is not 
present, the doc engine doesn't know what to attach the tag to, and we 
now have the better qemu-deprecated.texi file for tracking removals). 
And even if the removal is not documented, users that depended on it 
(which should be few, or we would not have removed it), it becomes 
fairly obvious at the attempted point of use that it no longer works.

But when the member is present, but added later than the original 
struct, knowing what release the additional members were added is useful 
documentation when deciding whether support for the new member is 
present on all versions of qemu you care about, or whether your 
management code has to consider the case when the member was absent. 
Yes, you can get the same information from introspection 
programmatically (in fact, when libvirt has to deal with new additions, 
that's how it probes whether the addition is there), but having the 
consistent documentation reminds someone to think about whether checking 
the introspection is necessary.
diff mbox series

Patch

diff --git a/configure b/configure
index d57261e3ad..d852d7101d 100755
--- a/configure
+++ b/configure
@@ -4128,7 +4128,7 @@  fi
 fdt_required=no
 for target in $target_list; do
   case $target in
-    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
+    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu|rx-softmmu)
       fdt_required=yes
     ;;
   esac
@@ -7793,6 +7793,12 @@  case "$target_name" in
     mttcg=yes
     gdb_xml_files="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml"
   ;;
+  rx)
+    TARGET_ARCH=rx
+    bflt="yes"
+    target_compiler=$cross_cc_rx
+    gdb_xml_files="rx-core.xml"
+  ;;
   sh4|sh4eb)
     TARGET_ARCH=sh4
     bflt="yes"
@@ -7974,6 +7980,9 @@  for i in $ARCH $TARGET_BASE_ARCH ; do
   riscv*)
     disas_config "RISCV"
   ;;
+  rx)
+    disas_config "RX"
+  ;;
   s390*)
     disas_config "S390"
   ;;
diff --git a/default-configs/rx-softmmu.mak b/default-configs/rx-softmmu.mak
new file mode 100644
index 0000000000..a3eecefb11
--- /dev/null
+++ b/default-configs/rx-softmmu.mak
@@ -0,0 +1,3 @@ 
+# Default configuration for rx-softmmu
+
+CONFIG_RX_VIRT=y
diff --git a/qapi/machine.json b/qapi/machine.json
index 6c11e3cf3a..40f8b9d872 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -26,7 +26,7 @@ 
   'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
              'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
              'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
-             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
+             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
              'sh4eb', 'sparc', 'sparc64', 'tricore', 'unicore32',
              'x86_64', 'xtensa', 'xtensaeb' ] }
 
diff --git a/include/exec/poison.h b/include/exec/poison.h
index 955eb863ab..7b9ac361dc 100644
--- a/include/exec/poison.h
+++ b/include/exec/poison.h
@@ -26,6 +26,7 @@ 
 #pragma GCC poison TARGET_PPC
 #pragma GCC poison TARGET_PPC64
 #pragma GCC poison TARGET_ABI32
+#pragma GCC poison TARGET_RX
 #pragma GCC poison TARGET_S390X
 #pragma GCC poison TARGET_SH4
 #pragma GCC poison TARGET_SPARC
diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
index 62c6fe4cf1..6c011acc52 100644
--- a/include/sysemu/arch_init.h
+++ b/include/sysemu/arch_init.h
@@ -24,6 +24,7 @@  enum {
     QEMU_ARCH_NIOS2 = (1 << 17),
     QEMU_ARCH_HPPA = (1 << 18),
     QEMU_ARCH_RISCV = (1 << 19),
+    QEMU_ARCH_RX = (1 << 20),
 };
 
 extern const uint32_t arch_type;
diff --git a/arch_init.c b/arch_init.c
index 705d0b94ad..d9eb0ec1dd 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -77,6 +77,8 @@  int graphic_depth = 32;
 #define QEMU_ARCH QEMU_ARCH_PPC
 #elif defined(TARGET_RISCV)
 #define QEMU_ARCH QEMU_ARCH_RISCV
+#elif defined(TARGET_RX)
+#define QEMU_ARCH QEMU_ARCH_RX
 #elif defined(TARGET_S390X)
 #define QEMU_ARCH QEMU_ARCH_S390X
 #elif defined(TARGET_SH4)
diff --git a/tests/qtest/machine-none-test.c b/tests/qtest/machine-none-test.c
index 5953d31755..8bb54a6360 100644
--- a/tests/qtest/machine-none-test.c
+++ b/tests/qtest/machine-none-test.c
@@ -56,6 +56,7 @@  static struct arch2cpu cpus_map[] = {
     { "hppa", "hppa" },
     { "riscv64", "rv64gcsu-v1.10.0" },
     { "riscv32", "rv32gcsu-v1.9.1" },
+    { "rx", "rx62n" },
 };
 
 static const char *get_cpu_model_by_arch(const char *arch)
diff --git a/hw/Kconfig b/hw/Kconfig
index ecf491bf04..62f9ebdc22 100644
--- a/hw/Kconfig
+++ b/hw/Kconfig
@@ -55,6 +55,7 @@  source nios2/Kconfig
 source openrisc/Kconfig
 source ppc/Kconfig
 source riscv/Kconfig
+source rx/Kconfig
 source s390x/Kconfig
 source sh4/Kconfig
 source sparc/Kconfig