OSDN Git Service

target-m68k: Build the opcode table only once to avoid multithreading issues
authorJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Wed, 3 Feb 2016 09:22:35 +0000 (10:22 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Tue, 25 Oct 2016 18:54:47 +0000 (20:54 +0200)
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>
target-m68k/translate.c

index deb5a58..eecb32b 100644 (file)
@@ -2841,6 +2841,11 @@ register_opcode (disas_proc proc, uint16_t opcode, uint16_t mask)
    Later insn override earlier ones.  */
 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 { \
     if (m68k_feature(env, M68K_FEATURE_##feature)) \
         register_opcode(disas_##name, 0x##opcode, 0x##mask); \