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 9f3bd1e05SAndrew 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 197a693feeSAndrew Jones typedef u64 pteval_t; 207a693feeSAndrew Jones typedef u64 pmdval_t; 217a693feeSAndrew Jones typedef u64 pgdval_t; 227a693feeSAndrew Jones typedef struct { pteval_t pte; } pte_t; 237a693feeSAndrew Jones typedef struct { pmdval_t pmd; } pmd_t; 247a693feeSAndrew Jones typedef struct { pgdval_t pgd; } pgd_t; 257a693feeSAndrew Jones typedef struct { pteval_t pgprot; } pgprot_t; 267a693feeSAndrew Jones 277a693feeSAndrew Jones #define pte_val(x) ((x).pte) 287a693feeSAndrew Jones #define pmd_val(x) ((x).pmd) 297a693feeSAndrew Jones #define pgd_val(x) ((x).pgd) 307a693feeSAndrew Jones #define pgprot_val(x) ((x).pgprot) 317a693feeSAndrew Jones 327a693feeSAndrew Jones #define __pte(x) ((pte_t) { (x) } ) 337a693feeSAndrew Jones #define __pmd(x) ((pmd_t) { (x) } ) 347a693feeSAndrew Jones #define __pgd(x) ((pgd_t) { (x) } ) 357a693feeSAndrew Jones #define __pgprot(x) ((pgprot_t) { (x) } ) 367a693feeSAndrew Jones 37fd33143eSAndrew Jones #define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x))) 38fd33143eSAndrew Jones #define __pa(x) __virt_to_phys((unsigned long)(x)) 39fd33143eSAndrew Jones 40fd33143eSAndrew Jones #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) 41fd33143eSAndrew Jones #define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) 42fd33143eSAndrew Jones 43*f02b6363SAndrew Jones extern phys_addr_t __virt_to_phys(unsigned long addr); 44*f02b6363SAndrew Jones extern unsigned long __phys_to_virt(phys_addr_t addr); 45*f02b6363SAndrew Jones 4662e6e986SAndrew Jones #endif /* !__ASSEMBLY__ */ 4709121d03SAndrew Jones #endif /* _ASMARM_PAGE_H_ */ 48