aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@localhost.localdomain <kaf24@localhost.localdomain>2006-08-13 17:47:59 +0100
committerkaf24@localhost.localdomain <kaf24@localhost.localdomain>2006-08-13 17:47:59 +0100
commit848ded1e096d01c634924b5c8306fa5143de8293 (patch)
tree2ce32611896fcf989e322f4a85b406ca9abca7c2
parentc730da041b1e73dc3e430e37a4e19ac446e74fd2 (diff)
downloadxen-848ded1e096d01c634924b5c8306fa5143de8293.tar.gz
xen-848ded1e096d01c634924b5c8306fa5143de8293.tar.bz2
xen-848ded1e096d01c634924b5c8306fa5143de8293.zip
[XEN] Clean up e820 definitions. Define shared set in hvm public dir.
Signed-off-by: Keir Fraser <keir@xensource.com>
-rw-r--r--tools/firmware/vmxassist/setup.c8
-rw-r--r--tools/firmware/vmxassist/util.h20
-rw-r--r--tools/libxc/xc_hvm_build.c22
-rw-r--r--xen/arch/x86/e820.c12
-rw-r--r--xen/arch/x86/hvm/hvm.c1
-rw-r--r--xen/arch/x86/mm.c1
-rw-r--r--xen/include/asm-x86/e820.h31
-rw-r--r--xen/include/asm-x86/hvm/domain.h1
-rw-r--r--xen/include/asm-x86/page.h5
-rw-r--r--xen/include/public/hvm/e820.h27
10 files changed, 44 insertions, 84 deletions
diff --git a/tools/firmware/vmxassist/setup.c b/tools/firmware/vmxassist/setup.c
index fcaf676e44..07ef70a1df 100644
--- a/tools/firmware/vmxassist/setup.c
+++ b/tools/firmware/vmxassist/setup.c
@@ -56,7 +56,7 @@ struct e820entry e820map[] = {
{ 0x00000000000A0000ULL, 0x0000000000020000ULL, E820_IO },
{ 0x00000000000C0000ULL, 0x0000000000040000ULL, E820_RESERVED },
{ 0x0000000000100000ULL, 0x0000000000000000ULL, E820_RAM },
- { 0x0000000000000000ULL, 0x0000000000001000ULL, E820_SHARED },
+ { 0x0000000000000000ULL, 0x0000000000001000ULL, E820_SHARED_PAGE },
{ 0x0000000000000000ULL, 0x0000000000003000ULL, E820_NVS },
{ 0x0000000000003000ULL, 0x000000000000A000ULL, E820_ACPI },
{ 0x00000000FEC00000ULL, 0x0000000001400000ULL, E820_IO },
@@ -94,13 +94,13 @@ banner(void)
e820map[6].addr = memory_size;
e820map[7].addr += memory_size;
- *LINUX_E820_MAP_NR = sizeof(e820map)/sizeof(e820map[0]);
- memcpy(LINUX_E820_MAP, e820map, sizeof(e820map));
+ *E820_MAP_NR = sizeof(e820map)/sizeof(e820map[0]);
+ memcpy(E820_MAP, e820map, sizeof(e820map));
#endif
printf("Memory size %ld MB\n", memory_size >> 20);
printf("E820 map:\n");
- print_e820_map(LINUX_E820_MAP, *LINUX_E820_MAP_NR);
+ print_e820_map(E820_MAP, *E820_MAP_NR);
printf("\n");
}
diff --git a/tools/firmware/vmxassist/util.h b/tools/firmware/vmxassist/util.h
index 37a539c7e5..b2ace92b8f 100644
--- a/tools/firmware/vmxassist/util.h
+++ b/tools/firmware/vmxassist/util.h
@@ -23,23 +23,9 @@
#include <stdarg.h>
#include <vm86.h>
-
-#define LINUX_E820_MAP_NR ((unsigned char *)0x901E8)
-#define LINUX_E820_MAP ((struct e820entry *)0x902D0)
-
-#define E820_RAM 1
-#define E820_RESERVED 2
-#define E820_ACPI 3
-#define E820_NVS 4
-#define E820_IO 16
-#define E820_SHARED 17
-
-struct e820entry {
- unsigned long long addr;
- unsigned long long size;
- unsigned long type;
-} __attribute__((packed));
-
+#include <xen/hvm/e820.h>
+#define E820_MAP_NR ((unsigned char *)E820_MAP_PAGE + E820_MAP_NR_OFFSET)
+#define E820_MAP ((struct e820entry *)(E820_MAP_PAGE + E820_MAP_OFFSET))
#define offsetof(type, member) ((unsigned) &((type *)0)->member)
diff --git a/tools/libxc/xc_hvm_build.c b/tools/libxc/xc_hvm_build.c
index 3aebbbe8ef..08d2299823 100644
--- a/tools/libxc/xc_hvm_build.c
+++ b/tools/libxc/xc_hvm_build.c
@@ -14,30 +14,10 @@
#include <xen/hvm/hvm_info_table.h>
#include <xen/hvm/ioreq.h>
#include <xen/hvm/params.h>
+#include <xen/hvm/e820.h>
#define HVM_LOADER_ENTR_ADDR 0x00100000
-#define E820MAX 128
-
-#define E820_RAM 1
-#define E820_RESERVED 2
-#define E820_ACPI 3
-#define E820_NVS 4
-#define E820_IO 16
-#define E820_SHARED_PAGE 17
-#define E820_XENSTORE 18
-#define E820_BUFFERED_IO 19
-
-#define E820_MAP_PAGE 0x00090000
-#define E820_MAP_NR_OFFSET 0x000001E8
-#define E820_MAP_OFFSET 0x000002D0
-
-struct e820entry {
- uint64_t addr;
- uint64_t size;
- uint32_t type;
-} __attribute__((packed));
-
static int
parseelfimage(
char *elfbase, unsigned long elfsize, struct domain_setup_info *dsi);
diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
index ad2bfd95e5..bbc147139c 100644
--- a/xen/arch/x86/e820.c
+++ b/xen/arch/x86/e820.c
@@ -2,6 +2,7 @@
#include <xen/init.h>
#include <xen/lib.h>
#include <asm/e820.h>
+#include <asm/page.h>
/* opt_mem: Limit of physical RAM. Any RAM beyond this point is ignored. */
unsigned long long opt_mem;
@@ -30,16 +31,7 @@ static void __init add_memory_region(unsigned long long start,
}
} /* add_memory_region */
-#define E820_DEBUG 1
-
-#ifndef NDEBUG
-#define __init_unless_debugging
-#else
-#define __init_unless_debugging __init
-#endif
-
-void __init_unless_debugging
-print_e820_memory_map(struct e820entry *map, int entries)
+static void __init print_e820_memory_map(struct e820entry *map, int entries)
{
int i;
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index eb868ab738..3e1cfa44d2 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -31,6 +31,7 @@
#include <xen/guest_access.h>
#include <xen/event.h>
#include <asm/current.h>
+#include <asm/e820.h>
#include <asm/io.h>
#include <asm/shadow.h>
#include <asm/regs.h>
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 39bcc6c1f0..35c73a83a5 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -105,6 +105,7 @@
#include <asm/io.h>
#include <asm/ldt.h>
#include <asm/x86_emulate.h>
+#include <asm/e820.h>
#include <public/memory.h>
#ifdef VERBOSE
diff --git a/xen/include/asm-x86/e820.h b/xen/include/asm-x86/e820.h
index 8053fbd790..7730ce4a4e 100644
--- a/xen/include/asm-x86/e820.h
+++ b/xen/include/asm-x86/e820.h
@@ -1,30 +1,10 @@
#ifndef __E820_HEADER
#define __E820_HEADER
-#include <asm/page.h>
+#include <public/hvm/e820.h>
#define E820MAX 128
-#define E820_RAM 1
-#define E820_RESERVED 2
-#define E820_ACPI 3
-#define E820_NVS 4
-#define E820_IO 16
-#define E820_SHARED_PAGE 17
-#define E820_XENSTORE 18
-#define E820_BUFFERED_IO 19
-
-#define E820_MAP_PAGE 0x00090000
-#define E820_MAP_NR_OFFSET 0x000001E8
-#define E820_MAP_OFFSET 0x000002D0
-
-#ifndef __ASSEMBLY__
-struct e820entry {
- u64 addr;
- u64 size;
- u32 type;
-} __attribute__((packed));
-
struct e820map {
int nr_map;
struct e820entry map[E820MAX];
@@ -33,13 +13,4 @@ struct e820map {
extern unsigned long init_e820(struct e820entry *, int *);
extern struct e820map e820;
-#ifndef NDEBUG
-extern void print_e820_memory_map(struct e820entry *map, int entries);
-#endif
-
-#endif /*!__ASSEMBLY__*/
-
-#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
-#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
-
#endif /*__E820_HEADER*/
diff --git a/xen/include/asm-x86/hvm/domain.h b/xen/include/asm-x86/hvm/domain.h
index c69d692502..6561519cb1 100644
--- a/xen/include/asm-x86/hvm/domain.h
+++ b/xen/include/asm-x86/hvm/domain.h
@@ -22,7 +22,6 @@
#ifndef __ASM_X86_HVM_DOMAIN_H__
#define __ASM_X86_HVM_DOMAIN_H__
-#include <asm/e820.h>
#include <asm/hvm/vpic.h>
#include <asm/hvm/vpit.h>
#include <asm/hvm/vlapic.h>
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index b0c14591ef..6432402066 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -354,7 +354,10 @@ map_pages_to_xen(
#endif /* !__ASSEMBLY__ */
-#endif /* __I386_PAGE_H__ */
+#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
+#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
+
+#endif /* __X86_PAGE_H__ */
/*
* Local variables:
diff --git a/xen/include/public/hvm/e820.h b/xen/include/public/hvm/e820.h
new file mode 100644
index 0000000000..f2f8889e7d
--- /dev/null
+++ b/xen/include/public/hvm/e820.h
@@ -0,0 +1,27 @@
+#ifndef __XEN_PUBLIC_HVM_E820_H__
+#define __XEN_PUBLIC_HVM_E820_H__
+
+/* PC BIOS standard E820 types. */
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+
+/* Xen HVM extended E820 types. */
+#define E820_IO 16
+#define E820_SHARED_PAGE 17
+#define E820_XENSTORE 18
+#define E820_BUFFERED_IO 19
+
+/* E820 location in HVM virtual address space. */
+#define E820_MAP_PAGE 0x00090000
+#define E820_MAP_NR_OFFSET 0x000001E8
+#define E820_MAP_OFFSET 0x000002D0
+
+struct e820entry {
+ uint64_t addr;
+ uint64_t size;
+ uint32_t type;
+} __attribute__((packed));
+
+#endif /* __XEN_PUBLIC_HVM_E820_H__ */