mbox series

[rc4,00/29] target/avr merger

Message ID 1580428993-4767-1-git-send-email-aleksandar.markovic@rt-rk.com (mailing list archive)
Headers show
Series target/avr merger | expand

Message

Aleksandar Markovic Jan. 31, 2020, 12:02 a.m. UTC
From: Aleksandar Markovic <amarkovic@wavecomp.com>

This is the AVR port from Michael, release (merge) candidate 4.

The series can be found also in this repository:

https://github.com/AMarkovic/qemu-avr-merger-rc4

History:

Since v3:

- Removed a patch on load_elf() modification, since it has been merged
- Removed references to CONFIG_USER_ONLY and provided a guard against
  building lunux user mode for AVR
- Removed all references to 'Atmel' (including file renames)
- Rebased the code (there was common interface change regarding 'props')
- Various corrections of commit messages
- A bit field for AVRFeatures is nor 64 bit long
- Other minor fixes

Since v2:

- First patch is split into six smaller logical units (net result
  remains the same)
- Patch "hw/core/loader: Let load_elf populate the processor-specific
  flags" was redone to reflect the original intent that was lost in
  transalation between multiple autors
- Patch "hw/avr: Add helper to load raw/ELF firmware binaries" was
  corrected only in one line to rectify type of "e_flags"
- Patch "target/avr: Add section about AVR into QEMU documentation"
- Spurious <message-Id:> elements were removed
- The series was rebased to the latest code

Since v1:

- Addressed Thomas comments
- Fixed a non-critical bug in ATmega (incorrect SRAM base address)
- Added ELF parsing requested by Aleksandar
- Dropped default machine (as with the ARM port)

Michael Rolnik (25):
  target/avr: Add basic parameters for new AVR platform
  target/avr: Introduce AVR CPU class object
  target/avr: Add migration support
  target/avr: Add GDB support
  target/avr: Introduce enumeration AVRFeature
  target/avr: Add defintions of AVR core types
  target/avr: Add instruction helpers
  target/avr: Add instruction translation - Register definitions
  target/avr: Add instruction translation - Arithmetic and Logic
    Instructions
  target/avr: Add instruction translation - Branch Instructions
  target/avr: Add instruction translation - Data Transfer Instructions
  target/avr: Add instruction translation - Bit and Bit-test
    Instructions
  target/avr: Add instruction translation - MCU Control Instructions
  target/avr: Add instruction translation - CPU main translation
    function
  target/avr: Add instruction disassembly function
  hw/char: Add limited support for AVR USART peripheral
  hw/timer: Add limited support for AVR 16-bit timer peripheral
  hw/misc: Add limited support for AVR power device
  target/avr: Add section about AVR into QEMU documentation
  target/avr: Register AVR support with the rest of QEMU
  target/avr: Add machine none test
  target/avr: Update MAINTAINERS file
  target/avr: Update build system
  tests/boot-serial-test: Test some Arduino boards (AVR based)
  tests/acceptance: Test the Arduino MEGA2560 board

Philippe Mathieu-Daudé (4):
  hw/avr: Add helper to load raw/ELF firmware binaries
  hw/avr: Add some ATmega microcontrollers
  hw/avr: Add some Arduino boards
  .travis.yml: Run the AVR acceptance tests

 .travis.yml                      |    2 +-
 MAINTAINERS                      |   31 +
 arch_init.c                      |    2 +
 configure                        |    7 +
 default-configs/avr-softmmu.mak  |    5 +
 gdb-xml/avr-cpu.xml              |   49 +
 hw/avr/Kconfig                   |    9 +
 hw/avr/Makefile.objs             |    3 +
 hw/avr/arduino.c                 |  151 ++
 hw/avr/atmega.c                  |  470 ++++++
 hw/avr/atmega.h                  |   48 +
 hw/avr/boot.c                    |   74 +
 hw/avr/boot.h                    |   33 +
 hw/char/Kconfig                  |    3 +
 hw/char/Makefile.objs            |    1 +
 hw/char/avr_usart.c              |  320 ++++
 hw/misc/Kconfig                  |    3 +
 hw/misc/Makefile.objs            |    2 +
 hw/misc/avr_power.c              |  112 ++
 hw/timer/Kconfig                 |    3 +
 hw/timer/Makefile.objs           |    2 +
 hw/timer/avr_timer16.c           |  604 ++++++++
 include/disas/dis-asm.h          |   19 +
 include/elf.h                    |    2 +
 include/hw/char/avr_usart.h      |   93 ++
 include/hw/misc/avr_power.h      |   46 +
 include/hw/timer/avr_timer16.h   |   94 ++
 include/sysemu/arch_init.h       |    1 +
 qapi/machine.json                |    3 +-
 qemu-doc.texi                    |   51 +
 target/avr/Makefile.objs         |   34 +
 target/avr/cpu-param.h           |   37 +
 target/avr/cpu-qom.h             |   54 +
 target/avr/cpu.c                 |  818 +++++++++++
 target/avr/cpu.h                 |  259 ++++
 target/avr/disas.c               |  246 ++++
 target/avr/gdbstub.c             |   84 ++
 target/avr/helper.c              |  342 +++++
 target/avr/helper.h              |   29 +
 target/avr/insn.decode           |  182 +++
 target/avr/machine.c             |  121 ++
 target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++++++++++
 tests/acceptance/machine_avr6.py |   50 +
 tests/qtest/Makefile.include     |    2 +
 tests/qtest/boot-serial-test.c   |   11 +
 tests/qtest/machine-none-test.c  |    1 +
 46 files changed, 7508 insertions(+), 2 deletions(-)
 create mode 100644 default-configs/avr-softmmu.mak
 create mode 100644 gdb-xml/avr-cpu.xml
 create mode 100644 hw/avr/Kconfig
 create mode 100644 hw/avr/Makefile.objs
 create mode 100644 hw/avr/arduino.c
 create mode 100644 hw/avr/atmega.c
 create mode 100644 hw/avr/atmega.h
 create mode 100644 hw/avr/boot.c
 create mode 100644 hw/avr/boot.h
 create mode 100644 hw/char/avr_usart.c
 create mode 100644 hw/misc/avr_power.c
 create mode 100644 hw/timer/avr_timer16.c
 create mode 100644 include/hw/char/avr_usart.h
 create mode 100644 include/hw/misc/avr_power.h
 create mode 100644 include/hw/timer/avr_timer16.h
 create mode 100644 target/avr/Makefile.objs
 create mode 100644 target/avr/cpu-param.h
 create mode 100644 target/avr/cpu-qom.h
 create mode 100644 target/avr/cpu.c
 create mode 100644 target/avr/cpu.h
 create mode 100644 target/avr/disas.c
 create mode 100644 target/avr/gdbstub.c
 create mode 100644 target/avr/helper.c
 create mode 100644 target/avr/helper.h
 create mode 100644 target/avr/insn.decode
 create mode 100644 target/avr/machine.c
 create mode 100644 target/avr/translate.c
 create mode 100644 tests/acceptance/machine_avr6.py

Comments

Aleksandar Markovic Jan. 31, 2020, 12:12 a.m. UTC | #1
Michael, Philippe,

Can you guys do a quick checkup of this rc4? rc4, rc3,and rc2 should
be functionally 100% equivalent.

Thank you,
Aleksandar

On Fri, Jan 31, 2020 at 1:06 AM Aleksandar Markovic
<aleksandar.markovic@rt-rk.com> wrote:
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> This is the AVR port from Michael, release (merge) candidate 4.
>
> The series can be found also in this repository:
>
> https://github.com/AMarkovic/qemu-avr-merger-rc4
>
> History:
>
> Since v3:
>
> - Removed a patch on load_elf() modification, since it has been merged
> - Removed references to CONFIG_USER_ONLY and provided a guard against
>   building lunux user mode for AVR
> - Removed all references to 'Atmel' (including file renames)
> - Rebased the code (there was common interface change regarding 'props')
> - Various corrections of commit messages
> - A bit field for AVRFeatures is nor 64 bit long
> - Other minor fixes
>
> Since v2:
>
> - First patch is split into six smaller logical units (net result
>   remains the same)
> - Patch "hw/core/loader: Let load_elf populate the processor-specific
>   flags" was redone to reflect the original intent that was lost in
>   transalation between multiple autors
> - Patch "hw/avr: Add helper to load raw/ELF firmware binaries" was
>   corrected only in one line to rectify type of "e_flags"
> - Patch "target/avr: Add section about AVR into QEMU documentation"
> - Spurious <message-Id:> elements were removed
> - The series was rebased to the latest code
>
> Since v1:
>
> - Addressed Thomas comments
> - Fixed a non-critical bug in ATmega (incorrect SRAM base address)
> - Added ELF parsing requested by Aleksandar
> - Dropped default machine (as with the ARM port)
>
> Michael Rolnik (25):
>   target/avr: Add basic parameters for new AVR platform
>   target/avr: Introduce AVR CPU class object
>   target/avr: Add migration support
>   target/avr: Add GDB support
>   target/avr: Introduce enumeration AVRFeature
>   target/avr: Add defintions of AVR core types
>   target/avr: Add instruction helpers
>   target/avr: Add instruction translation - Register definitions
>   target/avr: Add instruction translation - Arithmetic and Logic
>     Instructions
>   target/avr: Add instruction translation - Branch Instructions
>   target/avr: Add instruction translation - Data Transfer Instructions
>   target/avr: Add instruction translation - Bit and Bit-test
>     Instructions
>   target/avr: Add instruction translation - MCU Control Instructions
>   target/avr: Add instruction translation - CPU main translation
>     function
>   target/avr: Add instruction disassembly function
>   hw/char: Add limited support for AVR USART peripheral
>   hw/timer: Add limited support for AVR 16-bit timer peripheral
>   hw/misc: Add limited support for AVR power device
>   target/avr: Add section about AVR into QEMU documentation
>   target/avr: Register AVR support with the rest of QEMU
>   target/avr: Add machine none test
>   target/avr: Update MAINTAINERS file
>   target/avr: Update build system
>   tests/boot-serial-test: Test some Arduino boards (AVR based)
>   tests/acceptance: Test the Arduino MEGA2560 board
>
> Philippe Mathieu-Daudé (4):
>   hw/avr: Add helper to load raw/ELF firmware binaries
>   hw/avr: Add some ATmega microcontrollers
>   hw/avr: Add some Arduino boards
>   .travis.yml: Run the AVR acceptance tests
>
>  .travis.yml                      |    2 +-
>  MAINTAINERS                      |   31 +
>  arch_init.c                      |    2 +
>  configure                        |    7 +
>  default-configs/avr-softmmu.mak  |    5 +
>  gdb-xml/avr-cpu.xml              |   49 +
>  hw/avr/Kconfig                   |    9 +
>  hw/avr/Makefile.objs             |    3 +
>  hw/avr/arduino.c                 |  151 ++
>  hw/avr/atmega.c                  |  470 ++++++
>  hw/avr/atmega.h                  |   48 +
>  hw/avr/boot.c                    |   74 +
>  hw/avr/boot.h                    |   33 +
>  hw/char/Kconfig                  |    3 +
>  hw/char/Makefile.objs            |    1 +
>  hw/char/avr_usart.c              |  320 ++++
>  hw/misc/Kconfig                  |    3 +
>  hw/misc/Makefile.objs            |    2 +
>  hw/misc/avr_power.c              |  112 ++
>  hw/timer/Kconfig                 |    3 +
>  hw/timer/Makefile.objs           |    2 +
>  hw/timer/avr_timer16.c           |  604 ++++++++
>  include/disas/dis-asm.h          |   19 +
>  include/elf.h                    |    2 +
>  include/hw/char/avr_usart.h      |   93 ++
>  include/hw/misc/avr_power.h      |   46 +
>  include/hw/timer/avr_timer16.h   |   94 ++
>  include/sysemu/arch_init.h       |    1 +
>  qapi/machine.json                |    3 +-
>  qemu-doc.texi                    |   51 +
>  target/avr/Makefile.objs         |   34 +
>  target/avr/cpu-param.h           |   37 +
>  target/avr/cpu-qom.h             |   54 +
>  target/avr/cpu.c                 |  818 +++++++++++
>  target/avr/cpu.h                 |  259 ++++
>  target/avr/disas.c               |  246 ++++
>  target/avr/gdbstub.c             |   84 ++
>  target/avr/helper.c              |  342 +++++
>  target/avr/helper.h              |   29 +
>  target/avr/insn.decode           |  182 +++
>  target/avr/machine.c             |  121 ++
>  target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++++++++++
>  tests/acceptance/machine_avr6.py |   50 +
>  tests/qtest/Makefile.include     |    2 +
>  tests/qtest/boot-serial-test.c   |   11 +
>  tests/qtest/machine-none-test.c  |    1 +
>  46 files changed, 7508 insertions(+), 2 deletions(-)
>  create mode 100644 default-configs/avr-softmmu.mak
>  create mode 100644 gdb-xml/avr-cpu.xml
>  create mode 100644 hw/avr/Kconfig
>  create mode 100644 hw/avr/Makefile.objs
>  create mode 100644 hw/avr/arduino.c
>  create mode 100644 hw/avr/atmega.c
>  create mode 100644 hw/avr/atmega.h
>  create mode 100644 hw/avr/boot.c
>  create mode 100644 hw/avr/boot.h
>  create mode 100644 hw/char/avr_usart.c
>  create mode 100644 hw/misc/avr_power.c
>  create mode 100644 hw/timer/avr_timer16.c
>  create mode 100644 include/hw/char/avr_usart.h
>  create mode 100644 include/hw/misc/avr_power.h
>  create mode 100644 include/hw/timer/avr_timer16.h
>  create mode 100644 target/avr/Makefile.objs
>  create mode 100644 target/avr/cpu-param.h
>  create mode 100644 target/avr/cpu-qom.h
>  create mode 100644 target/avr/cpu.c
>  create mode 100644 target/avr/cpu.h
>  create mode 100644 target/avr/disas.c
>  create mode 100644 target/avr/gdbstub.c
>  create mode 100644 target/avr/helper.c
>  create mode 100644 target/avr/helper.h
>  create mode 100644 target/avr/insn.decode
>  create mode 100644 target/avr/machine.c
>  create mode 100644 target/avr/translate.c
>  create mode 100644 tests/acceptance/machine_avr6.py
>
> --
> 2.7.4
>
>
Philippe Mathieu-Daudé Jan. 31, 2020, 1:23 a.m. UTC | #2
On 1/31/20 1:12 AM, Aleksandar Markovic wrote:
> Michael, Philippe,
> 
> Can you guys do a quick checkup of this rc4? rc4, rc3,and rc2 should
> be functionally 100% equivalent.

Tested OK.

git-backport-diff with rc2:

Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, 
respectively

001/31:[down] 'target/avr: Add basic parameters for new AVR platform'
002/31:[down] 'target/avr: Introduce AVR CPU class object'
003/31:[down] 'target/avr: Add migration support'
004/31:[down] 'target/avr: Add GDB support'
005/31:[down] 'target/avr: Introduce enumeration AVRFeature'
006/31:[down] 'target/avr: Add defintions of AVR core types'
007/31:[0148] [FC] 'target/avr: Add instruction helpers'
008/31:[down] 'target/avr: Add instruction translation - Register 
definitions'
009/31:[----] [--] 'target/avr: Add instruction translation - Arithmetic 
and Logic Instructions'
010/31:[----] [--] 'target/avr: Add instruction translation - Branch 
Instructions'
011/31:[----] [--] 'target/avr: Add instruction translation - Data 
Transfer Instructions'
012/31:[----] [--] 'target/avr: Add instruction translation - Bit and 
Bit-test Instructions'
013/31:[----] [--] 'target/avr: Add instruction translation - MCU 
Control Instructions'
014/31:[----] [--] 'target/avr: Add instruction translation - CPU main 
translation function'
015/31:[----] [--] 'target/avr: Add instruction disassembly function'
016/31:[down] 'hw/char: Add limited support for AVR USART peripheral'
017/31:[down] 'hw/timer: Add limited support for AVR 16-bit timer 
peripheral'
018/31:[down] 'hw/misc: Add limited support for AVR power device'
019/31:[0012] [FC] 'target/avr: Add section about AVR into QEMU 
documentation'
020/31:[0002] [FC] 'target/avr: Register AVR support with the rest of QEMU'
021/31:[----] [--] 'target/avr: Add machine none test'
022/31:[0014] [FC] 'target/avr: Update MAINTAINERS file'
023/31:[0002] [FC] 'hw/avr: Add helper to load raw/ELF firmware binaries'
024/31:[0026] [FC] 'hw/avr: Add some ATmega microcontrollers'
025/31:[0009] [FC] 'hw/avr: Add some Arduino boards'
026/31:[----] [--] 'target/avr: Update build system'
027/31:[----] [--] 'tests/boot-serial-test: Test some Arduino boards 
(AVR based)'
028/31:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
029/31:[----] [--] '.travis.yml: Run the AVR acceptance tests'
030/31:[down] '!fixup "hw/misc: Add limited support for AVR power device"'
031/31:[down] '!fixup "hw/timer: Add limited support for AVR 16-bit 
timer peripheral"'

One thing that annoys me is we ignored the review comments from Joaquin, 
but I think it might now be easier to address them as new patches, once 
this series is merged.

I made 2 comments (definitions in incorrect patch, and definition 
misplaced in elf.h), and sent 2 patches converting the PRINTF() to 
trace-events. Thanks for preparing the rc4, hopefully we are done!

> 
> Thank you,
> Aleksandar
> 
> On Fri, Jan 31, 2020 at 1:06 AM Aleksandar Markovic
> <aleksandar.markovic@rt-rk.com> wrote:
>>
>> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>>
>> This is the AVR port from Michael, release (merge) candidate 4.
>>
>> The series can be found also in this repository:
>>
>> https://github.com/AMarkovic/qemu-avr-merger-rc4
>>
>> History:
>>
>> Since v3:
>>
>> - Removed a patch on load_elf() modification, since it has been merged
>> - Removed references to CONFIG_USER_ONLY and provided a guard against
>>    building lunux user mode for AVR
>> - Removed all references to 'Atmel' (including file renames)
>> - Rebased the code (there was common interface change regarding 'props')
>> - Various corrections of commit messages
>> - A bit field for AVRFeatures is nor 64 bit long
>> - Other minor fixes
>>
>> Since v2:
>>
>> - First patch is split into six smaller logical units (net result
>>    remains the same)
>> - Patch "hw/core/loader: Let load_elf populate the processor-specific
>>    flags" was redone to reflect the original intent that was lost in
>>    transalation between multiple autors
>> - Patch "hw/avr: Add helper to load raw/ELF firmware binaries" was
>>    corrected only in one line to rectify type of "e_flags"
>> - Patch "target/avr: Add section about AVR into QEMU documentation"
>> - Spurious <message-Id:> elements were removed
>> - The series was rebased to the latest code
>>
>> Since v1:
>>
>> - Addressed Thomas comments
>> - Fixed a non-critical bug in ATmega (incorrect SRAM base address)
>> - Added ELF parsing requested by Aleksandar
>> - Dropped default machine (as with the ARM port)
>>
>> Michael Rolnik (25):
>>    target/avr: Add basic parameters for new AVR platform
>>    target/avr: Introduce AVR CPU class object
>>    target/avr: Add migration support
>>    target/avr: Add GDB support
>>    target/avr: Introduce enumeration AVRFeature
>>    target/avr: Add defintions of AVR core types
>>    target/avr: Add instruction helpers
>>    target/avr: Add instruction translation - Register definitions
>>    target/avr: Add instruction translation - Arithmetic and Logic
>>      Instructions
>>    target/avr: Add instruction translation - Branch Instructions
>>    target/avr: Add instruction translation - Data Transfer Instructions
>>    target/avr: Add instruction translation - Bit and Bit-test
>>      Instructions
>>    target/avr: Add instruction translation - MCU Control Instructions
>>    target/avr: Add instruction translation - CPU main translation
>>      function
>>    target/avr: Add instruction disassembly function
>>    hw/char: Add limited support for AVR USART peripheral
>>    hw/timer: Add limited support for AVR 16-bit timer peripheral
>>    hw/misc: Add limited support for AVR power device
>>    target/avr: Add section about AVR into QEMU documentation
>>    target/avr: Register AVR support with the rest of QEMU
>>    target/avr: Add machine none test
>>    target/avr: Update MAINTAINERS file
>>    target/avr: Update build system
>>    tests/boot-serial-test: Test some Arduino boards (AVR based)
>>    tests/acceptance: Test the Arduino MEGA2560 board
>>
>> Philippe Mathieu-Daudé (4):
>>    hw/avr: Add helper to load raw/ELF firmware binaries
>>    hw/avr: Add some ATmega microcontrollers
>>    hw/avr: Add some Arduino boards
>>    .travis.yml: Run the AVR acceptance tests
>>
>>   .travis.yml                      |    2 +-
>>   MAINTAINERS                      |   31 +
>>   arch_init.c                      |    2 +
>>   configure                        |    7 +
>>   default-configs/avr-softmmu.mak  |    5 +
>>   gdb-xml/avr-cpu.xml              |   49 +
>>   hw/avr/Kconfig                   |    9 +
>>   hw/avr/Makefile.objs             |    3 +
>>   hw/avr/arduino.c                 |  151 ++
>>   hw/avr/atmega.c                  |  470 ++++++
>>   hw/avr/atmega.h                  |   48 +
>>   hw/avr/boot.c                    |   74 +
>>   hw/avr/boot.h                    |   33 +
>>   hw/char/Kconfig                  |    3 +
>>   hw/char/Makefile.objs            |    1 +
>>   hw/char/avr_usart.c              |  320 ++++
>>   hw/misc/Kconfig                  |    3 +
>>   hw/misc/Makefile.objs            |    2 +
>>   hw/misc/avr_power.c              |  112 ++
>>   hw/timer/Kconfig                 |    3 +
>>   hw/timer/Makefile.objs           |    2 +
>>   hw/timer/avr_timer16.c           |  604 ++++++++
>>   include/disas/dis-asm.h          |   19 +
>>   include/elf.h                    |    2 +
>>   include/hw/char/avr_usart.h      |   93 ++
>>   include/hw/misc/avr_power.h      |   46 +
>>   include/hw/timer/avr_timer16.h   |   94 ++
>>   include/sysemu/arch_init.h       |    1 +
>>   qapi/machine.json                |    3 +-
>>   qemu-doc.texi                    |   51 +
>>   target/avr/Makefile.objs         |   34 +
>>   target/avr/cpu-param.h           |   37 +
>>   target/avr/cpu-qom.h             |   54 +
>>   target/avr/cpu.c                 |  818 +++++++++++
>>   target/avr/cpu.h                 |  259 ++++
>>   target/avr/disas.c               |  246 ++++
>>   target/avr/gdbstub.c             |   84 ++
>>   target/avr/helper.c              |  342 +++++
>>   target/avr/helper.h              |   29 +
>>   target/avr/insn.decode           |  182 +++
>>   target/avr/machine.c             |  121 ++
>>   target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++++++++++
>>   tests/acceptance/machine_avr6.py |   50 +
>>   tests/qtest/Makefile.include     |    2 +
>>   tests/qtest/boot-serial-test.c   |   11 +
>>   tests/qtest/machine-none-test.c  |    1 +
>>   46 files changed, 7508 insertions(+), 2 deletions(-)
>>   create mode 100644 default-configs/avr-softmmu.mak
>>   create mode 100644 gdb-xml/avr-cpu.xml
>>   create mode 100644 hw/avr/Kconfig
>>   create mode 100644 hw/avr/Makefile.objs
>>   create mode 100644 hw/avr/arduino.c
>>   create mode 100644 hw/avr/atmega.c
>>   create mode 100644 hw/avr/atmega.h
>>   create mode 100644 hw/avr/boot.c
>>   create mode 100644 hw/avr/boot.h
>>   create mode 100644 hw/char/avr_usart.c
>>   create mode 100644 hw/misc/avr_power.c
>>   create mode 100644 hw/timer/avr_timer16.c
>>   create mode 100644 include/hw/char/avr_usart.h
>>   create mode 100644 include/hw/misc/avr_power.h
>>   create mode 100644 include/hw/timer/avr_timer16.h
>>   create mode 100644 target/avr/Makefile.objs
>>   create mode 100644 target/avr/cpu-param.h
>>   create mode 100644 target/avr/cpu-qom.h
>>   create mode 100644 target/avr/cpu.c
>>   create mode 100644 target/avr/cpu.h
>>   create mode 100644 target/avr/disas.c
>>   create mode 100644 target/avr/gdbstub.c
>>   create mode 100644 target/avr/helper.c
>>   create mode 100644 target/avr/helper.h
>>   create mode 100644 target/avr/insn.decode
>>   create mode 100644 target/avr/machine.c
>>   create mode 100644 target/avr/translate.c
>>   create mode 100644 tests/acceptance/machine_avr6.py
>>
>> --
>> 2.7.4
>>
>>
>
Michael Rolnik Jan. 31, 2020, 2:43 p.m. UTC | #3
Looks good. Thanks

On Fri, Jan 31, 2020 at 3:24 AM Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> On 1/31/20 1:12 AM, Aleksandar Markovic wrote:
> > Michael, Philippe,
> >
> > Can you guys do a quick checkup of this rc4? rc4, rc3,and rc2 should
> > be functionally 100% equivalent.
>
> Tested OK.
>
> git-backport-diff with rc2:
>
> Key:
> [----] : patches are identical
> [####] : number of functional differences between upstream/downstream patch
> [down] : patch is downstream-only
> The flags [FC] indicate (F)unctional and (C)ontextual differences,
> respectively
>
> 001/31:[down] 'target/avr: Add basic parameters for new AVR platform'
> 002/31:[down] 'target/avr: Introduce AVR CPU class object'
> 003/31:[down] 'target/avr: Add migration support'
> 004/31:[down] 'target/avr: Add GDB support'
> 005/31:[down] 'target/avr: Introduce enumeration AVRFeature'
> 006/31:[down] 'target/avr: Add defintions of AVR core types'
> 007/31:[0148] [FC] 'target/avr: Add instruction helpers'
> 008/31:[down] 'target/avr: Add instruction translation - Register
> definitions'
> 009/31:[----] [--] 'target/avr: Add instruction translation - Arithmetic
> and Logic Instructions'
> 010/31:[----] [--] 'target/avr: Add instruction translation - Branch
> Instructions'
> 011/31:[----] [--] 'target/avr: Add instruction translation - Data
> Transfer Instructions'
> 012/31:[----] [--] 'target/avr: Add instruction translation - Bit and
> Bit-test Instructions'
> 013/31:[----] [--] 'target/avr: Add instruction translation - MCU
> Control Instructions'
> 014/31:[----] [--] 'target/avr: Add instruction translation - CPU main
> translation function'
> 015/31:[----] [--] 'target/avr: Add instruction disassembly function'
> 016/31:[down] 'hw/char: Add limited support for AVR USART peripheral'
> 017/31:[down] 'hw/timer: Add limited support for AVR 16-bit timer
> peripheral'
> 018/31:[down] 'hw/misc: Add limited support for AVR power device'
> 019/31:[0012] [FC] 'target/avr: Add section about AVR into QEMU
> documentation'
> 020/31:[0002] [FC] 'target/avr: Register AVR support with the rest of QEMU'
> 021/31:[----] [--] 'target/avr: Add machine none test'
> 022/31:[0014] [FC] 'target/avr: Update MAINTAINERS file'
> 023/31:[0002] [FC] 'hw/avr: Add helper to load raw/ELF firmware binaries'
> 024/31:[0026] [FC] 'hw/avr: Add some ATmega microcontrollers'
> 025/31:[0009] [FC] 'hw/avr: Add some Arduino boards'
> 026/31:[----] [--] 'target/avr: Update build system'
> 027/31:[----] [--] 'tests/boot-serial-test: Test some Arduino boards
> (AVR based)'
> 028/31:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
> 029/31:[----] [--] '.travis.yml: Run the AVR acceptance tests'
> 030/31:[down] '!fixup "hw/misc: Add limited support for AVR power device"'
> 031/31:[down] '!fixup "hw/timer: Add limited support for AVR 16-bit
> timer peripheral"'
>
> One thing that annoys me is we ignored the review comments from Joaquin,
> but I think it might now be easier to address them as new patches, once
> this series is merged.
>
> I made 2 comments (definitions in incorrect patch, and definition
> misplaced in elf.h), and sent 2 patches converting the PRINTF() to
> trace-events. Thanks for preparing the rc4, hopefully we are done!
>
> >
> > Thank you,
> > Aleksandar
> >
> > On Fri, Jan 31, 2020 at 1:06 AM Aleksandar Markovic
> > <aleksandar.markovic@rt-rk.com> wrote:
> >>
> >> From: Aleksandar Markovic <amarkovic@wavecomp.com>
> >>
> >> This is the AVR port from Michael, release (merge) candidate 4.
> >>
> >> The series can be found also in this repository:
> >>
> >> https://github.com/AMarkovic/qemu-avr-merger-rc4
> >>
> >> History:
> >>
> >> Since v3:
> >>
> >> - Removed a patch on load_elf() modification, since it has been merged
> >> - Removed references to CONFIG_USER_ONLY and provided a guard against
> >>    building lunux user mode for AVR
> >> - Removed all references to 'Atmel' (including file renames)
> >> - Rebased the code (there was common interface change regarding 'props')
> >> - Various corrections of commit messages
> >> - A bit field for AVRFeatures is nor 64 bit long
> >> - Other minor fixes
> >>
> >> Since v2:
> >>
> >> - First patch is split into six smaller logical units (net result
> >>    remains the same)
> >> - Patch "hw/core/loader: Let load_elf populate the processor-specific
> >>    flags" was redone to reflect the original intent that was lost in
> >>    transalation between multiple autors
> >> - Patch "hw/avr: Add helper to load raw/ELF firmware binaries" was
> >>    corrected only in one line to rectify type of "e_flags"
> >> - Patch "target/avr: Add section about AVR into QEMU documentation"
> >> - Spurious <message-Id:> elements were removed
> >> - The series was rebased to the latest code
> >>
> >> Since v1:
> >>
> >> - Addressed Thomas comments
> >> - Fixed a non-critical bug in ATmega (incorrect SRAM base address)
> >> - Added ELF parsing requested by Aleksandar
> >> - Dropped default machine (as with the ARM port)
> >>
> >> Michael Rolnik (25):
> >>    target/avr: Add basic parameters for new AVR platform
> >>    target/avr: Introduce AVR CPU class object
> >>    target/avr: Add migration support
> >>    target/avr: Add GDB support
> >>    target/avr: Introduce enumeration AVRFeature
> >>    target/avr: Add defintions of AVR core types
> >>    target/avr: Add instruction helpers
> >>    target/avr: Add instruction translation - Register definitions
> >>    target/avr: Add instruction translation - Arithmetic and Logic
> >>      Instructions
> >>    target/avr: Add instruction translation - Branch Instructions
> >>    target/avr: Add instruction translation - Data Transfer Instructions
> >>    target/avr: Add instruction translation - Bit and Bit-test
> >>      Instructions
> >>    target/avr: Add instruction translation - MCU Control Instructions
> >>    target/avr: Add instruction translation - CPU main translation
> >>      function
> >>    target/avr: Add instruction disassembly function
> >>    hw/char: Add limited support for AVR USART peripheral
> >>    hw/timer: Add limited support for AVR 16-bit timer peripheral
> >>    hw/misc: Add limited support for AVR power device
> >>    target/avr: Add section about AVR into QEMU documentation
> >>    target/avr: Register AVR support with the rest of QEMU
> >>    target/avr: Add machine none test
> >>    target/avr: Update MAINTAINERS file
> >>    target/avr: Update build system
> >>    tests/boot-serial-test: Test some Arduino boards (AVR based)
> >>    tests/acceptance: Test the Arduino MEGA2560 board
> >>
> >> Philippe Mathieu-Daudé (4):
> >>    hw/avr: Add helper to load raw/ELF firmware binaries
> >>    hw/avr: Add some ATmega microcontrollers
> >>    hw/avr: Add some Arduino boards
> >>    .travis.yml: Run the AVR acceptance tests
> >>
> >>   .travis.yml                      |    2 +-
> >>   MAINTAINERS                      |   31 +
> >>   arch_init.c                      |    2 +
> >>   configure                        |    7 +
> >>   default-configs/avr-softmmu.mak  |    5 +
> >>   gdb-xml/avr-cpu.xml              |   49 +
> >>   hw/avr/Kconfig                   |    9 +
> >>   hw/avr/Makefile.objs             |    3 +
> >>   hw/avr/arduino.c                 |  151 ++
> >>   hw/avr/atmega.c                  |  470 ++++++
> >>   hw/avr/atmega.h                  |   48 +
> >>   hw/avr/boot.c                    |   74 +
> >>   hw/avr/boot.h                    |   33 +
> >>   hw/char/Kconfig                  |    3 +
> >>   hw/char/Makefile.objs            |    1 +
> >>   hw/char/avr_usart.c              |  320 ++++
> >>   hw/misc/Kconfig                  |    3 +
> >>   hw/misc/Makefile.objs            |    2 +
> >>   hw/misc/avr_power.c              |  112 ++
> >>   hw/timer/Kconfig                 |    3 +
> >>   hw/timer/Makefile.objs           |    2 +
> >>   hw/timer/avr_timer16.c           |  604 ++++++++
> >>   include/disas/dis-asm.h          |   19 +
> >>   include/elf.h                    |    2 +
> >>   include/hw/char/avr_usart.h      |   93 ++
> >>   include/hw/misc/avr_power.h      |   46 +
> >>   include/hw/timer/avr_timer16.h   |   94 ++
> >>   include/sysemu/arch_init.h       |    1 +
> >>   qapi/machine.json                |    3 +-
> >>   qemu-doc.texi                    |   51 +
> >>   target/avr/Makefile.objs         |   34 +
> >>   target/avr/cpu-param.h           |   37 +
> >>   target/avr/cpu-qom.h             |   54 +
> >>   target/avr/cpu.c                 |  818 +++++++++++
> >>   target/avr/cpu.h                 |  259 ++++
> >>   target/avr/disas.c               |  246 ++++
> >>   target/avr/gdbstub.c             |   84 ++
> >>   target/avr/helper.c              |  342 +++++
> >>   target/avr/helper.h              |   29 +
> >>   target/avr/insn.decode           |  182 +++
> >>   target/avr/machine.c             |  121 ++
> >>   target/avr/translate.c           | 2997
> ++++++++++++++++++++++++++++++++++++++
> >>   tests/acceptance/machine_avr6.py |   50 +
> >>   tests/qtest/Makefile.include     |    2 +
> >>   tests/qtest/boot-serial-test.c   |   11 +
> >>   tests/qtest/machine-none-test.c  |    1 +
> >>   46 files changed, 7508 insertions(+), 2 deletions(-)
> >>   create mode 100644 default-configs/avr-softmmu.mak
> >>   create mode 100644 gdb-xml/avr-cpu.xml
> >>   create mode 100644 hw/avr/Kconfig
> >>   create mode 100644 hw/avr/Makefile.objs
> >>   create mode 100644 hw/avr/arduino.c
> >>   create mode 100644 hw/avr/atmega.c
> >>   create mode 100644 hw/avr/atmega.h
> >>   create mode 100644 hw/avr/boot.c
> >>   create mode 100644 hw/avr/boot.h
> >>   create mode 100644 hw/char/avr_usart.c
> >>   create mode 100644 hw/misc/avr_power.c
> >>   create mode 100644 hw/timer/avr_timer16.c
> >>   create mode 100644 include/hw/char/avr_usart.h
> >>   create mode 100644 include/hw/misc/avr_power.h
> >>   create mode 100644 include/hw/timer/avr_timer16.h
> >>   create mode 100644 target/avr/Makefile.objs
> >>   create mode 100644 target/avr/cpu-param.h
> >>   create mode 100644 target/avr/cpu-qom.h
> >>   create mode 100644 target/avr/cpu.c
> >>   create mode 100644 target/avr/cpu.h
> >>   create mode 100644 target/avr/disas.c
> >>   create mode 100644 target/avr/gdbstub.c
> >>   create mode 100644 target/avr/helper.c
> >>   create mode 100644 target/avr/helper.h
> >>   create mode 100644 target/avr/insn.decode
> >>   create mode 100644 target/avr/machine.c
> >>   create mode 100644 target/avr/translate.c
> >>   create mode 100644 tests/acceptance/machine_avr6.py
> >>
> >> --
> >> 2.7.4
> >>
> >>
> >
>
>