qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v4 0/9] 8bit AVR cores


From: Michael Rolnik
Subject: [Qemu-devel] [PATCH v4 0/9] 8bit AVR cores
Date: Mon, 6 Jun 2016 13:37:51 +0300

This series of patches adds 8bit AVR cores to QEMU.
All instruction, except BREAK/DES/SPM/SPMX, are implemented. Not fully tested 
yet.
However I was able to execute simple code with functions. e.g fibonacci 
calculation.
This series of patches include a non real, sample board.
No fuses support yet. PC is set to 0 at reset.

the patches include the following
1. just a basic 8bit AVR CPU, without instruction decoding or translation
2. CPU features which allow define the following 8bit AVR cores
     avr1
     avr2 avr25
     avr3 avr31 avr35
     avr4
     avr5 avr51
     avr6
     xmega2 xmega4 xmega5 xmega6 xmega7
3. a definition of sample machine with SRAM, FLASH and CPU which allows to 
execute simple code
4. encoding for all AVR instructions
5. interrupt handling
6. helpers for IN, OUT, SLEEP, WBR & unsupported instructions
7. a decoder which given an opcode decides what istruction it is
8. translation of AVR instruction into TCG
9. all features together 

changes since v3
1. rampD/X/Y/Z registers are encoded as 0x00ff0000 and not 0x000000ff for 
faster address manipulaton
2. ffs changed to ctz32
3. duplicate code removed at avr_cpu_do_interrupt  
4. using andc instead of not + and
5. fixing V flag calculation in varios instructions
6. freeing local variables in PUSH
7. tcg_const_local_i32 -> tcg_const_i32
8. using sextract32 instead of my implementation
9. fixing BLD instruction
10.xor(r) instead of 0xff - r at COM
11.fixing MULS/MULSU not to modify inputs' content
12.using SUB for NEG
13.fixing tcg_gen_qemu_ld/st call in XCH

A big thanks to Richard Henderson for the review.

Michael Rolnik (9):
  target-avr:     AVR cores support is added.         1. basic CPU
    structure         2. registers         3. no instructions
  target-avr: adding AVR CPU features/flavors
  target-avr: adding a sample AVR board
  target-avr: adding instructions encodings
  target-avr: adding AVR interrupt handling
  target-avr: adding helpers for IN, OUT, SLEEP, WBR & unsupported
    instructions
  target-avr: adding instruction decoder
  target-avr: adding instruction translation
  target-avr: updating translate.c to use instructions translation

 arch_init.c                     |    2 +
 configure                       |    5 +
 default-configs/avr-softmmu.mak |    1 +
 disas/Makefile.objs             |    1 +
 disas/avr.c                     |   10 +
 hw/Makefile.objs                |    1 +
 hw/avr/Makefile.objs            |    1 +
 hw/avr/sample-io.c              |  217 ++++
 hw/avr/sample.c                 |  118 ++
 include/disas/bfd.h             |    7 +
 include/sysemu/arch_init.h      |    1 +
 target-avr/Makefile.objs        |    5 +
 target-avr/cpu-qom.h            |   80 ++
 target-avr/cpu.c                |  595 ++++++++++
 target-avr/cpu.h                |  193 +++
 target-avr/decode.c             |  724 ++++++++++++
 target-avr/gdbstub.c            |   99 ++
 target-avr/helper.c             |  273 +++++
 target-avr/helper.h             |   26 +
 target-avr/machine.c            |   54 +
 target-avr/machine.h            |   21 +
 target-avr/translate-inst.c     | 2499 +++++++++++++++++++++++++++++++++++++++
 target-avr/translate-inst.h     |  730 ++++++++++++
 target-avr/translate.c          |  268 +++++
 target-avr/translate.h          |  120 ++
 25 files changed, 6051 insertions(+)
 create mode 100644 default-configs/avr-softmmu.mak
 create mode 100644 disas/avr.c
 create mode 100644 hw/avr/Makefile.objs
 create mode 100644 hw/avr/sample-io.c
 create mode 100644 hw/avr/sample.c
 create mode 100644 target-avr/Makefile.objs
 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/decode.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/machine.c
 create mode 100644 target-avr/machine.h
 create mode 100644 target-avr/translate-inst.c
 create mode 100644 target-avr/translate-inst.h
 create mode 100644 target-avr/translate.c
 create mode 100644 target-avr/translate.h

-- 
2.4.9 (Apple Git-60)




reply via email to

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