11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * include/asm-s390/page.h 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * S390 version 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Author(s): Hartmut Penner (hp@de.ibm.com) 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _S390_PAGE_H 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _S390_PAGE_H 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1252480ee5206a3fe3a61b5529ce063202c60b8b27Sam Ravnborg#include <linux/const.h> 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/types.h> 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* PAGE_SHIFT determines the page size */ 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PAGE_SHIFT 12 1752480ee5206a3fe3a61b5529ce063202c60b8b27Sam Ravnborg#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PAGE_MASK (~(PAGE_SIZE-1)) 190b642ede47969d4180b0922d982777fe64379228Peter Oberparleiter#define PAGE_DEFAULT_ACC 0 200b642ede47969d4180b0922d982777fe64379228Peter Oberparleiter#define PAGE_DEFAULT_KEY (PAGE_DEFAULT_ACC << 4) 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2253492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define HPAGE_SHIFT 20 2353492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define HPAGE_SIZE (1UL << HPAGE_SHIFT) 2453492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define HPAGE_MASK (~(HPAGE_SIZE - 1)) 2553492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) 2653492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer 2753492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define ARCH_HAS_SETCLEAR_HUGE_PTE 2853492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define ARCH_HAS_HUGE_PTE_TYPE 2953492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define ARCH_HAS_PREPARE_HUGEPAGE 3053492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer#define ARCH_HAS_HUGEPAGE_CLEAR_FLUSH 3153492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer 32274f5946dcb7c970455067be9e13a22174787592David Woodhouse#include <asm/setup.h> 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __ASSEMBLY__ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void clear_page(void *page) 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3753492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer if (MACHINE_HAS_PFMF) { 3853492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer asm volatile( 3953492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer " .insn rre,0xb9af0000,%0,%1" 4053492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer : : "d" (0x10000), "a" (page) : "memory", "cc"); 4153492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer } else { 4253492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer register unsigned long reg1 asm ("1") = 0; 4353492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer register void *reg2 asm ("2") = page; 4453492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer register unsigned long reg3 asm ("3") = 4096; 4553492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer asm volatile( 4653492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer " mvcl 2,0" 4753492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer : "+d" (reg2), "+d" (reg3) : "d" (reg1) 4853492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer : "memory", "cc"); 4953492b1de46a7576170e865062ffcfc93bb5650bGerald Schaefer } 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void copy_page(void *to, void *from) 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 5494c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky if (MACHINE_HAS_MVPG) { 5594c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky register unsigned long reg0 asm ("0") = 0; 5694c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky asm volatile( 5794c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvpg %0,%1" 5894c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky : : "a" (to), "a" (from), "d" (reg0) 5994c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky : "memory", "cc"); 6094c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky } else 6194c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky asm volatile( 6294c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 0(256,%0),0(%1)\n" 6394c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 256(256,%0),256(%1)\n" 6494c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 512(256,%0),512(%1)\n" 6594c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 768(256,%0),768(%1)\n" 6694c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 1024(256,%0),1024(%1)\n" 6794c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 1280(256,%0),1280(%1)\n" 6894c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 1536(256,%0),1536(%1)\n" 6994c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 1792(256,%0),1792(%1)\n" 7094c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 2048(256,%0),2048(%1)\n" 7194c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 2304(256,%0),2304(%1)\n" 7294c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 2560(256,%0),2560(%1)\n" 7394c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 2816(256,%0),2816(%1)\n" 7494c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 3072(256,%0),3072(%1)\n" 7594c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 3328(256,%0),3328(%1)\n" 7694c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 3584(256,%0),3584(%1)\n" 7794c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky " mvc 3840(256,%0),3840(%1)\n" 7894c12cc7d196bab34aaa98d38521549fa1e5ef76Martin Schwidefsky : : "a" (to), "a" (from) : "memory"); 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define clear_user_page(page, vaddr, pg) clear_page(page) 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 84769848c03895b63e5662eb7e4ec8c4866f7d0183Mel Gorman#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ 85769848c03895b63e5662eb7e4ec8c4866f7d0183Mel Gorman alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr) 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * These are used to make use of C type-checking.. 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { unsigned long pgprot; } pgprot_t; 93b2fa47e6bf5148aa6dbf22ec79f18141b421eebaMartin Schwidefskytypedef struct { unsigned long pgste; } pgste_t; 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { unsigned long pte; } pte_t; 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { unsigned long pmd; } pmd_t; 96190a1d722a59725706daf832bc8a511ed62f249dMartin Schwidefskytypedef struct { unsigned long pud; } pud_t; 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { unsigned long pgd; } pgd_t; 98146e4b3c8b92071b18f0b2e6f47165bad4f9e825Martin Schwidefskytypedef pte_t *pgtable_t; 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 100146e4b3c8b92071b18f0b2e6f47165bad4f9e825Martin Schwidefsky#define pgprot_val(x) ((x).pgprot) 101b2fa47e6bf5148aa6dbf22ec79f18141b421eebaMartin Schwidefsky#define pgste_val(x) ((x).pgste) 102146e4b3c8b92071b18f0b2e6f47165bad4f9e825Martin Schwidefsky#define pte_val(x) ((x).pte) 103146e4b3c8b92071b18f0b2e6f47165bad4f9e825Martin Schwidefsky#define pmd_val(x) ((x).pmd) 104190a1d722a59725706daf832bc8a511ed62f249dMartin Schwidefsky#define pud_val(x) ((x).pud) 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define pgd_val(x) ((x).pgd) 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 107b2fa47e6bf5148aa6dbf22ec79f18141b421eebaMartin Schwidefsky#define __pgste(x) ((pgste_t) { (x) } ) 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pte(x) ((pte_t) { (x) } ) 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pmd(x) ((pmd_t) { (x) } ) 110b2fa47e6bf5148aa6dbf22ec79f18141b421eebaMartin Schwidefsky#define __pud(x) ((pud_t) { (x) } ) 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pgd(x) ((pgd_t) { (x) } ) 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pgprot(x) ((pgprot_t) { (x) } ) 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1142d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefskystatic inline void page_set_storage_key(unsigned long addr, 1152d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky unsigned char skey, int mapped) 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 117e2b8d7af0e3a9234de06606f9151f28cf847a8d6Martin Schwidefsky if (!mapped) 118e2b8d7af0e3a9234de06606f9151f28cf847a8d6Martin Schwidefsky asm volatile(".insn rrf,0xb22b0000,%0,%1,8,0" 119e2b8d7af0e3a9234de06606f9151f28cf847a8d6Martin Schwidefsky : : "d" (skey), "a" (addr)); 120e2b8d7af0e3a9234de06606f9151f28cf847a8d6Martin Schwidefsky else 121e2b8d7af0e3a9234de06606f9151f28cf847a8d6Martin Schwidefsky asm volatile("sske %0,%1" : : "d" (skey), "a" (addr)); 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1242d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefskystatic inline unsigned char page_get_storage_key(unsigned long addr) 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1262d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky unsigned char skey; 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1282d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky asm volatile("iske %0,%1" : "=d" (skey) : "a" (addr)); 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return skey; 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1322d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefskystatic inline int page_reset_referenced(unsigned long addr) 1332d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky{ 1342d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky unsigned int ipm; 1352d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 1362d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky asm volatile( 1372d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky " rrbe 0,%1\n" 1382d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky " ipm %0\n" 1392d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky : "=d" (ipm) : "a" (addr) : "cc"); 1402d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky return !!(ipm & 0x20000000); 1412d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky} 1422d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 1432d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky/* Bits int the storage key */ 1442d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define _PAGE_CHANGED 0x02 /* HW changed bit */ 1452d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define _PAGE_REFERENCED 0x04 /* HW referenced bit */ 1462d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define _PAGE_FP_BIT 0x08 /* HW fetch protection bit */ 1472d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define _PAGE_ACC_BITS 0xf0 /* HW access control bits */ 1482d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 1492d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky/* 1502d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * Test and clear dirty bit in storage key. 1512d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * We can't clear the changed bit atomically. This is a potential 1522d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * race against modification of the referenced bit. This function 1532d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * should therefore only be called if it is not mapped in any 1542d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * address space. 1552d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky */ 1562d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define __HAVE_ARCH_PAGE_TEST_AND_CLEAR_DIRTY 1572d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefskystatic inline int page_test_and_clear_dirty(unsigned long pfn, int mapped) 1582d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky{ 1592d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky unsigned char skey; 1602d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 1612d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky skey = page_get_storage_key(pfn << PAGE_SHIFT); 1622d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky if (!(skey & _PAGE_CHANGED)) 1632d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky return 0; 1642d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky page_set_storage_key(pfn << PAGE_SHIFT, skey & ~_PAGE_CHANGED, mapped); 1652d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky return 1; 1662d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky} 1672d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 1682d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky/* 1692d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky * Test and clear referenced bit in storage key. 1702d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky */ 1712d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky#define __HAVE_ARCH_PAGE_TEST_AND_CLEAR_YOUNG 1722d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefskystatic inline int page_test_and_clear_young(unsigned long pfn) 1732d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky{ 1742d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky return page_reset_referenced(pfn << PAGE_SHIFT); 1752d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky} 1762d42552d1c1659b014851cf449ad2fe458509128Martin Schwidefsky 17745e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefskystruct page; 17845e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefskyvoid arch_free_page(struct page *page, int order); 17945e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefskyvoid arch_alloc_page(struct page *page, int order); 180638ad34a8811119b32247b7722288ef8b90907d1Martin Schwidefskyvoid arch_set_page_states(int make_stable); 18145e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefsky 182ec6743bb06510c7b629603ce35713d6ae9273579Hendrik Bruecknerstatic inline int devmem_is_allowed(unsigned long pfn) 183ec6743bb06510c7b629603ce35713d6ae9273579Hendrik Brueckner{ 184ec6743bb06510c7b629603ce35713d6ae9273579Hendrik Brueckner return 0; 185ec6743bb06510c7b629603ce35713d6ae9273579Hendrik Brueckner} 186ec6743bb06510c7b629603ce35713d6ae9273579Hendrik Brueckner 18745e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefsky#define HAVE_ARCH_FREE_PAGE 18845e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefsky#define HAVE_ARCH_ALLOC_PAGE 18945e576b1c3d0020607b8666c0247164e92c7d719Martin Schwidefsky 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* !__ASSEMBLY__ */ 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __PAGE_OFFSET 0x0UL 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PAGE_OFFSET 0x0UL 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pa(x) (unsigned long)(x) 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __va(x) (void *)(unsigned long)(x) 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 1970b2b6e1ddce4696cb7afcbb15a654fe95428a498Heiko Carstens#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 200146e4b3c8b92071b18f0b2e6f47165bad4f9e825Martin Schwidefsky#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | \ 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 203aed630434c4fc0bca8ed62f6730d44ba00bdf595KAMEZAWA Hiroyuki#include <asm-generic/memory_model.h> 2045b17e1cd8928ae65932758ce6478ac6d3e9a86b2Arnd Bergmann#include <asm-generic/getorder.h> 205fd4fd5aac1282825195c6816ed40a2a6d42db5bfStephen Rothwell 206b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky#define __HAVE_ARCH_GATE_AREA 1 207b020632e40c3ed5e8c0c066d022672907e8401cfMartin Schwidefsky 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _S390_PAGE_H */ 209