Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6:
  [PARISC] lba_pci: pci_claim_resources disabled expansion roms
  [PARISC] print more than one character at a time for pdc console
  [PARISC] Update parisc-linux MAINTAINERS entries
  [PARISC] timer interrupt should not be IRQ_DISABLED
  Revert "[PARISC] import necessary bits of libgcc.a"
  • Loading branch information
Linus Torvalds committed Dec 6, 2007
2 parents ceaeee6 + 84f4506 commit e1b7361
Show file tree
Hide file tree
Showing 37 changed files with 73 additions and 4,703 deletions.
10 changes: 4 additions & 6 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1681,8 +1681,7 @@ S: Maintained
HARMONY SOUND DRIVER
P: Kyle McMartin
M: kyle@parisc-linux.org
W: http://www.parisc-linux.org/~kyle/harmony/
L: parisc-linux@lists.parisc-linux.org
L: linux-parisc@vger.kernel.org
S: Maintained

HAYES ESP SERIAL DRIVER
Expand Down Expand Up @@ -2890,16 +2889,15 @@ W: http://www.torque.net/linux-pp.html
S: Maintained

PARISC ARCHITECTURE
P: Kyle McMartin
M: kyle@parisc-linux.org
P: Matthew Wilcox
M: matthew@wil.cx
P: Grant Grundler
M: grundler@parisc-linux.org
P: Kyle McMartin
M: kyle@parisc-linux.org
L: parisc-linux@parisc-linux.org
L: linux-parisc@vger.kernel.org
W: http://www.parisc-linux.org/
T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
T: cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
S: Maintained

PARAVIRT_OPS INTERFACE
Expand Down
2 changes: 1 addition & 1 deletion arch/parisc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ kernel-y := mm/ kernel/ math-emu/ kernel/init_task.o
kernel-$(CONFIG_HPUX) += hpux/

core-y += $(addprefix arch/parisc/, $(kernel-y))
libs-y += arch/parisc/lib/
libs-y += arch/parisc/lib/ `$(CC) -print-libgcc-file-name`

drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/

Expand Down
88 changes: 34 additions & 54 deletions arch/parisc/kernel/firmware.c
Original file line number Diff line number Diff line change
Expand Up @@ -1082,76 +1082,56 @@ void pdc_io_reset_devices(void)


/**
* pdc_iodc_putc - Console character print using IODC.
* @c: the character to output.
* pdc_iodc_print - Console print using IODC.
* @str: the string to output.
* @count: length of str
*
* Note that only these special chars are architected for console IODC io:
* BEL, BS, CR, and LF. Others are passed through.
* Since the HP console requires CR+LF to perform a 'newline', we translate
* "\n" to "\r\n".
*/
void pdc_iodc_putc(unsigned char c)
int pdc_iodc_print(unsigned char *str, unsigned count)
{
/* XXX Should we spinlock posx usage */
static int posx; /* for simple TAB-Simulation... */
static int __attribute__((aligned(8))) iodc_retbuf[32];
static char __attribute__((aligned(64))) iodc_dbuf[4096];
unsigned int n;
/* XXX Should we spinlock posx usage */
static int posx; /* for simple TAB-Simulation... */
int __attribute__((aligned(8))) iodc_retbuf[32];
char __attribute__((aligned(64))) iodc_dbuf[4096];
unsigned int i;
unsigned long flags;

switch (c) {
case '\n':
iodc_dbuf[0] = '\r';
iodc_dbuf[1] = '\n';
n = 2;
posx = 0;
break;
case '\t':
pdc_iodc_putc(' ');
while (posx & 7) /* expand TAB */
pdc_iodc_putc(' ');
return; /* return since IODC can't handle this */
case '\b':
posx-=2; /* BS */
default:
iodc_dbuf[0] = c;
n = 1;
posx++;
break;
}
memset(iodc_dbuf, 0, 4096);
for (i = 0; i < count && i < 2048;) {
switch(str[i]) {
case '\n':
iodc_dbuf[i+0] = '\r';
iodc_dbuf[i+1] = '\n';
i += 2;
posx = 0;
break;
case '\t':
while (posx & 7) {
iodc_dbuf[i] = ' ';
i++, posx++;
}
break;
case '\b': /* BS */
posx -= 2;
default:
iodc_dbuf[i] = str[i];
i++, posx++;
break;
}
}

spin_lock_irqsave(&pdc_lock, flags);
real32_call(PAGE0->mem_cons.iodc_io,
(unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT,
PAGE0->mem_cons.spa, __pa(PAGE0->mem_cons.dp.layers),
__pa(iodc_retbuf), 0, __pa(iodc_dbuf), n, 0);
__pa(iodc_retbuf), 0, __pa(iodc_dbuf), i, 0);
spin_unlock_irqrestore(&pdc_lock, flags);
}

/**
* pdc_iodc_outc - Console character print using IODC (without conversions).
* @c: the character to output.
*
* Write the character directly to the IODC console.
*/
void pdc_iodc_outc(unsigned char c)
{
unsigned int n;
unsigned long flags;

/* fill buffer with one caracter and print it */
static int __attribute__((aligned(8))) iodc_retbuf[32];
static char __attribute__((aligned(64))) iodc_dbuf[4096];

n = 1;
iodc_dbuf[0] = c;

spin_lock_irqsave(&pdc_lock, flags);
real32_call(PAGE0->mem_cons.iodc_io,
(unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT,
PAGE0->mem_cons.spa, __pa(PAGE0->mem_cons.dp.layers),
__pa(iodc_retbuf), 0, __pa(iodc_dbuf), n, 0);
spin_unlock_irqrestore(&pdc_lock, flags);
return i;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion arch/parisc/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ static void claim_cpu_irqs(void)
}

irq_desc[TIMER_IRQ].action = &timer_action;
irq_desc[TIMER_IRQ].status |= IRQ_PER_CPU;
irq_desc[TIMER_IRQ].status = IRQ_PER_CPU;
#ifdef CONFIG_SMP
irq_desc[IPI_IRQ].action = &ipi_action;
irq_desc[IPI_IRQ].status = IRQ_PER_CPU;
Expand Down
22 changes: 22 additions & 0 deletions arch/parisc/kernel/parisc_ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,31 @@ EXPORT_SYMBOL($$divI_12);
EXPORT_SYMBOL($$divI_14);
EXPORT_SYMBOL($$divI_15);

extern void __ashrdi3(void);
extern void __ashldi3(void);
extern void __lshrdi3(void);
extern void __muldi3(void);

EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3);
EXPORT_SYMBOL(__muldi3);

asmlinkage void * __canonicalize_funcptr_for_compare(void *);
EXPORT_SYMBOL(__canonicalize_funcptr_for_compare);

#ifdef CONFIG_64BIT
extern void __divdi3(void);
extern void __udivdi3(void);
extern void __umoddi3(void);
extern void __moddi3(void);

EXPORT_SYMBOL(__divdi3);
EXPORT_SYMBOL(__udivdi3);
EXPORT_SYMBOL(__umoddi3);
EXPORT_SYMBOL(__moddi3);
#endif

#ifndef CONFIG_64BIT
extern void $$dyncall(void);
EXPORT_SYMBOL($$dyncall);
Expand Down
11 changes: 2 additions & 9 deletions arch/parisc/kernel/pdc_cons.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,7 @@

static void pdc_console_write(struct console *co, const char *s, unsigned count)
{
while(count--)
pdc_iodc_putc(*s++);
}

void pdc_outc(unsigned char c)
{
pdc_iodc_outc(c);
pdc_iodc_print(s, count);
}

void pdc_printf(const char *fmt, ...)
Expand All @@ -74,8 +68,7 @@ void pdc_printf(const char *fmt, ...)
len = vscnprintf(buf, sizeof(buf), fmt, args);
va_end(args);

for (i = 0; i < len; i++)
pdc_iodc_outc(buf[i]);
pdc_iodc_print(buf, len);
}

int pdc_console_poll_key(struct console *co)
Expand Down
2 changes: 1 addition & 1 deletion arch/parisc/lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o

obj-y := libgcc/ milli/ iomap.o
obj-y := iomap.o
4 changes: 0 additions & 4 deletions arch/parisc/lib/libgcc/Makefile

This file was deleted.

19 changes: 0 additions & 19 deletions arch/parisc/lib/libgcc/__ashldi3.c

This file was deleted.

19 changes: 0 additions & 19 deletions arch/parisc/lib/libgcc/__ashrdi3.c

This file was deleted.

30 changes: 0 additions & 30 deletions arch/parisc/lib/libgcc/__clzsi2.c

This file was deleted.

23 changes: 0 additions & 23 deletions arch/parisc/lib/libgcc/__divdi3.c

This file was deleted.

23 changes: 0 additions & 23 deletions arch/parisc/lib/libgcc/__divsi3.c

This file was deleted.

19 changes: 0 additions & 19 deletions arch/parisc/lib/libgcc/__lshrdi3.c

This file was deleted.

23 changes: 0 additions & 23 deletions arch/parisc/lib/libgcc/__moddi3.c

This file was deleted.

Loading

0 comments on commit e1b7361

Please sign in to comment.