All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC v1 00/23]  Add RISC-V TCG backend support
@ 2018-11-15 22:33 ` Alistair Francis
  0 siblings, 0 replies; 130+ messages in thread
From: Alistair Francis @ 2018-11-15 22:33 UTC (permalink / raw)
  To: qemu-devel, qemu-riscv; +Cc: Alistair Francis, alistair23

This patch set adds RISC-V backend support to QEMU. This is based on
Michael Clark's original work with some patches ontop.

This has been slightly tested and can run other architecture softmmu
code for a number of instructions but eventually QEMU will either
seg fault or generate an illigal instruction (depending on the guest
architecture).

I haven't tested linux user support at all yet. I think Michael had that
working reliably though and hopefully my changes haven't broken it. I'll
test both a lot more before I send a full patchset.

My hope of submitting an RFC is that some extra eyes on the code might
help catch what is wrong. Comparing the guest CPU state to a working
version hasn't given any hints as the states match, even up until the
generated code segfaults.

This branch can be found here:
https://github.com/alistair23/qemu/tree/mainline/alistair/tcg-backend-upstream.next

The working version with Michael's orignal patch and work ontop can be
found here:
https://github.com/alistair23/qemu/tree/mainline/alistair/tcg-backend.next


Alistair Francis (23):
  elf.h: Add the RISCV ELF magic numbers
  linux-user: Add host dependency for RISC-V 32-bit
  linux-user: Add host dependency for RISC-V 64-bit
  exec: Add RISC-V GCC poison macro
  riscv: Add the tcg-target header file
  riscv: Add the tcg target registers
  riscv: tcg-target: Regiser the JIT
  riscv: tcg-target: Add support for the constraints
  riscv: tcg-target: Add the immediate encoders
  riscv: tcg-target: Add the instruction emitters
  riscv: tcg-target: Add the relocation functions
  riscv: tcg-target: Add the mov and movi instruction
  riscv: tcg-target: Add the extract instructions
  riscv: tcg-target: Add the out load and store instructions
  riscv: tcg-target: Add branch and jump instructions
  riscv: tcg-target: Add slowpath load and store instructions
  riscv: tcg-target: Add direct load and store instructions
  riscv: tcg-target: Add the out op decoder
  riscv: tcg-target: Add the prologue generation
  riscv: tcg-target: Add the target init code
  tcg: Add RISC-V cpu signal handler
  dias: Add RISC-V support
  configure: Add support for building RISC-V host

 accel/tcg/user-exec.c             |   48 +
 configure                         |   12 +-
 disas.c                           |   10 +-
 include/elf.h                     |   55 +
 include/exec/poison.h             |    1 +
 linux-user/host/riscv32/hostdep.h |   11 +
 linux-user/host/riscv64/hostdep.h |   11 +
 tcg/riscv/tcg-target.h            |  173 +++
 tcg/riscv/tcg-target.inc.c        | 1728 +++++++++++++++++++++++++++++
 9 files changed, 2045 insertions(+), 4 deletions(-)
 create mode 100644 linux-user/host/riscv32/hostdep.h
 create mode 100644 linux-user/host/riscv64/hostdep.h
 create mode 100644 tcg/riscv/tcg-target.h
 create mode 100644 tcg/riscv/tcg-target.inc.c

-- 
2.19.1

^ permalink raw reply	[flat|nested] 130+ messages in thread

end of thread, other threads:[~2018-11-26 22:59 UTC | newest]

Thread overview: 130+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-15 22:33 [Qemu-devel] [RFC v1 00/23] Add RISC-V TCG backend support Alistair Francis
2018-11-15 22:33 ` [Qemu-riscv] " Alistair Francis
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 01/23] elf.h: Add the RISCV ELF magic numbers Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:46   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:46     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 02/23] linux-user: Add host dependency for RISC-V 32-bit Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:46   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:46     ` [Qemu-riscv] " Richard Henderson
2018-11-16  7:47   ` Richard Henderson
2018-11-16  7:47     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 03/23] linux-user: Add host dependency for RISC-V 64-bit Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:57   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:57     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 04/23] exec: Add RISC-V GCC poison macro Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:47   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:47     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 05/23] riscv: Add the tcg-target header file Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:57   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:57     ` [Qemu-riscv] " Richard Henderson
2018-11-16 17:20   ` Richard Henderson
2018-11-16 17:20     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 06/23] riscv: Add the tcg target registers Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:58   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:58     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:34 ` [Qemu-devel] [RFC v1 07/23] riscv: tcg-target: Regiser the JIT Alistair Francis
2018-11-15 22:34   ` [Qemu-riscv] " Alistair Francis
2018-11-16  7:59   ` [Qemu-devel] " Richard Henderson
2018-11-16  7:59     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 08/23] riscv: tcg-target: Add support for the constraints Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:13   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:13     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 09/23] riscv: tcg-target: Add the immediate encoders Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:26   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:26     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 10/23] riscv: tcg-target: Add the instruction emitters Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:27   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:27     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 11/23] riscv: tcg-target: Add the relocation functions Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:33   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:33     ` [Qemu-riscv] " Richard Henderson
2018-11-21  1:15     ` Alistair Francis
2018-11-21  1:15       ` [Qemu-riscv] " Alistair Francis
2018-11-21  7:25       ` Richard Henderson
2018-11-21  7:25         ` [Qemu-riscv] " Richard Henderson
2018-11-21 15:53       ` Palmer Dabbelt
2018-11-21 15:53         ` [Qemu-riscv] " Palmer Dabbelt
2018-11-21 17:01         ` Richard Henderson
2018-11-21 17:01           ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 12/23] riscv: tcg-target: Add the mov and movi instruction Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:55   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:55     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:35 ` [Qemu-devel] [RFC v1 13/23] riscv: tcg-target: Add the extract instructions Alistair Francis
2018-11-15 22:35   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:56   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:56     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 14/23] riscv: tcg-target: Add the out load and store instructions Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16  8:59   ` [Qemu-devel] " Richard Henderson
2018-11-16  8:59     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 15/23] riscv: tcg-target: Add branch and jump instructions Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16  9:14   ` [Qemu-devel] " Richard Henderson
2018-11-16  9:14     ` [Qemu-riscv] " Richard Henderson
2018-11-20 23:49     ` Alistair Francis
2018-11-20 23:49       ` [Qemu-riscv] " Alistair Francis
2018-11-21  7:40       ` Richard Henderson
2018-11-21  7:40         ` [Qemu-riscv] " Richard Henderson
2018-11-26 22:58         ` Alistair Francis
2018-11-26 22:58           ` [Qemu-riscv] " Alistair Francis
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 16/23] riscv: tcg-target: Add slowpath load and store instructions Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16  9:24   ` [Qemu-devel] " Richard Henderson
2018-11-16  9:24     ` [Qemu-riscv] " Richard Henderson
2018-11-21  0:18     ` Alistair Francis
2018-11-21  0:18       ` [Qemu-riscv] " Alistair Francis
2018-11-21  7:43       ` Richard Henderson
2018-11-21  7:43         ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 17/23] riscv: tcg-target: Add direct " Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:10   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:10     ` [Qemu-riscv] " Richard Henderson
2018-11-19 23:06     ` Alistair Francis
2018-11-19 23:06       ` [Qemu-riscv] " Alistair Francis
2018-11-20  6:57       ` Richard Henderson
2018-11-20  6:57         ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 18/23] riscv: tcg-target: Add the out op decoder Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:22   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:22     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 19/23] riscv: tcg-target: Add the prologue generation Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:25   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:25     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:36 ` [Qemu-devel] [RFC v1 20/23] riscv: tcg-target: Add the target init code Alistair Francis
2018-11-15 22:36   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:26   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:26     ` [Qemu-riscv] " Richard Henderson
2018-11-19 23:04     ` Alistair Francis
2018-11-19 23:04       ` [Qemu-riscv] " Alistair Francis
2018-11-20  6:55       ` Richard Henderson
2018-11-20  6:55         ` [Qemu-riscv] " Richard Henderson
2018-11-20 23:22         ` Alistair Francis
2018-11-20 23:22           ` [Qemu-riscv] " Alistair Francis
2018-11-15 22:37 ` [Qemu-devel] [RFC v1 21/23] tcg: Add RISC-V cpu signal handler Alistair Francis
2018-11-15 22:37   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:27   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:27     ` [Qemu-riscv] " Richard Henderson
2018-11-16 17:29   ` Richard Henderson
2018-11-16 17:29     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:37 ` [Qemu-devel] [RFC v1 22/23] dias: Add RISC-V support Alistair Francis
2018-11-15 22:37   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:29   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:29     ` [Qemu-riscv] " Richard Henderson
2018-11-15 22:37 ` [Qemu-devel] [RFC v1 23/23] configure: Add support for building RISC-V host Alistair Francis
2018-11-15 22:37   ` [Qemu-riscv] " Alistair Francis
2018-11-16 17:30   ` [Qemu-devel] " Richard Henderson
2018-11-16 17:30     ` [Qemu-riscv] " Richard Henderson
2018-11-16  8:31 ` [Qemu-devel] [RFC v1 00/23] Add RISC-V TCG backend support no-reply
2018-11-16  8:31   ` [Qemu-riscv] " no-reply

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.