[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v7 00/17] target/m68k: supervisor mode (part 1)

From: Laurent Vivier
Subject: [Qemu-devel] [PATCH v7 00/17] target/m68k: supervisor mode (part 1)
Date: Thu, 4 Jan 2018 02:28:56 +0100

This series is the first series that will allow
to introduce supervisor mode and execute
privileged instructions.

Some of these patches are only cleanup:

  sync CC_OP before gen_jmp_tb()
  fix gen_get_ccr()
  softmmu cleanup
  add CPU_LOG_INT trace
  use insn_pc to generate instruction fault address
  move CCR/SR functions
  fix m68k_cpu_dump_state()

We also fix a problem with linux-user mode,
where the State Register is not updated with
the CCR value (found while testing "chk/chk2"
using signal()):

  correctly manage SR in context

We introduce some new non privileged instructions:

  add chk and chk2
  add move16

move16 is used by the kernel when it is compiled only for
68040 (it's a 68040 only instruction).

We add some trivial privileged instructions (most are empty):

  add cpush/cinv
  add reset
  implement fsave/frestore

And finally, we add the privileged instructions to
modify the state register, the Interrupt Stack
Pointer and the 680x0 stack frame formats:

  add 680x0 "move to SR" instruction
  add andi/ori/eori to SR/CCR
  add the Interrupt Stack Pointer
  manage 680x0 stack frames

The next series will introduce the MC68040 MMU.

v7: chk: always update C and N flags
    chk,chk2: add some comments
    chk,chk2: move flush_flags() from the helper to the
    code generator, because otherwise we need
    to do an update_cc_op() before calling the
    helper to be sure env->cc_op and s->cc_op
    are synchronized

v6: introduce cpu_m68k_set_sr() to set SR instead
    of calling helper_set_sr().
    update SR with the content of CCR in the logs
    use helpers as suggested by Richard for chk/chk2
    split move16 in two functions
    use cpu_m68k_set_sr() to set SR in GDB stub and in m68k_cpu_reset()

v5: it is in fact v1, there is no previous version.
    I've messed up with git-publish on an older branch without checking the
    subject prefix. Sorry...

Laurent Vivier (17):
  target-m68k: sync CC_OP before gen_jmp_tb()
  target/m68k: fix gen_get_ccr()
  linux-user,m68k: correctly manage SR in context
  target/m68k: use insn_pc to generate instruction fault address
  target/m68k: add CPU_LOG_INT trace
  target/m68k: manage 680x0 stack frames
  target/m68k: add chk and chk2
  target/m68k: add move16
  target/m68k: softmmu cleanup
  target/m68k: add cpush/cinv
  target/m68k: add reset
  target/m68k: implement fsave/frestore
  target/m68k: move CCR/SR functions
  target/m68k: add 680x0 "move to SR" instruction
  target/m68k: add andi/ori/eori to SR/CCR
  target/m68k: add the Interrupt Stack Pointer
  target/m68k: fix m68k_cpu_dump_state()

 linux-user/main.c       |   7 +
 linux-user/signal.c     |   7 +-
 target/m68k/cpu.c       |  20 +-
 target/m68k/cpu.h       |  84 +++++++-
 target/m68k/gdbstub.c   |   2 +-
 target/m68k/helper.c    |  99 +++++++++-
 target/m68k/helper.h    |  11 +-
 target/m68k/monitor.c   |   1 +
 target/m68k/op_helper.c | 338 +++++++++++++++++++++++++++++++-
 target/m68k/translate.c | 497 ++++++++++++++++++++++++++++++++++++++----------
 10 files changed, 937 insertions(+), 129 deletions(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]