[S390] Fix build errors (fallout from system.h disintegration)
[linux-2.6.git] / arch / s390 / include / asm / mmu.h
index 3b59216..6340178 100644 (file)
@@ -1,15 +1,40 @@
 #ifndef __MMU_H
 #define __MMU_H
 
+#include <linux/errno.h>
+
 typedef struct {
-       struct list_head crst_list;
+       atomic_t attach_count;
+       unsigned int flush_mm;
+       spinlock_t list_lock;
        struct list_head pgtable_list;
+       struct list_head gmap_list;
        unsigned long asce_bits;
        unsigned long asce_limit;
        unsigned long vdso_base;
-       int noexec;
-       int has_pgste;   /* The mmu context has extended page tables */
-       int alloc_pgste; /* cloned contexts will have extended page tables */
+       /* Cloned contexts will be created with extended page tables. */
+       unsigned int alloc_pgste:1;
+       /* The mmu context has extended page tables. */
+       unsigned int has_pgste:1;
 } mm_context_t;
 
+#define INIT_MM_CONTEXT(name)                                                \
+       .context.list_lock    = __SPIN_LOCK_UNLOCKED(name.context.list_lock), \
+       .context.pgtable_list = LIST_HEAD_INIT(name.context.pgtable_list),    \
+       .context.gmap_list = LIST_HEAD_INIT(name.context.gmap_list),
+
+static inline int tprot(unsigned long addr)
+{
+       int rc = -EFAULT;
+
+       asm volatile(
+               "       tprot   0(%1),0\n"
+               "0:     ipm     %0\n"
+               "       srl     %0,28\n"
+               "1:\n"
+               EX_TABLE(0b,1b)
+               : "+d" (rc) : "a" (addr) : "cc");
+       return rc;
+}
+
 #endif