This is the OpenCores OpenRISC 1200 support for QEMU.
Full implementation of the system-model and linux-user-model support.

OpenRISC 1200 is a OpenCores open source CPU,
its architecture manual can be found at
http://opencores.org/svnget,or1k?file=/trunk/docs/openrisc_arch.pdf

A OpenRISC Linux kernel contain initramfs for qemu-system-or32 testing
can be found at
https://docs.google.com/file/d/0BxeTrz3x0CBLSjR3Sk5Vd3h1eDA/edit?pli=1

A OpenRISC hello-world program for qemu-or32 testing can be found at
https://docs.google.com/file/d/0BxeTrz3x0CBLN3RSWUFNYktrU2M/edit?pli=1

Signed-off-by: Jia Liu <pro...@gmail.com>
---

Version History:
v7:
Addressed Max's review comments:
- fix l.div*.

Addressed Peter's review comments:
- fix load_kernel().

Addressed WeiRen's review comments:
- fix typo, l.div and load_kernel().

V6:
Addressed Blue's review comments:
- reimplement l.mul* l.mfspr.
- fix l.mtspr l.sub.
- some English typo fix.
- some coding style fix.

Addressed Max's review comments:
- replace NE2000 with OpenCores 10/100 ethernet adapter, thanks for his patch.

V5:
Addressed Blue's review comments:
- reimplement l.mul* l.mtspr l.add* l.sub* and more.
- shoot bugs with "--enable-debug-tcg".

V4:
Addressed Max's review comments:
- fix l.div l.mac* l.mul*, and more.

Addressed Richard, Wei-Ren and Andreas's review comments:
- replace tcg_temp_new_i32 with tcg_temp_local_new_i32 in l.div translation.

Addressed Andreas's review comments:
- update to suit Makefile system.

- add UPR CPUCFGR and MMUCFGR impelement.
- add instruction check functions.

Version History:
V3:
Addressed Stefan and Andreas's review comments:
- use QEMU and OpenRISC's official name.

Addressed Andreas's review comments:
- reimplement cpu QOM.
- combine target stubs and QOM implement.
- use new commit message and subject.

Addressed Max's review comments:
- handle div zero exception.
- reimplement float point instructions.
- fix l.mac*, l.mul*, and more.

V2:
Addressed Malc, Weiren, Andreas and Blue's review comments:
- reimplement cpu QOM.

Addressed Andreas's review comments:
- reimplement machine.
- rewrite the Copyright Notice using better format.

Addressed Blue and Weiren's review comments:
- compiling with AREG0 and remove global env, no dyngen-exe longer.

Addressed Max, Blue and Weiren's review comments:
- handle div zero exception.
- handle illegal instruction.

Addressed Blue's review comments:
- separate do_interrupt into intrpt.c form intrpt_helper.c.
- add QEMU_NORETURN to raise_exception.
- reimplement float instrutions.
- fix type of linux syscall and termbits.
- reimplement sim board.
- use the LGPL web URL in Copyright Notice.
- reimplemt branch instructions.

- split taregt stubs, QOM and machine.

V1:
- add QEMU OpenRISC support.
- well tested on x64 machine, and final tested x86 machine.

Jia Liu (16):
  target-or32: Add target stubs and cpu support
  target-or32: Add target machine
  target-or32: Add MMU support
  target-or32: Add interrupt support
  target-or32: Add exception support
  target-or32: Add int instruction helpers
  target-or32: Add float instruction helpers
  target-or32: Add instruction translation
  target-or32: Add PIC support
  target-or32: Add timer support
  target-or32: Add a IIS dummy board
  target-or32: Add system instructions
  target-or32: Add gdb stub
  target-or32: Add linux syscall, signal and termbits
  target-or32: Add linux user support
  target-or32: Add testcases

 arch_init.c                         |    2 +
 arch_init.h                         |    1 +
 configure                           |   15 +-
 cpu-exec.c                          |   19 +
 default-configs/or32-linux-user.mak |    1 +
 default-configs/or32-softmmu.mak    |    4 +
 elf.h                               |    2 +
 gdbstub.c                           |   64 ++
 hw/openrisc/Makefile.objs           |    3 +
 hw/openrisc_cpudev.h                |   29 +
 hw/openrisc_pic.c                   |   78 ++
 hw/openrisc_sim.c                   |  149 +++
 hw/openrisc_timer.c                 |  160 ++++
 linux-user/elfload.c                |   41 +
 linux-user/main.c                   |  100 ++
 linux-user/openrisc/syscall.h       |   24 +
 linux-user/openrisc/syscall_nr.h    |  506 ++++++++++
 linux-user/openrisc/target_signal.h |   26 +
 linux-user/openrisc/termbits.h      |  294 ++++++
 linux-user/signal.c                 |  229 +++++
 linux-user/syscall.c                |    2 +-
 linux-user/syscall_defs.h           |   40 +-
 poison.h                            |    1 +
 target-openrisc/Makefile.objs       |    4 +
 target-openrisc/cpu.c               |  240 +++++
 target-openrisc/cpu.h               |  449 +++++++++
 target-openrisc/excp.c              |   27 +
 target-openrisc/excp.h              |   28 +
 target-openrisc/excp_helper.c       |   27 +
 target-openrisc/fpu_helper.c        |  275 ++++++
 target-openrisc/helper.h            |   70 ++
 target-openrisc/int_helper.c        |   85 ++
 target-openrisc/intrpt.c            |   74 ++
 target-openrisc/intrpt_helper.c     |   52 ++
 target-openrisc/machine.c           |   50 +
 target-openrisc/mmu.c               |  236 +++++
 target-openrisc/mmu_helper.c        |   63 ++
 target-openrisc/sys_helper.c        |  244 +++++
 target-openrisc/translate.c         | 1765 +++++++++++++++++++++++++++++++++++
 tests/tcg/openrisc/Makefile         |   71 ++
 tests/tcg/openrisc/test_add.c       |   46 +
 tests/tcg/openrisc/test_addc.c      |   43 +
 tests/tcg/openrisc/test_addi.c      |   35 +
 tests/tcg/openrisc/test_addic.c     |   37 +
 tests/tcg/openrisc/test_and_or.c    |   71 ++
 tests/tcg/openrisc/test_bf.c        |   50 +
 tests/tcg/openrisc/test_bnf.c       |   54 ++
 tests/tcg/openrisc/test_div.c       |   62 ++
 tests/tcg/openrisc/test_divu.c      |   36 +
 tests/tcg/openrisc/test_extx.c      |   84 ++
 tests/tcg/openrisc/test_fx.c        |   61 ++
 tests/tcg/openrisc/test_j.c         |   28 +
 tests/tcg/openrisc/test_jal.c       |   28 +
 tests/tcg/openrisc/test_lf_add.c    |   41 +
 tests/tcg/openrisc/test_lf_div.c    |   36 +
 tests/tcg/openrisc/test_lf_eqs.c    |   88 ++
 tests/tcg/openrisc/test_lf_ges.c    |   88 ++
 tests/tcg/openrisc/test_lf_gts.c    |   88 ++
 tests/tcg/openrisc/test_lf_les.c    |   88 ++
 tests/tcg/openrisc/test_lf_lts.c    |   95 ++
 tests/tcg/openrisc/test_lf_mul.c    |   24 +
 tests/tcg/openrisc/test_lf_nes.c    |   91 ++
 tests/tcg/openrisc/test_lf_rem.c    |   34 +
 tests/tcg/openrisc/test_lf_sub.c    |   35 +
 tests/tcg/openrisc/test_logic.c     |  114 +++
 tests/tcg/openrisc/test_lx.c        |   90 ++
 tests/tcg/openrisc/test_movhi.c     |   34 +
 tests/tcg/openrisc/test_mul.c       |   53 ++
 tests/tcg/openrisc/test_muli.c      |   53 ++
 tests/tcg/openrisc/test_mulu.c      |   53 ++
 tests/tcg/openrisc/test_sfeq.c      |   48 +
 tests/tcg/openrisc/test_sfeqi.c     |   43 +
 tests/tcg/openrisc/test_sfges.c     |   48 +
 tests/tcg/openrisc/test_sfgesi.c    |   44 +
 tests/tcg/openrisc/test_sfgeu.c     |   48 +
 tests/tcg/openrisc/test_sfgeui.c    |   45 +
 tests/tcg/openrisc/test_sfgts.c     |   49 +
 tests/tcg/openrisc/test_sfgtsi.c    |   45 +
 tests/tcg/openrisc/test_sfgtu.c     |   47 +
 tests/tcg/openrisc/test_sfgtui.c    |   46 +
 tests/tcg/openrisc/test_sfles.c     |   28 +
 tests/tcg/openrisc/test_sflesi.c    |   43 +
 tests/tcg/openrisc/test_sfleu.c     |   47 +
 tests/tcg/openrisc/test_sfleui.c    |   43 +
 tests/tcg/openrisc/test_sflts.c     |   47 +
 tests/tcg/openrisc/test_sfltsi.c    |   42 +
 tests/tcg/openrisc/test_sfltu.c     |   45 +
 tests/tcg/openrisc/test_sfltui.c    |   43 +
 tests/tcg/openrisc/test_sfne.c      |   47 +
 tests/tcg/openrisc/test_sfnei.c     |   42 +
 tests/tcg/openrisc/test_sub.c       |   38 +
 91 files changed, 8212 insertions(+), 6 deletions(-)
 create mode 100644 default-configs/or32-linux-user.mak
 create mode 100644 default-configs/or32-softmmu.mak
 create mode 100644 hw/openrisc/Makefile.objs
 create mode 100644 hw/openrisc_cpudev.h
 create mode 100644 hw/openrisc_pic.c
 create mode 100644 hw/openrisc_sim.c
 create mode 100644 hw/openrisc_timer.c
 create mode 100644 linux-user/openrisc/syscall.h
 create mode 100644 linux-user/openrisc/syscall_nr.h
 create mode 100644 linux-user/openrisc/target_signal.h
 create mode 100644 linux-user/openrisc/termbits.h
 create mode 100644 target-openrisc/Makefile.objs
 create mode 100644 target-openrisc/cpu.c
 create mode 100644 target-openrisc/cpu.h
 create mode 100644 target-openrisc/excp.c
 create mode 100644 target-openrisc/excp.h
 create mode 100644 target-openrisc/excp_helper.c
 create mode 100644 target-openrisc/fpu_helper.c
 create mode 100644 target-openrisc/helper.h
 create mode 100644 target-openrisc/int_helper.c
 create mode 100644 target-openrisc/intrpt.c
 create mode 100644 target-openrisc/intrpt_helper.c
 create mode 100644 target-openrisc/machine.c
 create mode 100644 target-openrisc/mmu.c
 create mode 100644 target-openrisc/mmu_helper.c
 create mode 100644 target-openrisc/sys_helper.c
 create mode 100644 target-openrisc/translate.c
 create mode 100644 tests/tcg/openrisc/Makefile
 create mode 100644 tests/tcg/openrisc/test_add.c
 create mode 100644 tests/tcg/openrisc/test_addc.c
 create mode 100644 tests/tcg/openrisc/test_addi.c
 create mode 100644 tests/tcg/openrisc/test_addic.c
 create mode 100644 tests/tcg/openrisc/test_and_or.c
 create mode 100644 tests/tcg/openrisc/test_bf.c
 create mode 100644 tests/tcg/openrisc/test_bnf.c
 create mode 100644 tests/tcg/openrisc/test_div.c
 create mode 100644 tests/tcg/openrisc/test_divu.c
 create mode 100644 tests/tcg/openrisc/test_extx.c
 create mode 100644 tests/tcg/openrisc/test_fx.c
 create mode 100644 tests/tcg/openrisc/test_j.c
 create mode 100644 tests/tcg/openrisc/test_jal.c
 create mode 100644 tests/tcg/openrisc/test_lf_add.c
 create mode 100644 tests/tcg/openrisc/test_lf_div.c
 create mode 100644 tests/tcg/openrisc/test_lf_eqs.c
 create mode 100644 tests/tcg/openrisc/test_lf_ges.c
 create mode 100644 tests/tcg/openrisc/test_lf_gts.c
 create mode 100644 tests/tcg/openrisc/test_lf_les.c
 create mode 100644 tests/tcg/openrisc/test_lf_lts.c
 create mode 100644 tests/tcg/openrisc/test_lf_mul.c
 create mode 100644 tests/tcg/openrisc/test_lf_nes.c
 create mode 100644 tests/tcg/openrisc/test_lf_rem.c
 create mode 100644 tests/tcg/openrisc/test_lf_sub.c
 create mode 100644 tests/tcg/openrisc/test_logic.c
 create mode 100644 tests/tcg/openrisc/test_lx.c
 create mode 100644 tests/tcg/openrisc/test_movhi.c
 create mode 100644 tests/tcg/openrisc/test_mul.c
 create mode 100644 tests/tcg/openrisc/test_muli.c
 create mode 100644 tests/tcg/openrisc/test_mulu.c
 create mode 100644 tests/tcg/openrisc/test_sfeq.c
 create mode 100644 tests/tcg/openrisc/test_sfeqi.c
 create mode 100644 tests/tcg/openrisc/test_sfges.c
 create mode 100644 tests/tcg/openrisc/test_sfgesi.c
 create mode 100644 tests/tcg/openrisc/test_sfgeu.c
 create mode 100644 tests/tcg/openrisc/test_sfgeui.c
 create mode 100644 tests/tcg/openrisc/test_sfgts.c
 create mode 100644 tests/tcg/openrisc/test_sfgtsi.c
 create mode 100644 tests/tcg/openrisc/test_sfgtu.c
 create mode 100644 tests/tcg/openrisc/test_sfgtui.c
 create mode 100644 tests/tcg/openrisc/test_sfles.c
 create mode 100644 tests/tcg/openrisc/test_sflesi.c
 create mode 100644 tests/tcg/openrisc/test_sfleu.c
 create mode 100644 tests/tcg/openrisc/test_sfleui.c
 create mode 100644 tests/tcg/openrisc/test_sflts.c
 create mode 100644 tests/tcg/openrisc/test_sfltsi.c
 create mode 100644 tests/tcg/openrisc/test_sfltu.c
 create mode 100644 tests/tcg/openrisc/test_sfltui.c
 create mode 100644 tests/tcg/openrisc/test_sfne.c
 create mode 100644 tests/tcg/openrisc/test_sfnei.c
 create mode 100644 tests/tcg/openrisc/test_sub.c

-- 
1.7.9.5


Reply via email to