patch-2.3.17 linux/arch/alpha/kernel/pci_syscall.c

Next file: linux/arch/alpha/kernel/sys_rawhide.c
Previous file: linux/arch/alpha/kernel/pci_setup.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.16/linux/arch/alpha/kernel/pci_syscall.c linux/arch/alpha/kernel/pci_syscall.c
@@ -1,148 +0,0 @@
-/*
- *	pci_syscall.c
- */
-
-#include <linux/config.h>
-#include <linux/errno.h>
-#include <linux/pci.h>
-#include <linux/smp_lock.h>
-#include <asm/uaccess.h>
-
-
-#ifndef CONFIG_PCI
-
-asmlinkage int sys_pciconfig_read() { return -ENOSYS; }
-asmlinkage int sys_pciconfig_write() { return -ENOSYS; }
-
-#else
-
-asmlinkage long
-sys_pciconfig_read(unsigned long bus, unsigned long dfn,
-		   unsigned long off, unsigned long len, void *buf)
-{
-	struct pci_dev *dev;
-	u8 byte;
-	u16 word;
-	u32 dword;
-	long err, cfg_ret;
-
-	err = -EPERM;
-	if (!capable(CAP_SYS_ADMIN))
-		goto error;
-
-	err = -ENODEV;
-	dev = pci_find_slot(bus, dfn);
-	if (!dev)
-		goto error;
-
-	lock_kernel();
-	switch (len) {
-	case 1:
-		cfg_ret = pci_read_config_byte(dev, off, &byte);
-		break;
-	case 2:
-		cfg_ret = pci_read_config_word(dev, off, &word);
-		break;
-	case 4:
-		cfg_ret = pci_read_config_dword(dev, off, &dword);
-		break;
-	default:
-		err = -EINVAL;
-		unlock_kernel();
-		goto error;
-	};
-	unlock_kernel();
-
-	err = -EIO;
-	if (cfg_ret != PCIBIOS_SUCCESSFUL)
-		goto error;
-
-	switch (len) {
-	case 1:
-		err = put_user(byte, (unsigned char *)buf);
-		break;
-	case 2:
-		err = put_user(word, (unsigned short *)buf);
-		break;
-	case 4:
-		err = put_user(dword, (unsigned int *)buf);
-		break;
-	};
-	return err;
-
-error:
-	/* ??? XFree86 doesn't even check the return value.  They
-	   just look for 0xffffffff in the output, since that's what
-	   they get instead of a machine check on x86.  */
-	switch (len) {
-	case 1:
-		put_user(-1, (unsigned char *)buf);
-		break;
-	case 2:
-		put_user(-1, (unsigned short *)buf);
-		break;
-	case 4:
-		put_user(-1, (unsigned int *)buf);
-		break;
-	};
-	return err;
-}
-
-asmlinkage long
-sys_pciconfig_write(unsigned long bus, unsigned long dfn,
-		    unsigned long off, unsigned long len, void *buf)
-{
-	struct pci_dev *dev;
-	u8 byte;
-	u16 word;
-	u32 dword;
-	int err = 0;
-
-	if (!capable(CAP_SYS_ADMIN))
-		return -EPERM;
-	if (!pcibios_present())
-		return -ENOSYS;
-
-	dev = pci_find_slot(bus, dfn);
-	if (!dev)
-		return -ENODEV;
-
-	lock_kernel();
-	switch(len) {
-	case 1:
-		err = get_user(byte, (u8 *)buf);
-		if (err)
-			break;
-		err = pci_write_config_byte(dev, off, byte);
-		if (err != PCIBIOS_SUCCESSFUL)
-			err = -EIO;
-		break;
-
-	case 2:
-		err = get_user(word, (u16 *)buf);
-		if (err)
-			break;
-		err = pci_write_config_byte(dev, off, word);
-		if (err != PCIBIOS_SUCCESSFUL)
-			err = -EIO;
-		break;
-
-	case 4:
-		err = get_user(dword, (u32 *)buf);
-		if (err)
-			break;
-		pci_write_config_byte(dev, off, dword);
-		if (err != PCIBIOS_SUCCESSFUL)
-			err = -EIO;
-		break;
-
-	default:
-		err = -EINVAL;
-		break;
-	};
-	unlock_kernel();
-
-	return err;
-}
-
-#endif /* CONFIG_PCI */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)