[RFC PATCH 0/3] OpenRISC Semihosting and Virt

Stafford Horne
2022-05-27T17:27:44Z

Hello,

I provide 2 options here 2 help with OpenRISC CI testing sush as the wireguard
testing that Jason has been working on.

The two are:

1. Add semihosting to openrisc to handle l.nop based Halt and Reset
2. Define a new virt platform, this includes widing in the sifive test device
that provides a syscon interface to allow for shutdown and reboot.

We could upstream both of them or just one. I am leaning toward dropping the
semi-hosting work and just going ahead with virt.

The semi-hosting stuff was discussed here:

- https://www.mail-archive.com/qemu-devel@nongnu.org/msg884560.html

Also, I started to propose architecture changes here:

- https://github.com/openrisc/openrisc.github.io/pull/18

However, looking at how other platforms define semihosting it seems the openrisc
requirements are quite different. We do not use the open/close/write etc
syscalls as riscv, arm etc do.

Stafford Horne (3):
target/openrisc: Add basic support for semihosting
hw/openrisc: Split re-usable boot time apis out to boot.c
hw/openrisc: Add the OpenRISC virtual machine

configs/devices/or1k-softmmu/default.mak | 3 +
hw/openrisc/Kconfig | 9 +
hw/openrisc/boot.c | 127 +++++++
hw/openrisc/meson.build | 2 +
hw/openrisc/openrisc_sim.c | 106 +-----
hw/openrisc/virt.c | 429 +++++++++++++++++++++++
include/hw/openrisc/boot.h | 34 ++
qemu-options.hx | 16 +-
target/openrisc/cpu.h | 2 +
target/openrisc/helper.h | 1 +
target/openrisc/meson.build | 1 +
target/openrisc/openrisc-semi.c | 54 +++
target/openrisc/sys_helper.c | 5 +
target/openrisc/translate.c | 6 +
14 files changed, 690 insertions(+), 105 deletions(-)
create mode 100644 hw/openrisc/boot.c
create mode 100644 hw/openrisc/virt.c
create mode 100644 include/hw/openrisc/boot.h
create mode 100644 target/openrisc/openrisc-semi.c

--
2.31.1