Commit 8a1c2f7e authored by Andy Grover's avatar Andy Grover

Merge groveronline.com:/root/bk/linux-2.5

into groveronline.com:/root/bk/linux-acpi
parents 88557c46 27d23d3f
...@@ -2440,7 +2440,6 @@ D: implemented kmod ...@@ -2440,7 +2440,6 @@ D: implemented kmod
D: modularized BSD Unix domain sockets D: modularized BSD Unix domain sockets
N: Martin Kasper Petersen N: Martin Kasper Petersen
E: mkp@linuxcare.com
E: mkp@mkp.net E: mkp@mkp.net
D: PA-RISC port D: PA-RISC port
D: XFS file system D: XFS file system
...@@ -3466,14 +3465,10 @@ S: D-73732 Esslingen ...@@ -3466,14 +3465,10 @@ S: D-73732 Esslingen
S: Germany S: Germany
N: Leonard N. Zubkoff N: Leonard N. Zubkoff
E: lnz@dandelion.com
W: http://www.dandelion.com/Linux/ W: http://www.dandelion.com/Linux/
D: BusLogic SCSI driver D: BusLogic SCSI driver
D: Mylex DAC960 PCI RAID driver D: Mylex DAC960 PCI RAID driver
D: Miscellaneous kernel fixes D: Miscellaneous kernel fixes
S: 3078 Sulphur Spring Court
S: San Jose, California 95148
S: USA
N: Alessandro Zummo N: Alessandro Zummo
E: azummo@ita.flashnet.it E: azummo@ita.flashnet.it
......
VERSION = 2 VERSION = 2
PATCHLEVEL = 5 PATCHLEVEL = 5
SUBLEVEL = 54 SUBLEVEL = 55
EXTRAVERSION = EXTRAVERSION =
# *DOCUMENTATION* # *DOCUMENTATION*
......
...@@ -303,11 +303,6 @@ config X86_POPAD_OK ...@@ -303,11 +303,6 @@ config X86_POPAD_OK
depends on !M386 depends on !M386
default y default y
config X86_USE_STRING_486
bool
depends on MELAN || M586MMX || M586TSC || M586 || M486
default y
config X86_ALIGNMENT_16 config X86_ALIGNMENT_16
bool bool
depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486
...@@ -345,11 +340,11 @@ config X86_OOSTORE ...@@ -345,11 +340,11 @@ config X86_OOSTORE
config X86_PREFETCH config X86_PREFETCH
bool bool
depends on MPENTIUMIII || MP4 depends on MPENTIUMIII || MPENTIUM4
default y default y
config X86_SSE2 config X86_SSE2
bool bool
depends on MK8 || MPENTIUM4 depends on MK8 || MPENTIUM4
default y default y
......
...@@ -419,8 +419,8 @@ edd_show_info_flags(struct edd_device *edev, char *buf, size_t count, ...@@ -419,8 +419,8 @@ edd_show_info_flags(struct edd_device *edev, char *buf, size_t count,
return 0; return 0;
} }
if (info->params.info_flags & EDD_INFO_DMA_BOUNDRY_ERROR_TRANSPARENT) if (info->params.info_flags & EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT)
p += snprintf(p, left, "DMA boundry error transparent\n"); p += snprintf(p, left, "DMA boundary error transparent\n");
if (info->params.info_flags & EDD_INFO_GEOMETRY_VALID) if (info->params.info_flags & EDD_INFO_GEOMETRY_VALID)
p += snprintf(p, left, "geometry valid\n"); p += snprintf(p, left, "geometry valid\n");
if (info->params.info_flags & EDD_INFO_REMOVABLE) if (info->params.info_flags & EDD_INFO_REMOVABLE)
......
...@@ -19,7 +19,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size, ...@@ -19,7 +19,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
void *ret; void *ret;
int gfp = GFP_ATOMIC; int gfp = GFP_ATOMIC;
if (dev == NULL || ((u32)*dev->dma_mask != 0xffffffff)) if (dev == NULL || (*dev->dma_mask < 0xffffffff))
gfp |= GFP_DMA; gfp |= GFP_DMA;
ret = (void *)__get_free_pages(gfp, get_order(size)); ret = (void *)__get_free_pages(gfp, get_order(size));
......
...@@ -276,8 +276,11 @@ static inline unsigned long get_cr2(void) ...@@ -276,8 +276,11 @@ static inline unsigned long get_cr2(void)
static inline void do_trap(int trapnr, int signr, char *str, int vm86, static inline void do_trap(int trapnr, int signr, char *str, int vm86,
struct pt_regs * regs, long error_code, siginfo_t *info) struct pt_regs * regs, long error_code, siginfo_t *info)
{ {
if (vm86 && regs->eflags & VM_MASK) if (regs->eflags & VM_MASK) {
goto vm86_trap; if (vm86)
goto vm86_trap;
goto trap_signal;
}
if (!(regs->xcs & 3)) if (!(regs->xcs & 3))
goto kernel_trap; goto kernel_trap;
......
...@@ -161,7 +161,7 @@ static struct temp_map { ...@@ -161,7 +161,7 @@ static struct temp_map {
} temp_mappings[] __initdata = { } temp_mappings[] __initdata = {
{ &temp_boot_pmds[0], (void *)(40UL * 1024 * 1024) }, { &temp_boot_pmds[0], (void *)(40UL * 1024 * 1024) },
{ &temp_boot_pmds[1], (void *)(42UL * 1024 * 1024) }, { &temp_boot_pmds[1], (void *)(42UL * 1024 * 1024) },
{ &temp_boot_pmds[1], (void *)(44UL * 1024 * 1024) }, { &temp_boot_pmds[2], (void *)(44UL * 1024 * 1024) },
{} {}
}; };
......
...@@ -173,7 +173,7 @@ static int atmtcp_v_ioctl(struct atm_dev *dev,unsigned int cmd,void *arg) ...@@ -173,7 +173,7 @@ static int atmtcp_v_ioctl(struct atm_dev *dev,unsigned int cmd,void *arg)
static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb) static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
{ {
struct atmtcp_dev_data *dev_data; struct atmtcp_dev_data *dev_data;
struct atm_vcc *out_vcc; struct atm_vcc *out_vcc=NULL; /* Initializer quietens GCC warning */
struct sk_buff *new_skb; struct sk_buff *new_skb;
struct atmtcp_hdr *hdr; struct atmtcp_hdr *hdr;
int size; int size;
......
...@@ -727,6 +727,7 @@ static int cdrom_load_unload(struct cdrom_device_info *cdi, int slot) ...@@ -727,6 +727,7 @@ static int cdrom_load_unload(struct cdrom_device_info *cdi, int slot)
cgc.cmd[0] = GPCMD_LOAD_UNLOAD; cgc.cmd[0] = GPCMD_LOAD_UNLOAD;
cgc.cmd[4] = 2 + (slot >= 0); cgc.cmd[4] = 2 + (slot >= 0);
cgc.cmd[8] = slot; cgc.cmd[8] = slot;
cgc.timeout = 60 * HZ;
/* The Sanyo 3 CD changer uses byte 7 of the /* The Sanyo 3 CD changer uses byte 7 of the
GPCMD_TEST_UNIT_READY to command to switch CDs instead of GPCMD_TEST_UNIT_READY to command to switch CDs instead of
...@@ -1901,6 +1902,7 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, ...@@ -1901,6 +1902,7 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
{ {
struct cdrom_device_ops *cdo = cdi->ops; struct cdrom_device_ops *cdo = cdi->ops;
struct cdrom_generic_command cgc; struct cdrom_generic_command cgc;
struct request_sense sense;
char buffer[32]; char buffer[32];
int ret = 0; int ret = 0;
...@@ -1935,9 +1937,11 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, ...@@ -1935,9 +1937,11 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
cgc.buffer = (char *) kmalloc(blocksize, GFP_KERNEL); cgc.buffer = (char *) kmalloc(blocksize, GFP_KERNEL);
if (cgc.buffer == NULL) if (cgc.buffer == NULL)
return -ENOMEM; return -ENOMEM;
memset(&sense, 0, sizeof(sense));
cgc.sense = &sense;
cgc.data_direction = CGC_DATA_READ; cgc.data_direction = CGC_DATA_READ;
ret = cdrom_read_block(cdi, &cgc, lba, 1, format, blocksize); ret = cdrom_read_block(cdi, &cgc, lba, 1, format, blocksize);
if (ret) { if (ret && sense.sense_key==0x05 && sense.asc==0x20 && sense.ascq==0x00) {
/* /*
* SCSI-II devices are not required to support * SCSI-II devices are not required to support
* READ_CD, so let's try switching block size * READ_CD, so let's try switching block size
......
...@@ -33,10 +33,11 @@ ip2_loadmain(int *, int *, unsigned char *, int ); // ref into ip2main.c ...@@ -33,10 +33,11 @@ ip2_loadmain(int *, int *, unsigned char *, int ); // ref into ip2main.c
*/ */
static int io[IP2_MAX_BOARDS]= { 0, 0, 0, 0 }; static int io[IP2_MAX_BOARDS]= { 0, 0, 0, 0 };
static int irq[IP2_MAX_BOARDS] = { -1, -1, -1, -1 }; static int irq[IP2_MAX_BOARDS] = { -1, -1, -1, -1 };
static int poll_only = 0;
#ifdef MODULE #ifdef MODULE
static int poll_only = 0;
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0) # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
MODULE_AUTHOR("Doug McNash"); MODULE_AUTHOR("Doug McNash");
MODULE_DESCRIPTION("Computone IntelliPort Plus Driver"); MODULE_DESCRIPTION("Computone IntelliPort Plus Driver");
......
...@@ -596,7 +596,7 @@ static ssize_t power_read_file (struct file *file, char *buf, size_t count, loff ...@@ -596,7 +596,7 @@ static ssize_t power_read_file (struct file *file, char *buf, size_t count, loff
if (*offset < 0) if (*offset < 0)
return -EINVAL; return -EINVAL;
if (count <= 0) if (count == 0 || count > 16384)
return 0; return 0;
if (*offset != 0) if (*offset != 0)
return 0; return 0;
......
...@@ -1511,7 +1511,8 @@ static int __init HiSax_init(void) ...@@ -1511,7 +1511,8 @@ static int __init HiSax_init(void)
nrcards, (nrcards > 1) ? "s" : ""); nrcards, (nrcards > 1) ? "s" : "");
/* Install only, if at least one card found */ /* Install only, if at least one card found */
HiSax_inithardware(NULL); if (!HiSax_inithardware(NULL))
return -ENODEV;
return 0; return 0;
out_tei: out_tei:
...@@ -1575,7 +1576,8 @@ int elsa_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot) ...@@ -1575,7 +1576,8 @@ int elsa_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
printk(KERN_DEBUG "HiSax: Total %d card%s defined\n", printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
nrcards, (nrcards > 1) ? "s" : ""); nrcards, (nrcards > 1) ? "s" : "");
HiSax_inithardware(busy_flag); if (!HiSax_inithardware(busy_flag))
return -ENODEV;
printk(KERN_NOTICE "HiSax: module installed\n"); printk(KERN_NOTICE "HiSax: module installed\n");
#endif #endif
return 0; return 0;
...@@ -1617,7 +1619,8 @@ int hfc_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot) ...@@ -1617,7 +1619,8 @@ int hfc_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
printk(KERN_DEBUG "HiSax: Total %d card%s defined\n", printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
nrcards, (nrcards > 1) ? "s" : ""); nrcards, (nrcards > 1) ? "s" : "");
HiSax_inithardware(busy_flag); if (!HiSax_inithardware(busy_flag))
return -ENODEV;
printk(KERN_NOTICE "HiSax: module installed\n"); printk(KERN_NOTICE "HiSax: module installed\n");
#endif #endif
return 0; return 0;
...@@ -1659,7 +1662,8 @@ int sedl_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot) ...@@ -1659,7 +1662,8 @@ int sedl_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
printk(KERN_DEBUG "HiSax: Total %d card%s defined\n", printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
nrcards, (nrcards > 1) ? "s" : ""); nrcards, (nrcards > 1) ? "s" : "");
HiSax_inithardware(busy_flag); if (!HiSax_inithardware(busy_flag))
return -ENODEV;
printk(KERN_NOTICE "HiSax: module installed\n"); printk(KERN_NOTICE "HiSax: module installed\n");
#endif #endif
return 0; return 0;
...@@ -1701,7 +1705,8 @@ int avm_a1_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot) ...@@ -1701,7 +1705,8 @@ int avm_a1_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
printk(KERN_DEBUG "HiSax: Total %d card%s defined\n", printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
nrcards, (nrcards > 1) ? "s" : ""); nrcards, (nrcards > 1) ? "s" : "");
HiSax_inithardware(busy_flag); if (!HiSax_inithardware(busy_flag))
return -ENODEV;
printk(KERN_NOTICE "HiSax: module installed\n"); printk(KERN_NOTICE "HiSax: module installed\n");
#endif #endif
return 0; return 0;
......
...@@ -183,7 +183,7 @@ static int check_apm_user(struct apm_user *as, const char *func) ...@@ -183,7 +183,7 @@ static int check_apm_user(struct apm_user *as, const char *func)
static ssize_t do_read(struct file *fp, char *buf, size_t count, loff_t *ppos) static ssize_t do_read(struct file *fp, char *buf, size_t count, loff_t *ppos)
{ {
struct apm_user * as; struct apm_user * as;
int i; size_t i;
apm_event_t event; apm_event_t event;
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
......
# #
# Makefile for the kernel character device drivers. # Makefile for the video capture/playback device drivers.
# #
# All of the (potential) objects that export symbols. # All of the (potential) objects that export symbols.
......
...@@ -4158,7 +4158,6 @@ static int do_zoran_ioctl(struct zoran *zr, unsigned int cmd, ...@@ -4158,7 +4158,6 @@ static int do_zoran_ioctl(struct zoran *zr, unsigned int cmd,
{ {
struct zoran_status bs; struct zoran_status bs;
int norm, input, status; int norm, input, status;
unsigned long timeout;
if (zr->codec_mode != BUZ_MODE_IDLE) { if (zr->codec_mode != BUZ_MODE_IDLE) {
DEBUG1(printk(KERN_ERR DEBUG1(printk(KERN_ERR
...@@ -4204,9 +4203,8 @@ static int do_zoran_ioctl(struct zoran *zr, unsigned int cmd, ...@@ -4204,9 +4203,8 @@ static int do_zoran_ioctl(struct zoran *zr, unsigned int cmd,
/* sleep 1 second */ /* sleep 1 second */
timeout = jiffies + 1 * HZ; set_current_state(TASK_UNINTERRUPTIBLE);
while (jiffies < timeout) schedule_timeout(HZ);
schedule();
/* Get status of video decoder */ /* Get status of video decoder */
......
...@@ -13,7 +13,7 @@ config DEV_APPLETALK ...@@ -13,7 +13,7 @@ config DEV_APPLETALK
config LTPC config LTPC
tristate "Apple/Farallon LocalTalk PC support" tristate "Apple/Farallon LocalTalk PC support"
depends on DEV_APPLETALK depends on DEV_APPLETALK && (ISA || EISA)
help help
This allows you to use the AppleTalk PC card to connect to LocalTalk This allows you to use the AppleTalk PC card to connect to LocalTalk
networks. The card is also known as the Farallon PhoneNet PC card. networks. The card is also known as the Farallon PhoneNet PC card.
...@@ -24,7 +24,7 @@ config LTPC ...@@ -24,7 +24,7 @@ config LTPC
config COPS config COPS
tristate "COPS LocalTalk PC support" tristate "COPS LocalTalk PC support"
depends on DEV_APPLETALK depends on DEV_APPLETALK && (ISA || EISA)
help help
This allows you to use COPS AppleTalk cards to connect to LocalTalk This allows you to use COPS AppleTalk cards to connect to LocalTalk
networks. You also need version 1.3.3 or later of the netatalk networks. You also need version 1.3.3 or later of the netatalk
......
...@@ -114,8 +114,6 @@ static char version[] = ...@@ -114,8 +114,6 @@ static char version[] =
#include <asm/atari_stdma.h> #include <asm/atari_stdma.h>
extern struct net_device *init_etherdev(struct net_device *dev, int sizeof_private);
/* use 0 for production, 1 for verification, >2 for debug /* use 0 for production, 1 for verification, >2 for debug
*/ */
#ifndef NET_DEBUG #ifndef NET_DEBUG
......
...@@ -695,7 +695,7 @@ static int yenta_suspend(pci_socket_t *socket) ...@@ -695,7 +695,7 @@ static int yenta_suspend(pci_socket_t *socket)
/* /*
* This does not work currently. The controller * This does not work currently. The controller
* loses too much informationduring D3 to come up * loses too much information during D3 to come up
* cleanly. We should probably fix yenta_init() * cleanly. We should probably fix yenta_init()
* to update all the critical registers, notably * to update all the critical registers, notably
* the IO and MEM bridging region data.. That is * the IO and MEM bridging region data.. That is
......
This diff is collapsed.
...@@ -2,15 +2,15 @@ ...@@ -2,15 +2,15 @@
#define _GDTH_H #define _GDTH_H
/* /*
* Header file for the GDT ISA/EISA/PCI Disk Array Controller driver for Linux * Header file for the GDT Disk Array/Storage RAID controllers driver for Linux
* *
* gdth.h Copyright (C) 1995-01 ICP vortex Computersysteme GmbH, Achim Leubner * gdth.h Copyright (C) 1995-02 ICP vortex, an Intel company, Achim Leubner
* See gdth.c for further informations and * See gdth.c for further informations and
* below for supported controller types * below for supported controller types
* *
* <achim@vortex.de> * <achim.leubner@intel.com>
* *
* $Id: gdth.h,v 1.44 2001/08/21 11:19:05 achim Exp $ * $Id: gdth.h,v 1.46 2002/02/05 09:39:53 achim Exp $
*/ */
#include <linux/version.h> #include <linux/version.h>
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
/* defines, macros */ /* defines, macros */
/* driver version */ /* driver version */
#define GDTH_VERSION_STR "2.03" #define GDTH_VERSION_STR "2.05"
#define GDTH_VERSION 2 #define GDTH_VERSION 2
#define GDTH_SUBVERSION 3 #define GDTH_SUBVERSION 5
/* protocol version */ /* protocol version */
#define PROTOCOL_VERSION 1 #define PROTOCOL_VERSION 1
...@@ -265,6 +265,7 @@ ...@@ -265,6 +265,7 @@
#define S_CACHE_UNKNOWN 12 /* cache serv.: drive unknown */ #define S_CACHE_UNKNOWN 12 /* cache serv.: drive unknown */
#define S_RAW_SCSI 12 /* raw serv.: target error */ #define S_RAW_SCSI 12 /* raw serv.: target error */
#define S_RAW_ILL 0xff /* raw serv.: illegal */ #define S_RAW_ILL 0xff /* raw serv.: illegal */
#define S_CACHE_RESERV -24 /* cache: reserv. conflict */
/* timeout values */ /* timeout values */
#define INIT_RETRIES 100000 /* 100000 * 1ms = 100s */ #define INIT_RETRIES 100000 /* 100000 * 1ms = 100s */
......
...@@ -161,7 +161,8 @@ static inline char * task_state(struct task_struct *p, char *buffer) ...@@ -161,7 +161,8 @@ static inline char * task_state(struct task_struct *p, char *buffer)
"Uid:\t%d\t%d\t%d\t%d\n" "Uid:\t%d\t%d\t%d\t%d\n"
"Gid:\t%d\t%d\t%d\t%d\n", "Gid:\t%d\t%d\t%d\t%d\n",
get_task_state(p), p->tgid, get_task_state(p), p->tgid,
p->pid, p->pid ? p->real_parent->pid : 0, 0, p->pid, p->pid ? p->real_parent->pid : 0,
p->pid && p->ptrace ? p->parent->pid : 0,
p->uid, p->euid, p->suid, p->fsuid, p->uid, p->euid, p->suid, p->fsuid,
p->gid, p->egid, p->sgid, p->fsgid); p->gid, p->egid, p->sgid, p->fsgid);
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#define EDD_EXT_ENHANCED_DISK_DRIVE_SUPPORT (1 << 2) #define EDD_EXT_ENHANCED_DISK_DRIVE_SUPPORT (1 << 2)
#define EDD_EXT_64BIT_EXTENSIONS (1 << 3) #define EDD_EXT_64BIT_EXTENSIONS (1 << 3)
#define EDD_INFO_DMA_BOUNDRY_ERROR_TRANSPARENT (1 << 0) #define EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT (1 << 0)
#define EDD_INFO_GEOMETRY_VALID (1 << 1) #define EDD_INFO_GEOMETRY_VALID (1 << 1)
#define EDD_INFO_REMOVABLE (1 << 2) #define EDD_INFO_REMOVABLE (1 << 2)
#define EDD_INFO_WRITE_VERIFY (1 << 3) #define EDD_INFO_WRITE_VERIFY (1 << 3)
......
...@@ -15,7 +15,7 @@ extern int printk(const char * fmt, ...) ...@@ -15,7 +15,7 @@ extern int printk(const char * fmt, ...)
typedef struct { typedef struct {
volatile unsigned int lock; volatile unsigned int lock;
#if SPINLOCK_DEBUG #if CONFIG_DEBUG_SPINLOCK
unsigned magic; unsigned magic;
#endif #endif
} spinlock_t; } spinlock_t;
......
...@@ -51,7 +51,7 @@ typedef struct { unsigned long a,b; } __attribute__((aligned(16))) xmm_store_t; ...@@ -51,7 +51,7 @@ typedef struct { unsigned long a,b; } __attribute__((aligned(16))) xmm_store_t;
: "memory"); \ : "memory"); \
} while(0) } while(0)
#define XMMS_RESTORE \ #define XMMS_RESTORE do { \
asm volatile ( \ asm volatile ( \
"sfence ;\n\t" \ "sfence ;\n\t" \
"movups (%1),%%xmm0 ;\n\t" \ "movups (%1),%%xmm0 ;\n\t" \
......
...@@ -70,37 +70,24 @@ static inline int sigfindinword(unsigned long word) ...@@ -70,37 +70,24 @@ static inline int sigfindinword(unsigned long word)
#define _SIG_SET_BINOP(name, op) \ #define _SIG_SET_BINOP(name, op) \
static inline void name(sigset_t *r, const sigset_t *a, const sigset_t *b) \ static inline void name(sigset_t *r, const sigset_t *a, const sigset_t *b) \
{ \ { \
extern void _NSIG_WORDS_is_unsupported_size(void); \
unsigned long a0, a1, a2, a3, b0, b1, b2, b3; \ unsigned long a0, a1, a2, a3, b0, b1, b2, b3; \
unsigned long i; \
\ \
for (i = 0; i < _NSIG_WORDS/4; ++i) { \ switch (_NSIG_WORDS) { \
a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; \ case 4: \
a2 = a->sig[4*i+2]; a3 = a->sig[4*i+3]; \ a3 = a->sig[3]; a2 = a->sig[2]; \
b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; \ b3 = b->sig[3]; b2 = b->sig[2]; \
b2 = b->sig[4*i+2]; b3 = b->sig[4*i+3]; \ r->sig[3] = op(a3, b3); \
r->sig[4*i+0] = op(a0, b0); \ r->sig[2] = op(a2, b2); \
r->sig[4*i+1] = op(a1, b1); \
r->sig[4*i+2] = op(a2, b2); \
r->sig[4*i+3] = op(a3, b3); \
} \
switch (_NSIG_WORDS % 4) { \
case 3: \
a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; a2 = a->sig[4*i+2]; \
b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; b2 = b->sig[4*i+2]; \
r->sig[4*i+0] = op(a0, b0); \
r->sig[4*i+1] = op(a1, b1); \
r->sig[4*i+2] = op(a2, b2); \
break; \
case 2: \ case 2: \
a0 = a->sig[4*i+0]; a1 = a->sig[4*i+1]; \ a1 = a->sig[1]; b1 = b->sig[1]; \
b0 = b->sig[4*i+0]; b1 = b->sig[4*i+1]; \ r->sig[1] = op(a1, b1); \
r->sig[4*i+0] = op(a0, b0); \
r->sig[4*i+1] = op(a1, b1); \
break; \
case 1: \ case 1: \
a0 = a->sig[4*i+0]; b0 = b->sig[4*i+0]; \ a0 = a->sig[0]; b0 = b->sig[0]; \
r->sig[4*i+0] = op(a0, b0); \ r->sig[0] = op(a0, b0); \
break; \ break; \
default: \
_NSIG_WORDS_is_unsupported_size(); \
} \ } \
} }
...@@ -121,18 +108,16 @@ _SIG_SET_BINOP(signandsets, _sig_nand) ...@@ -121,18 +108,16 @@ _SIG_SET_BINOP(signandsets, _sig_nand)
#define _SIG_SET_OP(name, op) \ #define _SIG_SET_OP(name, op) \
static inline void name(sigset_t *set) \ static inline void name(sigset_t *set) \
{ \ { \
unsigned long i; \ extern void _NSIG_WORDS_is_unsupported_size(void); \
\ \
for (i = 0; i < _NSIG_WORDS/4; ++i) { \ switch (_NSIG_WORDS) { \
set->sig[4*i+0] = op(set->sig[4*i+0]); \ case 4: set->sig[3] = op(set->sig[3]); \
set->sig[4*i+1] = op(set->sig[4*i+1]); \ set->sig[2] = op(set->sig[2]); \
set->sig[4*i+2] = op(set->sig[4*i+2]); \ case 2: set->sig[1] = op(set->sig[1]); \
set->sig[4*i+3] = op(set->sig[4*i+3]); \ case 1: set->sig[0] = op(set->sig[0]); \
} \ break; \
switch (_NSIG_WORDS % 4) { \ default: \
case 3: set->sig[4*i+2] = op(set->sig[4*i+2]); \ _NSIG_WORDS_is_unsupported_size(); \
case 2: set->sig[4*i+1] = op(set->sig[4*i+1]); \
case 1: set->sig[4*i+0] = op(set->sig[4*i+0]); \
} \ } \
} }
......
...@@ -113,10 +113,8 @@ static inline void free_one_pgd(mmu_gather_t *tlb, pgd_t * dir) ...@@ -113,10 +113,8 @@ static inline void free_one_pgd(mmu_gather_t *tlb, pgd_t * dir)
} }
pmd = pmd_offset(dir, 0); pmd = pmd_offset(dir, 0);
pgd_clear(dir); pgd_clear(dir);
for (j = 0; j < PTRS_PER_PMD ; j++) { for (j = 0; j < PTRS_PER_PMD ; j++)
prefetchw(pmd+j+(PREFETCH_STRIDE/16));
free_one_pmd(tlb, pmd+j); free_one_pmd(tlb, pmd+j);
}
pmd_free_tlb(tlb, pmd); pmd_free_tlb(tlb, pmd);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment