20cee16ced
Currently ppc64 has two mm_structs for the kernel, init_mm and also ioremap_mm. The latter really isn't necessary: this patch abolishes it, instead restricting vmallocs to the lower 1TB of the init_mm's range and placing io mappings in the upper 1TB. This simplifies the code in a number of places and eliminates an unecessary set of pagetables. It also tweaks the unmap/free path a little, allowing us to remove the unmap_im_area() set of page table walkers, replacing them with unmap_vm_area(). Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
26 lines
738 B
C
26 lines
738 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 + EADDR_MASK)
|
|
|
|
|
|
/* 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 */
|