summaryrefslogtreecommitdiffstats
path: root/hw/i386/e820_memory_layout.h
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé2019-08-19 00:54:01 +0200
committerPaolo Bonzini2019-09-16 17:13:07 +0200
commitd6d059ca07ae907b8945f88c382fb54d43f9f03a (patch)
tree17b22b48406ffe336ac52f93552247642fd5bef5 /hw/i386/e820_memory_layout.h
parenthw/i386/pc: Use e820_get_num_entries() to access e820_entries (diff)
downloadqemu-d6d059ca07ae907b8945f88c382fb54d43f9f03a.tar.gz
qemu-d6d059ca07ae907b8945f88c382fb54d43f9f03a.tar.xz
qemu-d6d059ca07ae907b8945f88c382fb54d43f9f03a.zip
hw/i386/pc: Extract e820 memory layout code
Suggested-by: Samuel Ortiz <sameo@linux.intel.com> Reviewed-by: Li Qiang <liq3ea@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20190818225414.22590-3-philmd@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/i386/e820_memory_layout.h')
-rw-r--r--hw/i386/e820_memory_layout.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/hw/i386/e820_memory_layout.h b/hw/i386/e820_memory_layout.h
new file mode 100644
index 0000000000..2a0ceb8b9c
--- /dev/null
+++ b/hw/i386/e820_memory_layout.h
@@ -0,0 +1,42 @@
+/*
+ * QEMU BIOS e820 routines
+ *
+ * Copyright (c) 2003-2004 Fabrice Bellard
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifndef HW_I386_E820_H
+#define HW_I386_E820_H
+
+/* e820 types */
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+
+#define E820_NR_ENTRIES 16
+
+struct e820_entry {
+ uint64_t address;
+ uint64_t length;
+ uint32_t type;
+} QEMU_PACKED __attribute((__aligned__(4)));
+
+struct e820_table {
+ uint32_t count;
+ struct e820_entry entry[E820_NR_ENTRIES];
+} QEMU_PACKED __attribute((__aligned__(4)));
+
+extern struct e820_table e820_reserve;
+extern struct e820_entry *e820_table;
+
+int e820_add_entry(uint64_t address, uint64_t length, uint32_t type);
+int e820_get_num_entries(void);
+bool e820_get_entry(int index, uint32_t type,
+ uint64_t *address, uint64_t *length);
+
+
+
+#endif