diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2020-01-07 17:08:21 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2020-01-07 17:08:21 +0000 |
| commit | 035eed4c0d257c905a556fa0f4865a0c077b4e7f (patch) | |
| tree | 8ac776fc4c444da977909be32c5aa87f7d0e4b96 /target/m68k/helper.c | |
| parent | 973d306dd64bba7fc13f7e8b12ef43c089243d31 (diff) | |
| parent | 18b6102e51bb317d25ee61b49b7b56702b79560c (diff) | |
| download | focaccia-qemu-035eed4c0d257c905a556fa0f4865a0c077b4e7f.tar.gz focaccia-qemu-035eed4c0d257c905a556fa0f4865a0c077b4e7f.zip | |
Merge remote-tracking branch 'remotes/vivier/tags/q800-for-5.0-pull-request' into staging
m68k: fix CACR valid bits
q800: add a fake mac rom reset (used by linux)
fix and improve PRAM emulation
# gpg: Signature made Tue 07 Jan 2020 13:25:50 GMT
# gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg: issuer "laurent@vivier.eu"
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C
* remotes/vivier/tags/q800-for-5.0-pull-request:
target/m68k: only change valid bits in CACR
q800: implement mac rom reset function for BIOS-less mode
q800: add a block backend to the PRAM
q800: fix mac_via RTC PRAM commands
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/m68k/helper.c')
| -rw-r--r-- | target/m68k/helper.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/target/m68k/helper.c b/target/m68k/helper.c index ae766a6cb0..baf7729af0 100644 --- a/target/m68k/helper.c +++ b/target/m68k/helper.c @@ -203,9 +203,17 @@ void HELPER(m68k_movec_to)(CPUM68KState *env, uint32_t reg, uint32_t val) case M68K_CR_VBR: env->vbr = val; return; - /* MC680[234]0 */ + /* MC680[2346]0 */ case M68K_CR_CACR: - env->cacr = val; + if (m68k_feature(env, M68K_FEATURE_M68020)) { + env->cacr = val & 0x0000000f; + } else if (m68k_feature(env, M68K_FEATURE_M68030)) { + env->cacr = val & 0x00003f1f; + } else if (m68k_feature(env, M68K_FEATURE_M68040)) { + env->cacr = val & 0x80008000; + } else if (m68k_feature(env, M68K_FEATURE_M68060)) { + env->cacr = val & 0xf8e0e000; + } m68k_switch_sp(env); return; /* MC680[34]0 */ |