Minor - simplify add_e820() function.

Make code a little simpler.
This also fixes a corner-case where a hole could be incorrectly added
    to the map.
diff --git a/src/memmap.c b/src/memmap.c
index c56f6f5..5b7eba5 100644
--- a/src/memmap.c
+++ b/src/memmap.c
@@ -62,18 +62,15 @@
         // Huh?  Nothing to do.
         return;
 
+    // Find position of new item (splitting existing item if needed).
     u64 end = start + size;
     int i;
     for (i=0; i<e820_count; i++) {
         struct e820entry *e = &e820_list[i];
-        if (end < e->start)
-            // Simple insertion point.
-            break;
         u64 e_end = e->start + e->size;
         if (start > e_end)
-            // No overlap.
             continue;
-        // New item overlaps (or borders) an existing one.
+        // Found position - check if an existing item needs to be split.
         if (start > e->start) {
             e->size = start - e->start;
             i++;
@@ -88,37 +85,35 @@
                 remove_e820(i);
             }
         }
-        if (type != E820_HOLE) {
-            insert_e820(i, start, size, type);
-            i++;
-        }
-        // Remove all existing items that are completely overlapped.
-        while (i<e820_count) {
-            e = &e820_list[i];
-            if (end < e->start)
-                // No overlap - done.
-                break;
-            e_end = e->start + e->size;
-            if (end >= e_end) {
-                // Existing item completely overlapped - remove it.
-                remove_e820(i);
-                continue;
-            }
-            // Not completely overlapped - adjust its start.
-            e->start = end;
-            e->size = e_end - e->start;
-            if (type == e->type) {
-                // Same type - merge them.
-                (e-1)->size += e->size;
-                remove_e820(i);
-            }
-            break;
-        }
-        //dump_map();
-        return;
+        break;
     }
-    // Just insert item.
-    insert_e820(i, start, size, type);
+    // Insert new item.
+    if (type != E820_HOLE) {
+        insert_e820(i, start, size, type);
+        i++;
+    }
+    // Remove/adjust existing items that are overlapping.
+    while (i<e820_count) {
+        struct e820entry *e = &e820_list[i];
+        if (end < e->start)
+            // No overlap - done.
+            break;
+        u64 e_end = e->start + e->size;
+        if (end >= e_end) {
+            // Existing item completely overlapped - remove it.
+            remove_e820(i);
+            continue;
+        }
+        // Not completely overlapped - adjust its start.
+        e->start = end;
+        e->size = e_end - e->start;
+        if (type == e->type) {
+            // Same type - merge them.
+            (e-1)->size += e->size;
+            remove_e820(i);
+        }
+        break;
+    }
     //dump_map();
 }