diff --git a/exec.c b/exec.c
index 3859b02d5776d4e011995f1b3b2f2681abbb156e..030118e68edc8d4d1f83f46eaae032c87fe1d009 100644
--- a/exec.c
+++ b/exec.c
@@ -1810,7 +1810,9 @@ static void memory_map_init(void)
     address_space_init(&address_space_io, system_io, "I/O");
 
     memory_listener_register(&core_memory_listener, &address_space_memory);
-    memory_listener_register(&tcg_memory_listener, &address_space_memory);
+    if (tcg_enabled()) {
+        memory_listener_register(&tcg_memory_listener, &address_space_memory);
+    }
 }
 
 MemoryRegion *get_system_memory(void)