[Qemu-devel] [PATCH v3 0/7] target/m68k: supervisor mode (part 2)

Laurent Vivier posted 7 patches 6 years, 3 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180113111428.7066-1-laurent@vivier.eu
Test checkpatch passed
Test docker passed
Test ppc passed
Test s390x passed
There is a newer version of this series
accel/tcg/cputlb.c            |  13 +-
accel/tcg/softmmu_template.h  |  14 +-
accel/tcg/user-exec.c         |   2 +-
hmp-commands-info.hx          |   2 +-
include/exec/exec-all.h       |   6 +-
include/qom/cpu.h             |   2 +-
target/alpha/cpu.h            |   2 +-
target/alpha/helper.c         |   4 +-
target/alpha/mem_helper.c     |   6 +-
target/arm/cpu.c              |   4 +-
target/arm/op_helper.c        |   4 +-
target/cris/cpu.h             |   2 +-
target/cris/helper.c          |   4 +-
target/cris/op_helper.c       |   6 +-
target/hppa/cpu.h             |   3 +-
target/hppa/helper.c          |   2 +-
target/hppa/op_helper.c       |   2 +-
target/i386/cpu.h             |   2 +-
target/i386/excp_helper.c     |   4 +-
target/i386/mem_helper.c      |   6 +-
target/lm32/cpu.h             |   2 +-
target/lm32/helper.c          |   2 +-
target/lm32/op_helper.c       |   6 +-
target/m68k/cpu.c             |   4 +-
target/m68k/cpu.h             | 147 +++++++++-
target/m68k/helper.c          | 604 +++++++++++++++++++++++++++++++++++++++++-
target/m68k/helper.h          |   2 +
target/m68k/monitor.c         |  22 ++
target/m68k/op_helper.c       | 101 ++++++-
target/m68k/qregs.def         |   2 +
target/m68k/translate.c       | 251 +++++++++++++-----
target/microblaze/cpu.h       |   2 +-
target/microblaze/helper.c    |   4 +-
target/microblaze/op_helper.c |   6 +-
target/mips/helper.c          |   2 +-
target/mips/internal.h        |   2 +-
target/mips/op_helper.c       |  10 +-
target/moxie/cpu.h            |   2 +-
target/moxie/helper.c         |  10 +-
target/nios2/cpu.h            |   2 +-
target/nios2/helper.c         |   6 +-
target/nios2/mmu.c            |   6 +-
target/openrisc/cpu.h         |   2 +-
target/openrisc/mmu.c         |   8 +-
target/openrisc/mmu_helper.c  |   6 +-
target/ppc/cpu.h              |   2 +-
target/ppc/mmu_helper.c       |   4 +-
target/ppc/user_only_helper.c |   2 +-
target/s390x/excp_helper.c    |   4 +-
target/s390x/internal.h       |   2 +-
target/s390x/mem_helper.c     |   8 +-
target/sh4/cpu.h              |   2 +-
target/sh4/helper.c           |   4 +-
target/sh4/op_helper.c        |   6 +-
target/sparc/cpu.h            |   2 +-
target/sparc/ldst_helper.c    |   6 +-
target/sparc/mmu_helper.c     |   6 +-
target/tilegx/cpu.c           |   4 +-
target/tricore/op_helper.c    |   4 +-
target/unicore32/cpu.h        |   2 +-
target/unicore32/helper.c     |   2 +-
target/unicore32/op_helper.c  |   6 +-
target/unicore32/softmmu.c    |   2 +-
target/xtensa/op_helper.c     |   4 +-
64 files changed, 1171 insertions(+), 202 deletions(-)
[Qemu-devel] [PATCH v3 0/7] target/m68k: supervisor mode (part 2)
Posted by Laurent Vivier 6 years, 3 months ago
This series introduces the MC68040 MMU.

But first of all, we need to modify the prototype
of tlb_fill() and handle_mmu_fault handler to pass
the size of the access. MC68040 stores this value
in the exception stack frame.

Following patches add:
- MMU page table and fault handlers,
- Transparent Translation Registers
- instruction "moves" to move data
  between user and kernel space
- instructions pflush/ptest, to flush TLB and
  convert virtual address to physical address
- "info tlb" HMP command

I have tested it doesn't break QEMU linux-user mode
emulation and coldfire softmmu machine.

With the help of these patches I'm able to start
a debian etch-m68k, but the following patches
are still missing in master:
- m68k softfloat series
- Quadra 800 machine emulation series
  (VIA emulation, Nubus emulation,
   ESCC control/data address bit selector,
   video card emulation, ESP Pseudo-DMA,
   SWIM floppy controller, Apple Sound Chip
   emulation, and some big-endian fixes for
   dp8393x)

v3: fix checkpatch.pl errors/warnings
    s/smaller/smallest/

v2: use "0" for the access size when we don't know
    the size of the access
    move mmu_fault to CPUM68KState
    set TARGET_PAGE_BITS to 12 to avoid tlb_add_large_page() path
    use -page_size to mask address instead of TARGET_PAGE_MASK
    add ACCESS_DEBUG to not update page table USED/MODIFIED bits
    on gdb access
    rename ACCESS_INT to ACCESS_DATA
    add index parameter to gen_load()/gen_store()
    copy bit 2 of SFC and DFC to tb->flags to
    inline memory access in moves decoder
    change ACCESS_PTEST value because of new ACCESS_DEBUG

Laurent Vivier (7):
  accel/tcg: add size paremeter in tlb_fill()
  target/m68k: add MC68040 MMU
  target/m68k: add Transparent Translation
  target/m68k: add index parameter to gen_load()/gen_store() and Co.
  target/m68k: add moves
  target/m68k: add pflush/ptest
  target/m68k: add HMP command "info tlb"

 accel/tcg/cputlb.c            |  13 +-
 accel/tcg/softmmu_template.h  |  14 +-
 accel/tcg/user-exec.c         |   2 +-
 hmp-commands-info.hx          |   2 +-
 include/exec/exec-all.h       |   6 +-
 include/qom/cpu.h             |   2 +-
 target/alpha/cpu.h            |   2 +-
 target/alpha/helper.c         |   4 +-
 target/alpha/mem_helper.c     |   6 +-
 target/arm/cpu.c              |   4 +-
 target/arm/op_helper.c        |   4 +-
 target/cris/cpu.h             |   2 +-
 target/cris/helper.c          |   4 +-
 target/cris/op_helper.c       |   6 +-
 target/hppa/cpu.h             |   3 +-
 target/hppa/helper.c          |   2 +-
 target/hppa/op_helper.c       |   2 +-
 target/i386/cpu.h             |   2 +-
 target/i386/excp_helper.c     |   4 +-
 target/i386/mem_helper.c      |   6 +-
 target/lm32/cpu.h             |   2 +-
 target/lm32/helper.c          |   2 +-
 target/lm32/op_helper.c       |   6 +-
 target/m68k/cpu.c             |   4 +-
 target/m68k/cpu.h             | 147 +++++++++-
 target/m68k/helper.c          | 604 +++++++++++++++++++++++++++++++++++++++++-
 target/m68k/helper.h          |   2 +
 target/m68k/monitor.c         |  22 ++
 target/m68k/op_helper.c       | 101 ++++++-
 target/m68k/qregs.def         |   2 +
 target/m68k/translate.c       | 251 +++++++++++++-----
 target/microblaze/cpu.h       |   2 +-
 target/microblaze/helper.c    |   4 +-
 target/microblaze/op_helper.c |   6 +-
 target/mips/helper.c          |   2 +-
 target/mips/internal.h        |   2 +-
 target/mips/op_helper.c       |  10 +-
 target/moxie/cpu.h            |   2 +-
 target/moxie/helper.c         |  10 +-
 target/nios2/cpu.h            |   2 +-
 target/nios2/helper.c         |   6 +-
 target/nios2/mmu.c            |   6 +-
 target/openrisc/cpu.h         |   2 +-
 target/openrisc/mmu.c         |   8 +-
 target/openrisc/mmu_helper.c  |   6 +-
 target/ppc/cpu.h              |   2 +-
 target/ppc/mmu_helper.c       |   4 +-
 target/ppc/user_only_helper.c |   2 +-
 target/s390x/excp_helper.c    |   4 +-
 target/s390x/internal.h       |   2 +-
 target/s390x/mem_helper.c     |   8 +-
 target/sh4/cpu.h              |   2 +-
 target/sh4/helper.c           |   4 +-
 target/sh4/op_helper.c        |   6 +-
 target/sparc/cpu.h            |   2 +-
 target/sparc/ldst_helper.c    |   6 +-
 target/sparc/mmu_helper.c     |   6 +-
 target/tilegx/cpu.c           |   4 +-
 target/tricore/op_helper.c    |   4 +-
 target/unicore32/cpu.h        |   2 +-
 target/unicore32/helper.c     |   2 +-
 target/unicore32/op_helper.c  |   6 +-
 target/unicore32/softmmu.c    |   2 +-
 target/xtensa/op_helper.c     |   4 +-
 64 files changed, 1171 insertions(+), 202 deletions(-)

-- 
2.14.3