forked from Minki/linux
e28f7faf05
Implement 4-level pagetables for ppc64 This patch implements full four-level page tables for ppc64, thereby extending the usable user address range to 44 bits (16T). The patch uses a full page for the tables at the bottom and top level, and a quarter page for the intermediate levels. It uses full 64-bit pointers at every level, thus also increasing the addressable range of physical memory. This patch also tweaks the VSID allocation to allow matching range for user addresses (this halves the number of available contexts) and adds some #if and BUILD_BUG sanity checks. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
27 lines
741 B
C
27 lines
741 B
C
#ifndef _PPC64_IMALLOC_H
|
|
#define _PPC64_IMALLOC_H
|
|
|
|
/*
|
|
* Define the address range of the imalloc VM area.
|
|
*/
|
|
#define PHBS_IO_BASE VMALLOC_END
|
|
#define IMALLOC_BASE (PHBS_IO_BASE + 0x80000000ul) /* Reserve 2 gigs for PHBs */
|
|
#define IMALLOC_END (VMALLOC_START + PGTABLE_RANGE)
|
|
|
|
|
|
/* imalloc region types */
|
|
#define IM_REGION_UNUSED 0x1
|
|
#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);
|
|
extern void im_free(void *addr);
|
|
|
|
extern unsigned long ioremap_bot;
|
|
|
|
#endif /* _PPC64_IMALLOC_H */
|