Signed-off-by: Bryce Lanham <blan...@gmail.com> --- target-m68k/helper.c | 44 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/target-m68k/helper.c b/target-m68k/helper.c index 71294c0..5fa5b06 100644 --- a/target-m68k/helper.c +++ b/target-m68k/helper.c @@ -480,9 +480,25 @@ void HELPER(movec_to)(CPUM68KState * env, uint32_t reg, uint32_t val) env->cacr = val; m68k_switch_sp(env); break; - case 0x04: case 0x05: case 0x06: case 0x07: /* ACR[0-3] */ - /* TODO: Implement Access Control Registers. */ - break; + case 0x03: /* MMU Translation Control */ + env->mmu.tc = val; + break; + /*Translation/Access Control Registers*/ + case 0x04: + env->itt0 = val; + return; + case 0x05: + env->itt1 = val; + break; + case 0x06: + env->dtt0 = val; + break; + case 0x07: + env->dtt1 = val; + break; + case 0x800: /* USP */ + env->sp[M68K_USP] = val; + break; case 0x801: /* VBR */ env->vbr = val; break; @@ -496,14 +512,26 @@ void HELPER(movec_to)(CPUM68KState * env, uint32_t reg, uint32_t val) uint32_t HELPER(movec_from)(CPUM68KState * env, uint32_t reg) { switch (reg) { + case 0x00: /* SFC */ + return env->sfc; + case 0x01: /* DFC */ + return env->dfc; case 0x02: /* CACR */ - return env->cacr; - case 0x04: case 0x05: case 0x06: case 0x07: /* ACR[0-3] */ - /* TODO: Implement Access Control Registers. */ - return 0; + return env->cacr; + case 0x03: /*MMU TC*/ + return env->mmu.tc; + case 0x04: + return env->itt0; + case 0x05: + return env->itt1; + case 0x06: + return env->dtt0; + case 0x07: + return env->dtt1; + case 0x800:/*USP*/ + return env->sp[M68K_USP]; case 0x801: /* VBR */ return env->vbr; - break; /* TODO: Implement control registers. */ default: cpu_abort(env, "Unimplemented control register read 0x%x\n", -- 1.7.2.3