12 #include <linux/mman.h>
13 #include <linux/module.h>
15 #include <asm/processor.h>
33 static inline unsigned long COLOUR_ALIGN_DOWN(
unsigned long addr,
39 if (base + off <= addr)
46 unsigned long len,
unsigned long pgoff,
unsigned long flags)
67 if (filp || (flags & MAP_SHARED))
78 (!vma || addr + len <= vma->
vm_start))
127 const unsigned long len,
const unsigned long pgoff,
128 const unsigned long flags)
132 unsigned long addr = addr0;
135 if (flags & MAP_FIXED) {
139 if ((flags & MAP_SHARED) &&
149 if (filp || (flags & MAP_SHARED))
161 (!vma || addr + len <= vma->vm_start))
173 if (do_colour_align) {
174 unsigned long base = COLOUR_ALIGN_DOWN(addr-len, pgoff);
182 if (!vma || addr <= vma->vm_start) {
193 addr = COLOUR_ALIGN_DOWN(addr, pgoff);
202 if (
likely(!vma || addr+len <= vma->vm_start)) {
214 addr = COLOUR_ALIGN_DOWN(addr, pgoff);
215 }
while (
likely(len < vma->vm_start));