]> git.neil.brown.name Git - history.git/commitdiff
Import 2.3.13pre4 2.3.13pre4
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:26:41 +0000 (15:26 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:26:41 +0000 (15:26 -0500)
23 files changed:
Makefile
arch/i386/config.in
arch/i386/kernel/Makefile
arch/i386/kernel/apm.c
arch/i386/kernel/init_task.c
arch/i386/kernel/io_apic.c
arch/i386/kernel/ldt.c
arch/i386/kernel/smp.c
arch/sparc/mm/asyncd.c
drivers/char/Makefile
drivers/char/msbusmouse.c
drivers/sound/es1370.c
fs/binfmt_aout.c
fs/binfmt_elf.c
fs/binfmt_em86.c
fs/binfmt_misc.c
fs/binfmt_script.c
fs/buffer.c
include/asm-i386/init.h
include/linux/init.h
include/linux/module.h
init/main.c
mm/vmscan.c

index 85bfbd0c98c14f2b13d9bc0a59eca7a5aa4f822a..6cca8f5e0b916d1fd910cf60da4b0c0c2432285b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -110,7 +110,7 @@ CORE_FILES  =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o
 FILESYSTEMS    =fs/filesystems.a
 NETWORKS       =net/network.a
 DRIVERS                =drivers/block/block.a \
-                drivers/char/char.a \
+                drivers/char/char.o \
                 drivers/parport/parport.a
 LIBS           =$(TOPDIR)/lib/lib.a
 SUBDIRS                =kernel drivers mm fs net ipc lib
index ae094896a74175400e8ec281933fc805cfc3b7c7..792dbd5ffefd6d5629fc5a3b59006a362959e38a 100644 (file)
@@ -94,8 +94,8 @@ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
 
 source drivers/parport/Config.in
 
-bool 'Advanced Power Management BIOS support' CONFIG_APM
-if [ "$CONFIG_APM" = "y" ]; then
+tristate 'Advanced Power Management BIOS support' CONFIG_APM
+if [ "$CONFIG_APM" != "n" ]; then
   bool '   Ignore USER SUSPEND' CONFIG_APM_IGNORE_USER_SUSPEND
   bool '   Enable PM at boot time' CONFIG_APM_DO_ENABLE
   bool '   Make CPU Idle calls when idle' CONFIG_APM_CPU_IDLE
index 7aba6fdc9948e2aac4fb038447db175dcfe192bc..5a5ef33e5edba20531a7138d3637160078257031 100644 (file)
@@ -34,8 +34,12 @@ else
   endif
 endif
 
-ifdef CONFIG_APM
+ifeq ($(CONFIG_APM),y)
 OX_OBJS += apm.o
+else
+  ifeq ($(CONFIG_APM),m)
+  MX_OBJS += apm.o
+  endif
 endif
 
 ifdef CONFIG_SMP
index e853719827d2f32b1c8f3ddc25c0c5235afa10a1..d8c3063c02f5f674cc22ed3ac03236f6a9a0d5f8 100644 (file)
@@ -1428,7 +1428,7 @@ static int apm(void *unused)
  * In short, if something bad happens, at least we have a choice
  * of just killing the apm thread..
  */
-void __init apm_init(void)
+static int __init apm_init(void)
 {
        static struct proc_dir_entry *ent;
 
@@ -1533,3 +1533,5 @@ void __init apm_init(void)
 
        kernel_thread(apm, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD);
 }
+
+module_init(apm_init)
index e3ca30fd0bcde3d26c37d358733c1a2aa87e4dc0..84fba51064446cdd0b37542023e32381fde15bbf 100644 (file)
@@ -1,10 +1,10 @@
 #include <linux/mm.h>
 #include <linux/sched.h>
+#include <linux/init.h>
 
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 #include <asm/desc.h>
-#include <asm/init.h>
 
 static struct vm_area_struct init_mmap = INIT_MMAP;
 static struct fs_struct init_fs = INIT_FS;
index 7e1b9236aae566ce3908ec61b6ba92b1aaea8070..514487dcebb0789773d1a7b500fc825aee37d627 100644 (file)
@@ -242,7 +242,7 @@ static void clear_IO_APIC (void)
 int pirq_entries [MAX_PIRQS];
 int pirqs_enabled;
 
-static void __init ioapic_setup(char *str, int *ints)
+static int __init ioapic_setup(char *str)
 {
        extern int skip_ioapic_setup;   /* defined in arch/i386/kernel/smp.c */
 
@@ -252,7 +252,7 @@ static void __init ioapic_setup(char *str, int *ints)
 
 __setup("noapic", ioapic_setup);
 
-static void __init ioapic_pirq_setup(char *str)
+static int __init ioapic_pirq_setup(char *str)
 {
        int i, max;
        int ints[11];
@@ -275,6 +275,7 @@ static void __init ioapic_pirq_setup(char *str)
                 */
                pirq_entries[MAX_PIRQS-i-1] = ints[i+1];
        }
+       return 1;
 }
 
 __setup("pirq=", ioapic_pirq_setup);
index 63dc9e127a331f0e78b9f1bab246b9ab88d38869..1c359b4f4f26b269d2e593679093d1a9b50dc2bd 100644 (file)
@@ -98,8 +98,9 @@ static int write_ldt(void * ptr, unsigned long bytecount, int oldmode)
                        printk(KERN_WARNING "LDT allocated for cloned task!\n");
                /*
                 * Possibly do an SMP cross-call to other CPUs to reload
-                * their LDTs
+                * their LDTs?
                 */
+               load_LDT(mm);
        }
 
        lp = (__u32 *) ((ldt_info.entry_number << 3) + (char *) mm->segments);
index adaf730dfc5308ba637ed671d029a1a842fc0303..309f18cd1803a5754a4c668d3a9cccb93202c76f 100644 (file)
@@ -1634,7 +1634,10 @@ static void flush_tlb_others(unsigned int cpumask)
                         * Take care of "crossing" invalidates
                         */
                        if (test_bit(cpu, &smp_invalidate_needed)) {
+                               struct mm_struct *mm = current->mm;
                                clear_bit(cpu, &smp_invalidate_needed);
+                               if (mm)
+                                       atomic_set_mask(1 << cpu, &mm->cpu_vm_mask);
                                local_flush_tlb();
                        }
                        --stuck;
index 300f5aa0adad507888de80d99d164f73dd266ffd..edf5957848fdef4a5ae5c1bdd81d82818be258ad 100644 (file)
@@ -271,3 +271,14 @@ int asyncd(void *unused)
        }
 }
 
+#if CONFIG_AP1000
+
+static int __init init_ap1000(void)
+{
+       kernel_thread(asyncd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+       return 0;
+}
+
+module_init(init_ap1000)
+
+#endif
index 86f513a7aa4be94ca6712dc62440f8e96dadf0fa..a8923be84e6e5f914eb9f1ed8e085405334a850c 100644 (file)
@@ -18,19 +18,19 @@ ALL_SUB_DIRS := $(SUB_DIRS) ftape joystick
 #
 FONTMAPFILE = cp437.uni
 
-L_TARGET := char.a
+O_TARGET := char.o
 M_OBJS   :=
-L_OBJS   := tty_io.o n_tty.o tty_ioctl.o mem.o random.o raw.o
-LX_OBJS  := pty.o misc.o
+O_OBJS   := tty_io.o n_tty.o tty_ioctl.o mem.o random.o raw.o
+OX_OBJS  := pty.o misc.o
 
 ifdef CONFIG_VT
-L_OBJS += vt.o vc_screen.o consolemap.o consolemap_deftbl.o
-LX_OBJS += console.o selection.o
+O_OBJS += vt.o vc_screen.o consolemap.o consolemap_deftbl.o
+OX_OBJS += console.o selection.o
 endif
 
 ifeq ($(CONFIG_SERIAL),y)
   ifeq ($(CONFIG_SUN_SERIAL),)
-  LX_OBJS += serial.o
+  OX_OBJS += serial.o
   endif
 else
   ifeq ($(CONFIG_SERIAL),m)
@@ -42,24 +42,24 @@ endif
 
 ifndef CONFIG_SUN_KEYBOARD
 ifdef CONFIG_VT
-LX_OBJS += keyboard.o
+OX_OBJS += keyboard.o
 endif
  ifneq ($(ARCH),m68k)
-   L_OBJS += pc_keyb.o defkeymap.o
+   O_OBJS += pc_keyb.o defkeymap.o
  endif
 else
 ifdef CONFIG_PCI
-L_OBJS += defkeymap.o
-LX_OBJS += keyboard.o
+O_OBJS += defkeymap.o
+OX_OBJS += keyboard.o
 endif
 endif
 
 ifdef CONFIG_MAGIC_SYSRQ
-LX_OBJS += sysrq.o
+OX_OBJS += sysrq.o
 endif
 
 ifeq ($(CONFIG_ATARI_DSP56K),y)
-L_OBJS += dsp56k.o
+O_OBJS += dsp56k.o
 S = y
 else
   ifeq ($(CONFIG_ATARI_DSP56K),m)
@@ -69,7 +69,7 @@ else
 endif
 
 ifeq ($(CONFIG_ROCKETPORT),y)
-L_OBJS += rocket.o
+O_OBJS += rocket.o
 else
   ifeq ($(CONFIG_ROCKETPORT),m)
   M_OBJS += rocket.o
@@ -77,7 +77,7 @@ else
 endif
 
 ifeq ($(CONFIG_DIGI),y)
-L_OBJS += pcxx.o
+O_OBJS += pcxx.o
 else
   ifeq ($(CONFIG_DIGI),m)
   M_OBJS += pcxx.o
@@ -85,7 +85,7 @@ else
 endif
 
 ifeq ($(CONFIG_DIGIEPCA),y)
-L_OBJS += epca.o
+O_OBJS += epca.o
 else
   ifeq ($(CONFIG_DIGIEPCA),m)
   M_OBJS += epca.o
@@ -93,7 +93,7 @@ else
 endif
 
 ifeq ($(CONFIG_CYCLADES),y)
-L_OBJS += cyclades.o
+O_OBJS += cyclades.o
 else
   ifeq ($(CONFIG_CYCLADES),m)
   M_OBJS += cyclades.o
@@ -101,7 +101,7 @@ else
 endif
 
 ifeq ($(CONFIG_STALLION),y)
-L_OBJS += stallion.o
+O_OBJS += stallion.o
 else
   ifeq ($(CONFIG_STALLION),m)
   M_OBJS += stallion.o
@@ -109,7 +109,7 @@ else
 endif
 
 ifeq ($(CONFIG_ISTALLION),y)
-L_OBJS += istallion.o
+O_OBJS += istallion.o
 else
   ifeq ($(CONFIG_ISTALLION),m)
   M_OBJS += istallion.o
@@ -117,7 +117,7 @@ else
 endif
 
 ifeq ($(CONFIG_RISCOM8),y)
-L_OBJS += riscom8.o
+O_OBJS += riscom8.o
 else
   ifeq ($(CONFIG_RISCOM8),m)
   M_OBJS += riscom8.o
@@ -125,7 +125,7 @@ else
 endif
 
 ifeq ($(CONFIG_ISI),y)
-L_OBJS += isicom.o
+O_OBJS += isicom.o
 else
   ifeq ($(CONFIG_ISI),m)
   M_OBJS += isicom.o
@@ -133,7 +133,7 @@ else
 endif
 
 ifeq ($(CONFIG_ESPSERIAL),y)
-L_OBJS += esp.o
+O_OBJS += esp.o
 else
   ifeq ($(CONFIG_ESPSERIAL),m)
   M_OBJS += esp.o
@@ -149,7 +149,7 @@ ifeq ($(CONFIG_N_HDLC),m)
 endif
 
 ifeq ($(CONFIG_SPECIALIX),y)
-L_OBJS += specialix.o
+O_OBJS += specialix.o
 else
   ifeq ($(CONFIG_SPECIALIX),m)
   M_OBJS += specialix.o
@@ -157,7 +157,7 @@ else
 endif
 
 ifeq ($(CONFIG_ATIXL_BUSMOUSE),y)
-L_OBJS += atixlmouse.o
+O_OBJS += atixlmouse.o
 else
   ifeq ($(CONFIG_ATIXL_BUSMOUSE),m)
   M_OBJS += atixlmouse.o
@@ -165,7 +165,7 @@ else
 endif
 
 ifeq ($(CONFIG_LOGIBUSMOUSE),y)
-L_OBJS += logibusmouse.o
+O_OBJS += logibusmouse.o
 else
   ifeq ($(CONFIG_LOGIBUSMOUSE),m)
   M_OBJS += logibusmouse.o
@@ -173,7 +173,7 @@ else
 endif
 
 ifeq ($(CONFIG_PRINTER),y)
-L_OBJS += lp.o
+O_OBJS += lp.o
 else
   ifeq ($(CONFIG_PRINTER),m)
   M_OBJS += lp.o
@@ -181,7 +181,7 @@ else
 endif
 
 ifeq ($(CONFIG_JOYSTICK),y)
-L_OBJS += joystick/js.o
+O_OBJS += joystick/js.o
 SUB_DIRS += joystick
 MOD_SUB_DIRS += joystick
 else
@@ -192,7 +192,7 @@ endif
 
 ifeq ($(CONFIG_MOUSE),y)
 M = y
-LX_OBJS += busmouse.o
+OX_OBJS += busmouse.o
 else
   ifeq ($(CONFIG_MOUSE),m)
   MM = m
@@ -201,7 +201,7 @@ else
 endif
 
 ifeq ($(CONFIG_DTLK),y)
-L_OBJS += dtlk.o
+O_OBJS += dtlk.o
 else
   ifeq ($(CONFIG_DTLK),m)
   M_OBJS += dtlk.o
@@ -209,7 +209,7 @@ else
 endif
 
 ifeq ($(CONFIG_MS_BUSMOUSE),y)
-L_OBJS += msbusmouse.o
+O_OBJS += msbusmouse.o
 else
   ifeq ($(CONFIG_MS_BUSMOUSE),m)
   M_OBJS += msbusmouse.o
@@ -217,7 +217,7 @@ else
 endif
 
 ifeq ($(CONFIG_82C710_MOUSE),y)
-L_OBJS += qpmouse.o
+O_OBJS += qpmouse.o
 else
   ifeq ($(CONFIG_82C710_MOUSE),m)
   M_OBJS += qpmouse.o
@@ -225,7 +225,7 @@ else
 endif
 
 ifeq ($(CONFIG_SOFT_WATCHDOG),y)
-L_OBJS += softdog.o
+O_OBJS += softdog.o
 else
   ifeq ($(CONFIG_SOFT_WATCHDOG),m)
   M_OBJS += softdog.o
@@ -233,7 +233,7 @@ else
 endif
 
 ifeq ($(CONFIG_PCWATCHDOG),y)
-L_OBJS += pcwd.o
+O_OBJS += pcwd.o
 else
   ifeq ($(CONFIG_PCWATCHDOG),m)
   M_OBJS += pcwd.o
@@ -241,7 +241,7 @@ else
 endif
 
 ifeq ($(CONFIG_ACQUIRE_WDT),y)
-L_OBJS += acquirewdt.o
+O_OBJS += acquirewdt.o
 else
   ifeq ($(CONFIG_ACQUIRE_WDT),m)
   M_OBJS += acquirewdt.o
@@ -249,7 +249,7 @@ else
 endif
 
 ifeq ($(CONFIG_AMIGAMOUSE),y)
-L_OBJS += amigamouse.o
+O_OBJS += amigamouse.o
 else
   ifeq ($(CONFIG_AMIGAMOUSE),m)
     M_OBJS += amigamouse.o
@@ -257,7 +257,7 @@ else
 endif
 
 ifeq ($(CONFIG_ATARIMOUSE),y)
-L_OBJS += atarimouse.o
+O_OBJS += atarimouse.o
 else
   ifeq ($(CONFIG_ATARIMOUSE),m)
     M_OBJS += atarimouse.o
@@ -265,7 +265,7 @@ else
 endif
 
 ifeq ($(CONFIG_ADBMOUSE),y)
-L_OBJS += adbmouse.o
+O_OBJS += adbmouse.o
 else
   ifeq ($(CONFIG_ADBMOUSE),m)
     M_OBJS += adbmouse.o
@@ -273,7 +273,7 @@ else
 endif
 
 ifeq ($(CONFIG_PC110_PAD),y)
-L_OBJS += pc110pad.o
+O_OBJS += pc110pad.o
 else
   ifeq ($(CONFIG_PC110_PAD),m)
     M_OBJS += pc110pad.o
@@ -281,7 +281,7 @@ else
 endif
 
 ifeq ($(CONFIG_WDT),y)
-L_OBJS += wdt.o
+O_OBJS += wdt.o
 else
   ifeq ($(CONFIG_WDT),m)
     M_OBJS += wdt.o
@@ -289,12 +289,12 @@ else
 endif
 
 ifeq ($(CONFIG_RTC),y)
-L_OBJS += rtc.o
+O_OBJS += rtc.o
 endif
 
 ifeq ($(CONFIG_NVRAM),y)
   ifeq ($(CONFIG_PPC),)
-  L_OBJS += nvram.o
+  O_OBJS += nvram.o
   endif
 else
   ifeq ($(CONFIG_NVRAM),m)
@@ -305,7 +305,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_DEV),y)
-LX_OBJS += videodev.o
+OX_OBJS += videodev.o
 else
   ifeq ($(CONFIG_VIDEO_DEV),m)
     MX_OBJS += videodev.o
@@ -321,7 +321,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_BT848),y)
-L_OBJS += bttv.o msp3400.o tuner.o
+O_OBJS += bttv.o msp3400.o tuner.o
 L_I2C=y
 else
   ifeq ($(CONFIG_VIDEO_BT848),m)
@@ -331,7 +331,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_SAA5249),y)
-L_OBJS += saa5249.o
+O_OBJS += saa5249.o
 L_I2C=y
 else
   ifeq ($(CONFIG_VIDEO_SAA5249),m)
@@ -341,7 +341,7 @@ else
 endif
 
 ifeq ($(CONFIG_I2C_PARPORT),y)
-L_OBJS += i2c-parport.o
+O_OBJS += i2c-parport.o
 L_I2C = y
 else
   ifeq ($(CONFIG_I2C_PARPORT),m)
@@ -351,7 +351,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_BWQCAM),y)
-L_OBJS += bw-qcam.o
+O_OBJS += bw-qcam.o
 else
   ifeq ($(CONFIG_VIDEO_BWQCAM),m)
     M_OBJS += bw-qcam.o
@@ -359,7 +359,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_CQCAM),y)
-L_OBJS += c-qcam.o
+O_OBJS += c-qcam.o
 else
   ifeq ($(CONFIG_VIDEO_CQCAM),m)
     M_OBJS += c-qcam.o
@@ -367,7 +367,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_ZORAN),y)
-L_OBJS += buz.o
+O_OBJS += buz.o
 else
   ifeq ($(CONFIG_VIDEO_LML33),m)
     M_OBJS += buz.o
@@ -375,7 +375,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_LML33),y)
-L_OBJS += bt856.o bt819.o
+O_OBJS += bt856.o bt819.o
 else
   ifeq ($(CONFIG_VIDEO_LML33),m)
     M_OBJS += bt856.o bt819.o
@@ -383,7 +383,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_BUZ),y)
-L_OBJS += saa7111.o saa7185.o
+O_OBJS += saa7111.o saa7185.o
 else
   ifeq ($(CONFIG_VIDEO_BUZ),m)
     M_OBJS += saa7111.o saa7185.o
@@ -391,7 +391,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_PMS),y)
-L_OBJS += pms.o
+O_OBJS += pms.o
 else
   ifeq ($(CONFIG_VIDEO_PMS),m)
   M_OBJS += pms.o
@@ -399,7 +399,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_PLANB),y)
-L_OBJS += planb.o
+O_OBJS += planb.o
 else
   ifeq ($(CONFIG_VIDEO_PLANB),m)
   M_OBJS += planb.o
@@ -407,7 +407,7 @@ else
 endif
 
 ifeq ($(CONFIG_VIDEO_VINO),y)
-L_OBJS += vino.o
+O_OBJS += vino.o
 else
   ifeq ($(CONFIG_VIDEO_VINO),m)
   M_OBJS += vino.o
@@ -415,7 +415,7 @@ else
 endif
 
 ifeq ($(CONFIG_RADIO_AZTECH),y)
-L_OBJS += radio-aztech.o
+O_OBJS += radio-aztech.o
 else
   ifeq ($(CONFIG_RADIO_AZTECH),m)
   M_OBJS += radio-aztech.o
@@ -423,7 +423,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_SF16FMI),y)
-L_OBJS += radio-sf16fmi.o
+O_OBJS += radio-sf16fmi.o
 else
   ifeq ($(CONFIG_RADIO_SF16FMI),m)
   M_OBJS += radio-sf16fmi.o
@@ -431,7 +431,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_RTRACK),y)
-L_OBJS += radio-aimslab.o
+O_OBJS += radio-aimslab.o
 else
   ifeq ($(CONFIG_RADIO_RTRACK),m)
   M_OBJS += radio-aimslab.o
@@ -439,7 +439,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_RTRACK2),y)
-L_OBJS += radio-rtrack2.o
+O_OBJS += radio-rtrack2.o
 else
   ifeq ($(CONFIG_RADIO_RTRACK2),m)
   M_OBJS += radio-rtrack2.o
@@ -447,7 +447,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_TYPHOON),y)
-L_OBJS += radio-typhoon.o
+O_OBJS += radio-typhoon.o
 else
   ifeq ($(CONFIG_RADIO_TYPHOON),m)
   M_OBJS += radio-typhoon.o
@@ -455,7 +455,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_ZOLTRIX),y)
-L_OBJS += radio-zoltrix.o
+O_OBJS += radio-zoltrix.o
 else
   ifeq ($(CONFIG_RADIO_ZOLTRIX),m)
   M_OBJS += radio-zoltrix.o
@@ -463,7 +463,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_CADET),y)
-L_OBJS += radio-cadet.o
+O_OBJS += radio-cadet.o
 else
   ifeq ($(CONFIG_RADIO_CADET),m)
   M_OBJS += radio-cadet.o
@@ -471,7 +471,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_MIROPCM20),y)
-L_OBJS += radio-miropcm20.o
+O_OBJS += radio-miropcm20.o
 else
   ifeq ($(CONFIG_RADIO_MIROPCM20),m)
   M_OBJS += radio-miropcm20.o
@@ -479,7 +479,7 @@ else
 endif
 
 ifeq ($(CONFIG_RADIO_GEMTEK),y)
-L_OBJS += radio-gemtek.o
+O_OBJS += radio-gemtek.o
 else
   ifeq ($(CONFIG_RADIO_GEMTEK),m)
   M_OBJS += radio-gemtek.o
@@ -487,7 +487,7 @@ else
 endif                                             
 
 ifeq ($(CONFIG_RADIO_TERRATEC),y)
-L_OBJS += radio-terratec.o
+O_OBJS += radio-terratec.o
 else
   ifeq ($(CONFIG_RADIO_TERRATEC),m)
   M_OBJS += radio-terratec.o
@@ -495,7 +495,7 @@ else
 endif
 
 ifeq ($(CONFIG_QIC02_TAPE),y)
-L_OBJS += tpqic02.o
+O_OBJS += tpqic02.o
 else
   ifeq ($(CONFIG_QIC02_TAPE),m)
   M_OBJS += tpqic02.o
@@ -503,7 +503,7 @@ else
 endif
 
 ifeq ($(CONFIG_FTAPE),y)
-L_OBJS       += ftape/ftape.o
+O_OBJS       += ftape/ftape.o
 SUB_DIRS     += ftape
 ifneq ($(CONFIG_ZFTAPE),n)
 MOD_SUB_DIRS += ftape
@@ -515,11 +515,11 @@ else
 endif
 
 ifdef CONFIG_H8
-LX_OBJS += h8.o
+OX_OBJS += h8.o
 endif
 
 ifeq ($(CONFIG_PPDEV),y)
-L_OBJS += ppdev.o
+O_OBJS += ppdev.o
 else
   ifeq ($(CONFIG_PPDEV),m)
   M_OBJS += ppdev.o
@@ -527,7 +527,7 @@ else
 endif
 
 ifeq ($(L_I2C),y)
-LX_OBJS += i2c.o
+OX_OBJS += i2c.o
 else
   ifeq ($(M_I2C),y)
   MX_OBJS += i2c.o
@@ -538,7 +538,7 @@ endif
 ifeq ($(CONFIG_HFMODEM),y)
 ALL_SUB_DIRS += hfmodem
 SUB_DIRS += hfmodem
-L_OBJS += hfmodem/hfmodem.o
+O_OBJS += hfmodem/hfmodem.o
 else
   ifeq ($(CONFIG_HFMODEM),m)
   ALL_SUB_DIRS += hfmodem
index bff280ee770fc9bdba16f20388b498f8157781e4..fd4e72d91baf0d15cd62b6fc3ad2fb28d3d853b7 100644 (file)
@@ -151,16 +151,11 @@ __initfunc(int ms_bus_mouse_init(void))
        return msedev < 0 ? msedev : 0;
 }
 
-#ifdef MODULE
-int init_module(void)
-{
-       return ms_bus_mouse_init();
-}
-
-void cleanup_module(void)
+void ms_bus_mouse_exit(void)
 {
        unregister_busmouse(msedev);
        release_region(MS_MSE_CONTROL_PORT, 0x04);
 }
-#endif
 
+module_init(ms_bus_mouse_init)
+module_exit(ms_bus_mouse_exit)
index c667b2106734922f5151760522ade4ec203841e5..5ecbf4642c58f850312661f73793b89d30620ce3 100644 (file)
  *    15.06.99   0.23  Fix bad allocation bug.
  *                     Thanks to Deti Fliegl <fliegl@in.tum.de>
  *    28.06.99   0.24  Add pci_set_master
+ *    02.08.99   0.25  Added workaround for the "phantom write" bug first
+ *                     documented by Dave Sharpless from Anchor Games
  *
  * some important things missing in Ensoniq documentation:
  *
 #define ES1370_REG_DAC2_SCOUNT    0x28
 #define ES1370_REG_ADC_SCOUNT     0x2c
 
-#define ES1370_REG_DAC1_FRAMEADR  0xc30
-#define ES1370_REG_DAC1_FRAMECNT  0xc34
-#define ES1370_REG_DAC2_FRAMEADR  0xc38
-#define ES1370_REG_DAC2_FRAMECNT  0xc3c
-#define ES1370_REG_ADC_FRAMEADR   0xd30
-#define ES1370_REG_ADC_FRAMECNT   0xd34
+#define ES1370_REG_DAC1_FRAMEADR    0xc30
+#define ES1370_REG_DAC1_FRAMECNT    0xc34
+#define ES1370_REG_DAC2_FRAMEADR    0xc38
+#define ES1370_REG_DAC2_FRAMECNT    0xc3c
+#define ES1370_REG_ADC_FRAMEADR     0xd30
+#define ES1370_REG_ADC_FRAMECNT     0xd34
+#define ES1370_REG_PHANTOM_FRAMEADR 0xd38
+#define ES1370_REG_PHANTOM_FRAMECNT 0xd3c
 
 #define ES1370_FMT_U8_MONO     0
 #define ES1370_FMT_U8_STEREO   1
@@ -360,6 +364,13 @@ struct es1370_state {
 
 static struct es1370_state *devs = NULL;
 
+/*
+ * The following buffer is used to point the phantom write channel to,
+ * so that it cannot wreak havoc. The attribute makes sure it doesn't
+ * cross a page boundary and ensures dword alignment for the DMA engine
+ */
+static unsigned char bugbuf[16] __attribute__ ((aligned (16)));
+
 /* --------------------------------------------------------------------- */
 
 extern inline unsigned ld2(unsigned int x)
@@ -2321,7 +2332,7 @@ int __init init_es1370(void)
 
        if (!pci_present())   /* No PCI bus in this machine! */
                return -ENODEV;
-       printk(KERN_INFO "es1370: version v0.24 time " __TIME__ " " __DATE__ "\n");
+       printk(KERN_INFO "es1370: version v0.25 time " __TIME__ " " __DATE__ "\n");
        while (index < NR_DEVICE && 
               (pcidev = pci_find_device(PCI_VENDOR_ID_ENSONIQ, PCI_DEVICE_ID_ENSONIQ_ES1370, pcidev))) {
                if (pcidev->base_address[0] == 0 || 
@@ -2385,6 +2396,10 @@ int __init init_es1370(void)
                /* initialize the chips */
                outl(s->ctrl, s->io+ES1370_REG_CONTROL);
                outl(s->sctrl, s->io+ES1370_REG_SERIAL_CONTROL);
+               /* point phantom write channel to "bugbuf" */
+               outl((ES1370_REG_PHANTOM_FRAMEADR >> 8) & 15, s->io+ES1370_REG_MEMPAGE);
+               outl(virt_to_bus(bugbuf), s->io+(ES1370_REG_PHANTOM_FRAMEADR & 0xff));
+               outl(0, s->io+(ES1370_REG_PHANTOM_FRAMECNT & 0xff));
                pci_set_master(pcidev);  /* enable bus mastering */
                wrcodec(s, 0x16, 3); /* no RST, PD */
                wrcodec(s, 0x17, 0); /* CODEC ADC and CODEC DAC use {LR,B}CLK2 and run off the LRCLK2 PLL; program DAC_SYNC=0!!  */
index 658040aeb14a64c8999c0a1bd194dd51e9654690..27de2163ca764c815e500bc0d406dbc6fb92f42b 100644 (file)
@@ -36,13 +36,7 @@ static int aout_core_dump(long signr, struct pt_regs * regs, struct file *file);
 extern void dump_thread(struct pt_regs *, struct user *);
 
 static struct linux_binfmt aout_format = {
-       NULL,
-#ifndef MODULE
-       NULL,
-#else
-       &__this_module,
-#endif
-       load_aout_binary, load_aout_library, aout_core_dump, PAGE_SIZE
+       NULL, THIS_MODULE, load_aout_binary, load_aout_library, aout_core_dump, PAGE_SIZE
 };
 
 static void set_brk(unsigned long start, unsigned long end)
@@ -564,14 +558,10 @@ static int __init init_aout_binfmt(void)
        return register_binfmt(&aout_format);
 }
 
-__initcall(init_aout_binfmt);
-
-#ifdef MODULE
-int init_module(void) {
-       return init_aout_binfmt();
-}
-
-void cleanup_module( void) {
+static void __exit exit_aout_binfmt(void)
+{
        unregister_binfmt(&aout_format);
 }
-#endif
+
+module_init(init_aout_binfmt)
+module_exit(exit_aout_binfmt)
index e6ab8c58a8214b2a645e2a851405cfe603827783..aa59a2f7fd990b67f520e401a4358dde1a1a1a97 100644 (file)
@@ -64,13 +64,7 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file);
 #define ELF_PAGEALIGN(_v) (((_v) + ELF_EXEC_PAGESIZE - 1) & ~(ELF_EXEC_PAGESIZE - 1))
 
 static struct linux_binfmt elf_format = {
-       NULL,
-#ifndef MODULE
-       NULL,
-#else
-       &__this_module,
-#endif
-       load_elf_binary, load_elf_library, elf_core_dump, ELF_EXEC_PAGESIZE
+       NULL, THIS_MODULE, load_elf_binary, load_elf_library, elf_core_dump, ELF_EXEC_PAGESIZE
 };
 
 static void set_brk(unsigned long start, unsigned long end)
@@ -1301,23 +1295,11 @@ static int __init init_elf_binfmt(void)
        return register_binfmt(&elf_format);
 }
 
-__initcall(init_elf_binfmt);
-
-#ifdef MODULE
-
-int init_module(void)
-{
-       /* Install the COFF, ELF and XOUT loaders.
-        * N.B. We *rely* on the table being the right size with the
-        * right number of free slots...
-        */
-       return init_elf_binfmt();
-}
-
-
-void cleanup_module( void)
+static void __exit exit_elf_binfmt(void)
 {
        /* Remove the COFF and ELF loaders. */
        unregister_binfmt(&elf_format);
 }
-#endif
+
+module_init(init_elf_binfmt)
+module_exit(exit_elf_binfmt)
index 6e07847321595889e96466c41ae72228f4b50ad8..aa2deaf6e78e985521f01a67887d4ac96f91e032 100644 (file)
@@ -105,13 +105,7 @@ static int load_em86(struct linux_binprm *bprm,struct pt_regs *regs)
 }
 
 struct linux_binfmt em86_format = {
-       NULL,
-#ifndef MODULE
-       NULL,
-#else
-       &__this_module,
-#endif
-       load_em86, NULL, NULL, 0
+       NULL, THIS_MODULE, load_em86, NULL, NULL, 0
 };
 
 static int __init init_em86_binfmt(void)
@@ -119,15 +113,10 @@ static int __init init_em86_binfmt(void)
        return register_binfmt(&em86_format);
 }
 
-__initcall(init_em86_binfmt);
-
-#ifdef MODULE
-int init_module(void)
+static void __exit exit_em86_binfmt(void)
 {
-       return init_em86_binfmt();
-}
-
-void cleanup_module( void) {
        unregister_binfmt(&em86_format);
 }
-#endif
+
+module_init(init_em86_binfmt)
+module_exit(exit_em86_binfmt)
index 6fc5b570e3996c264601e6145e23c61b96f73f3d..fd55f6448b3342804dba4f3eb6832ea3c9f0918b 100644 (file)
@@ -64,13 +64,7 @@ static void entry_proc_cleanup(struct binfmt_entry *e);
 static int entry_proc_setup(struct binfmt_entry *e);
 
 static struct linux_binfmt misc_format = {
-       NULL,
-#ifndef MODULE
-       NULL,
-#else
-       &__this_module,
-#endif
-       load_misc_binary, NULL, NULL, 0
+       NULL, THIS_MODULE, load_misc_binary, NULL, NULL, 0
 };
 
 static struct proc_dir_entry *bm_dir = NULL;
@@ -530,16 +524,7 @@ cleanup_bm:
        goto out;
 }
 
-__initcall(init_misc_binfmt);
-
-#ifdef MODULE
-EXPORT_NO_SYMBOLS;
-int init_module(void)
-{
-       return init_misc_binfmt();
-}
-
-void cleanup_module(void)
+static void __exit exit_misc_binfmt(void)
 {
        unregister_binfmt(&misc_format);
        remove_proc_entry("register", bm_dir);
@@ -547,5 +532,8 @@ void cleanup_module(void)
        clear_entries();
        remove_proc_entry("sys/fs/binfmt_misc", NULL);
 }
-#endif
-#undef VERBOSE_STATUS
+
+EXPORT_NO_SYMBOLS;
+
+module_init(init_misc_binfmt)
+module_exit(exit_misc_binfmt)
index 7a3e1d9fe08ece9b4cef54f723fa2dfd14f9a4ba..3dad604e319bf6fa0b6f31eb48ea005b4fefab7c 100644 (file)
@@ -101,13 +101,7 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs)
 }
 
 struct linux_binfmt script_format = {
-       NULL,
-#ifndef MODULE
-       NULL,
-#else
-       &__this_module,
-#endif
-       load_script, NULL, NULL, 0
+       NULL, THIS_MODULE, load_script, NULL, NULL, 0
 };
 
 static int __init init_script_binfmt(void)
@@ -115,15 +109,10 @@ static int __init init_script_binfmt(void)
        return register_binfmt(&script_format);
 }
 
-__initcall(init_script_binfmt);
-
-#ifdef MODULE
-int init_module(void)
+static void __exit exit_script_binfmt(void)
 {
-       return init_script_binfmt();
-}
-
-void cleanup_module( void) {
        unregister_binfmt(&script_format);
 }
-#endif
+
+module_init(init_script_binfmt)
+module_exit(exit_script_binfmt)
index f869c280e30cf7b10f1a21ed0762de3be97bc351..46c2ff1cf86642bda30d9c0775f45870e6019c65 100644 (file)
@@ -2319,3 +2319,12 @@ int bdflush(void * unused)
                }
        }
 }
+
+static int __init bdflush_init(void)
+{
+       kernel_thread(bdflush, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+       return 0;
+}
+
+module_init(bdflush_init)
+
index 593661ca2e337618db3d4173b6b09a6d70166759..17d215574183caaf15f00cb8a7dbbe0823214f2d 100644 (file)
@@ -1,37 +1 @@
-#ifndef _I386_INIT_H
-#define _I386_INIT_H
-
-typedef int (*initcall_t)(void);
-
-extern initcall_t __initcall_start, __initcall_end;
-
-struct kernel_param {
-       const char *str;
-       int (*setup_func)(char *);
-};
-
-extern struct kernel_param __setup_start, __setup_end;
-
-/* Used for initialization calls.. */
-#define __initcall(fn) \
-       static __attribute__ ((unused,__section__ (".initcall.init"))) initcall_t __initcall_##fn = fn
-
-/* Used for kernel command line parameter setup */
-#define __setup(str, fn) \
-       static __attribute__ ((unused,__section__ (".setup.init"))) struct kernel_param __setup_##fn = { str, fn }
-
-
-#define __init __attribute__ ((__section__ (".text.init")))
-#define __initdata __attribute__ ((__section__ (".data.init")))
-#define __initfunc(__arginit) \
-       __arginit __init; \
-       __arginit
-/* For assembly routines */
-#define __INIT         .section        ".text.init",#alloc,#execinstr
-#define __FINIT        .previous
-#define __INITDATA     .section        ".data.init",#alloc,#write
-
-#define __cacheline_aligned __attribute__ \
-                        ((__section__ (".data.cacheline_aligned")))
-
-#endif
+#error "<asm/init.h> should never be used - use <linux/init.h> instead"
index 4465f38b5f346347ed798d757f92bc95a152df13..10eef044d6105cce0458a1f501cf3e8f157c4563 100644 (file)
  */
 
 #ifndef MODULE
-#include <asm/init.h>
+
+/*
+ * Used for initialization calls..
+ */
+typedef int (*initcall_t)(void);
+
+extern initcall_t __initcall_start, __initcall_end;
+
+#define __initcall(fn)                                                         \
+       static __attribute__ ((unused,__section__ (".initcall.init")))          \
+               initcall_t __initcall_##fn = fn
+
+/*
+ * Used for kernel command line parameter setup
+ */
+struct kernel_param {
+       const char *str;
+       int (*setup_func)(char *);
+};
+
+extern struct kernel_param __setup_start, __setup_end;
+
+#define __setup(str, fn)                                                       \
+       static __attribute__ ((__section__ (".data.init")))                     \
+               char __setup_str_##fn[] = str;                                  \
+       static __attribute__ ((unused,__section__ (".setup.init")))             \
+               struct kernel_param __setup_##fn = { __setup_str_##fn, fn }
+
+/*
+ * Mark functions and data as being only used at initialization
+ * or exit time.
+ */
+#define __init __attribute__ ((__section__ (".text.init")))
+#define __exit __attribute__ ((unused, __section__(".text.init")))
+#define __initdata __attribute__ ((__section__ (".data.init")))
+#define __exitdata __attribute__ ((unused, __section__ (".data.init")))
+
+#define __initfunc(__arginit) \
+       __arginit __init; \
+       __arginit
+
+/* For assembly routines */
+#define __INIT         .section        ".text.init","ax"
+#define __FINIT                .previous
+#define __INITDATA     .section        ".data.init","aw"
+
+#define __cacheline_aligned __attribute__ \
+                        ((__section__ (".data.cacheline_aligned")))
+
+#define module_init(x) __initcall(x);
+#define module_exit(x) /* nothing */
+
 #else
+
 #define __init
+#define __exit
 #define __initdata
+#define __exitdata
 #define __initfunc(__arginit) __arginit
+#defint __initcall
 /* For assembly routines */
 #define __INIT
 #define __FINIT
 #define __INITDATA
+
+#define module_init(x) int init_module(void) { return x(); }
+#define module_exit(x) void cleanup_module(void) { x(); }
+
 #endif
 
 #if __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
index 94cce874f6189b25267463333514452eec6d7c73..e0b655aab82cb91eac95321b7a8e739d07bbdc6c 100644 (file)
@@ -191,9 +191,10 @@ __asm__(".section .modinfo\n\t.previous");
 /* Define the module variable, and usage macros.  */
 extern struct module __this_module;
 
-#define MOD_INC_USE_COUNT      __MOD_INC_USE_COUNT(&__this_module)
-#define MOD_DEC_USE_COUNT      __MOD_DEC_USE_COUNT(&__this_module)
-#define MOD_IN_USE             __MOD_IN_USE(&__this_module)
+#define THIS_MODULE            (&__this_module)
+#define MOD_INC_USE_COUNT      __MOD_INC_USE_COUNT(THIS_MODULE)
+#define MOD_DEC_USE_COUNT      __MOD_DEC_USE_COUNT(THIS_MODULE)
+#define MOD_IN_USE             __MOD_IN_USE(THIS_MODULE)
 
 #ifndef __NO_VERSION__
 #include <linux/version.h>
@@ -215,6 +216,7 @@ const char __module_using_checksums[] __attribute__((section(".modinfo"))) =
 
 #ifndef __GENKSYMS__
 
+#define THIS_MODULE            NULL
 #define MOD_INC_USE_COUNT      do { } while (0)
 #define MOD_DEC_USE_COUNT      do { } while (0)
 #define MOD_IN_USE             1
index 2ac3409f68282de45858ad83c9deb3fb54ddb5cb..4752ec4ab4d4303f3a29ee39dd2f4e8a539d4c77 100644 (file)
@@ -68,9 +68,6 @@ extern char *linux_banner;
 extern int console_loglevel;
 
 static int init(void *);
-extern int bdflush(void *);
-extern int kswapd(void *);
-extern void kswapd_setup(void);
 
 extern void init_IRQ(void);
 extern void init_modules(void);
@@ -606,29 +603,12 @@ static void __init do_basic_setup(void)
 #ifdef CONFIG_MAC
        nubus_init();
 #endif
-#ifdef CONFIG_APM
-       apm_init();
-#endif
 
        /* Networking initialization needs a process context */ 
        sock_init();
 
        do_initcalls();
 
-       /* Launch bdflush from here, instead of the old syscall way. */
-       kernel_thread(bdflush, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-       /* Start the background pageout daemon. */
-       kswapd_setup();
-       kernel_thread(kswapd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-
-#if CONFIG_AP1000
-       /* Start the async paging daemon. */
-       {
-         extern int asyncd(void *);     
-         kernel_thread(asyncd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
-       }
-#endif
-
 #ifdef CONFIG_BLK_DEV_INITRD
 
        real_root_dev = ROOT_DEV;
index 73a4c912a029985cc65186e39e4be7b68a071229..ed412d620ca6c85bcda3f492f4e753b955ffd12e 100644 (file)
@@ -437,27 +437,6 @@ done:
        return priority >= 0;
 }
 
-/*
- * Before we start the kernel thread, print out the 
- * kswapd initialization message (otherwise the init message 
- * may be printed in the middle of another driver's init 
- * message).  It looks very bad when that happens.
- */
-void __init kswapd_setup(void)
-{
-       int i;
-       char *revision="$Revision: 1.5 $", *s, *e;
-
-       swap_setup();
-       
-       if ((s = strchr(revision, ':')) &&
-           (e = strchr(s, '$')))
-               s++, i = e - s;
-       else
-               s = revision, i = -1;
-       printk ("Starting kswapd v%.*s\n", i, s);
-}
-
 static struct task_struct *kswapd_process;
 
 /*
@@ -544,4 +523,13 @@ int try_to_free_pages(unsigned int gfp_mask)
                retval = do_try_to_free_pages(gfp_mask);
        return retval;
 }
-       
+
+static int __init kswapd_init(void)
+{
+       printk("Starting kswapd v1.6\n");
+       swap_setup();
+       kernel_thread(kswapd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+       return 0;
+}
+
+module_init(kswapd_init)