Loading arch/sparc/kernel/module.c +6 −3 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/vmalloc.h> #include <linux/fs.h> #include <linux/string.h> #include <linux/ctype.h> void *module_alloc(unsigned long size) { Loading Loading @@ -37,7 +38,7 @@ void module_free(struct module *mod, void *module_region) } /* Make generic code ignore STT_REGISTER dummy undefined symbols, * and replace references to .func with func as in ppc64's dedotify. * and replace references to .func with _Func */ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, Loading @@ -64,8 +65,10 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, sym[i].st_shndx = SHN_ABS; else { char *name = strtab + sym[i].st_name; if (name[0] == '.') memmove(name, name+1, strlen(name)); if (name[0] == '.') { name[0] = '_'; name[1] = toupper(name[1]); } } } } Loading arch/sparc/kernel/sparc_ksyms.c +12 −19 Original line number Diff line number Diff line Loading @@ -97,19 +97,12 @@ extern void ___rw_write_enter(void); /* Alias functions whose names begin with "." and export the aliases. * The module references will be fixed up by module_frob_arch_sections. */ #define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \ extern __ret __x(__arg1, __arg2); \ asm(".weak " #__x);\ asm(#__x "=." #__x); DOT_ALIAS2(int, div, int, int) DOT_ALIAS2(int, mul, int, int) DOT_ALIAS2(int, rem, int, int) DOT_ALIAS2(unsigned, udiv, unsigned, unsigned) DOT_ALIAS2(unsigned, umul, unsigned, unsigned) DOT_ALIAS2(unsigned, urem, unsigned, unsigned) #undef DOT_ALIAS2 extern int _Div(int, int); extern int _Mul(int, int); extern int _Rem(int, int); extern unsigned _Udiv(unsigned, unsigned); extern unsigned _Umul(unsigned, unsigned); extern unsigned _Urem(unsigned, unsigned); /* used by various drivers */ EXPORT_SYMBOL(sparc_cpu_model); Loading Loading @@ -320,12 +313,12 @@ EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__muldi3); EXPORT_SYMBOL(__divdi3); EXPORT_SYMBOL(rem); EXPORT_SYMBOL(urem); EXPORT_SYMBOL(mul); EXPORT_SYMBOL(umul); EXPORT_SYMBOL(div); EXPORT_SYMBOL(udiv); EXPORT_SYMBOL(_Rem); EXPORT_SYMBOL(_Urem); EXPORT_SYMBOL(_Mul); EXPORT_SYMBOL(_Umul); EXPORT_SYMBOL(_Div); EXPORT_SYMBOL(_Udiv); #ifdef CONFIG_DEBUG_BUGVERBOSE EXPORT_SYMBOL(do_BUG); Loading arch/sparc/lib/mul.S +2 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ */ .globl .mul .globl _Mul .mul: _Mul: /* needed for export */ mov %o0, %y ! multiplier -> Y andncc %o0, 0xfff, %g0 ! test bits 12..31 be Lmul_shortway ! if zero, can do it the short way Loading arch/sparc/lib/rem.S +2 −0 Original line number Diff line number Diff line Loading @@ -43,7 +43,9 @@ .globl .rem .globl _Rem .rem: _Rem: /* needed for export */ ! compute sign of result; if neither is negative, no problem orcc %o1, %o0, %g0 ! either negative? bge 2f ! no, go do the divide Loading arch/sparc/lib/sdiv.S +2 −0 Original line number Diff line number Diff line Loading @@ -43,7 +43,9 @@ .globl .div .globl _Div .div: _Div: /* needed for export */ ! compute sign of result; if neither is negative, no problem orcc %o1, %o0, %g0 ! either negative? bge 2f ! no, go do the divide Loading Loading
arch/sparc/kernel/module.c +6 −3 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/vmalloc.h> #include <linux/fs.h> #include <linux/string.h> #include <linux/ctype.h> void *module_alloc(unsigned long size) { Loading Loading @@ -37,7 +38,7 @@ void module_free(struct module *mod, void *module_region) } /* Make generic code ignore STT_REGISTER dummy undefined symbols, * and replace references to .func with func as in ppc64's dedotify. * and replace references to .func with _Func */ int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, Loading @@ -64,8 +65,10 @@ int module_frob_arch_sections(Elf_Ehdr *hdr, sym[i].st_shndx = SHN_ABS; else { char *name = strtab + sym[i].st_name; if (name[0] == '.') memmove(name, name+1, strlen(name)); if (name[0] == '.') { name[0] = '_'; name[1] = toupper(name[1]); } } } } Loading
arch/sparc/kernel/sparc_ksyms.c +12 −19 Original line number Diff line number Diff line Loading @@ -97,19 +97,12 @@ extern void ___rw_write_enter(void); /* Alias functions whose names begin with "." and export the aliases. * The module references will be fixed up by module_frob_arch_sections. */ #define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \ extern __ret __x(__arg1, __arg2); \ asm(".weak " #__x);\ asm(#__x "=." #__x); DOT_ALIAS2(int, div, int, int) DOT_ALIAS2(int, mul, int, int) DOT_ALIAS2(int, rem, int, int) DOT_ALIAS2(unsigned, udiv, unsigned, unsigned) DOT_ALIAS2(unsigned, umul, unsigned, unsigned) DOT_ALIAS2(unsigned, urem, unsigned, unsigned) #undef DOT_ALIAS2 extern int _Div(int, int); extern int _Mul(int, int); extern int _Rem(int, int); extern unsigned _Udiv(unsigned, unsigned); extern unsigned _Umul(unsigned, unsigned); extern unsigned _Urem(unsigned, unsigned); /* used by various drivers */ EXPORT_SYMBOL(sparc_cpu_model); Loading Loading @@ -320,12 +313,12 @@ EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__muldi3); EXPORT_SYMBOL(__divdi3); EXPORT_SYMBOL(rem); EXPORT_SYMBOL(urem); EXPORT_SYMBOL(mul); EXPORT_SYMBOL(umul); EXPORT_SYMBOL(div); EXPORT_SYMBOL(udiv); EXPORT_SYMBOL(_Rem); EXPORT_SYMBOL(_Urem); EXPORT_SYMBOL(_Mul); EXPORT_SYMBOL(_Umul); EXPORT_SYMBOL(_Div); EXPORT_SYMBOL(_Udiv); #ifdef CONFIG_DEBUG_BUGVERBOSE EXPORT_SYMBOL(do_BUG); Loading
arch/sparc/lib/mul.S +2 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ */ .globl .mul .globl _Mul .mul: _Mul: /* needed for export */ mov %o0, %y ! multiplier -> Y andncc %o0, 0xfff, %g0 ! test bits 12..31 be Lmul_shortway ! if zero, can do it the short way Loading
arch/sparc/lib/rem.S +2 −0 Original line number Diff line number Diff line Loading @@ -43,7 +43,9 @@ .globl .rem .globl _Rem .rem: _Rem: /* needed for export */ ! compute sign of result; if neither is negative, no problem orcc %o1, %o0, %g0 ! either negative? bge 2f ! no, go do the divide Loading
arch/sparc/lib/sdiv.S +2 −0 Original line number Diff line number Diff line Loading @@ -43,7 +43,9 @@ .globl .div .globl _Div .div: _Div: /* needed for export */ ! compute sign of result; if neither is negative, no problem orcc %o1, %o0, %g0 ! either negative? bge 2f ! no, go do the divide Loading