1fd33143eSAndrew Jones #ifndef _ASMARM_PAGE_H_ 2fd33143eSAndrew Jones #define _ASMARM_PAGE_H_ 3fd33143eSAndrew Jones /* 4fd33143eSAndrew Jones * Copyright (C) 2014, Red Hat Inc, Andrew Jones <drjones@redhat.com> 5fd33143eSAndrew Jones * 6fd33143eSAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 7fd33143eSAndrew Jones */ 8fd33143eSAndrew Jones 9*f3bd1e05SAndrew Jones #include <linux/const.h> 1009121d03SAndrew Jones 11fd33143eSAndrew Jones #define PAGE_SHIFT 12 1209121d03SAndrew Jones #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) 13fd33143eSAndrew Jones #define PAGE_MASK (~(PAGE_SIZE-1)) 14fd33143eSAndrew Jones 15fd33143eSAndrew Jones #ifndef __ASSEMBLY__ 1609121d03SAndrew Jones 1709121d03SAndrew Jones #define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE) 1809121d03SAndrew Jones 1962e6e986SAndrew Jones #include <alloc.h> 20fd33143eSAndrew Jones 217a693feeSAndrew Jones typedef u64 pteval_t; 227a693feeSAndrew Jones typedef u64 pmdval_t; 237a693feeSAndrew Jones typedef u64 pgdval_t; 247a693feeSAndrew Jones typedef struct { pteval_t pte; } pte_t; 257a693feeSAndrew Jones typedef struct { pmdval_t pmd; } pmd_t; 267a693feeSAndrew Jones typedef struct { pgdval_t pgd; } pgd_t; 277a693feeSAndrew Jones typedef struct { pteval_t pgprot; } pgprot_t; 287a693feeSAndrew Jones 297a693feeSAndrew Jones #define pte_val(x) ((x).pte) 307a693feeSAndrew Jones #define pmd_val(x) ((x).pmd) 317a693feeSAndrew Jones #define pgd_val(x) ((x).pgd) 327a693feeSAndrew Jones #define pgprot_val(x) ((x).pgprot) 337a693feeSAndrew Jones 347a693feeSAndrew Jones #define __pte(x) ((pte_t) { (x) } ) 357a693feeSAndrew Jones #define __pmd(x) ((pmd_t) { (x) } ) 367a693feeSAndrew Jones #define __pgd(x) ((pgd_t) { (x) } ) 377a693feeSAndrew Jones #define __pgprot(x) ((pgprot_t) { (x) } ) 387a693feeSAndrew Jones 397a693feeSAndrew Jones typedef struct { pgd_t pgd; } pud_t; 407a693feeSAndrew Jones #define pud_val(x) (pgd_val((x).pgd)) 417a693feeSAndrew Jones #define __pud(x) ((pud_t) { __pgd(x) } ) 427a693feeSAndrew Jones 43fd33143eSAndrew Jones #ifndef __virt_to_phys 44fd33143eSAndrew Jones #define __phys_to_virt(x) ((unsigned long) (x)) 45fd33143eSAndrew Jones #define __virt_to_phys(x) (x) 46fd33143eSAndrew Jones #endif 47fd33143eSAndrew Jones 48fd33143eSAndrew Jones #define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x))) 49fd33143eSAndrew Jones #define __pa(x) __virt_to_phys((unsigned long)(x)) 50fd33143eSAndrew Jones 51fd33143eSAndrew Jones #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) 52fd33143eSAndrew Jones #define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) 53fd33143eSAndrew Jones 5462e6e986SAndrew Jones #endif /* !__ASSEMBLY__ */ 5509121d03SAndrew Jones #endif /* _ASMARM_PAGE_H_ */ 56