[PATCH rc4 20/29] target/avr: Register AVR support with the rest of QEMU

Aleksandar Markovic posted 29 patches 6 years ago
Maintainers: Markus Armbruster <armbru@redhat.com>, Eric Blake <eblake@redhat.com>, Sarah Harris <S.E.Harris@kent.ac.uk>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Eduardo Habkost <ehabkost@redhat.com>, Fam Zheng <fam@euphon.net>, "Philippe Mathieu-Daudé" <philmd@redhat.com>, Michael Rolnik <mrolnik@gmail.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
[PATCH rc4 20/29] target/avr: Register AVR support with the rest of QEMU
Posted by Aleksandar Markovic 6 years ago
From: Michael Rolnik <mrolnik@gmail.com>

Add AVR related definitions into QEMU.

[AM: Remove word 'Atmel' from filenames and all elements of code]
Suggested-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>

Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
---
 arch_init.c                |  2 ++
 include/disas/dis-asm.h    | 19 +++++++++++++++++++
 include/sysemu/arch_init.h |  1 +
 qapi/machine.json          |  3 ++-
 4 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/arch_init.c b/arch_init.c
index 705d0b9..6a74116 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -89,6 +89,8 @@ int graphic_depth = 32;
 #define QEMU_ARCH QEMU_ARCH_UNICORE32
 #elif defined(TARGET_XTENSA)
 #define QEMU_ARCH QEMU_ARCH_XTENSA
+#elif defined(TARGET_AVR)
+#define QEMU_ARCH QEMU_ARCH_AVR
 #endif
 
 const uint32_t arch_type = QEMU_ARCH;
diff --git a/include/disas/dis-asm.h b/include/disas/dis-asm.h
index f87f468..a36e658 100644
--- a/include/disas/dis-asm.h
+++ b/include/disas/dis-asm.h
@@ -211,6 +211,25 @@ enum bfd_architecture
 #define bfd_mach_m32r          0  /* backwards compatibility */
   bfd_arch_mn10200,    /* Matsushita MN10200 */
   bfd_arch_mn10300,    /* Matsushita MN10300 */
+  bfd_arch_avr,        /* AVR microcontrollers */
+#define bfd_mach_avr1       1
+#define bfd_mach_avr2       2
+#define bfd_mach_avr25      25
+#define bfd_mach_avr3       3
+#define bfd_mach_avr31      31
+#define bfd_mach_avr35      35
+#define bfd_mach_avr4       4
+#define bfd_mach_avr5       5
+#define bfd_mach_avr51      51
+#define bfd_mach_avr6       6
+#define bfd_mach_avrtiny    100
+#define bfd_mach_avrxmega1  101
+#define bfd_mach_avrxmega2  102
+#define bfd_mach_avrxmega3  103
+#define bfd_mach_avrxmega4  104
+#define bfd_mach_avrxmega5  105
+#define bfd_mach_avrxmega6  106
+#define bfd_mach_avrxmega7  107
   bfd_arch_cris,       /* Axis CRIS */
 #define bfd_mach_cris_v0_v10   255
 #define bfd_mach_cris_v32      32
diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
index 62c6fe4..893df26 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_AVR = (1 << 20),
 };
 
 extern const uint32_t arch_type;
diff --git a/qapi/machine.json b/qapi/machine.json
index b3d30bc..f2dc385 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -21,11 +21,12 @@
 #        is true even for "qemu-system-x86_64".
 #
 # ppcemb: dropped in 3.1
+# avr: since 5.0
 #
 # Since: 3.0
 ##
 { 'enum' : 'SysEmuTarget',
-  'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
+  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 'lm32',
              'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
              'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
              'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
-- 
2.7.4


Re: [PATCH rc4 20/29] target/avr: Register AVR support with the rest of QEMU
Posted by Philippe Mathieu-Daudé 6 years ago
On 1/31/20 1:03 AM, Aleksandar Markovic wrote:
> From: Michael Rolnik <mrolnik@gmail.com>
> 
> Add AVR related definitions into QEMU.
> 
> [AM: Remove word 'Atmel' from filenames and all elements of code]
> Suggested-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
> 
> Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
> ---
>   arch_init.c                |  2 ++
>   include/disas/dis-asm.h    | 19 +++++++++++++++++++
>   include/sysemu/arch_init.h |  1 +
>   qapi/machine.json          |  3 ++-
>   4 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/arch_init.c b/arch_init.c
> index 705d0b9..6a74116 100644
> --- a/arch_init.c
> +++ b/arch_init.c
> @@ -89,6 +89,8 @@ int graphic_depth = 32;
>   #define QEMU_ARCH QEMU_ARCH_UNICORE32
>   #elif defined(TARGET_XTENSA)
>   #define QEMU_ARCH QEMU_ARCH_XTENSA
> +#elif defined(TARGET_AVR)
> +#define QEMU_ARCH QEMU_ARCH_AVR
>   #endif
>   
>   const uint32_t arch_type = QEMU_ARCH;
> diff --git a/include/disas/dis-asm.h b/include/disas/dis-asm.h
> index f87f468..a36e658 100644
> --- a/include/disas/dis-asm.h
> +++ b/include/disas/dis-asm.h
> @@ -211,6 +211,25 @@ enum bfd_architecture
>   #define bfd_mach_m32r          0  /* backwards compatibility */
>     bfd_arch_mn10200,    /* Matsushita MN10200 */
>     bfd_arch_mn10300,    /* Matsushita MN10300 */
> +  bfd_arch_avr,        /* AVR microcontrollers */
> +#define bfd_mach_avr1       1
> +#define bfd_mach_avr2       2
> +#define bfd_mach_avr25      25
> +#define bfd_mach_avr3       3
> +#define bfd_mach_avr31      31
> +#define bfd_mach_avr35      35
> +#define bfd_mach_avr4       4
> +#define bfd_mach_avr5       5
> +#define bfd_mach_avr51      51
> +#define bfd_mach_avr6       6
> +#define bfd_mach_avrtiny    100
> +#define bfd_mach_avrxmega1  101
> +#define bfd_mach_avrxmega2  102
> +#define bfd_mach_avrxmega3  103
> +#define bfd_mach_avrxmega4  104
> +#define bfd_mach_avrxmega5  105
> +#define bfd_mach_avrxmega6  106
> +#define bfd_mach_avrxmega7  107

I think the changes in include/disas/dis-asm.h should go in patch #6 
"target/avr: Add defintions of AVR core types" where the definitions are 
used:

   const char *avr_flags_to_cpu_type(uint32_t flags, const char 
*def_cpu_type)
   {
       switch (flags & EF_AVR_MACH) {
       case bfd_mach_avr1:
           return AVR_CPU_TYPE_NAME("avr1");

>     bfd_arch_cris,       /* Axis CRIS */
>   #define bfd_mach_cris_v0_v10   255
>   #define bfd_mach_cris_v32      32
> diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
> index 62c6fe4..893df26 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_AVR = (1 << 20),
>   };
>   
>   extern const uint32_t arch_type;
> diff --git a/qapi/machine.json b/qapi/machine.json
> index b3d30bc..f2dc385 100644
> --- a/qapi/machine.json
> +++ b/qapi/machine.json
> @@ -21,11 +21,12 @@
>   #        is true even for "qemu-system-x86_64".
>   #
>   # ppcemb: dropped in 3.1
> +# avr: since 5.0
>   #
>   # Since: 3.0
>   ##
>   { 'enum' : 'SysEmuTarget',
> -  'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
> +  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 'lm32',
>                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
>                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
>                'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
> 


Re: [PATCH rc4 20/29] target/avr: Register AVR support with the rest of QEMU
Posted by Aleksandar Markovic 6 years ago
On Fri, Jan 31, 2020 at 1:23 AM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> On 1/31/20 1:03 AM, Aleksandar Markovic wrote:
> > From: Michael Rolnik <mrolnik@gmail.com>
> >
> > Add AVR related definitions into QEMU.
> >
> > [AM: Remove word 'Atmel' from filenames and all elements of code]
> > Suggested-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
> >
> > Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
> > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> > Signed-off-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
> > ---
> >   arch_init.c                |  2 ++
> >   include/disas/dis-asm.h    | 19 +++++++++++++++++++
> >   include/sysemu/arch_init.h |  1 +
> >   qapi/machine.json          |  3 ++-
> >   4 files changed, 24 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch_init.c b/arch_init.c
> > index 705d0b9..6a74116 100644
> > --- a/arch_init.c
> > +++ b/arch_init.c
> > @@ -89,6 +89,8 @@ int graphic_depth = 32;
> >   #define QEMU_ARCH QEMU_ARCH_UNICORE32
> >   #elif defined(TARGET_XTENSA)
> >   #define QEMU_ARCH QEMU_ARCH_XTENSA
> > +#elif defined(TARGET_AVR)
> > +#define QEMU_ARCH QEMU_ARCH_AVR
> >   #endif
> >
> >   const uint32_t arch_type = QEMU_ARCH;
> > diff --git a/include/disas/dis-asm.h b/include/disas/dis-asm.h
> > index f87f468..a36e658 100644
> > --- a/include/disas/dis-asm.h
> > +++ b/include/disas/dis-asm.h
> > @@ -211,6 +211,25 @@ enum bfd_architecture
> >   #define bfd_mach_m32r          0  /* backwards compatibility */
> >     bfd_arch_mn10200,    /* Matsushita MN10200 */
> >     bfd_arch_mn10300,    /* Matsushita MN10300 */
> > +  bfd_arch_avr,        /* AVR microcontrollers */
> > +#define bfd_mach_avr1       1
> > +#define bfd_mach_avr2       2
> > +#define bfd_mach_avr25      25
> > +#define bfd_mach_avr3       3
> > +#define bfd_mach_avr31      31
> > +#define bfd_mach_avr35      35
> > +#define bfd_mach_avr4       4
> > +#define bfd_mach_avr5       5
> > +#define bfd_mach_avr51      51
> > +#define bfd_mach_avr6       6
> > +#define bfd_mach_avrtiny    100
> > +#define bfd_mach_avrxmega1  101
> > +#define bfd_mach_avrxmega2  102
> > +#define bfd_mach_avrxmega3  103
> > +#define bfd_mach_avrxmega4  104
> > +#define bfd_mach_avrxmega5  105
> > +#define bfd_mach_avrxmega6  106
> > +#define bfd_mach_avrxmega7  107
>
> I think the changes in include/disas/dis-asm.h should go in patch #6
> "target/avr: Add defintions of AVR core types" where the definitions are
> used:
>
>    const char *avr_flags_to_cpu_type(uint32_t flags, const char
> *def_cpu_type)
>    {
>        switch (flags & EF_AVR_MACH) {
>        case bfd_mach_avr1:
>            return AVR_CPU_TYPE_NAME("avr1");
>

I agree.

> >     bfd_arch_cris,       /* Axis CRIS */
> >   #define bfd_mach_cris_v0_v10   255
> >   #define bfd_mach_cris_v32      32
> > diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
> > index 62c6fe4..893df26 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_AVR = (1 << 20),
> >   };
> >
> >   extern const uint32_t arch_type;
> > diff --git a/qapi/machine.json b/qapi/machine.json
> > index b3d30bc..f2dc385 100644
> > --- a/qapi/machine.json
> > +++ b/qapi/machine.json
> > @@ -21,11 +21,12 @@
> >   #        is true even for "qemu-system-x86_64".
> >   #
> >   # ppcemb: dropped in 3.1
> > +# avr: since 5.0
> >   #
> >   # Since: 3.0
> >   ##
> >   { 'enum' : 'SysEmuTarget',
> > -  'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
> > +  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 'lm32',
> >                'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
> >                'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
> >                'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
> >
>