M68k pull request 20220927
Align bootinfo tags fix move from sr -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmMyl5ESHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748JGIQAK2xK/DCWCphFWIo9ywhRPupOJb4rEXO JqhBBmmVx+OZcl/MPsHyQlGuvjustB/K8ZojqII50+ZeVG2ECj9lHn+nBBbU3pXT bVkV5FWTFMvbxXpfePbZ9wrWZACVPMchEyswOu8scvsH+N9yP8ZrqNBi/MlNQaYR RCLdHfIUJ43U/KvsOgQxNb2O+ag7wlmPbSk2cuRmGi/cYBHsKRD+kbLp6l5vTqYn 0n/sNVo0HEL6kl3/IOUKNMpgadcIvoAMsJ8TzXarHfBRbN8baCEeO+Evlc1wkgQE pB00jx4cyLX0KOlGhM3H7ezqRDdPJkf2nmlFlQ4Of2YE949ZWN9F27CoeptLeyrF 7UP8MQjumibd6nq8SJSGEN8iMjRLYiTYlRTUeOe18ofoa2JTOeqhfDzWAoVl1XTi SA/3VmdAW7k18C4Wkm6VnrZDVs6RU60bWlyjLJ9lyc6798dG9eeDZMzNhRgOaKib J/w6+UKo0T4auEG7iOu2rt9uIWD0MJHXIYqoUYoKrRR6pwWbXQ0syljNMz2WT1y7 kHoyC7moc5a7VTnKY41DGtZwsl0nqwSNsln+BCSwIAj2DjLkUMEZOUV9Lz9BMsEz RyKKbdVX7iEPQYzKbztdx02sM4E3jEczh1tHOcHxPxF1wsgc1BTP2xNUzUi7ijac MUJ9HMT++X9i =u4p1 -----END PGP SIGNATURE----- Merge tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k into staging M68k pull request 20220927 Align bootinfo tags fix move from sr # -----BEGIN PGP SIGNATURE----- # # iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmMyl5ESHGxhdXJlbnRA # dml2aWVyLmV1AAoJEPMMOL0/L748JGIQAK2xK/DCWCphFWIo9ywhRPupOJb4rEXO # JqhBBmmVx+OZcl/MPsHyQlGuvjustB/K8ZojqII50+ZeVG2ECj9lHn+nBBbU3pXT # bVkV5FWTFMvbxXpfePbZ9wrWZACVPMchEyswOu8scvsH+N9yP8ZrqNBi/MlNQaYR # RCLdHfIUJ43U/KvsOgQxNb2O+ag7wlmPbSk2cuRmGi/cYBHsKRD+kbLp6l5vTqYn # 0n/sNVo0HEL6kl3/IOUKNMpgadcIvoAMsJ8TzXarHfBRbN8baCEeO+Evlc1wkgQE # pB00jx4cyLX0KOlGhM3H7ezqRDdPJkf2nmlFlQ4Of2YE949ZWN9F27CoeptLeyrF # 7UP8MQjumibd6nq8SJSGEN8iMjRLYiTYlRTUeOe18ofoa2JTOeqhfDzWAoVl1XTi # SA/3VmdAW7k18C4Wkm6VnrZDVs6RU60bWlyjLJ9lyc6798dG9eeDZMzNhRgOaKib # J/w6+UKo0T4auEG7iOu2rt9uIWD0MJHXIYqoUYoKrRR6pwWbXQ0syljNMz2WT1y7 # kHoyC7moc5a7VTnKY41DGtZwsl0nqwSNsln+BCSwIAj2DjLkUMEZOUV9Lz9BMsEz # RyKKbdVX7iEPQYzKbztdx02sM4E3jEczh1tHOcHxPxF1wsgc1BTP2xNUzUi7ijac # MUJ9HMT++X9i # =u4p1 # -----END PGP SIGNATURE----- # gpg: Signature made Tue 27 Sep 2022 02:26:25 EDT # 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 * tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k: m68k: align bootinfo strings and data to 4 bytes target/m68k: use M68K_FEATURE_MOVEFROMSR_PRIV feature for move_from_sr privilege check target/m68k: increase size of m68k CPU features from uint32_t to uint64_t Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
5c3c21ebd9
@ -48,13 +48,14 @@
|
||||
stw_phys(as, base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, \
|
||||
(sizeof(struct bi_record) + strlen(string) + 2) & ~1); \
|
||||
(sizeof(struct bi_record) + strlen(string) + \
|
||||
1 /* null termination */ + 3 /* padding */) & ~3); \
|
||||
base += 2; \
|
||||
for (i = 0; string[i]; i++) { \
|
||||
stb_phys(as, base++, string[i]); \
|
||||
} \
|
||||
stb_phys(as, base++, 0); \
|
||||
base = (base + 1) & ~1; \
|
||||
base = (base + 3) & ~3; \
|
||||
} while (0)
|
||||
|
||||
#define BOOTINFODATA(as, base, id, data, len) \
|
||||
@ -63,13 +64,14 @@
|
||||
stw_phys(as, base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, \
|
||||
(sizeof(struct bi_record) + len + 3) & ~1); \
|
||||
(sizeof(struct bi_record) + len + \
|
||||
2 /* length field */ + 3 /* padding */) & ~3); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, len); \
|
||||
base += 2; \
|
||||
for (i = 0; i < len; ++i) { \
|
||||
stb_phys(as, base++, data[i]); \
|
||||
} \
|
||||
base = (base + 1) & ~1; \
|
||||
base = (base + 3) & ~3; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
@ -38,12 +38,12 @@ static bool m68k_cpu_has_work(CPUState *cs)
|
||||
|
||||
static void m68k_set_feature(CPUM68KState *env, int feature)
|
||||
{
|
||||
env->features |= (1u << feature);
|
||||
env->features |= BIT_ULL(feature);
|
||||
}
|
||||
|
||||
static void m68k_unset_feature(CPUM68KState *env, int feature)
|
||||
{
|
||||
env->features &= (-1u - (1u << feature));
|
||||
env->features &= ~BIT_ULL(feature);
|
||||
}
|
||||
|
||||
static void m68k_cpu_reset(DeviceState *dev)
|
||||
@ -102,6 +102,7 @@ static void m5206_cpu_initfn(Object *obj)
|
||||
CPUM68KState *env = &cpu->env;
|
||||
|
||||
m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
|
||||
}
|
||||
|
||||
/* Base feature set, including isns. for m68k family */
|
||||
@ -129,6 +130,7 @@ static void m68010_cpu_initfn(Object *obj)
|
||||
m68k_set_feature(env, M68K_FEATURE_RTD);
|
||||
m68k_set_feature(env, M68K_FEATURE_BKPT);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEC);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -241,6 +243,7 @@ static void m5208_cpu_initfn(Object *obj)
|
||||
m68k_set_feature(env, M68K_FEATURE_BRAL);
|
||||
m68k_set_feature(env, M68K_FEATURE_CF_EMAC);
|
||||
m68k_set_feature(env, M68K_FEATURE_USP);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
|
||||
}
|
||||
|
||||
static void cfv4e_cpu_initfn(Object *obj)
|
||||
@ -254,6 +257,7 @@ static void cfv4e_cpu_initfn(Object *obj)
|
||||
m68k_set_feature(env, M68K_FEATURE_CF_FPU);
|
||||
m68k_set_feature(env, M68K_FEATURE_CF_EMAC);
|
||||
m68k_set_feature(env, M68K_FEATURE_USP);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
|
||||
}
|
||||
|
||||
static void any_cpu_initfn(Object *obj)
|
||||
@ -275,6 +279,7 @@ static void any_cpu_initfn(Object *obj)
|
||||
m68k_set_feature(env, M68K_FEATURE_USP);
|
||||
m68k_set_feature(env, M68K_FEATURE_EXT_FULL);
|
||||
m68k_set_feature(env, M68K_FEATURE_WORD_INDEX);
|
||||
m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
|
||||
}
|
||||
|
||||
static void m68k_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||
|
@ -154,7 +154,7 @@ typedef struct CPUArchState {
|
||||
struct {} end_reset_fields;
|
||||
|
||||
/* Fields from here on are preserved across CPU reset. */
|
||||
uint32_t features;
|
||||
uint64_t features;
|
||||
} CPUM68KState;
|
||||
|
||||
/*
|
||||
@ -537,11 +537,13 @@ enum m68k_features {
|
||||
M68K_FEATURE_UNALIGNED_DATA,
|
||||
/* TRAPcc insn. (680[2346]0, and CPU32) */
|
||||
M68K_FEATURE_TRAPCC,
|
||||
/* MOVE from SR privileged (from 68010) */
|
||||
M68K_FEATURE_MOVEFROMSR_PRIV,
|
||||
};
|
||||
|
||||
static inline int m68k_feature(CPUM68KState *env, int feature)
|
||||
static inline bool m68k_feature(CPUM68KState *env, int feature)
|
||||
{
|
||||
return (env->features & (1u << feature)) != 0;
|
||||
return (env->features & BIT_ULL(feature)) != 0;
|
||||
}
|
||||
|
||||
void m68k_cpu_list(void);
|
||||
|
@ -4624,7 +4624,7 @@ DISAS_INSN(move_from_sr)
|
||||
{
|
||||
TCGv sr;
|
||||
|
||||
if (IS_USER(s) && !m68k_feature(env, M68K_FEATURE_M68K)) {
|
||||
if (IS_USER(s) && m68k_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV)) {
|
||||
gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user