Re: [Qemu-devel] [PATCH v10 00/15] QEMU OpenRISC support

2012-07-28 Thread Blue Swirl
On Fri, Jul 20, 2012 at 7:50 AM, Jia Liu pro...@gmail.com wrote:
 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

Thanks, applied all.

 ---

 Version History:

 v10:
 Addressed Peter's review comments:
 - replace field() with extract32() using for decode

 Addressed Max's review comments:
 - reimplement l.ff1 and l.fl1 by using ctz32() and clz32()
 - make helper func mul32 a pure 32bits mul implementation
 - add a testcase for l.mul* overflow check

 Addressed MaxBlue's review comments:
 - enforced instructions can be only accessible in supervisor mode
 - add exception check in softmmu mode if the CPU is not in supervisor mode

 v9:
 Addressed Blue's review comments:
 - fix jump instructions
 - fix some instruction decoding

 Addressed AndreasPaolo's review comments:
 - rename intrpt*.c to interrupt*.c
 - use one-space indentation in Copyright Notice
 - remove unused header in cpu.c
 - remove/comment unimplement or64 code
 - remove unused macro
 - move feature into OpenRISCCPU from CPUOpenRISCState
 - move tcg_inited into initfn
 - remove reset in openrisc_*_initfn

 -combine target-machine into target-stubs

 v8:
 Addressed Max's review comments:
 - fix l.div*.

 Addressed Blue's review comments:
 - using qemu_log instead of printf.

 Addressed Peter's review comments:
 - fix load_kernel.

 Addressed PeterAndreas's review comments:
 - thanks Andreas's r178 example, switch to QOM from CPUArchState.

 v7:
 Addressed Max's review comments:
 - fix l.div*.
 - add a div testcase.
 - add return -1 to every failed test.

 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.

 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 (15):
   target-or32: Add target stubs and QOM cpu
   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 support
   target-or32: Add linux syscall, signal and termbits
   target-or32: Add linux user support
   target-or32: Add testcses

  arch_init.c |2 +
  arch_init.h |1 

Re: [Qemu-devel] [PATCH v10 00/15] QEMU OpenRISC support

2012-07-28 Thread Jia Liu
Hi Blue, and other maintainers,

On Sat, Jul 28, 2012 at 8:13 PM, Blue Swirl blauwir...@gmail.com wrote:
 On Fri, Jul 20, 2012 at 7:50 AM, Jia Liu pro...@gmail.com wrote:
 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

 Thanks, applied all.


Thank you very much!

Thank you all for giving me so much comment what make me know qemu better.

 ---

 Version History:

 v10:
 Addressed Peter's review comments:
 - replace field() with extract32() using for decode

 Addressed Max's review comments:
 - reimplement l.ff1 and l.fl1 by using ctz32() and clz32()
 - make helper func mul32 a pure 32bits mul implementation
 - add a testcase for l.mul* overflow check

 Addressed MaxBlue's review comments:
 - enforced instructions can be only accessible in supervisor mode
 - add exception check in softmmu mode if the CPU is not in supervisor mode

 v9:
 Addressed Blue's review comments:
 - fix jump instructions
 - fix some instruction decoding

 Addressed AndreasPaolo's review comments:
 - rename intrpt*.c to interrupt*.c
 - use one-space indentation in Copyright Notice
 - remove unused header in cpu.c
 - remove/comment unimplement or64 code
 - remove unused macro
 - move feature into OpenRISCCPU from CPUOpenRISCState
 - move tcg_inited into initfn
 - remove reset in openrisc_*_initfn

 -combine target-machine into target-stubs

 v8:
 Addressed Max's review comments:
 - fix l.div*.

 Addressed Blue's review comments:
 - using qemu_log instead of printf.

 Addressed Peter's review comments:
 - fix load_kernel.

 Addressed PeterAndreas's review comments:
 - thanks Andreas's r178 example, switch to QOM from CPUArchState.

 v7:
 Addressed Max's review comments:
 - fix l.div*.
 - add a div testcase.
 - add return -1 to every failed test.

 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.

 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 (15):
   target-or32: Add target stubs and QOM cpu
   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 support
   

Re: [Qemu-devel] [PATCH v10 00/15] QEMU OpenRISC support

2012-07-24 Thread Jia Liu
ping

On Fri, Jul 20, 2012 at 3:50 PM, Jia Liu pro...@gmail.com wrote:
 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:

 v10:
 Addressed Peter's review comments:
 - replace field() with extract32() using for decode

 Addressed Max's review comments:
 - reimplement l.ff1 and l.fl1 by using ctz32() and clz32()
 - make helper func mul32 a pure 32bits mul implementation
 - add a testcase for l.mul* overflow check

 Addressed MaxBlue's review comments:
 - enforced instructions can be only accessible in supervisor mode
 - add exception check in softmmu mode if the CPU is not in supervisor mode

 v9:
 Addressed Blue's review comments:
 - fix jump instructions
 - fix some instruction decoding

 Addressed AndreasPaolo's review comments:
 - rename intrpt*.c to interrupt*.c
 - use one-space indentation in Copyright Notice
 - remove unused header in cpu.c
 - remove/comment unimplement or64 code
 - remove unused macro
 - move feature into OpenRISCCPU from CPUOpenRISCState
 - move tcg_inited into initfn
 - remove reset in openrisc_*_initfn

 -combine target-machine into target-stubs

 v8:
 Addressed Max's review comments:
 - fix l.div*.

 Addressed Blue's review comments:
 - using qemu_log instead of printf.

 Addressed Peter's review comments:
 - fix load_kernel.

 Addressed PeterAndreas's review comments:
 - thanks Andreas's r178 example, switch to QOM from CPUArchState.

 v7:
 Addressed Max's review comments:
 - fix l.div*.
 - add a div testcase.
 - add return -1 to every failed test.

 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.

 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 (15):
   target-or32: Add target stubs and QOM cpu
   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 support
   target-or32: Add linux syscall, signal and termbits
   target-or32: Add linux user support
   target-or32: Add testcses

  arch_init.c |2 +
  arch_init.h |1 +
  configure 

[Qemu-devel] [PATCH v10 00/15] QEMU OpenRISC support

2012-07-20 Thread Jia Liu
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:

v10:
Addressed Peter's review comments:
- replace field() with extract32() using for decode

Addressed Max's review comments:
- reimplement l.ff1 and l.fl1 by using ctz32() and clz32()
- make helper func mul32 a pure 32bits mul implementation
- add a testcase for l.mul* overflow check

Addressed MaxBlue's review comments:
- enforced instructions can be only accessible in supervisor mode
- add exception check in softmmu mode if the CPU is not in supervisor mode

v9:
Addressed Blue's review comments:
- fix jump instructions
- fix some instruction decoding

Addressed AndreasPaolo's review comments:
- rename intrpt*.c to interrupt*.c
- use one-space indentation in Copyright Notice
- remove unused header in cpu.c
- remove/comment unimplement or64 code
- remove unused macro
- move feature into OpenRISCCPU from CPUOpenRISCState
- move tcg_inited into initfn
- remove reset in openrisc_*_initfn

-combine target-machine into target-stubs

v8:
Addressed Max's review comments:
- fix l.div*.

Addressed Blue's review comments:
- using qemu_log instead of printf.

Addressed Peter's review comments:
- fix load_kernel.

Addressed PeterAndreas's review comments:
- thanks Andreas's r178 example, switch to QOM from CPUArchState.

v7:
Addressed Max's review comments:
- fix l.div*.
- add a div testcase.
- add return -1 to every failed test.

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.

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 (15):
  target-or32: Add target stubs and QOM cpu
  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 support
  target-or32: Add linux syscall, signal and termbits
  target-or32: Add linux user support
  target-or32: Add testcses

 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