2 * Copyright (C) 2011 Richard Weinberger <richrd@nod.at>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
12 static struct vm_area_struct gate_vma
;
14 static int __init
gate_vma_init(void)
16 if (!FIXADDR_USER_START
)
19 vma_init(&gate_vma
, NULL
);
20 gate_vma
.vm_start
= FIXADDR_USER_START
;
21 gate_vma
.vm_end
= FIXADDR_USER_END
;
22 gate_vma
.vm_flags
= VM_READ
| VM_MAYREAD
| VM_EXEC
| VM_MAYEXEC
;
23 gate_vma
.vm_page_prot
= __P101
;
27 __initcall(gate_vma_init
);
29 struct vm_area_struct
*get_gate_vma(struct mm_struct
*mm
)
31 return FIXADDR_USER_START
? &gate_vma
: NULL
;
34 int in_gate_area_no_mm(unsigned long addr
)
36 if (!FIXADDR_USER_START
)
39 if ((addr
>= FIXADDR_USER_START
) && (addr
< FIXADDR_USER_END
))
45 int in_gate_area(struct mm_struct
*mm
, unsigned long addr
)
47 struct vm_area_struct
*vma
= get_gate_vma(mm
);
52 return (addr
>= vma
->vm_start
) && (addr
< vma
->vm_end
);