X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-ppc64%2Fpgtable.h;h=5a4a18043ae1f44ac2f60ea27c2016eb037e3434;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=8499868b277ebeba14d9993bce88468494386529;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h index 8499868b2..5a4a18043 100644 --- a/include/asm-ppc64/pgtable.h +++ b/include/asm-ppc64/pgtable.h @@ -44,11 +44,17 @@ #define EADDR_SIZE (PTE_INDEX_SIZE + PMD_INDEX_SIZE + \ PGD_INDEX_SIZE + PAGE_SHIFT) +/* + * Size of EA range mapped by our pagetables. + */ +#define PGTABLE_EA_BITS 41 +#define PGTABLE_EA_MASK ((1UL< physical */ #define KRANGE_START KERNELBASE -#define KRANGE_END (KRANGE_START + VALID_EA_BITS) +#define KRANGE_END (KRANGE_START + PGTABLE_EA_MASK) /* * Define the user address range */ #define USER_START (0UL) -#define USER_END (USER_START + VALID_EA_BITS) +#define USER_END (USER_START + PGTABLE_EA_MASK) /* @@ -167,6 +173,7 @@ int hash_huge_page(struct mm_struct *mm, unsigned long access, #endif /* __ASSEMBLY__ */ #define HAVE_ARCH_UNMAPPED_AREA +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN #else #define hash_huge_page(mm,a,ea,vsid,local) -1 @@ -489,7 +496,8 @@ extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); void pgtable_cache_init(void); -extern void hpte_init_pSeries(void); +extern void hpte_init_native(void); +extern void hpte_init_lpar(void); extern void hpte_init_iSeries(void); /* imalloc region types */ @@ -497,20 +505,21 @@ extern void hpte_init_iSeries(void); #define IM_REGION_SUBSET 0x2 #define IM_REGION_EXISTS 0x4 #define IM_REGION_OVERLAP 0x8 +#define IM_REGION_SUPERSET 0x10 extern struct vm_struct * im_get_free_area(unsigned long size); extern struct vm_struct * im_get_area(unsigned long v_addr, unsigned long size, int region_type); unsigned long im_free(void *addr); -long pSeries_lpar_hpte_insert(unsigned long hpte_group, - unsigned long va, unsigned long prpn, - int secondary, unsigned long hpteflags, - int bolted, int large); +extern long pSeries_lpar_hpte_insert(unsigned long hpte_group, + unsigned long va, unsigned long prpn, + int secondary, unsigned long hpteflags, + int bolted, int large); -long pSeries_hpte_insert(unsigned long hpte_group, unsigned long va, - unsigned long prpn, int secondary, - unsigned long hpteflags, int bolted, int large); +extern long native_hpte_insert(unsigned long hpte_group, unsigned long va, + unsigned long prpn, int secondary, + unsigned long hpteflags, int bolted, int large); /* * find_linux_pte returns the address of a linux pte for a given