Index: Makefile =================================================================== RCS file: /var/cvs/linux/Makefile,v retrieving revision 1.399 diff -u -p -r1.399 Makefile --- Makefile 30 Jun 2003 04:54:56 -0000 1.399 +++ Makefile 8 Jul 2003 01:47:00 -0000 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 21 -EXTRAVERSION = -pa1 +EXTRAVERSION = -pa2 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Index: arch/parisc/kernel/parisc_ksyms.c =================================================================== RCS file: /var/cvs/linux/arch/parisc/kernel/parisc_ksyms.c,v retrieving revision 1.45 diff -u -p -r1.45 parisc_ksyms.c --- arch/parisc/kernel/parisc_ksyms.c 16 Mar 2003 22:17:35 -0000 1.45 +++ arch/parisc/kernel/parisc_ksyms.c 8 Jul 2003 01:47:00 -0000 @@ -141,10 +141,12 @@ extern long sys_open(const char *, int, extern off_t sys_lseek(int, off_t, int); extern int sys_read(int, char *, int); extern int sys_write(int, const char *, int); +asmlinkage long sys_wait4(pid_t ,unsigned int *, int, struct rusage *); EXPORT_SYMBOL(sys_open); EXPORT_SYMBOL(sys_lseek); EXPORT_SYMBOL(sys_read); EXPORT_SYMBOL(sys_write); +EXPORT_SYMBOL(sys_wait4); #include EXPORT_SYMBOL(__up); @@ -167,7 +169,7 @@ extern void $$divU(void); extern void $$remI(void); extern void $$remU(void); extern void $$mulI(void); -extern void $$mulU(void); +/* extern void $$mulU(void); */ extern void $$divU_3(void); extern void $$divU_5(void); extern void $$divU_6(void); @@ -193,7 +195,7 @@ EXPORT_SYMBOL_NOVERS($$remI); EXPORT_SYMBOL_NOVERS($$remU); EXPORT_SYMBOL_NOVERS($$mulI); #ifndef __LP64__ -EXPORT_SYMBOL_NOVERS($$mulU); +/* EXPORT_SYMBOL_NOVERS($$mulU); */ #endif EXPORT_SYMBOL_NOVERS($$divU_3); EXPORT_SYMBOL_NOVERS($$divU_5); @@ -223,6 +225,9 @@ EXPORT_SYMBOL_NOVERS(__ashrdi3); EXPORT_SYMBOL_NOVERS(__ashldi3); EXPORT_SYMBOL_NOVERS(__lshrdi3); EXPORT_SYMBOL_NOVERS(__muldi3); + +asmlinkage void * __canonicalize_funcptr_for_compare(void *); +EXPORT_SYMBOL_NOVERS(__canonicalize_funcptr_for_compare); #ifdef __LP64__ extern void __divdi3(void); Index: arch/parisc/kernel/real2.S =================================================================== RCS file: /var/cvs/linux/arch/parisc/kernel/real2.S,v retrieving revision 1.6 diff -u -p -r1.6 real2.S --- arch/parisc/kernel/real2.S 30 May 2002 16:18:15 -0000 1.6 +++ arch/parisc/kernel/real2.S 8 Jul 2003 01:47:00 -0000 @@ -123,7 +123,7 @@ save_control_regs: nop restore_control_regs: - load32 PA(save_cr_space + (N_SAVED_REGS * REG_SZ)), %r26 + load32 PA(save_cr_space+(N_SAVED_REGS*REG_SZ)), %r26 POP_CR(%cr15, %r26) POP_CR(%cr31, %r26) POP_CR(%cr30, %r26) @@ -275,6 +275,7 @@ r64_ret: nop #endif + .export pc_in_user_space .text /* Doesn't belong here but I couldn't find a nicer spot. */ @@ -283,3 +284,17 @@ pc_in_user_space: bv,n 0(%rp) nop + + .export __canonicalize_funcptr_for_compare + .text + /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html + ** GCC 3.3 and later has a new function in libgcc.a for + ** comparing function pointers. + */ +__canonicalize_funcptr_for_compare: +#ifdef __LP64__ + bve (%r2) +#else + bv %r0(%r2) +#endif + copy %r26,%r28 Index: drivers/char/genrtc.c =================================================================== RCS file: /var/cvs/linux/drivers/char/genrtc.c,v retrieving revision 1.9 diff -u -p -r1.9 genrtc.c --- drivers/char/genrtc.c 12 Jan 2003 12:37:26 -0000 1.9 +++ drivers/char/genrtc.c 8 Jul 2003 01:47:00 -0000 @@ -99,7 +99,7 @@ static spinlock_t gen_rtc_lock = SPIN_LO static void gen_rtc_interrupt(unsigned long arg); /* - * Routine to poll RTC seconds field for change as often as posible, + * Routine to poll RTC seconds field for change as often as possible, * after first RTC_UIE use timer to reduce polling */ static void genrtc_troutine(void *data) Index: drivers/ide/Makefile =================================================================== RCS file: /var/cvs/linux/drivers/ide/Makefile,v retrieving revision 1.11 diff -u -p -r1.11 Makefile --- drivers/ide/Makefile 26 Jun 2003 15:07:16 -0000 1.11 +++ drivers/ide/Makefile 8 Jul 2003 01:47:00 -0000 @@ -8,7 +8,6 @@ # In the future, some of these should be built conditionally. # -O_TARGET := idedriver.o export-objs := ide-iops.o ide-taskfile.o ide-proc.o ide.o ide-probe.o ide-dma.o ide-lib.o setup-pci.o ide-io.o ide-disk.o @@ -29,24 +28,23 @@ endif # Core IDE code - must come before legacy -obj-$(CONFIG_BLK_DEV_IDE) += ide-probe.o ide-geometry.o ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-io.o ide-default.o -obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o -obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o -obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o -obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o +ide-core-objs := ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-io.o ide-proc.o +ide-detect-objs := ide-probe.o ide-geometry.o ifeq ($(CONFIG_BLK_DEV_IDEPCI),y) -obj-$(CONFIG_BLK_DEV_IDE) += setup-pci.o +ide-core-objs += setup-pci.o endif ifeq ($(CONFIG_BLK_DEV_IDEDMA_PCI),y) -obj-$(CONFIG_BLK_DEV_IDE) += ide-dma.o +ide-core-objs += ide-dma.o endif -obj-$(CONFIG_BLK_DEV_ISAPNP) += ide-pnp.o - -ifeq ($(CONFIG_BLK_DEV_IDE),y) -obj-$(CONFIG_PROC_FS) += ide-proc.o -endif +# Initialisation order: +# Core sets up +# Legacy drivers may register a callback +# Drivers are pre initialised +# Probe inits the drivers and driver callbacks +# Raid scans the devices +obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o ifeq ($(CONFIG_BLK_DEV_IDE),y) obj-y += legacy/idedriver-legacy.o @@ -58,10 +56,29 @@ else endif endif +obj-$(CONFIG_BLK_DEV_ISAPNP) += ide-pnp.o + +obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o +obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o +obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o +obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o +obj-$(CONFIG_BLK_DEV_IDE) += ide-default.o + +obj-$(CONFIG_BLK_DEV_IDE) += ide-detect.o ifeq ($(CONFIG_BLK_DEV_IDE),y) # RAID must be last of all obj-y += raid/idedriver-raid.o endif +list-multi := ide-core.o ide-detect.o +O_TARGET := idedriver.o + include $(TOPDIR)/Rules.make + +ide-core.o: $(ide-core-objs) + $(LD) -r -o $@ $(ide-core-objs) + +ide-detect.o: $(ide-detect-objs) + $(LD) -r -o $@ $(ide-detect-objs) + Index: drivers/ide/ide-io.c =================================================================== RCS file: /var/cvs/linux/drivers/ide/ide-io.c,v retrieving revision 1.2 diff -u -p -r1.2 ide-io.c --- drivers/ide/ide-io.c 26 Jun 2003 15:07:18 -0000 1.2 +++ drivers/ide/ide-io.c 8 Jul 2003 01:47:00 -0000 @@ -896,6 +896,8 @@ void do_ide_request(request_queue_t *q) ide_do_request(q->queuedata, IDE_NO_IRQ); } +EXPORT_SYMBOL(do_ide_request); + /* * un-busy the hwgroup etc, and clear any pending DMA status. we want to * retry the current request in pio mode instead of risking tossing it Index: drivers/ide/ide.c =================================================================== RCS file: /var/cvs/linux/drivers/ide/ide.c,v retrieving revision 1.14 diff -u -p -r1.14 ide.c --- drivers/ide/ide.c 26 Jun 2003 15:07:19 -0000 1.14 +++ drivers/ide/ide.c 8 Jul 2003 01:47:00 -0000 @@ -1414,6 +1414,8 @@ void ide_add_generic_settings (ide_drive #endif } +EXPORT_SYMBOL(ide_add_generic_settings); + /* * Delay for *at least* 50ms. As we don't know how much time is left * until the next tick occurs, we wait an extra tick to be safe. Index: drivers/ide/pci/ns87415.c =================================================================== RCS file: /var/cvs/linux/drivers/ide/pci/ns87415.c,v retrieving revision 1.2 diff -u -p -r1.2 ns87415.c --- drivers/ide/pci/ns87415.c 26 Jun 2003 15:07:20 -0000 1.2 +++ drivers/ide/pci/ns87415.c 8 Jul 2003 01:47:00 -0000 @@ -27,6 +27,10 @@ #include "ns87415.h" +#if defined(__hppa__) && defined(CONFIG_SUPERIO) +#include +#endif + static unsigned int ns87415_count = 0, ns87415_control[MAX_HWIFS] = { 0 }; /* @@ -200,7 +204,11 @@ static void __init init_hwif_ns87415 (id } if (!using_inta) +#if defined(__hppa__) && defined(CONFIG_SUPERIO) + hwif->irq = superio_get_ide_irq(); /* legacy mode */ +#else hwif->irq = hwif->channel ? 15 : 14; /* legacy mode */ +#endif else if (!hwif->irq && hwif->mate && hwif->mate->irq) hwif->irq = hwif->mate->irq; /* share IRQ with mate */ Index: drivers/sound/ad1889.c =================================================================== RCS file: /var/cvs/linux/drivers/sound/ad1889.c,v retrieving revision 1.3 diff -u -p -r1.3 ad1889.c --- drivers/sound/ad1889.c 19 Oct 2002 21:31:44 -0000 1.3 +++ drivers/sound/ad1889.c 8 Jul 2003 01:47:01 -0000 @@ -24,7 +24,7 @@ tausq: Anyway, to set up sample rates for D to A, you just use the sample rate on the codec. For A to D, you need to set the codec always to 48K (using the split sample rate feature on the codec) and then set the resampler on the AD1889 to the sample rate you want. Also, when changing the sample rate on the codec you need to power it down and re power it up for the change to take effect! * - * $Id: ad1889.c,v 1.2 2002/10/16 04:14:12 grundler Exp $ + * $Id: ad1889.c,v 1.3 2002/10/19 21:31:44 grundler Exp $ */ #include #include @@ -816,7 +816,7 @@ static void ad1889_codec_write(struct ac ad1889_dev_t *dev = ac97->private_data; //DBG("Writing 0x%x to 0x%lx\n", val, dev->regbase + 0x100 + reg); - return AD1889_WRITEW(dev, 0x100 + reg, val); + AD1889_WRITEW(dev, 0x100 + reg, val); } static u16 ad1889_codec_read(struct ac97_codec *ac97, u8 reg) @@ -1059,7 +1059,7 @@ static struct pci_driver ad1889_driver = name: DEVNAME, id_table: ad1889_id_tbl, probe: ad1889_probe, - remove: ad1889_remove, + remove: __devexit_p(ad1889_remove), }; static int __init ad1889_init_module(void) Index: include/asm-parisc/byteorder.h =================================================================== RCS file: /var/cvs/linux/include/asm-parisc/byteorder.h,v retrieving revision 1.5 diff -u -p -r1.5 byteorder.h --- include/asm-parisc/byteorder.h 30 Jun 2003 04:54:56 -0000 1.5 +++ include/asm-parisc/byteorder.h 8 Jul 2003 01:47:02 -0000 @@ -55,7 +55,7 @@ static __inline__ __const__ __u64 ___arc __u32 t2 = (__u32) ((x) >> 32); ___arch__swab32(t1); ___arch__swab32(t2); - return (((__u64) t1 << 32) + ((__u64) t2)); + return (((__u64) ___arch__swab32(t1) << 32) + ((__u64) ___arch__swab32(t2))); } #endif Index: include/asm-parisc/ide.h =================================================================== RCS file: /var/cvs/linux/include/asm-parisc/ide.h,v retrieving revision 1.9 diff -u -p -r1.9 ide.h --- include/asm-parisc/ide.h 26 Jun 2003 15:08:03 -0000 1.9 +++ include/asm-parisc/ide.h 8 Jul 2003 01:47:02 -0000 @@ -20,8 +20,6 @@ #define MAX_HWIFS 2 #endif -#define ide__sti() __sti() - static __inline__ int ide_default_irq(ide_ioreg_t base) { switch (base) { Index: include/asm-parisc/system.h =================================================================== RCS file: /var/cvs/linux/include/asm-parisc/system.h,v retrieving revision 1.17 diff -u -p -r1.17 system.h --- include/asm-parisc/system.h 26 Jun 2003 15:08:03 -0000 1.17 +++ include/asm-parisc/system.h 8 Jul 2003 01:47:02 -0000 @@ -142,6 +142,7 @@ static inline void set_eiem(unsigned lon #define rmb() mb() #define wmb() mb() #define smp_mb() mb() +#define smp_rmb() mb() #define smp_wmb() mb() #define set_mb(var, value) do { var = value; mb(); } while (0) Index: include/asm-parisc/system_irqsave.h =================================================================== RCS file: /var/cvs/linux/include/asm-parisc/system_irqsave.h,v retrieving revision 1.1 diff -u -p -r1.1 system_irqsave.h --- include/asm-parisc/system_irqsave.h 13 Sep 2002 21:43:37 -0000 1.1 +++ include/asm-parisc/system_irqsave.h 8 Jul 2003 01:47:02 -0000 @@ -7,8 +7,13 @@ #define __cli() __asm__ __volatile__("rsm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) #define __sti() __asm__ __volatile__("ssm %0,%%r0\n" : : "i" (PSW_I) : "memory" ) -#define local_irq_save(x) \ +#define __save_and_cli(x) \ __asm__ __volatile__("rsm %1,%0" : "=r" (x) :"i" (PSW_I) : "memory" ) +#define __save_and_sti(x) \ + __asm__ __volatile__("ssm %1,%0" : "=r" (x) : "i" (PSW_I) : "memory" ) + +#define local_irq_save(x) __save_and_cli(x) +#define local_irq_set(x) __save_and_sti(x) #define local_irq_restore(x) \ __asm__ __volatile__("mtsm %0" : : "r" (x) : "memory" ) #define local_irq_disable() __cli() Index: include/asm-parisc/uaccess.h =================================================================== RCS file: /var/cvs/linux/include/asm-parisc/uaccess.h,v retrieving revision 1.14 diff -u -p -r1.14 uaccess.h --- include/asm-parisc/uaccess.h 26 Oct 2002 21:10:56 -0000 1.14 +++ include/asm-parisc/uaccess.h 8 Jul 2003 01:47:02 -0000 @@ -28,6 +28,11 @@ * that put_user is the same as __put_user, etc. */ +extern int __get_kernel_bad(void); +extern int __get_user_bad(void); +extern int __put_kernel_bad(void); +extern int __put_user_bad(void); + #define access_ok(type,addr,size) (1) #define verify_area(type,addr,size) (0) @@ -35,8 +40,12 @@ #define get_user __get_user #if BITS_PER_LONG == 32 -#define LDD_KERNEL(ptr) BUG() -#define LDD_USER(ptr) BUG() +#define LDD_KERNEL(ptr) __get_kernel_bad(); +#define LDD_USER(ptr) __get_user_bad(); +/* +#define STD_KERNEL(x, ptr) __put_kernel_bad(); +#define STD_USER(x, ptr) __put_user_bad(); +*/ #define STD_KERNEL(x, ptr) __put_kernel_asm64(x,ptr) #define STD_USER(x, ptr) __put_user_asm64(x,ptr) #else @@ -75,7 +84,7 @@ extern const struct exception_table_entr case 2: __get_kernel_asm("ldh",ptr); break; \ case 4: __get_kernel_asm("ldw",ptr); break; \ case 8: LDD_KERNEL(ptr); break; \ - default: BUG(); break; \ + default: __get_kernel_bad(); break; \ } \ } \ else { \ @@ -84,7 +93,7 @@ extern const struct exception_table_entr case 2: __get_user_asm("ldh",ptr); break; \ case 4: __get_user_asm("ldw",ptr); break; \ case 8: LDD_USER(ptr); break; \ - default: BUG(); break; \ + default: __get_user_bad(); break; \ } \ } \ \ @@ -144,7 +153,7 @@ extern const struct exception_table_entr case 2: __put_kernel_asm("sth",x,ptr); break; \ case 4: __put_kernel_asm("stw",x,ptr); break; \ case 8: STD_KERNEL(x,ptr); break; \ - default: BUG(); break; \ + default: __put_kernel_bad(); break; \ } \ } \ else { \ @@ -153,7 +162,7 @@ extern const struct exception_table_entr case 2: __put_user_asm("sth",x,ptr); break; \ case 4: __put_user_asm("stw",x,ptr); break; \ case 8: STD_USER(x,ptr); break; \ - default: BUG(); break; \ + default: __put_user_bad(); break; \ } \ } \ \ @@ -211,44 +220,35 @@ extern const struct exception_table_entr : "=r"(__pu_err) \ : "r"(ptr), "r"(x), "0"(__pu_err)) -static inline void __put_kernel_asm64(u64 x, void *ptr) -{ - u32 hi = x>>32; - u32 lo = x&0xffffffff; - __asm__ __volatile__ ( - "\n1:\tstw %1,0(%0)\n" - "\n2:\tstw %2,4(%0)\n" - "3:\n" - "\t.section __ex_table,\"a\"\n" - "\t.word\t1b\n" - "\t.word\t(3b-1b)+1\n" - "\t.word\t2b\n" - "\t.word\t(3b-2b)+1\n" - "\t.previous" - : : "r"(ptr), "r"(hi), "r"(lo)); - -} - -static inline void __put_user_asm64(u64 x, void *ptr) -{ - u32 hi = x>>32; - u32 lo = x&0xffffffff; - __asm__ __volatile__ ( - "\n1:\tstw %1,0(%%sr3,%0)\n" - "\n2:\tstw %2,4(%%sr3,%0)\n" - "3:\n" - "\t.section __ex_table,\"a\"\n" - "\t.word\t1b\n" - "\t.word\t(3b-1b)+1\n" - "\t.word\t2b\n" - "\t.word\t(3b-2b)+1\n" - "\t.previous" - : : "r"(ptr), "r"(hi), "r"(lo)); +#define __put_kernel_asm64(x, ptr) \ + __asm__ __volatile__ ( \ + "\n1:\tstw\t%2,0(%1)\n" \ + "2:\tstw\t%R2,4(%1)\n" \ + "3:\n" \ + "\t.section __ex_table,\"a\"\n" \ + "\t.word\t1b\n" \ + "\t.word\t(3b-1b)+1\n" \ + "\t.word\t2b\n" \ + "\t.word\t(3b-2b)+1\n" \ + "\t.previous" \ + : "=r"(__pu_err) \ + : "r"(ptr), "r"(x), "0"(__pu_err)) -} +#define __put_user_asm64(x, ptr) \ + __asm__ __volatile__ ( \ + "\n1:\tstw\t%2,0(%%sr3,%1)\n" \ + "2:\tstw\t%R2,4(%%sr3,%1)\n" \ + "3:\n" \ + "\t.section __ex_table,\"a\"\n" \ + "\t.word\t1b\n" \ + "\t.word\t(3b-1b)+1\n" \ + "\t.word\t2b\n" \ + "\t.word\t(3b-2b)+1\n" \ + "\t.previous" \ + : "=r"(__pu_err) \ + : "r"(ptr), "r"(x), "0"(__pu_err)) #endif - /* * Complex access routines -- external declarations