um: take ldt.h to arch/x86/um/asm/mm_context.h
[pandora-kernel.git] / arch / x86 / um / asm / mm_context.h
similarity index 55%
rename from arch/x86/um/shared/sysdep/host_ldt.h
rename to arch/x86/um/asm/mm_context.h
index 246ff7a..4a73d63 100644 (file)
@@ -1,8 +1,39 @@
-#ifndef __ASM_HOST_LDT_H
-#define __ASM_HOST_LDT_H
+/*
+ * Copyright (C) 2004 Fujitsu Siemens Computers GmbH
+ * Licensed under the GPL
+ *
+ * Author: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
+ */
 
+#ifndef __ASM_LDT_H
+#define __ASM_LDT_H
+
+#include <linux/mutex.h>
 #include <asm/ldt.h>
 
+extern void ldt_host_info(void);
+
+#define LDT_PAGES_MAX \
+       ((LDT_ENTRIES * LDT_ENTRY_SIZE)/PAGE_SIZE)
+#define LDT_ENTRIES_PER_PAGE \
+       (PAGE_SIZE/LDT_ENTRY_SIZE)
+#define LDT_DIRECT_ENTRIES \
+       ((LDT_PAGES_MAX*sizeof(void *))/LDT_ENTRY_SIZE)
+
+struct ldt_entry {
+       __u32 a;
+       __u32 b;
+};
+
+typedef struct uml_ldt {
+       int entry_count;
+       struct mutex lock;
+       union {
+               struct ldt_entry * pages[LDT_PAGES_MAX];
+               struct ldt_entry entries[LDT_DIRECT_ENTRIES];
+       } u;
+} uml_ldt_t;
+
 #define LDT_entry_a(info) \
        ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
 
@@ -34,4 +65,8 @@
 #define LDT_empty(info) (_LDT_empty(info))
 #endif
 
+struct uml_arch_mm_context {
+       uml_ldt_t ldt;
+};
+
 #endif