summaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
commitdcec8a13bf565e47942a1751a9cec21bec5648fe (patch)
tree548b69625b18cc2e88c3e68d0923be546c9ebb03 /arch/mips
parent2e0f55e79c49509b7ff70ff1a10e1e9e90a3dfd4 (diff)
o Merge with Linux 2.1.99.
o Fix ancient bug in the ELF loader making ldd crash. o Fix ancient bug in the keyboard code for SGI, SNI and Jazz.
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/config.in11
-rw-r--r--arch/mips/defconfig2
-rw-r--r--arch/mips/jazz/hw-access.c16
-rw-r--r--arch/mips/kernel/irixelf.c4
-rw-r--r--arch/mips/kernel/irq.c10
-rw-r--r--arch/mips/kernel/pci.c53
-rw-r--r--arch/mips/kernel/syscalls.h7
-rw-r--r--arch/mips/lib/csum_partial_copy.S11
-rw-r--r--arch/mips/lib/ide-std.c4
-rw-r--r--arch/mips/sgi/kernel/indy_int.c10
-rw-r--r--arch/mips/sgi/kernel/setup.c17
-rw-r--r--arch/mips/sni/hw-access.c17
-rw-r--r--arch/mips/sni/pci.c3
13 files changed, 82 insertions, 83 deletions
diff --git a/arch/mips/config.in b/arch/mips/config.in
index 171170f3b..02a256200 100644
--- a/arch/mips/config.in
+++ b/arch/mips/config.in
@@ -183,17 +183,6 @@ if [ "$CONFIG_SGI" != "y" ]; then
endmenu
fi
-# Conditionally compile in the Uniform CD-ROM driver
-if [ "$CONFIG_BLK_DEV_IDECD" = "y" -o "$CONFIG_BLK_DEV_SR" = "y" -o "$CONFIG_SBPCD" = "y" -o "$CONFIG_MCD" = "y" -o "$CONFIG_CM206" = "y" -o "$CONFIG_CDU31A" = "y" ]; then
- define_bool CONFIG_CDROM y
-else
- if [ "$CONFIG_BLK_DEV_IDECD" = "m" -o "$CONFIG_BLK_DEV_SR" = "m" -o "$CONFIG_SBPCD" = "m" -o "$CONFIG_MCD" = "m" -o "$CONFIG_CM206" = "m" -o "$CONFIG_CDU31A" = "m" ]; then
- define_bool CONFIG_CDROM m
- else
- define_bool CONFIG_CDROM n
- fi
-fi
-
source fs/Config.in
source fs/nls/Config.in
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
index 8f4d81b1f..d7d10aa89 100644
--- a/arch/mips/defconfig
+++ b/arch/mips/defconfig
@@ -214,6 +214,7 @@ CONFIG_PCNET32=y
# AX.25 network device drivers
#
# CONFIG_MKISS is not set
+# CONFIG_6PACK is not set
# CONFIG_BPQETHER is not set
# CONFIG_DMASCC is not set
# CONFIG_SCC is not set
@@ -231,7 +232,6 @@ CONFIG_PCNET32=y
# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
#
# CONFIG_CD_NO_IDESCSI is not set
-CONFIG_CDROM=y
#
# Filesystems
diff --git a/arch/mips/jazz/hw-access.c b/arch/mips/jazz/hw-access.c
index c9c423a66..4d2caf21b 100644
--- a/arch/mips/jazz/hw-access.c
+++ b/arch/mips/jazz/hw-access.c
@@ -1,4 +1,4 @@
-/*
+/* $Id: hw-access.c,v 1.7 1998/05/06 02:46:43 ralf Exp $
* Low-level hardware access stuff for Jazz family machines.
*
* This file is subject to the terms and conditions of the GNU General Public
@@ -6,8 +6,6 @@
* for more details.
*
* Copyright (C) 1995, 1996, 1997 by Ralf Baechle
- *
- * $Id: hw-access.c,v 1.6 1998/03/04 08:29:09 ralf Exp $
*/
#include <linux/delay.h>
#include <linux/init.h>
@@ -154,6 +152,8 @@ struct feature jazz_feature = {
static volatile keyboard_hardware *jazz_kh =
(keyboard_hardware *) JAZZ_KEYBOARD_ADDRESS;
+#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
+
static unsigned char jazz_read_input(void)
{
return jazz_kh->data;
@@ -161,11 +161,21 @@ static unsigned char jazz_read_input(void)
static void jazz_write_output(unsigned char val)
{
+ int status;
+
+ do {
+ status = jazz_kh->command;
+ } while (status & KBD_STAT_IBF);
jazz_kh->data = val;
}
static void jazz_write_command(unsigned char val)
{
+ int status;
+
+ do {
+ status = jazz_kh->command;
+ } while (status & KBD_STAT_IBF);
jazz_kh->command = val;
}
diff --git a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c
index 619aaabaa..cf2ab9fca 100644
--- a/arch/mips/kernel/irixelf.c
+++ b/arch/mips/kernel/irixelf.c
@@ -725,6 +725,7 @@ static inline int do_load_irix_binary(struct linux_binprm * bprm,
current->mm->end_data = 0;
current->mm->end_code = 0;
current->mm->mmap = NULL;
+ current->flags &= ~PF_FORKNOEXEC;
elf_entry = (unsigned int) elf_ex.e_entry;
/* Do this so that we can load the interpreter, if need be. We will
@@ -775,8 +776,7 @@ static inline int do_load_irix_binary(struct linux_binprm * bprm,
if (current->binfmt && current->binfmt->module)
__MOD_INC_USE_COUNT(current->binfmt->module);
- current->suid = current->euid = current->fsuid = bprm->e_uid;
- current->sgid = current->egid = current->fsgid = bprm->e_gid;
+ compute_creds(bprm);
current->flags &= ~PF_FORKNOEXEC;
bprm->p = (unsigned long)
create_irix_tables((char *)bprm->p, bprm->argc, bprm->envc,
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
index 728af4cc9..9dcca6184 100644
--- a/arch/mips/kernel/irq.c
+++ b/arch/mips/kernel/irq.c
@@ -4,7 +4,7 @@
* Copyright (C) 1992 Linus Torvalds
* Copyright (C) 1994, 1995, 1996, 1997 Ralf Baechle
*
- * $Id: irq.c,v 1.8 1998/03/17 22:07:35 ralf Exp $
+ * $Id: irq.c,v 1.9 1998/03/22 23:27:12 ralf Exp $
*/
#include <linux/errno.h>
#include <linux/init.h>
@@ -310,7 +310,15 @@ int probe_irq_off (unsigned long irqs)
return i;
}
+int (*irq_cannonicalize)(int irq);
+
+static int 8259a_irq_cannonicalize(int irq)
+{
+ return ((irq == 2) ? 9 : irq);
+}
+
__initfunc(void init_IRQ(void))
{
+ irq_cannonicalize = 8259a_irq_cannonicalize;
irq_setup();
}
diff --git a/arch/mips/kernel/pci.c b/arch/mips/kernel/pci.c
index 6f7374fd2..71a57b73e 100644
--- a/arch/mips/kernel/pci.c
+++ b/arch/mips/kernel/pci.c
@@ -5,7 +5,6 @@
*
* MIPS implementation of PCI BIOS services for PCI support.
*/
-#include <linux/bios32.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/kernel.h>
@@ -36,53 +35,6 @@ int pcibios_present (void)
}
/*
- * Given the vendor and device ids, find the n'th instance of that device
- * in the system.
- */
-int pcibios_find_device (unsigned short vendor, unsigned short device_id,
- unsigned short index, unsigned char *bus,
- unsigned char *devfn)
-{
- unsigned int curr = 0;
- struct pci_dev *dev;
-
- for (dev = pci_devices; dev; dev = dev->next) {
- if (dev->vendor == vendor && dev->device == device_id) {
- if (curr == index) {
- *devfn = dev->devfn;
- *bus = dev->bus->number;
- return PCIBIOS_SUCCESSFUL;
- }
- ++curr;
- }
- }
- return PCIBIOS_DEVICE_NOT_FOUND;
-}
-
-/*
- * Given the class, find the n'th instance of that device
- * in the system.
- */
-int pcibios_find_class (unsigned int class_code, unsigned short index,
- unsigned char *bus, unsigned char *devfn)
-{
- unsigned int curr = 0;
- struct pci_dev *dev;
-
- for (dev = pci_devices; dev; dev = dev->next) {
- if (dev->class == class_code) {
- if (curr == index) {
- *devfn = dev->devfn;
- *bus = dev->bus->number;
- return PCIBIOS_SUCCESSFUL;
- }
- ++curr;
- }
- }
- return PCIBIOS_DEVICE_NOT_FOUND;
-}
-
-/*
* The functions below are machine specific and must be reimplented for
* each PCI chipset configuration. We just run the hook to the machine
* specific implementation.
@@ -129,4 +81,9 @@ int pcibios_write_config_dword (unsigned char bus, unsigned char dev_fn,
return pci_ops->pcibios_write_config_dword(bus, dev_fn, where, val);
}
+__initfunc(char *pcibios_setup(char *str))
+{
+ return str;
+}
+
#endif /* defined(CONFIG_PCI) */
diff --git a/arch/mips/kernel/syscalls.h b/arch/mips/kernel/syscalls.h
index 33bec5be8..3a5c55540 100644
--- a/arch/mips/kernel/syscalls.h
+++ b/arch/mips/kernel/syscalls.h
@@ -7,7 +7,7 @@
*
* Copyright (C) 1995, 1996 by Ralf Baechle
*
- * $Id: syscalls.h,v 1.10 1997/12/16 05:34:38 ralf Exp $
+ * $Id: syscalls.h,v 1.11 1998/03/17 22:07:37 ralf Exp $
*/
/*
@@ -34,7 +34,7 @@ SYS(sys_chdir, 1)
SYS(sys_time, 1)
SYS(sys_mknod, 3)
SYS(sys_chmod, 2) /* 4015 */
-SYS(sys_chown, 3)
+SYS(sys_lchown, 3)
SYS(sys_ni_syscall, 0)
SYS(sys_stat, 2)
SYS(sys_lseek, 3)
@@ -220,4 +220,5 @@ SYS(sys_rt_sigqueueinfo, 3)
SYS(sys_rt_sigsuspend, 2)
SYS(sys_pread, 4) /* 4200 */
SYS(sys_pwrite, 4)
-SYS(sys_lchown, 3)
+SYS(sys_chown, 3)
+SYS(sys_getcwd, 2)
diff --git a/arch/mips/lib/csum_partial_copy.S b/arch/mips/lib/csum_partial_copy.S
index 62ee35395..d5b281574 100644
--- a/arch/mips/lib/csum_partial_copy.S
+++ b/arch/mips/lib/csum_partial_copy.S
@@ -1,13 +1,13 @@
-/*
+/* $Id: csum_partial_copy.S,v 1.5 1998/05/06 02:43:34 ralf Exp $
+ *
+ * Unified implementation of csum_copy_partial, csum_copy_partial_from_user
+ * and csum_copy_partial_nocheck.
+ *
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1998 Ralf Baechle
- *
- * $Id: csum_partial_copy.S,v 1.3 1998/05/01 06:54:07 ralf Exp $
- *
- * Unified implementation of csum_copy_partial and csum_copy_partial_from_user.
*/
#include <asm/asm.h>
#include <asm/offset.h>
@@ -179,6 +179,7 @@ small_csumcpy:
.align 5
LEAF(csum_partial_copy_from_user)
addu t5, src, a2 # end address for fixup
+EXPORT(csum_partial_copy_nocheck)
EXPORT(csum_partial_copy)
move sum, zero # clear computed sum
move t7, zero # clear odd flag
diff --git a/arch/mips/lib/ide-std.c b/arch/mips/lib/ide-std.c
index 47b103c03..e6bf4dc5f 100644
--- a/arch/mips/lib/ide-std.c
+++ b/arch/mips/lib/ide-std.c
@@ -20,6 +20,8 @@ static int std_ide_default_irq(ide_ioreg_t base)
case 0x170: return 15;
case 0x1e8: return 11;
case 0x168: return 10;
+ case 0x1e0: return 8;
+ case 0x160: return 12;
default:
return 0;
}
@@ -32,6 +34,8 @@ static ide_ioreg_t std_ide_default_io_base(int index)
case 1: return 0x170;
case 2: return 0x1e8;
case 3: return 0x168;
+ case 4: return 0x1e0;
+ case 5: return 0x160;
default:
return 0;
}
diff --git a/arch/mips/sgi/kernel/indy_int.c b/arch/mips/sgi/kernel/indy_int.c
index 950744328..65340f786 100644
--- a/arch/mips/sgi/kernel/indy_int.c
+++ b/arch/mips/sgi/kernel/indy_int.c
@@ -4,7 +4,7 @@
*
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
*
- * $Id: indy_int.c,v 1.6 1998/03/17 22:07:41 ralf Exp $
+ * $Id: indy_int.c,v 1.7 1998/04/05 11:23:58 ralf Exp $
*/
#include <linux/config.h>
#include <linux/init.h>
@@ -417,8 +417,16 @@ void free_irq(unsigned int irq, void *dev_id)
printk("Trying to free free IRQ%d\n",irq);
}
+int (*irq_cannonicalize)(int irq);
+
+static int indy_irq_cannonicalize(int irq)
+{
+ return irq; /* Sane hardware, sane code ... */
+}
+
__initfunc(void init_IRQ(void))
{
+ irq_cannonicalize = indy_irq_cannonicalize;
irq_setup();
}
diff --git a/arch/mips/sgi/kernel/setup.c b/arch/mips/sgi/kernel/setup.c
index 6b2c1846e..5107edb6f 100644
--- a/arch/mips/sgi/kernel/setup.c
+++ b/arch/mips/sgi/kernel/setup.c
@@ -1,9 +1,8 @@
-/*
+/* $Id: setup.c,v 1.8 1998/05/06 02:46:46 ralf Exp $
+ *
* setup.c: SGI specific setup, including init of the feature struct.
*
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
- *
- * $Id: setup.c,v 1.7 1998/03/04 08:47:27 ralf Exp $
*/
#include <linux/init.h>
#include <linux/kernel.h>
@@ -31,6 +30,8 @@ struct feature sgi_feature = {
static volatile struct hpc_keyb *sgi_kh = (struct hpc_keyb *) (KSEG1 + 0x1fbd9800 + 64);
+#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
+
static unsigned char sgi_read_input(void)
{
return sgi_kh->data;
@@ -38,11 +39,21 @@ static unsigned char sgi_read_input(void)
static void sgi_write_output(unsigned char val)
{
+ int status;
+
+ do {
+ status = sgi_kh->command;
+ } while (status & KBD_STAT_IBF);
sgi_kh->data = val;
}
static void sgi_write_command(unsigned char val)
{
+ int status;
+
+ do {
+ status = sgi_kh->command;
+ } while (status & KBD_STAT_IBF);
sgi_kh->command = val;
}
diff --git a/arch/mips/sni/hw-access.c b/arch/mips/sni/hw-access.c
index 744518971..b32e7dcce 100644
--- a/arch/mips/sni/hw-access.c
+++ b/arch/mips/sni/hw-access.c
@@ -1,4 +1,5 @@
-/*
+/* $Id: hw-access.c,v 1.5 1998/05/06 02:46:46 ralf Exp $
+ *
* Low-level hardware access stuff for SNI RM200 PCI
*
* This file is subject to the terms and conditions of the GNU General Public
@@ -6,8 +7,6 @@
* for more details.
*
* Copyright (C) 1996, 1997, 1998 by Ralf Baechle
- *
- * $Id: hw-access.c,v 1.3 1997/12/01 17:57:39 ralf Exp $
*/
#include <linux/delay.h>
#include <linux/init.h>
@@ -163,6 +162,8 @@ struct feature sni_rm200_pci_feature = {
rtc_write_data
};
+#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
+
static unsigned char sni_read_input(void)
{
return inb(KBD_DATA_REG);
@@ -170,11 +171,21 @@ static unsigned char sni_read_input(void)
static void sni_write_output(unsigned char val)
{
+ int status;
+
+ do {
+ status = inb(KBD_CNTL_REG);
+ } while (status & KBD_STAT_IBF);
outb(val, KBD_DATA_REG);
}
static void sni_write_command(unsigned char val)
{
+ int status;
+
+ do {
+ status = inb(KBD_CNTL_REG);
+ } while (status & KBD_STAT_IBF);
outb(val, KBD_CNTL_REG);
}
diff --git a/arch/mips/sni/pci.c b/arch/mips/sni/pci.c
index e2255b127..0e497450a 100644
--- a/arch/mips/sni/pci.c
+++ b/arch/mips/sni/pci.c
@@ -5,10 +5,9 @@
*
* SNI specific PCI support for RM200/RM300.
*
- * $Id: pci.c,v 1.3 1998/03/04 08:47:29 ralf Exp $
+ * $Id: pci.c,v 1.5 1998/05/04 01:15:23 ralf Exp $
*/
#include <linux/config.h>
-#include <linux/bios32.h>
#include <linux/pci.h>
#include <linux/types.h>
#include <asm/byteorder.h>