diff --git a/exec.c b/exec.c
index aa54eb1..16973a6 100644
--- a/exec.c
+++ b/exec.c
@@ -3491,24 +3491,13 @@
 static void core_region_add(MemoryListener *listener,
                             MemoryRegionSection *section)
 {
-    if (section->address_space == get_system_memory()) {
-        cpu_register_physical_memory_log(section, section->readonly);
-    } else {
-        iorange_init(&section->mr->iorange, &memory_region_iorange_ops,
-                     section->offset_within_address_space, section->size);
-        ioport_register(&section->mr->iorange);
-    }
+    cpu_register_physical_memory_log(section, section->readonly);
 }
 
 static void core_region_del(MemoryListener *listener,
                             MemoryRegionSection *section)
 {
-    if (section->address_space == get_system_memory()) {
-        cpu_register_physical_memory_log(section, false);
-    } else {
-        isa_unassign_ioport(section->offset_within_address_space,
-                            section->size);
-    }
+    cpu_register_physical_memory_log(section, false);
 }
 
 static void core_log_start(MemoryListener *listener,
@@ -3548,6 +3537,55 @@
 {
 }
 
+static void io_region_add(MemoryListener *listener,
+                          MemoryRegionSection *section)
+{
+    iorange_init(&section->mr->iorange, &memory_region_iorange_ops,
+                 section->offset_within_address_space, section->size);
+    ioport_register(&section->mr->iorange);
+}
+
+static void io_region_del(MemoryListener *listener,
+                          MemoryRegionSection *section)
+{
+    isa_unassign_ioport(section->offset_within_address_space, section->size);
+}
+
+static void io_log_start(MemoryListener *listener,
+                         MemoryRegionSection *section)
+{
+}
+
+static void io_log_stop(MemoryListener *listener,
+                        MemoryRegionSection *section)
+{
+}
+
+static void io_log_sync(MemoryListener *listener,
+                        MemoryRegionSection *section)
+{
+}
+
+static void io_log_global_start(MemoryListener *listener)
+{
+}
+
+static void io_log_global_stop(MemoryListener *listener)
+{
+}
+
+static void io_eventfd_add(MemoryListener *listener,
+                           MemoryRegionSection *section,
+                           bool match_data, uint64_t data, int fd)
+{
+}
+
+static void io_eventfd_del(MemoryListener *listener,
+                           MemoryRegionSection *section,
+                           bool match_data, uint64_t data, int fd)
+{
+}
+
 static MemoryListener core_memory_listener = {
     .region_add = core_region_add,
     .region_del = core_region_del,
@@ -3561,6 +3599,19 @@
     .priority = 0,
 };
 
+static MemoryListener io_memory_listener = {
+    .region_add = io_region_add,
+    .region_del = io_region_del,
+    .log_start = io_log_start,
+    .log_stop = io_log_stop,
+    .log_sync = io_log_sync,
+    .log_global_start = io_log_global_start,
+    .log_global_stop = io_log_global_stop,
+    .eventfd_add = io_eventfd_add,
+    .eventfd_del = io_eventfd_del,
+    .priority = 0,
+};
+
 static void memory_map_init(void)
 {
     system_memory = g_malloc(sizeof(*system_memory));
@@ -3571,7 +3622,8 @@
     memory_region_init(system_io, "io", 65536);
     set_system_io_map(system_io);
 
-    memory_listener_register(&core_memory_listener, NULL);
+    memory_listener_register(&core_memory_listener, system_memory);
+    memory_listener_register(&io_memory_listener, system_io);
 }
 
 MemoryRegion *get_system_memory(void)
