Le 16/06/2019 à 16:23, Lucien Murray-Pitts a écrit : > The BUSCR/PCR CR defines were missing for 68060, and the move_to/from helper > functions were also missing a decode for the 68060 M68K_CR_CAAR CR register. > > Added missing defines, and respective decodes for all three CR registers to > the helpers. > > Although this patch defines them, the implementation is empty in this patch > and these registers will result in a cpu abort - which is the default prior > to this patch. > > This patch aims to reach full coverage of all CR registers within the helpers. > > Signed-off-by: Lucien Murray-Pitts <lucienmp.q...@gmail.com> > --- > target/m68k/cpu.h | 4 ++++ > target/m68k/helper.c | 14 ++++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h > index b5b3db01c9..2386419c42 100644 > --- a/target/m68k/cpu.h > +++ b/target/m68k/cpu.h > @@ -411,6 +411,10 @@ typedef enum { > #define M68K_CR_DACR0 0x006 > #define M68K_CR_DACR1 0x007 > > +/* MC68060 */ > +#define M68K_CR_BUSCR 0x008 > +#define M68K_CR_PCR 0x808 > + > #define M68K_FPIAR_SHIFT 0 > #define M68K_FPIAR (1 << M68K_FPIAR_SHIFT) > #define M68K_FPSR_SHIFT 1 > diff --git a/target/m68k/helper.c b/target/m68k/helper.c > index 5483ce9837..47b352c9c9 100644 > --- a/target/m68k/helper.c > +++ b/target/m68k/helper.c > @@ -257,6 +257,14 @@ void HELPER(m68k_movec_to)(CPUM68KState *env, uint32_t > reg, uint32_t val) > case M68K_CR_DTT1: > env->mmu.ttr[M68K_DTTR1] = val; > return; > + /* Unimplemented Registers */ > + case M68K_CR_CAAR: > + case M68K_CR_PCR: > + case M68K_CR_BUSCR: > + cpu_abort(CPU(cpu), > + "Unimplemented control register write 0x%x = 0x%x\n", > + reg, val); > + return; > } > cpu_abort(CPU(cpu), "Unimplemented control register write 0x%x = 0x%x\n", > reg, val); > @@ -312,6 +320,12 @@ uint32_t HELPER(m68k_movec_from)(CPUM68KState *env, > uint32_t reg) > /* MC68040/MC68LC040 */ > case M68K_CR_DTT1: /* MC68EC040 only: M68K_CR_DACR1 */ > return env->mmu.ttr[M68K_DTTR1]; > + /* Unimplemented Registers */ > + case M68K_CR_CAAR: > + case M68K_CR_PCR: > + case M68K_CR_BUSCR: > + cpu_abort(CPU(cpu), "Unimplemented control register read 0x%x\n", > + reg); > } > cpu_abort(CPU(cpu), "Unimplemented control register read 0x%x\n", > reg); >
Reviewed-by: Laurent Vivier <laur...@vivier.eu>