You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
* 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"
This commit is contained in:
+4
-6
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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, ...)
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
obj-y := __ashldi3.o __ashrdi3.o __clzsi2.o __divdi3.o __divsi3.o \
|
||||
__lshrdi3.o __moddi3.o __modsi3.o __udivdi3.o \
|
||||
__udivmoddi4.o __udivmodsi4.o __udivsi3.o \
|
||||
__umoddi3.o __umodsi3.o __muldi3.o __umulsidi3.o
|
||||
@@ -1,19 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u64 __ashldi3(u64 v, int cnt)
|
||||
{
|
||||
int c = cnt & 31;
|
||||
u32 vl = (u32) v;
|
||||
u32 vh = (u32) (v >> 32);
|
||||
|
||||
if (cnt & 32) {
|
||||
vh = (vl << c);
|
||||
vl = 0;
|
||||
} else {
|
||||
vh = (vh << c) + (vl >> (32 - c));
|
||||
vl = (vl << c);
|
||||
}
|
||||
|
||||
return ((u64) vh << 32) + vl;
|
||||
}
|
||||
EXPORT_SYMBOL(__ashldi3);
|
||||
@@ -1,19 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u64 __ashrdi3(u64 v, int cnt)
|
||||
{
|
||||
int c = cnt & 31;
|
||||
u32 vl = (u32) v;
|
||||
u32 vh = (u32) (v >> 32);
|
||||
|
||||
if (cnt & 32) {
|
||||
vl = ((s32) vh >> c);
|
||||
vh = (s32) vh >> 31;
|
||||
} else {
|
||||
vl = (vl >> c) + (vh << (32 - c));
|
||||
vh = ((s32) vh >> c);
|
||||
}
|
||||
|
||||
return ((u64) vh << 32) + vl;
|
||||
}
|
||||
EXPORT_SYMBOL(__ashrdi3);
|
||||
@@ -1,30 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u32 __clzsi2(u32 v)
|
||||
{
|
||||
int p = 31;
|
||||
|
||||
if (v & 0xffff0000) {
|
||||
p -= 16;
|
||||
v >>= 16;
|
||||
}
|
||||
if (v & 0xff00) {
|
||||
p -= 8;
|
||||
v >>= 8;
|
||||
}
|
||||
if (v & 0xf0) {
|
||||
p -= 4;
|
||||
v >>= 4;
|
||||
}
|
||||
if (v & 0xc) {
|
||||
p -= 2;
|
||||
v >>= 2;
|
||||
}
|
||||
if (v & 0x2) {
|
||||
p -= 1;
|
||||
v >>= 1;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
EXPORT_SYMBOL(__clzsi2);
|
||||
@@ -1,23 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
s64 __divdi3(s64 num, s64 den)
|
||||
{
|
||||
int minus = 0;
|
||||
s64 v;
|
||||
|
||||
if (num < 0) {
|
||||
num = -num;
|
||||
minus = 1;
|
||||
}
|
||||
if (den < 0) {
|
||||
den = -den;
|
||||
minus ^= 1;
|
||||
}
|
||||
|
||||
v = __udivmoddi4(num, den, NULL);
|
||||
if (minus)
|
||||
v = -v;
|
||||
|
||||
return v;
|
||||
}
|
||||
EXPORT_SYMBOL(__divdi3);
|
||||
@@ -1,23 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
s32 __divsi3(s32 num, s32 den)
|
||||
{
|
||||
int minus = 0;
|
||||
s32 v;
|
||||
|
||||
if (num < 0) {
|
||||
num = -num;
|
||||
minus = 1;
|
||||
}
|
||||
if (den < 0) {
|
||||
den = -den;
|
||||
minus ^= 1;
|
||||
}
|
||||
|
||||
v = __udivmodsi4(num, den, NULL);
|
||||
if (minus)
|
||||
v = -v;
|
||||
|
||||
return v;
|
||||
}
|
||||
EXPORT_SYMBOL(__divsi3);
|
||||
@@ -1,19 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u64 __lshrdi3(u64 v, int cnt)
|
||||
{
|
||||
int c = cnt & 31;
|
||||
u32 vl = (u32) v;
|
||||
u32 vh = (u32) (v >> 32);
|
||||
|
||||
if (cnt & 32) {
|
||||
vl = (vh >> c);
|
||||
vh = 0;
|
||||
} else {
|
||||
vl = (vl >> c) + (vh << (32 - c));
|
||||
vh = (vh >> c);
|
||||
}
|
||||
|
||||
return ((u64) vh << 32) + vl;
|
||||
}
|
||||
EXPORT_SYMBOL(__lshrdi3);
|
||||
@@ -1,23 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
s64 __moddi3(s64 num, s64 den)
|
||||
{
|
||||
int minus = 0;
|
||||
s64 v;
|
||||
|
||||
if (num < 0) {
|
||||
num = -num;
|
||||
minus = 1;
|
||||
}
|
||||
if (den < 0) {
|
||||
den = -den;
|
||||
minus ^= 1;
|
||||
}
|
||||
|
||||
(void)__udivmoddi4(num, den, (u64 *) & v);
|
||||
if (minus)
|
||||
v = -v;
|
||||
|
||||
return v;
|
||||
}
|
||||
EXPORT_SYMBOL(__moddi3);
|
||||
@@ -1,23 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
s32 __modsi3(s32 num, s32 den)
|
||||
{
|
||||
int minus = 0;
|
||||
s32 v;
|
||||
|
||||
if (num < 0) {
|
||||
num = -num;
|
||||
minus = 1;
|
||||
}
|
||||
if (den < 0) {
|
||||
den = -den;
|
||||
minus ^= 1;
|
||||
}
|
||||
|
||||
(void)__udivmodsi4(num, den, (u32 *) & v);
|
||||
if (minus)
|
||||
v = -v;
|
||||
|
||||
return v;
|
||||
}
|
||||
EXPORT_SYMBOL(__modsi3);
|
||||
@@ -1,22 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
union DWunion {
|
||||
struct {
|
||||
s32 high;
|
||||
s32 low;
|
||||
} s;
|
||||
s64 ll;
|
||||
};
|
||||
|
||||
s64 __muldi3(s64 u, s64 v)
|
||||
{
|
||||
const union DWunion uu = { .ll = u };
|
||||
const union DWunion vv = { .ll = v };
|
||||
union DWunion w = { .ll = __umulsidi3(uu.s.low, vv.s.low) };
|
||||
|
||||
w.s.high += ((u32)uu.s.low * (u32)vv.s.high
|
||||
+ (u32)uu.s.high * (u32)vv.s.low);
|
||||
|
||||
return w.ll;
|
||||
}
|
||||
EXPORT_SYMBOL(__muldi3);
|
||||
@@ -1,7 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u64 __udivdi3(u64 num, u64 den)
|
||||
{
|
||||
return __udivmoddi4(num, den, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(__udivdi3);
|
||||
@@ -1,31 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p)
|
||||
{
|
||||
u64 quot = 0, qbit = 1;
|
||||
|
||||
if (den == 0) {
|
||||
BUG();
|
||||
}
|
||||
|
||||
/* Left-justify denominator and count shift */
|
||||
while ((s64) den >= 0) {
|
||||
den <<= 1;
|
||||
qbit <<= 1;
|
||||
}
|
||||
|
||||
while (qbit) {
|
||||
if (den <= num) {
|
||||
num -= den;
|
||||
quot += qbit;
|
||||
}
|
||||
den >>= 1;
|
||||
qbit >>= 1;
|
||||
}
|
||||
|
||||
if (rem_p)
|
||||
*rem_p = num;
|
||||
|
||||
return quot;
|
||||
}
|
||||
EXPORT_SYMBOL(__udivmoddi4);
|
||||
@@ -1,31 +0,0 @@
|
||||
#include "libgcc.h"
|
||||
|
||||
u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p)
|
||||
{
|
||||
u32 quot = 0, qbit = 1;
|
||||
|
||||
if (den == 0) {
|
||||
BUG();
|
||||
}
|
||||
|
||||
/* Left-justify denominator and count shift */
|
||||
while ((s32) den >= 0) {
|
||||
den <<= 1;
|
||||
qbit <<= 1;
|
||||
}
|
||||
|
||||
while (qbit) {
|
||||
if (den <= num) {
|
||||
num -= den;
|
||||
quot += qbit;
|
||||
}
|
||||
den >>= 1;
|
||||
qbit >>= 1;
|
||||
}
|
||||
|
||||
if (rem_p)
|
||||
*rem_p = num;
|
||||
|
||||
return quot;
|
||||
}
|
||||
EXPORT_SYMBOL(__udivmodsi4);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user