Browse Source

target-m68k: Build the opcode table only once to avoid multithreading issues

Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <rth@twiddle.net>
pull/22/merge
John Paul Adrian Glaubitz 11 years ago
committed by Laurent Vivier
parent
commit
b208525797
  1. 5
      target-m68k/translate.c

5
target-m68k/translate.c

@ -2841,6 +2841,11 @@ register_opcode (disas_proc proc, uint16_t opcode, uint16_t mask)
Later insn override earlier ones. */ Later insn override earlier ones. */
void register_m68k_insns (CPUM68KState *env) void register_m68k_insns (CPUM68KState *env)
{ {
/* Build the opcode table only once to avoid
multithreading issues. */
if (opcode_table[0] != NULL) {
return;
}
#define INSN(name, opcode, mask, feature) do { \ #define INSN(name, opcode, mask, feature) do { \
if (m68k_feature(env, M68K_FEATURE_##feature)) \ if (m68k_feature(env, M68K_FEATURE_##feature)) \
register_opcode(disas_##name, 0x##opcode, 0x##mask); \ register_opcode(disas_##name, 0x##opcode, 0x##mask); \

Loading…
Cancel
Save