mbox series

[rc2,00/25] target/avr merger

Message ID 20200124005131.16276-1-f4bug@amsat.org
Headers show
Series target/avr merger | expand

Message

Philippe Mathieu-Daudé Jan. 24, 2020, 12:51 a.m. UTC
This is the AVR port from Michael release (merge) candidate 2.

Since v1 [1]:
- 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)

Change since rc1:

$ git backport-diff -u avr-rc1 -r origin/master..
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/25:[----] [--] 'target/avr: Add outward facing interfaces and core CPU logic'
002/25:[----] [--] 'target/avr: Add instruction helpers'
003/25:[----] [--] 'target/avr: Add instruction translation - Registers definition'
004/25:[----] [--] 'target/avr: Add instruction translation - Arithmetic and Logic Instructions'
005/25:[----] [--] 'target/avr: Add instruction translation - Branch Instructions'
006/25:[----] [--] 'target/avr: Add instruction translation - Data Transfer Instructions'
007/25:[----] [--] 'target/avr: Add instruction translation - Bit and Bit-test Instructions'
008/25:[----] [--] 'target/avr: Add instruction translation - MCU Control Instructions'
009/25:[----] [--] 'target/avr: Add instruction translation - CPU main translation function'
010/25:[----] [--] 'target/avr: Add instruction disassembly function'
011/25:[----] [--] 'hw/char: Add limited support for Atmel USART peripheral'
012/25:[0045] [FC] 'hw/timer: Add limited support for Atmel 16 bit timer peripheral'
013/25:[----] [--] 'hw/misc: Add Atmel power device'
014/25:[0024] [FC] 'target/avr: Add section about AVR into QEMU documentation'
015/25:[----] [--] 'target/avr: Register AVR support with the rest of QEMU'
016/25:[----] [--] 'target/avr: Add machine none test'
017/25:[0002] [FC] 'target/avr: Update MAINTAINERS file'
018/25:[down]      'hw/core/loader: Let load_elf populate the processor-specific flags'
019/25:[down]      'hw/avr: Add helper to load raw/ELF firmware binaries'
020/25:[0015] [FC] 'hw/avr: Add some ATmega microcontrollers'
021/25:[0040] [FC] 'hw/avr: Add some Arduino boards'
022/25:[----] [--] 'target/avr: Update build system'
023/25:[----] [--] 'tests/boot-serial-test: Test some Arduino boards (AVR based)'
024/25:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
025/25:[----] [--] '.travis.yml: Run the AVR acceptance tests'

Repo: https://gitlab.com/philmd/qemu/commits/avr-rc2

[1] https://www.mail-archive.com/qemu-devel@nongnu.org/msg672926.html
Supersedes: <20200123000307.11541-1-richard.henderson@linaro.org>

Michael Rolnik (20):
  target/avr: Add outward facing interfaces and core CPU logic
  target/avr: Add instruction helpers
  target/avr: Add instruction translation - Registers definition
  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 Atmel USART peripheral
  hw/timer: Add limited support for Atmel 16 bit timer peripheral
  hw/misc: Add Atmel 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é (5):
  hw/core/loader: Let load_elf populate the processor-specific flags
  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

 qemu-doc.texi                    |   51 +
 configure                        |    7 +
 default-configs/avr-softmmu.mak  |    5 +
 qapi/machine.json                |    3 +-
 hw/avr/atmel_atmega.h            |   48 +
 hw/avr/boot.h                    |   33 +
 include/disas/dis-asm.h          |   19 +
 include/elf.h                    |    2 +
 include/hw/char/atmel_usart.h    |   93 +
 include/hw/elf_ops.h             |    6 +-
 include/hw/loader.h              |    6 +-
 include/hw/misc/atmel_power.h    |   46 +
 include/hw/timer/atmel_timer16.h |   94 +
 include/sysemu/arch_init.h       |    1 +
 target/avr/cpu-param.h           |   37 +
 target/avr/cpu-qom.h             |   54 +
 target/avr/cpu.h                 |  259 +++
 target/avr/helper.h              |   29 +
 arch_init.c                      |    2 +
 hw/avr/arduino.c                 |  151 ++
 hw/avr/atmel_atmega.c            |  470 +++++
 hw/avr/boot.c                    |   74 +
 hw/char/atmel_usart.c            |  320 ++++
 hw/core/loader.c                 |   15 +-
 hw/misc/atmel_power.c            |  112 ++
 hw/riscv/boot.c                  |    2 +-
 hw/timer/atmel_timer16.c         |  605 ++++++
 target/avr/cpu.c                 |  826 ++++++++
 target/avr/disas.c               |  246 +++
 target/avr/gdbstub.c             |   84 +
 target/avr/helper.c              |  347 ++++
 target/avr/machine.c             |  121 ++
 target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++
 tests/qtest/boot-serial-test.c   |   11 +
 tests/qtest/machine-none-test.c  |    1 +
 .travis.yml                      |    2 +-
 MAINTAINERS                      |   30 +
 gdb-xml/avr-cpu.xml              |   49 +
 hw/avr/Kconfig                   |    9 +
 hw/avr/Makefile.objs             |    3 +
 hw/char/Kconfig                  |    3 +
 hw/char/Makefile.objs            |    1 +
 hw/misc/Kconfig                  |    3 +
 hw/misc/Makefile.objs            |    2 +
 hw/timer/Kconfig                 |    3 +
 hw/timer/Makefile.objs           |    2 +
 target/avr/Makefile.objs         |   34 +
 target/avr/insn.decode           |  182 ++
 tests/acceptance/machine_avr6.py |   50 +
 tests/qtest/Makefile.include     |    2 +
 50 files changed, 7539 insertions(+), 13 deletions(-)
 create mode 100644 default-configs/avr-softmmu.mak
 create mode 100644 hw/avr/atmel_atmega.h
 create mode 100644 hw/avr/boot.h
 create mode 100644 include/hw/char/atmel_usart.h
 create mode 100644 include/hw/misc/atmel_power.h
 create mode 100644 include/hw/timer/atmel_timer16.h
 create mode 100644 target/avr/cpu-param.h
 create mode 100644 target/avr/cpu-qom.h
 create mode 100644 target/avr/cpu.h
 create mode 100644 target/avr/helper.h
 create mode 100644 hw/avr/arduino.c
 create mode 100644 hw/avr/atmel_atmega.c
 create mode 100644 hw/avr/boot.c
 create mode 100644 hw/char/atmel_usart.c
 create mode 100644 hw/misc/atmel_power.c
 create mode 100644 hw/timer/atmel_timer16.c
 create mode 100644 target/avr/cpu.c
 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/machine.c
 create mode 100644 target/avr/translate.c
 create mode 100644 gdb-xml/avr-cpu.xml
 create mode 100644 hw/avr/Kconfig
 create mode 100644 hw/avr/Makefile.objs
 create mode 100644 target/avr/Makefile.objs
 create mode 100644 target/avr/insn.decode
 create mode 100644 tests/acceptance/machine_avr6.py

Comments

Philippe Mathieu-Daudé Jan. 24, 2020, 1:02 a.m. UTC | #1
On Fri, Jan 24, 2020 at 1:51 AM Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> This is the AVR port from Michael release (merge) candidate 2.
>
> Since v1 [1]:
> - 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)
>
> Change since rc1:
>
> $ git backport-diff -u avr-rc1 -r origin/master..
> 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/25:[----] [--] 'target/avr: Add outward facing interfaces and core CPU logic'
> 002/25:[----] [--] 'target/avr: Add instruction helpers'
> 003/25:[----] [--] 'target/avr: Add instruction translation - Registers definition'
> 004/25:[----] [--] 'target/avr: Add instruction translation - Arithmetic and Logic Instructions'
> 005/25:[----] [--] 'target/avr: Add instruction translation - Branch Instructions'
> 006/25:[----] [--] 'target/avr: Add instruction translation - Data Transfer Instructions'
> 007/25:[----] [--] 'target/avr: Add instruction translation - Bit and Bit-test Instructions'
> 008/25:[----] [--] 'target/avr: Add instruction translation - MCU Control Instructions'
> 009/25:[----] [--] 'target/avr: Add instruction translation - CPU main translation function'
> 010/25:[----] [--] 'target/avr: Add instruction disassembly function'
> 011/25:[----] [--] 'hw/char: Add limited support for Atmel USART peripheral'
> 012/25:[0045] [FC] 'hw/timer: Add limited support for Atmel 16 bit timer peripheral'
> 013/25:[----] [--] 'hw/misc: Add Atmel power device'
> 014/25:[0024] [FC] 'target/avr: Add section about AVR into QEMU documentation'
> 015/25:[----] [--] 'target/avr: Register AVR support with the rest of QEMU'
> 016/25:[----] [--] 'target/avr: Add machine none test'
> 017/25:[0002] [FC] 'target/avr: Update MAINTAINERS file'
> 018/25:[down]      'hw/core/loader: Let load_elf populate the processor-specific flags'
> 019/25:[down]      'hw/avr: Add helper to load raw/ELF firmware binaries'
> 020/25:[0015] [FC] 'hw/avr: Add some ATmega microcontrollers'
> 021/25:[0040] [FC] 'hw/avr: Add some Arduino boards'

Patchew can be used to quickly visualize the few changes:
https://patchew.org/QEMU/20200123000307.11541-1-richard.henderson@linaro.org/diff/20200124005131.16276-1-f4bug@amsat.org/

> 022/25:[----] [--] 'target/avr: Update build system'
> 023/25:[----] [--] 'tests/boot-serial-test: Test some Arduino boards (AVR based)'
> 024/25:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
> 025/25:[----] [--] '.travis.yml: Run the AVR acceptance tests'
>
> Repo: https://gitlab.com/philmd/qemu/commits/avr-rc2
>
> [1] https://www.mail-archive.com/qemu-devel@nongnu.org/msg672926.html
> Supersedes: <20200123000307.11541-1-richard.henderson@linaro.org>
>
> Michael Rolnik (20):
>   target/avr: Add outward facing interfaces and core CPU logic
>   target/avr: Add instruction helpers
>   target/avr: Add instruction translation - Registers definition
>   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 Atmel USART peripheral
>   hw/timer: Add limited support for Atmel 16 bit timer peripheral
>   hw/misc: Add Atmel 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é (5):
>   hw/core/loader: Let load_elf populate the processor-specific flags
>   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
>
>  qemu-doc.texi                    |   51 +
>  configure                        |    7 +
>  default-configs/avr-softmmu.mak  |    5 +
>  qapi/machine.json                |    3 +-
>  hw/avr/atmel_atmega.h            |   48 +
>  hw/avr/boot.h                    |   33 +
>  include/disas/dis-asm.h          |   19 +
>  include/elf.h                    |    2 +
>  include/hw/char/atmel_usart.h    |   93 +
>  include/hw/elf_ops.h             |    6 +-
>  include/hw/loader.h              |    6 +-
>  include/hw/misc/atmel_power.h    |   46 +
>  include/hw/timer/atmel_timer16.h |   94 +
>  include/sysemu/arch_init.h       |    1 +
>  target/avr/cpu-param.h           |   37 +
>  target/avr/cpu-qom.h             |   54 +
>  target/avr/cpu.h                 |  259 +++
>  target/avr/helper.h              |   29 +
>  arch_init.c                      |    2 +
>  hw/avr/arduino.c                 |  151 ++
>  hw/avr/atmel_atmega.c            |  470 +++++
>  hw/avr/boot.c                    |   74 +
>  hw/char/atmel_usart.c            |  320 ++++
>  hw/core/loader.c                 |   15 +-
>  hw/misc/atmel_power.c            |  112 ++
>  hw/riscv/boot.c                  |    2 +-
>  hw/timer/atmel_timer16.c         |  605 ++++++
>  target/avr/cpu.c                 |  826 ++++++++
>  target/avr/disas.c               |  246 +++
>  target/avr/gdbstub.c             |   84 +
>  target/avr/helper.c              |  347 ++++
>  target/avr/machine.c             |  121 ++
>  target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++
>  tests/qtest/boot-serial-test.c   |   11 +
>  tests/qtest/machine-none-test.c  |    1 +
>  .travis.yml                      |    2 +-
>  MAINTAINERS                      |   30 +
>  gdb-xml/avr-cpu.xml              |   49 +
>  hw/avr/Kconfig                   |    9 +
>  hw/avr/Makefile.objs             |    3 +
>  hw/char/Kconfig                  |    3 +
>  hw/char/Makefile.objs            |    1 +
>  hw/misc/Kconfig                  |    3 +
>  hw/misc/Makefile.objs            |    2 +
>  hw/timer/Kconfig                 |    3 +
>  hw/timer/Makefile.objs           |    2 +
>  target/avr/Makefile.objs         |   34 +
>  target/avr/insn.decode           |  182 ++
>  tests/acceptance/machine_avr6.py |   50 +
>  tests/qtest/Makefile.include     |    2 +
>  50 files changed, 7539 insertions(+), 13 deletions(-)
>  create mode 100644 default-configs/avr-softmmu.mak
>  create mode 100644 hw/avr/atmel_atmega.h
>  create mode 100644 hw/avr/boot.h
>  create mode 100644 include/hw/char/atmel_usart.h
>  create mode 100644 include/hw/misc/atmel_power.h
>  create mode 100644 include/hw/timer/atmel_timer16.h
>  create mode 100644 target/avr/cpu-param.h
>  create mode 100644 target/avr/cpu-qom.h
>  create mode 100644 target/avr/cpu.h
>  create mode 100644 target/avr/helper.h
>  create mode 100644 hw/avr/arduino.c
>  create mode 100644 hw/avr/atmel_atmega.c
>  create mode 100644 hw/avr/boot.c
>  create mode 100644 hw/char/atmel_usart.c
>  create mode 100644 hw/misc/atmel_power.c
>  create mode 100644 hw/timer/atmel_timer16.c
>  create mode 100644 target/avr/cpu.c
>  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/machine.c
>  create mode 100644 target/avr/translate.c
>  create mode 100644 gdb-xml/avr-cpu.xml
>  create mode 100644 hw/avr/Kconfig
>  create mode 100644 hw/avr/Makefile.objs
>  create mode 100644 target/avr/Makefile.objs
>  create mode 100644 target/avr/insn.decode
>  create mode 100644 tests/acceptance/machine_avr6.py
>
> --
> 2.21.1
>
Thomas Huth Jan. 24, 2020, 7:12 a.m. UTC | #2
On 24/01/2020 01.51, Philippe Mathieu-Daudé wrote:
> This is the AVR port from Michael release (merge) candidate 2.
> 
> Since v1 [1]:
> - 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)

If you don't have a default machine, I'd expect to see a change to
tests/qemu-iotests/check in the patchset. Please make sure that "make
check" (i.e. "make check-block" in this case) continues to work if you
run "configure" just with this single architecture
(--target-list=avr-softmmu).

 Thanks,
  Thomas
Michael Rolnik Jan. 24, 2020, 11:41 a.m. UTC | #3
Tested-by: Michael Rolnik <mrolnik@gmail.com>



The only thing I want to change is instead of -kernel put -bios in
qemu-doc.texi file. Should I send a new series?

On Fri, Jan 24, 2020 at 2:51 AM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:

> This is the AVR port from Michael release (merge) candidate 2.
>
> Since v1 [1]:
> - 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)
>
> Change since rc1:
>
> $ git backport-diff -u avr-rc1 -r origin/master..
> 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/25:[----] [--] 'target/avr: Add outward facing interfaces and core CPU
> logic'
> 002/25:[----] [--] 'target/avr: Add instruction helpers'
> 003/25:[----] [--] 'target/avr: Add instruction translation - Registers
> definition'
> 004/25:[----] [--] 'target/avr: Add instruction translation - Arithmetic
> and Logic Instructions'
> 005/25:[----] [--] 'target/avr: Add instruction translation - Branch
> Instructions'
> 006/25:[----] [--] 'target/avr: Add instruction translation - Data
> Transfer Instructions'
> 007/25:[----] [--] 'target/avr: Add instruction translation - Bit and
> Bit-test Instructions'
> 008/25:[----] [--] 'target/avr: Add instruction translation - MCU Control
> Instructions'
> 009/25:[----] [--] 'target/avr: Add instruction translation - CPU main
> translation function'
> 010/25:[----] [--] 'target/avr: Add instruction disassembly function'
> 011/25:[----] [--] 'hw/char: Add limited support for Atmel USART
> peripheral'
> 012/25:[0045] [FC] 'hw/timer: Add limited support for Atmel 16 bit timer
> peripheral'
> 013/25:[----] [--] 'hw/misc: Add Atmel power device'
> 014/25:[0024] [FC] 'target/avr: Add section about AVR into QEMU
> documentation'
> 015/25:[----] [--] 'target/avr: Register AVR support with the rest of QEMU'
> 016/25:[----] [--] 'target/avr: Add machine none test'
> 017/25:[0002] [FC] 'target/avr: Update MAINTAINERS file'
> 018/25:[down]      'hw/core/loader: Let load_elf populate the
> processor-specific flags'
> 019/25:[down]      'hw/avr: Add helper to load raw/ELF firmware binaries'
> 020/25:[0015] [FC] 'hw/avr: Add some ATmega microcontrollers'
> 021/25:[0040] [FC] 'hw/avr: Add some Arduino boards'
> 022/25:[----] [--] 'target/avr: Update build system'
> 023/25:[----] [--] 'tests/boot-serial-test: Test some Arduino boards (AVR
> based)'
> 024/25:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
> 025/25:[----] [--] '.travis.yml: Run the AVR acceptance tests'
>
> Repo: https://gitlab.com/philmd/qemu/commits/avr-rc2
>
> [1] https://www.mail-archive.com/qemu-devel@nongnu.org/msg672926.html
> Supersedes: <20200123000307.11541-1-richard.henderson@linaro.org>
>
> Michael Rolnik (20):
>   target/avr: Add outward facing interfaces and core CPU logic
>   target/avr: Add instruction helpers
>   target/avr: Add instruction translation - Registers definition
>   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 Atmel USART peripheral
>   hw/timer: Add limited support for Atmel 16 bit timer peripheral
>   hw/misc: Add Atmel 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é (5):
>   hw/core/loader: Let load_elf populate the processor-specific flags
>   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
>
>  qemu-doc.texi                    |   51 +
>  configure                        |    7 +
>  default-configs/avr-softmmu.mak  |    5 +
>  qapi/machine.json                |    3 +-
>  hw/avr/atmel_atmega.h            |   48 +
>  hw/avr/boot.h                    |   33 +
>  include/disas/dis-asm.h          |   19 +
>  include/elf.h                    |    2 +
>  include/hw/char/atmel_usart.h    |   93 +
>  include/hw/elf_ops.h             |    6 +-
>  include/hw/loader.h              |    6 +-
>  include/hw/misc/atmel_power.h    |   46 +
>  include/hw/timer/atmel_timer16.h |   94 +
>  include/sysemu/arch_init.h       |    1 +
>  target/avr/cpu-param.h           |   37 +
>  target/avr/cpu-qom.h             |   54 +
>  target/avr/cpu.h                 |  259 +++
>  target/avr/helper.h              |   29 +
>  arch_init.c                      |    2 +
>  hw/avr/arduino.c                 |  151 ++
>  hw/avr/atmel_atmega.c            |  470 +++++
>  hw/avr/boot.c                    |   74 +
>  hw/char/atmel_usart.c            |  320 ++++
>  hw/core/loader.c                 |   15 +-
>  hw/misc/atmel_power.c            |  112 ++
>  hw/riscv/boot.c                  |    2 +-
>  hw/timer/atmel_timer16.c         |  605 ++++++
>  target/avr/cpu.c                 |  826 ++++++++
>  target/avr/disas.c               |  246 +++
>  target/avr/gdbstub.c             |   84 +
>  target/avr/helper.c              |  347 ++++
>  target/avr/machine.c             |  121 ++
>  target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++
>  tests/qtest/boot-serial-test.c   |   11 +
>  tests/qtest/machine-none-test.c  |    1 +
>  .travis.yml                      |    2 +-
>  MAINTAINERS                      |   30 +
>  gdb-xml/avr-cpu.xml              |   49 +
>  hw/avr/Kconfig                   |    9 +
>  hw/avr/Makefile.objs             |    3 +
>  hw/char/Kconfig                  |    3 +
>  hw/char/Makefile.objs            |    1 +
>  hw/misc/Kconfig                  |    3 +
>  hw/misc/Makefile.objs            |    2 +
>  hw/timer/Kconfig                 |    3 +
>  hw/timer/Makefile.objs           |    2 +
>  target/avr/Makefile.objs         |   34 +
>  target/avr/insn.decode           |  182 ++
>  tests/acceptance/machine_avr6.py |   50 +
>  tests/qtest/Makefile.include     |    2 +
>  50 files changed, 7539 insertions(+), 13 deletions(-)
>  create mode 100644 default-configs/avr-softmmu.mak
>  create mode 100644 hw/avr/atmel_atmega.h
>  create mode 100644 hw/avr/boot.h
>  create mode 100644 include/hw/char/atmel_usart.h
>  create mode 100644 include/hw/misc/atmel_power.h
>  create mode 100644 include/hw/timer/atmel_timer16.h
>  create mode 100644 target/avr/cpu-param.h
>  create mode 100644 target/avr/cpu-qom.h
>  create mode 100644 target/avr/cpu.h
>  create mode 100644 target/avr/helper.h
>  create mode 100644 hw/avr/arduino.c
>  create mode 100644 hw/avr/atmel_atmega.c
>  create mode 100644 hw/avr/boot.c
>  create mode 100644 hw/char/atmel_usart.c
>  create mode 100644 hw/misc/atmel_power.c
>  create mode 100644 hw/timer/atmel_timer16.c
>  create mode 100644 target/avr/cpu.c
>  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/machine.c
>  create mode 100644 target/avr/translate.c
>  create mode 100644 gdb-xml/avr-cpu.xml
>  create mode 100644 hw/avr/Kconfig
>  create mode 100644 hw/avr/Makefile.objs
>  create mode 100644 target/avr/Makefile.objs
>  create mode 100644 target/avr/insn.decode
>  create mode 100644 tests/acceptance/machine_avr6.py
>
> --
> 2.21.1
>
>
Philippe Mathieu-Daudé Jan. 24, 2020, 12:49 p.m. UTC | #4
On 1/24/20 12:41 PM, Michael Rolnik wrote:
> Tested-by: Michael Rolnik <mrolnik@gmail.com <mailto:mrolnik@gmail.com>>

Thanks a lot!

> The only thing I want to change is instead of -kernel put -bios in 
> qemu-doc.texi file. Should I send a new series?

Please do NOT :)

Richard can do the trivial fixup directly.

> On Fri, Jan 24, 2020 at 2:51 AM Philippe Mathieu-Daudé <f4bug@amsat.org 
> <mailto:f4bug@amsat.org>> wrote:
> 
>     This is the AVR port from Michael release (merge) candidate 2.
> 
>     Since v1 [1]:
>     - 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)
> 
>     Change since rc1:
> 
>     $ git backport-diff -u avr-rc1 -r origin/master..
>     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/25:[----] [--] 'target/avr: Add outward facing interfaces and
>     core CPU logic'
>     002/25:[----] [--] 'target/avr: Add instruction helpers'
>     003/25:[----] [--] 'target/avr: Add instruction translation -
>     Registers definition'
>     004/25:[----] [--] 'target/avr: Add instruction translation -
>     Arithmetic and Logic Instructions'
>     005/25:[----] [--] 'target/avr: Add instruction translation - Branch
>     Instructions'
>     006/25:[----] [--] 'target/avr: Add instruction translation - Data
>     Transfer Instructions'
>     007/25:[----] [--] 'target/avr: Add instruction translation - Bit
>     and Bit-test Instructions'
>     008/25:[----] [--] 'target/avr: Add instruction translation - MCU
>     Control Instructions'
>     009/25:[----] [--] 'target/avr: Add instruction translation - CPU
>     main translation function'
>     010/25:[----] [--] 'target/avr: Add instruction disassembly function'
>     011/25:[----] [--] 'hw/char: Add limited support for Atmel USART
>     peripheral'
>     012/25:[0045] [FC] 'hw/timer: Add limited support for Atmel 16 bit
>     timer peripheral'
>     013/25:[----] [--] 'hw/misc: Add Atmel power device'
>     014/25:[0024] [FC] 'target/avr: Add section about AVR into QEMU
>     documentation'
>     015/25:[----] [--] 'target/avr: Register AVR support with the rest
>     of QEMU'
>     016/25:[----] [--] 'target/avr: Add machine none test'
>     017/25:[0002] [FC] 'target/avr: Update MAINTAINERS file'
>     018/25:[down]      'hw/core/loader: Let load_elf populate the
>     processor-specific flags'
>     019/25:[down]      'hw/avr: Add helper to load raw/ELF firmware
>     binaries'
>     020/25:[0015] [FC] 'hw/avr: Add some ATmega microcontrollers'
>     021/25:[0040] [FC] 'hw/avr: Add some Arduino boards'
>     022/25:[----] [--] 'target/avr: Update build system'
>     023/25:[----] [--] 'tests/boot-serial-test: Test some Arduino boards
>     (AVR based)'
>     024/25:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560 board'
>     025/25:[----] [--] '.travis.yml: Run the AVR acceptance tests'
> 
>     Repo: https://gitlab.com/philmd/qemu/commits/avr-rc2
> 
>     [1] https://www.mail-archive.com/qemu-devel@nongnu.org/msg672926.html
>     Supersedes: <20200123000307.11541-1-richard.henderson@linaro.org
>     <mailto:20200123000307.11541-1-richard.henderson@linaro.org>>
> 
>     Michael Rolnik (20):
>        target/avr: Add outward facing interfaces and core CPU logic
>        target/avr: Add instruction helpers
>        target/avr: Add instruction translation - Registers definition
>        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 Atmel USART peripheral
>        hw/timer: Add limited support for Atmel 16 bit timer peripheral
>        hw/misc: Add Atmel 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é (5):
>        hw/core/loader: Let load_elf populate the processor-specific flags
>        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
> 
>       qemu-doc.texi                    |   51 +
>       configure                        |    7 +
>       default-configs/avr-softmmu.mak  |    5 +
>       qapi/machine.json                |    3 +-
>       hw/avr/atmel_atmega.h            |   48 +
>       hw/avr/boot.h                    |   33 +
>       include/disas/dis-asm.h          |   19 +
>       include/elf.h                    |    2 +
>       include/hw/char/atmel_usart.h    |   93 +
>       include/hw/elf_ops.h             |    6 +-
>       include/hw/loader.h              |    6 +-
>       include/hw/misc/atmel_power.h    |   46 +
>       include/hw/timer/atmel_timer16.h |   94 +
>       include/sysemu/arch_init.h       |    1 +
>       target/avr/cpu-param.h           |   37 +
>       target/avr/cpu-qom.h             |   54 +
>       target/avr/cpu.h                 |  259 +++
>       target/avr/helper.h              |   29 +
>       arch_init.c                      |    2 +
>       hw/avr/arduino.c                 |  151 ++
>       hw/avr/atmel_atmega.c            |  470 +++++
>       hw/avr/boot.c                    |   74 +
>       hw/char/atmel_usart.c            |  320 ++++
>       hw/core/loader.c                 |   15 +-
>       hw/misc/atmel_power.c            |  112 ++
>       hw/riscv/boot.c                  |    2 +-
>       hw/timer/atmel_timer16.c         |  605 ++++++
>       target/avr/cpu.c                 |  826 ++++++++
>       target/avr/disas.c               |  246 +++
>       target/avr/gdbstub.c             |   84 +
>       target/avr/helper.c              |  347 ++++
>       target/avr/machine.c             |  121 ++
>       target/avr/translate.c           | 2997 ++++++++++++++++++++++++++++++
>       tests/qtest/boot-serial-test.c   |   11 +
>       tests/qtest/machine-none-test.c  |    1 +
>       .travis.yml                      |    2 +-
>       MAINTAINERS                      |   30 +
>       gdb-xml/avr-cpu.xml              |   49 +
>       hw/avr/Kconfig                   |    9 +
>       hw/avr/Makefile.objs             |    3 +
>       hw/char/Kconfig                  |    3 +
>       hw/char/Makefile.objs            |    1 +
>       hw/misc/Kconfig                  |    3 +
>       hw/misc/Makefile.objs            |    2 +
>       hw/timer/Kconfig                 |    3 +
>       hw/timer/Makefile.objs           |    2 +
>       target/avr/Makefile.objs         |   34 +
>       target/avr/insn.decode           |  182 ++
>       tests/acceptance/machine_avr6.py |   50 +
>       tests/qtest/Makefile.include     |    2 +
>       50 files changed, 7539 insertions(+), 13 deletions(-)
>       create mode 100644 default-configs/avr-softmmu.mak
>       create mode 100644 hw/avr/atmel_atmega.h
>       create mode 100644 hw/avr/boot.h
>       create mode 100644 include/hw/char/atmel_usart.h
>       create mode 100644 include/hw/misc/atmel_power.h
>       create mode 100644 include/hw/timer/atmel_timer16.h
>       create mode 100644 target/avr/cpu-param.h
>       create mode 100644 target/avr/cpu-qom.h
>       create mode 100644 target/avr/cpu.h
>       create mode 100644 target/avr/helper.h
>       create mode 100644 hw/avr/arduino.c
>       create mode 100644 hw/avr/atmel_atmega.c
>       create mode 100644 hw/avr/boot.c
>       create mode 100644 hw/char/atmel_usart.c
>       create mode 100644 hw/misc/atmel_power.c
>       create mode 100644 hw/timer/atmel_timer16.c
>       create mode 100644 target/avr/cpu.c
>       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/machine.c
>       create mode 100644 target/avr/translate.c
>       create mode 100644 gdb-xml/avr-cpu.xml
>       create mode 100644 hw/avr/Kconfig
>       create mode 100644 hw/avr/Makefile.objs
>       create mode 100644 target/avr/Makefile.objs
>       create mode 100644 target/avr/insn.decode
>       create mode 100644 tests/acceptance/machine_avr6.py
> 
>     -- 
>     2.21.1
> 
> 
> 
> -- 
> Best Regards,
> Michael Rolnik
Michael Rolnik Jan. 24, 2020, 2:11 p.m. UTC | #5
Just one patch attached.
Thanks.

On Fri, Jan 24, 2020 at 2:49 PM Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> On 1/24/20 12:41 PM, Michael Rolnik wrote:
> > Tested-by: Michael Rolnik <mrolnik@gmail.com <mailto:mrolnik@gmail.com>>
>
> Thanks a lot!
>
> > The only thing I want to change is instead of -kernel put -bios in
> > qemu-doc.texi file. Should I send a new series?
>
> Please do NOT :)
>
> Richard can do the trivial fixup directly.
>
> > On Fri, Jan 24, 2020 at 2:51 AM Philippe Mathieu-Daudé <f4bug@amsat.org
> > <mailto:f4bug@amsat.org>> wrote:
> >
> >     This is the AVR port from Michael release (merge) candidate 2.
> >
> >     Since v1 [1]:
> >     - 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)
> >
> >     Change since rc1:
> >
> >     $ git backport-diff -u avr-rc1 -r origin/master..
> >     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/25:[----] [--] 'target/avr: Add outward facing interfaces and
> >     core CPU logic'
> >     002/25:[----] [--] 'target/avr: Add instruction helpers'
> >     003/25:[----] [--] 'target/avr: Add instruction translation -
> >     Registers definition'
> >     004/25:[----] [--] 'target/avr: Add instruction translation -
> >     Arithmetic and Logic Instructions'
> >     005/25:[----] [--] 'target/avr: Add instruction translation - Branch
> >     Instructions'
> >     006/25:[----] [--] 'target/avr: Add instruction translation - Data
> >     Transfer Instructions'
> >     007/25:[----] [--] 'target/avr: Add instruction translation - Bit
> >     and Bit-test Instructions'
> >     008/25:[----] [--] 'target/avr: Add instruction translation - MCU
> >     Control Instructions'
> >     009/25:[----] [--] 'target/avr: Add instruction translation - CPU
> >     main translation function'
> >     010/25:[----] [--] 'target/avr: Add instruction disassembly function'
> >     011/25:[----] [--] 'hw/char: Add limited support for Atmel USART
> >     peripheral'
> >     012/25:[0045] [FC] 'hw/timer: Add limited support for Atmel 16 bit
> >     timer peripheral'
> >     013/25:[----] [--] 'hw/misc: Add Atmel power device'
> >     014/25:[0024] [FC] 'target/avr: Add section about AVR into QEMU
> >     documentation'
> >     015/25:[----] [--] 'target/avr: Register AVR support with the rest
> >     of QEMU'
> >     016/25:[----] [--] 'target/avr: Add machine none test'
> >     017/25:[0002] [FC] 'target/avr: Update MAINTAINERS file'
> >     018/25:[down]      'hw/core/loader: Let load_elf populate the
> >     processor-specific flags'
> >     019/25:[down]      'hw/avr: Add helper to load raw/ELF firmware
> >     binaries'
> >     020/25:[0015] [FC] 'hw/avr: Add some ATmega microcontrollers'
> >     021/25:[0040] [FC] 'hw/avr: Add some Arduino boards'
> >     022/25:[----] [--] 'target/avr: Update build system'
> >     023/25:[----] [--] 'tests/boot-serial-test: Test some Arduino boards
> >     (AVR based)'
> >     024/25:[----] [--] 'tests/acceptance: Test the Arduino MEGA2560
> board'
> >     025/25:[----] [--] '.travis.yml: Run the AVR acceptance tests'
> >
> >     Repo: https://gitlab.com/philmd/qemu/commits/avr-rc2
> >
> >     [1]
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg672926.html
> >     Supersedes: <20200123000307.11541-1-richard.henderson@linaro.org
> >     <mailto:20200123000307.11541-1-richard.henderson@linaro.org>>
> >
> >     Michael Rolnik (20):
> >        target/avr: Add outward facing interfaces and core CPU logic
> >        target/avr: Add instruction helpers
> >        target/avr: Add instruction translation - Registers definition
> >        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 Atmel USART peripheral
> >        hw/timer: Add limited support for Atmel 16 bit timer peripheral
> >        hw/misc: Add Atmel 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é (5):
> >        hw/core/loader: Let load_elf populate the processor-specific flags
> >        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
> >
> >       qemu-doc.texi                    |   51 +
> >       configure                        |    7 +
> >       default-configs/avr-softmmu.mak  |    5 +
> >       qapi/machine.json                |    3 +-
> >       hw/avr/atmel_atmega.h            |   48 +
> >       hw/avr/boot.h                    |   33 +
> >       include/disas/dis-asm.h          |   19 +
> >       include/elf.h                    |    2 +
> >       include/hw/char/atmel_usart.h    |   93 +
> >       include/hw/elf_ops.h             |    6 +-
> >       include/hw/loader.h              |    6 +-
> >       include/hw/misc/atmel_power.h    |   46 +
> >       include/hw/timer/atmel_timer16.h |   94 +
> >       include/sysemu/arch_init.h       |    1 +
> >       target/avr/cpu-param.h           |   37 +
> >       target/avr/cpu-qom.h             |   54 +
> >       target/avr/cpu.h                 |  259 +++
> >       target/avr/helper.h              |   29 +
> >       arch_init.c                      |    2 +
> >       hw/avr/arduino.c                 |  151 ++
> >       hw/avr/atmel_atmega.c            |  470 +++++
> >       hw/avr/boot.c                    |   74 +
> >       hw/char/atmel_usart.c            |  320 ++++
> >       hw/core/loader.c                 |   15 +-
> >       hw/misc/atmel_power.c            |  112 ++
> >       hw/riscv/boot.c                  |    2 +-
> >       hw/timer/atmel_timer16.c         |  605 ++++++
> >       target/avr/cpu.c                 |  826 ++++++++
> >       target/avr/disas.c               |  246 +++
> >       target/avr/gdbstub.c             |   84 +
> >       target/avr/helper.c              |  347 ++++
> >       target/avr/machine.c             |  121 ++
> >       target/avr/translate.c           | 2997
> ++++++++++++++++++++++++++++++
> >       tests/qtest/boot-serial-test.c   |   11 +
> >       tests/qtest/machine-none-test.c  |    1 +
> >       .travis.yml                      |    2 +-
> >       MAINTAINERS                      |   30 +
> >       gdb-xml/avr-cpu.xml              |   49 +
> >       hw/avr/Kconfig                   |    9 +
> >       hw/avr/Makefile.objs             |    3 +
> >       hw/char/Kconfig                  |    3 +
> >       hw/char/Makefile.objs            |    1 +
> >       hw/misc/Kconfig                  |    3 +
> >       hw/misc/Makefile.objs            |    2 +
> >       hw/timer/Kconfig                 |    3 +
> >       hw/timer/Makefile.objs           |    2 +
> >       target/avr/Makefile.objs         |   34 +
> >       target/avr/insn.decode           |  182 ++
> >       tests/acceptance/machine_avr6.py |   50 +
> >       tests/qtest/Makefile.include     |    2 +
> >       50 files changed, 7539 insertions(+), 13 deletions(-)
> >       create mode 100644 default-configs/avr-softmmu.mak
> >       create mode 100644 hw/avr/atmel_atmega.h
> >       create mode 100644 hw/avr/boot.h
> >       create mode 100644 include/hw/char/atmel_usart.h
> >       create mode 100644 include/hw/misc/atmel_power.h
> >       create mode 100644 include/hw/timer/atmel_timer16.h
> >       create mode 100644 target/avr/cpu-param.h
> >       create mode 100644 target/avr/cpu-qom.h
> >       create mode 100644 target/avr/cpu.h
> >       create mode 100644 target/avr/helper.h
> >       create mode 100644 hw/avr/arduino.c
> >       create mode 100644 hw/avr/atmel_atmega.c
> >       create mode 100644 hw/avr/boot.c
> >       create mode 100644 hw/char/atmel_usart.c
> >       create mode 100644 hw/misc/atmel_power.c
> >       create mode 100644 hw/timer/atmel_timer16.c
> >       create mode 100644 target/avr/cpu.c
> >       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/machine.c
> >       create mode 100644 target/avr/translate.c
> >       create mode 100644 gdb-xml/avr-cpu.xml
> >       create mode 100644 hw/avr/Kconfig
> >       create mode 100644 hw/avr/Makefile.objs
> >       create mode 100644 target/avr/Makefile.objs
> >       create mode 100644 target/avr/insn.decode
> >       create mode 100644 tests/acceptance/machine_avr6.py
> >
> >     --
> >     2.21.1
> >
> >
> >
> > --
> > Best Regards,
> > Michael Rolnik
>
>