Skip to content

Commit

Permalink
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
Browse files Browse the repository at this point in the history
  • Loading branch information
Linus Torvalds committed Sep 12, 2005
2 parents 61b22e6 + 074c527 commit 9401c70
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 26 deletions.
9 changes: 6 additions & 3 deletions arch/sparc/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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,
Expand All @@ -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]);
}
}
}
}
Expand Down
31 changes: 12 additions & 19 deletions arch/sparc/kernel/sparc_ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/mul.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/rem.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/sdiv.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/udiv.S
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@


.globl .udiv
.globl _Udiv
.udiv:
_Udiv: /* needed for export */

! Ready to divide. Compute size of quotient; scale comparand.
orcc %o1, %g0, %o5
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/umul.S
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
*/

.globl .umul
.globl _Umul
.umul:
_Umul: /* needed for export */
or %o0, %o1, %o4
mov %o0, %y ! multiplier -> Y

Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/urem.S
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@
*/

.globl .urem
.globl _Urem
.urem:
_Urem: /* needed for export */

! Ready to divide. Compute size of quotient; scale comparand.
orcc %o1, %g0, %o5
Expand Down
3 changes: 1 addition & 2 deletions drivers/sbus/char/bpp.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,7 @@ static unsigned short get_pins(unsigned minor)

static void snooze(unsigned long snooze_time, unsigned minor)
{
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(snooze_time + 1);
schedule_timeout_uninterruptible(snooze_time + 1);
}

static int wait_for(unsigned short set, unsigned short clr,
Expand Down
3 changes: 1 addition & 2 deletions drivers/sbus/char/vfc_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ int vfc_pcf8584_init(struct vfc_dev *dev)

void vfc_i2c_delay_no_busy(struct vfc_dev *dev, unsigned long usecs)
{
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(usecs_to_jiffies(usecs));
schedule_timeout_uninterruptible(usecs_to_jiffies(usecs));
}

void inline vfc_i2c_delay(struct vfc_dev *dev)
Expand Down
6 changes: 6 additions & 0 deletions scripts/mod/modpost.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,12 @@ handle_modversions(struct module *mod, struct elf_info *info,
/* Ignore register directives. */
if (ELF_ST_TYPE(sym->st_info) == STT_SPARC_REGISTER)
break;
if (symname[0] == '.') {
char *munged = strdup(symname);
munged[0] = '_';
munged[1] = toupper(munged[1]);
symname = munged;
}
}
#endif

Expand Down

0 comments on commit 9401c70

Please sign in to comment.