X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=arch%2Fsparc%2Fkernel%2Fmodule.c;fp=arch%2Fsparc%2Fkernel%2Fmodule.c;h=8d348c474a2f3b7ffde344246c0e41856f3988fe;hb=f2ec334db8d14ae3ec2e4bf8d974f75b8f772e26;hp=f848aadf54dc1c2c1feb537752fdf3410efbe9d8;hpb=81e20d4d8d0317ecf1c7d193a52ab26cf74e1737;p=mv-sheeva.git diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index f848aadf54d..8d348c474a2 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c @@ -18,19 +18,16 @@ #include #ifdef CONFIG_SPARC64 -static void *module_map(unsigned long size) -{ - struct vm_struct *area; - size = PAGE_ALIGN(size); - if (!size || size > MODULES_LEN) - return NULL; +#include - area = __get_vm_area(size, VM_ALLOC, MODULES_VADDR, MODULES_END); - if (!area) +static void *module_map(unsigned long size) +{ + if (PAGE_ALIGN(size) > MODULES_LEN) return NULL; - - return __vmalloc_area(area, GFP_KERNEL, PAGE_KERNEL); + return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, + GFP_KERNEL, PAGE_KERNEL, -1, + __builtin_return_address(0)); } static char *dot2underscore(char *name) @@ -227,6 +224,9 @@ int module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) { + /* make jump label nops */ + jump_label_apply_nops(me); + /* Cheetah's I-cache is fully coherent. */ if (tlb_type == spitfire) { unsigned long va;