]> git.neil.brown.name Git - history.git/commitdiff
Merge 2.4.x VGER sparc32 changes into 2.5.x
authorJoshua Uziel <uzi@uzix.org>
Thu, 21 Mar 2002 13:36:27 +0000 (05:36 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Thu, 21 Mar 2002 13:36:27 +0000 (05:36 -0800)
arch/sparc/kernel/setup.c
arch/sparc/kernel/signal.c
drivers/fc4/soc.c
drivers/fc4/socal.c
drivers/sbus/audio/amd7930.c
drivers/sbus/audio/cs4231.c
drivers/sbus/char/uctrl.c
include/asm-sparc/pgtable.h

index 89fbafcdd47af4be7926faaab07a26f9b656b3f8..09b92306390b1b6603370a6c2c7f25e3b03e948f 100644 (file)
@@ -47,8 +47,6 @@
 #include <asm/hardirq.h>
 #include <asm/machines.h>
 
-#undef PROM_DEBUG_CONSOLE
-
 struct screen_info screen_info = {
        0, 0,                   /* orig-x, orig-y */
        0,                      /* unused */
@@ -134,6 +132,19 @@ void kernel_enter_debugger(void)
        }
 }
 
+static void
+prom_console_write(struct console *con, const char *s, unsigned n)
+{
+       prom_printf("%s", s);
+}
+
+static struct console prom_debug_console = {
+       name:           "debug",
+       write:          prom_console_write,
+       flags:          CON_PRINTBUFFER,
+       index:          -1,
+};
+
 int obp_system_intr(void)
 {
        if (boot_flags & BOOTME_KGDB) {
@@ -166,6 +177,10 @@ static void __init process_switch(char c)
                prom_printf("boot_flags_init: Halt!\n");
                prom_halt();
                break;
+       case 'p':
+               /* Use PROM debug console. */
+               register_console(&prom_debug_console);
+               break;
        default:
                printk("Unknown boot switch (-%c)\n", c);
                break;
@@ -280,21 +295,6 @@ struct tt_entry *sparc_ttable;
 
 struct pt_regs fake_swapper_regs;
 
-#ifdef PROM_DEBUG_CONSOLE
-static void
-prom_console_write(struct console *con, const char *s, unsigned n)
-{
-       prom_printf("%s", s);
-}
-
-static struct console prom_console = {
-       name:           "debug",
-       write:          prom_console_write,
-       flags:          CON_PRINTBUFFER,
-       index:          -1,
-};
-#endif
-
 extern void paging_init(void);
 
 void __init setup_arch(char **cmdline_p)
@@ -348,9 +348,6 @@ void __init setup_arch(char **cmdline_p)
                printk("UNKNOWN!\n");
                break;
        };
-#ifdef PROM_DEBUG_CONSOLE
-       register_console(&prom_console);
-#endif
 
 #ifdef CONFIG_DUMMY_CONSOLE
        conswitchp = &dummy_con;
@@ -381,7 +378,7 @@ void __init setup_arch(char **cmdline_p)
        if (!root_flags)
                root_mountflags &= ~MS_RDONLY;
        ROOT_DEV = to_kdev_t(root_dev);
-#ifdef CONFIG_BLK_DEV_RAM
+#ifdef CONFIG_BLK_DEV_INITRD
        rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK;
        rd_prompt = ((ram_flags & RAMDISK_PROMPT_FLAG) != 0);
        rd_doload = ((ram_flags & RAMDISK_LOAD_FLAG) != 0);     
index 6772a0f870421826dc696d37787dfcd1f832d62a..022883fbbea882f01291ed92026fa6444cd169f0 100644 (file)
@@ -1280,7 +1280,10 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs,
 #endif
                                /* fall through */
                        default:
-                               sig_exit(signr, exit_code, &info);
+                               sigaddset(&current->pending.signal, signr);
+                               recalc_sigpending(current);
+                               current->flags |= PF_SIGNALED;
+                               do_exit(exit_code);
                                /* NOT REACHED */
                        }
                }
index 19aee0628adfb0c018f578b8ebbe927a5ff8a7b1..796c219de2624b918e049e9fcdad9ee9b9a32816 100644 (file)
@@ -742,7 +742,6 @@ static void __exit soc_cleanup(void)
        
        for_each_soc(s) {
                irq = s->port[0].fc.irq;
-               disable_irq (irq);
                free_irq (irq, s);
 
                fcp_release(&(s->port[0].fc), 2);
index 447a4de67f6a2af12c5818a7a9718cbc18878ab9..c923d5ce169fa7d80dcc815c5c07cac86214a6d1 100644 (file)
@@ -881,7 +881,6 @@ static void __exit socal_cleanup(void)
        
        for_each_socal(s) {
                irq = s->port[0].fc.irq;
-               disable_irq (irq);
                free_irq (irq, s);
 
                fcp_release(&(s->port[0].fc), 2);
index e2eece1727a17cf68c190f5876e64719aa83bee2..3f37e962d216c14514a823a04b5254dff4d5b8c1 100644 (file)
@@ -1619,7 +1619,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node,
        info->irq = irq.pri;
        request_irq(info->irq, amd7930_interrupt,
                    SA_INTERRUPT, "amd7930", drv);
-       enable_irq(info->irq);
        amd7930_enable_ints(info);
 
        /* Initalize the local copy of the MAP registers. */
@@ -1644,7 +1643,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node,
        err = register_sparcaudio_driver(drv, 1);
        if (err < 0) {
                printk(KERN_ERR "amd7930: unable to register\n");
-               disable_irq(info->irq);
                free_irq(info->irq, drv);
                sbus_iounmap(info->regs, info->regs_size);
                kfree(drv->private);
@@ -1666,7 +1664,6 @@ static void __exit amd7930_detach(struct sparcaudio_driver *drv)
 
        unregister_sparcaudio_driver(drv, 1);
        amd7930_idle(info);
-       disable_irq(info->irq);
        free_irq(info->irq, drv);
        sbus_iounmap(info->regs, info->regs_size);
        kfree(drv->private);
index 1ec3880f5da855c1a4e221ad6d4b1a21bc5ec3b4..75d9260582789e5e96a6087af3def843b08afeb8 100644 (file)
@@ -2210,7 +2210,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv,
         /* Attach the interrupt handler to the audio interrupt. */
         cs4231_chip->irq = sdev->irqs[0];
         request_irq(cs4231_chip->irq, cs4231_interrupt, SA_SHIRQ, "cs4231", drv);
-        enable_irq(cs4231_chip->irq);
 
         cs4231_chip->nirqs = 1;
         cs4231_enable_interrupts(drv);
@@ -2224,7 +2223,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv,
         if (err < 0) {
                 printk(KERN_ERR "cs4231: unable to register\n");
                 cs4231_disable_interrupts(drv);
-                disable_irq(cs4231_chip->irq);
                 free_irq(cs4231_chip->irq, drv);
                 sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size);
                 kfree(drv->private);
@@ -2312,9 +2310,7 @@ static int eb4231_attach(struct sparcaudio_driver *drv,
         bail:
                 printk(KERN_ERR "cs4231: unable to register\n");
                 cs4231_disable_interrupts(drv);
-                disable_irq(cs4231_chip->irq);
                 free_irq(cs4231_chip->irq, drv);
-                disable_irq(cs4231_chip->irq2);
                 free_irq(cs4231_chip->irq2, drv);
                 kfree(drv->private);
                 return -EIO;
@@ -2371,7 +2367,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv)
 
        cs4231_disable_interrupts(drv);
        unregister_sparcaudio_driver(drv, 1);
-       disable_irq(cs4231_chip->irq);
        free_irq(cs4231_chip->irq, drv);
        if (!(cs4231_chip->status & CS_STATUS_IS_EBUS)) {
                sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size);
@@ -2380,7 +2375,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv)
                iounmap(cs4231_chip->regs);
                iounmap(cs4231_chip->eb2p);
                iounmap(cs4231_chip->eb2c);
-               disable_irq(cs4231_chip->irq2);
                free_irq(cs4231_chip->irq2, drv);
 #endif
        }
index f3a2713d8fa1bd979c2132baef919a25ee82f988..b1571efa47ce086e0251b41a5c0b052e55830948 100644 (file)
@@ -389,15 +389,11 @@ static int __init ts102_uctrl_init(void)
        if(!driver->irq) 
                driver->irq = tmp_irq[0].pri;
 
-       request_irq(driver->irq, uctrl_interrupt, 0, 
-                   "uctrl", driver);
-
-       enable_irq(driver->irq);
+       request_irq(driver->irq, uctrl_interrupt, 0, "uctrl", driver);
 
        if (misc_register(&uctrl_dev)) {
                printk("%s: unable to get misc minor %d\n",
                       __FUNCTION__, uctrl_dev.minor);
-               disable_irq(driver->irq);
                free_irq(driver->irq, driver);
                return -ENODEV;
        }
@@ -414,10 +410,8 @@ static void __exit ts102_uctrl_cleanup(void)
        struct uctrl_driver *driver = &drv;
 
        misc_deregister(&uctrl_dev);
-       if (driver->irq) {
-               disable_irq(driver->irq);
+       if (driver->irq)
                free_irq(driver->irq, driver);
-       }
        if (driver->regs)
                driver->regs = 0;
 }
index 518f1537939462271dc3538ef12efdf95c24c56b..b73aaa20847e00d5fa5ba91647b8318073157d46 100644 (file)
@@ -293,6 +293,9 @@ BTFIXUPDEF_CALL_CONST(pte_t, pte_mkyoung, pte_t)
 #define page_pte_prot(page, prot)      mk_pte(page, prot)
 #define page_pte(page)                 page_pte_prot(page, __pgprot(0))
 
+/* Permanent address of a page. */
+#define page_address(page)  ((page)->virtual)
+
 BTFIXUPDEF_CALL(struct page *, pte_page, pte_t)
 #define pte_page(pte) BTFIXUP_CALL(pte_page)(pte)