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/cpu.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/cpu.c')
| -rw-r--r-- | target/m68k/cpu.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index e6596de29c..f276335faf 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -114,11 +114,9 @@ static void m68000_cpu_initfn(Object *obj) m68k_set_feature(env, M68K_FEATURE_MOVEP); } -static void m68020_cpu_initfn(Object *obj) +/* common features for 68020, 68030 and 68040 */ +static void m680x0_cpu_common(CPUM68KState *env) { - M68kCPU *cpu = M68K_CPU(obj); - CPUM68KState *env = &cpu->env; - m68k_set_feature(env, M68K_FEATURE_M68000); m68k_set_feature(env, M68K_FEATURE_USP); m68k_set_feature(env, M68K_FEATURE_WORD_INDEX); @@ -136,14 +134,31 @@ static void m68020_cpu_initfn(Object *obj) m68k_set_feature(env, M68K_FEATURE_CHK2); m68k_set_feature(env, M68K_FEATURE_MOVEP); } -#define m68030_cpu_initfn m68020_cpu_initfn + +static void m68020_cpu_initfn(Object *obj) +{ + M68kCPU *cpu = M68K_CPU(obj); + CPUM68KState *env = &cpu->env; + + m680x0_cpu_common(env); + m68k_set_feature(env, M68K_FEATURE_M68020); +} + +static void m68030_cpu_initfn(Object *obj) +{ + M68kCPU *cpu = M68K_CPU(obj); + CPUM68KState *env = &cpu->env; + + m680x0_cpu_common(env); + m68k_set_feature(env, M68K_FEATURE_M68030); +} static void m68040_cpu_initfn(Object *obj) { M68kCPU *cpu = M68K_CPU(obj); CPUM68KState *env = &cpu->env; - m68020_cpu_initfn(obj); + m680x0_cpu_common(env); m68k_set_feature(env, M68K_FEATURE_M68040); } @@ -166,6 +181,7 @@ static void m68060_cpu_initfn(Object *obj) m68k_set_feature(env, M68K_FEATURE_BKPT); m68k_set_feature(env, M68K_FEATURE_RTD); m68k_set_feature(env, M68K_FEATURE_CHK2); + m68k_set_feature(env, M68K_FEATURE_M68060); } static void m5208_cpu_initfn(Object *obj) |