This ugly hack was long overdue to die.
It was a way to print out Sparc interrupts in a more freindly format,
since IRQ numbers were arbitrary opaque 32-bit integers which vectored
into PIL levels.  These 32-bit integers were not necessarily in the
0-->NR_IRQS range, but the PILs they vectored to were.
The idea now is that we will increase NR_IRQS a little bit and use a
virtual<-->real IRQ number mapping scheme similar to PowerPC.
That makes this IRQ printing hack irrelevant, and furthermore only a
handful of drivers actually used __irq_itoa() making it even less
useful.
Signed-off-by: David S. Miller <davem@davemloft.net>
        return 1 << irq_nr;
 }
 
-static inline char *pcic_irq_itoa(unsigned int irq)
-{
-       static char buff[16];
-       sprintf(buff, "%d", irq);
-       return buff;
-}
-
 static void pcic_disable_irq(unsigned int irq_nr)
 {
        unsigned long mask, flags;
        BTFIXUPSET_CALL(clear_clock_irq, pcic_clear_clock_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(clear_profile_irq, pcic_clear_profile_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(load_profile_irq, pcic_load_profile_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(__irq_itoa, pcic_irq_itoa, BTFIXUPCALL_NORM);
 }
 
 int pcibios_assign_resource(struct pci_dev *pdev, int resource)
 
 #endif
 EXPORT_SYMBOL(BTFIXUP_CALL(enable_irq));
 EXPORT_SYMBOL(BTFIXUP_CALL(disable_irq));
-EXPORT_SYMBOL(BTFIXUP_CALL(__irq_itoa));
 EXPORT_SYMBOL(BTFIXUP_CALL(mmu_unlockarea));
 EXPORT_SYMBOL(BTFIXUP_CALL(mmu_lockarea));
 EXPORT_SYMBOL(BTFIXUP_CALL(mmu_get_scsi_sgl));
 
 static void sun4c_nop(void) {}
 #endif
 
-extern char *sun4m_irq_itoa(unsigned int irq);
-
 void __init sun4c_init_IRQ(void)
 {
        struct linux_prom_registers int_regs[2];
        BTFIXUPSET_CALL(clear_clock_irq, sun4c_clear_clock_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(clear_profile_irq, sun4c_clear_profile_irq, BTFIXUPCALL_NOP);
        BTFIXUPSET_CALL(load_profile_irq, sun4c_load_profile_irq, BTFIXUPCALL_NOP);
-       BTFIXUPSET_CALL(__irq_itoa, sun4m_irq_itoa, BTFIXUPCALL_NORM);
        sparc_init_timers = sun4c_init_timers;
 #ifdef CONFIG_SMP
        BTFIXUPSET_CALL(set_cpu_int, sun4c_nop, BTFIXUPCALL_NOP);
 
        }
 }
 
-static char *sun4d_irq_itoa(unsigned int irq)
-{
-       static char buff[16];
-       
-       if (irq < (1 << 5))
-               sprintf(buff, "%d", irq);
-       else
-               sprintf(buff, "%d,%x", sbus_to_pil[(irq >> 2) & 7], irq);
-       return buff;
-}
-
 void __init sun4d_init_IRQ(void)
 {
        local_irq_disable();
        BTFIXUPSET_CALL(clear_clock_irq, sun4d_clear_clock_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(clear_profile_irq, sun4d_clear_profile_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(load_profile_irq, sun4d_load_profile_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(__irq_itoa, sun4d_irq_itoa, BTFIXUPCALL_NORM);
        sparc_init_timers = sun4d_init_timers;
 #ifdef CONFIG_SMP
        BTFIXUPSET_CALL(set_cpu_int, sun4d_set_cpu_int, BTFIXUPCALL_NORM);
 
        sun4m_timers->cpu_timers[cpu].l14_timer_limit = limit;
 }
 
-char *sun4m_irq_itoa(unsigned int irq)
-{
-       static char buff[16];
-       sprintf(buff, "%d", irq);
-       return buff;
-}
-
 static void __init sun4m_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *))
 {
        int reg_count, irq, cpu;
        BTFIXUPSET_CALL(clear_clock_irq, sun4m_clear_clock_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(clear_profile_irq, sun4m_clear_profile_irq, BTFIXUPCALL_NORM);
        BTFIXUPSET_CALL(load_profile_irq, sun4m_load_profile_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(__irq_itoa, sun4m_irq_itoa, BTFIXUPCALL_NORM);
        sparc_init_timers = sun4m_init_timers;
 #ifdef CONFIG_SMP
        BTFIXUPSET_CALL(set_cpu_int, sun4m_send_ipi, BTFIXUPCALL_NORM);
 
 static char*
 fore200e_irq_itoa(int irq)
 {
-#if defined(__sparc_v9__)
-    return __irq_itoa(irq);
-#else
     static char str[8];
     sprintf(str, "%d", irq);
     return str;
-#endif
 }
 
 
 
         * PCI Slot 2 INTA# (and some INTx# in Slot 1).
         */
        if (request_irq(rtc_irq, rtc_interrupt, SA_SHIRQ, "rtc", (void *)&rtc_port)) {
-               /*
-                * Standard way for sparc to print irq's is to use
-                * __irq_itoa(). I think for EBus it's ok to use %d.
-                */
                printk(KERN_ERR "rtc: cannot register IRQ %d\n", rtc_irq);
                return -EIO;
        }
 
                return;
        }
 
-       SOD(("SOC uses IRQ%s\n", __irq_itoa(irq)))
+       SOD(("SOC uses IRQ %d\n", irq))
        
        s->port[0].fc.irq = irq;
        s->port[1].fc.irq = irq;
 
                return;
        }
 
-       SOD(("SOCAL uses IRQ %s\n", __irq_itoa(irq)))
+       SOD(("SOCAL uses IRQ %d\n", irq))
        
        s->port[0].fc.irq = irq;
        s->port[1].fc.irq = irq;
 
                spin_unlock_irq(&ide_lock);
        }
 
-#if !defined(__mc68000__) && !defined(CONFIG_APUS) && !defined(__sparc__)
+#if !defined(__mc68000__) && !defined(CONFIG_APUS)
        printk("%s at 0x%03lx-0x%03lx,0x%03lx on irq %d", hwif->name,
                hwif->io_ports[IDE_DATA_OFFSET],
                hwif->io_ports[IDE_DATA_OFFSET]+7,
                hwif->io_ports[IDE_CONTROL_OFFSET], hwif->irq);
-#elif defined(__sparc__)
-       printk("%s at 0x%03lx-0x%03lx,0x%03lx on irq %s", hwif->name,
-               hwif->io_ports[IDE_DATA_OFFSET],
-               hwif->io_ports[IDE_DATA_OFFSET]+7,
-               hwif->io_ports[IDE_CONTROL_OFFSET], __irq_itoa(hwif->irq));
 #else
        printk("%s at 0x%08lx on irq %d", hwif->name,
                hwif->io_ports[IDE_DATA_OFFSET], hwif->irq);
 
                                goto out;
                }
                if (noisy)
-#ifdef __sparc__
-                       printk(KERN_INFO "%s: 100%% native mode on irq %s\n",
-                              d->name, __irq_itoa(pciirq));
-#else
                        printk(KERN_INFO "%s: 100%% native mode on irq %d\n",
                                d->name, pciirq);
-#endif
        }
 
        /* FIXME: silent failure can happen */
 
        reg_write(ohci, OHCI1394_HCControlSet, OHCI1394_HCControl_linkEnable);
 
        buf = reg_read(ohci, OHCI1394_Version);
-#ifndef __sparc__
        sprintf (irq_buf, "%d", ohci->dev->irq);
-#else
-       sprintf (irq_buf, "%s", __irq_itoa(ohci->dev->irq));
-#endif
        PRINT(KERN_INFO, "OHCI-1394 %d.%d (PCI): IRQ=[%s]  "
              "MMIO=[%lx-%lx]  Max Packet=[%d]  IR/IT contexts=[%d/%d]",
              ((((buf) >> 16) & 0xf) + (((buf) >> 20) & 0xf) * 10),
 
         /* Fix buggy cards with autoboot pin not tied low: */
         reg_write(lynx, DMA0_CHAN_CTRL, 0);
 
-#ifndef __sparc__
        sprintf (irq_buf, "%d", dev->irq);
-#else
-       sprintf (irq_buf, "%s", __irq_itoa(dev->irq));
-#endif
 
         if (!request_irq(dev->irq, lynx_irq_handler, SA_SHIRQ,
                          PCILYNX_DRIVER_NAME, lynx)) {
 
 #ifdef CONFIG_MTRR
 #include <asm/mtrr.h>
 #endif
-#ifdef __sparc__
-#include <asm/irq.h>                   /* needed for __irq_itoa() proto */
-#endif
 
 #include "mptbase.h"
 
                r = request_irq(pdev->irq, mpt_interrupt, SA_SHIRQ, ioc->name, ioc);
 
                if (r < 0) {
-#ifndef __sparc__
                        printk(MYIOC_s_ERR_FMT "Unable to allocate interrupt %d!\n",
                                        ioc->name, pdev->irq);
-#else
-                       printk(MYIOC_s_ERR_FMT "Unable to allocate interrupt %s!\n",
-                                       ioc->name, __irq_itoa(pdev->irq));
-#endif
                        list_del(&ioc->list);
                        iounmap(mem);
                        kfree(ioc);
                pci_set_master(pdev);                   /* ?? */
                pci_set_drvdata(pdev, ioc);
 
-#ifndef __sparc__
                dprintk((KERN_INFO MYNAM ": %s installed at interrupt %d\n", ioc->name, pdev->irq));
-#else
-               dprintk((KERN_INFO MYNAM ": %s installed at interrupt %s\n", ioc->name, __irq_itoa(pdev->irq)));
-#endif
        }
 
        /* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
                        a[5], a[4], a[3], a[2], a[1], a[0]);
        }
 
-#ifndef __sparc__
        y += sprintf(buffer+len+y, ", IRQ=%d", ioc->pci_irq);
-#else
-       y += sprintf(buffer+len+y, ", IRQ=%s", __irq_itoa(ioc->pci_irq));
-#endif
 
        if (!ioc->active)
                y += sprintf(buffer+len+y, " (disabled)");
 
        for (i = 0; i < 6; i++)
                iowrite8(dev->dev_addr[i], ioaddr + i);
 
-#ifdef __sparc__
-       if (print_info)
-               printk(", IRQ %s\n", __irq_itoa(dev->irq));
-#else
        if (print_info)
                printk(", IRQ %d\n", dev->irq);
        /* Tell them about an invalid IRQ. */
        if (dev->irq <= 0 || dev->irq >= NR_IRQS)
                printk(KERN_WARNING " *** Warning: IRQ %d is unlikely to work! ***\n",
                           dev->irq);
-#endif
 
        EL3WINDOW(4);
        step = (ioread8(ioaddr + Wn4_NetDiag) & 0x1e) >> 1;
 
        }
 
        printk("Gigabit Ethernet at 0x%08lx, ", dev->base_addr);
-#ifdef __sparc__
-       printk("irq %s\n", __irq_itoa(pdev->irq));
-#else
-       printk("irq %i\n", pdev->irq);
-#endif
+       printk("irq %d\n", pdev->irq);
 
 #ifdef CONFIG_ACENIC_OMIT_TIGON_I
        if ((readl(&ap->regs->HostCtrl) >> 28) == 4) {
 
                if (request_irq(dev->irq, &happy_meal_interrupt,
                                SA_SHIRQ, dev->name, (void *)dev)) {
                        HMD(("EAGAIN\n"));
-#ifdef __sparc__
-                       printk(KERN_ERR "happy_meal(SBUS): Can't order irq %s to go.\n",
-                              __irq_itoa(dev->irq));
-#else
                        printk(KERN_ERR "happy_meal(SBUS): Can't order irq %d to go.\n",
                               dev->irq);
-#endif
 
                        return -EAGAIN;
                }
 
 
        if (request_irq(dev->irq, &lance_interrupt, SA_SHIRQ,
                        lancestr, (void *) dev)) {
-               printk(KERN_ERR "Lance: Can't get irq %s\n", __irq_itoa(dev->irq));
+               printk(KERN_ERR "Lance: Can't get irq %d\n", dev->irq);
                return -EAGAIN;
        }
 
 
                                                SA_SHIRQ,
                                                WD_OBPNAME,
                                                (void *)wd_dev.regs)) {
-                       printk("%s: Cannot register IRQ %s\n", 
-                               WD_OBPNAME, __irq_itoa(wd_dev.irq));
+                       printk("%s: Cannot register IRQ %d\n", 
+                               WD_OBPNAME, wd_dev.irq);
                        return(-EBUSY);
                }
                wd_dev.initialized = 1;
 
        }
 
        driver->regs->uctrl_intr = UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK;
-       printk("uctrl: 0x%x (irq %s)\n", driver->regs, __irq_itoa(driver->irq));
+       printk("uctrl: 0x%x (irq %d)\n", driver->regs, driver->irq);
        uctrl_get_event_status();
        uctrl_get_external_status();
         return 0;
 
                return -1;
        }
 
-       printk("esp%d: IRQ %s ", esp->esp_id,
-              __irq_itoa(esp->ehost->irq));
+       printk("esp%d: IRQ %d ", esp->esp_id,
+              esp->ehost->irq);
 
        return 0;
 }
 
                        SA_SHIRQ, "Qlogic/PTI", qpti))
                goto fail;
 
-       printk("qpti%d: IRQ %s ", qpti->qpti_id, __irq_itoa(qpti->irq));
+       printk("qpti%d: IRQ %d ", qpti->qpti_id, qpti->irq);
 
        return 0;
 
        static char buf[80];
        struct qlogicpti *qpti = (struct qlogicpti *) host->hostdata;
 
-       sprintf(buf, "PTI Qlogic,ISP SBUS SCSI irq %s regs at %p",
-               __irq_itoa(qpti->qhost->irq), qpti->qregs);
+       sprintf(buf, "PTI Qlogic,ISP SBUS SCSI irq %d regs at %p",
+               qpti->qhost->irq, qpti->qregs);
        return buf;
 }
 
 
 #define NAME53C                "sym53c"
 #define NAME53C8XX     "sym53c8xx"
 
-/* SPARC just has to be different ... */
-#ifdef __sparc__
-#define IRQ_FMT "%s"
-#define IRQ_PRM(x) __irq_itoa(x)
-#else
 #define IRQ_FMT "%d"
 #define IRQ_PRM(x) (x)
-#endif
 
 struct sym_driver_setup sym_driver_setup = SYM_LINUX_DRIVER_SETUP;
 unsigned int sym_debug_flags = 0;
 
        if (up->port.type == PORT_UNKNOWN)
                return -1;
 
-       printk(KERN_INFO "su%d at 0x%p (irq = %s) is a %s\n",
+       printk(KERN_INFO "su%d at 0x%p (irq = %d) is a %s\n",
               channel,
-              up->port.membase, __irq_itoa(up->port.irq),
+              up->port.membase, up->port.irq,
               sunsu_type(&up->port));
 
 #ifdef CONFIG_SERIO
 
                up->cflag = B4800 | CS8 | CLOCAL | CREAD;
                baud = 4800;
        }
-       printk(KERN_INFO "zs%d at 0x%p (irq = %s) is a SunZilog\n",
-              channel, up->port.membase, __irq_itoa(zilog_irq));
+       printk(KERN_INFO "zs%d at 0x%p (irq = %d) is a SunZilog\n",
+              channel, up->port.membase, zilog_irq);
 
        up->curregs[R15] = BRKIE;
        brg = BPS_TO_BRG(baud, ZS_CLOCK / ZS_CLOCK_DIVISOR);
 
 
        /* enable irqs just before we start the controller */
        if (hcd->driver->irq) {
-               char    buf[8], *bufp = buf;
-
-#ifdef __sparc__
-               bufp = __irq_itoa(irqnum);
-#else
-               sprintf(buf, "%d", irqnum);
-#endif
-
                snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
                                hcd->driver->description, hcd->self.busnum);
                if ((retval = request_irq(irqnum, &usb_hcd_irq, irqflags,
                                hcd->irq_descr, hcd)) != 0) {
                        dev_err(hcd->self.controller,
-                                       "request interrupt %s failed\n", bufp);
+                                       "request interrupt %d failed\n", irqnum);
                        goto err_request_irq;
                }
                hcd->irq = irqnum;
-               dev_info(hcd->self.controller, "irq %s, %s 0x%08llx\n", bufp,
+               dev_info(hcd->self.controller, "irq %d, %s 0x%08llx\n", irqnum,
                                (hcd->driver->flags & HCD_MEMORY) ?
                                        "io mem" : "io base",
                                        (unsigned long long)hcd->rsrc_start);
 
        unsigned long           resource, len;
        void __iomem            *base = NULL;
        int                     retval;
-       char                    buf [8], *bufp;
 
        /* if you want to support more than one controller in a system,
         * usb_gadget_driver_{register,unregister}() must change.
        pci_set_drvdata(pdev, dev);
        INFO(dev, "%s\n", driver_desc);
        INFO(dev, "version: " DRIVER_VERSION " %s\n", dmastr());
-#ifndef __sparc__
-       scnprintf(buf, sizeof buf, "%d", pdev->irq);
-       bufp = buf;
-#else
-       bufp = __irq_itoa(pdev->irq);
-#endif
-       INFO(dev, "irq %s, pci mem %p\n", bufp, base);
+       INFO(dev, "irq %d, pci mem %p\n", pdev->irq, base);
 
        /* init to known state, then setup irqs */
        udc_reset(dev);
        udc_reinit (dev);
        if (request_irq(pdev->irq, goku_irq, SA_SHIRQ/*|SA_SAMPLE_RANDOM*/,
                        driver_name, dev) != 0) {
-               DBG(dev, "request interrupt %s failed\n", bufp);
+               DBG(dev, "request interrupt %d failed\n", pdev->irq);
                retval = -EBUSY;
                goto done;
        }
 
        unsigned long           resource, len;
        void                    __iomem *base = NULL;
        int                     retval, i;
-       char                    buf [8], *bufp;
 
        /* if you want to support more than one controller in a system,
         * usb_gadget_driver_{register,unregister}() must change.
                retval = -ENODEV;
                goto done;
        }
-#ifndef __sparc__
-       scnprintf (buf, sizeof buf, "%d", pdev->irq);
-       bufp = buf;
-#else
-       bufp = __irq_itoa(pdev->irq);
-#endif
+
        if (request_irq (pdev->irq, net2280_irq, SA_SHIRQ, driver_name, dev)
                        != 0) {
-               ERROR (dev, "request interrupt %s failed\n", bufp);
+               ERROR (dev, "request interrupt %d failed\n", pdev->irq);
                retval = -EBUSY;
                goto done;
        }
 
        /* done */
        INFO (dev, "%s\n", driver_desc);
-       INFO (dev, "irq %s, pci mem %p, chip rev %04x\n",
-                       bufp, base, dev->chiprev);
+       INFO (dev, "irq %d, pci mem %p, chip rev %04x\n",
+                       pdev->irq, base, dev->chiprev);
        INFO (dev, "version: " DRIVER_VERSION "; dma %s\n",
                        use_dma
                                ? (use_dma_chaining ? "chaining" : "enabled")
 
 
 #define __irq_ino(irq) irq
 #define __irq_pil(irq) irq
-BTFIXUPDEF_CALL(char *, __irq_itoa, unsigned int)
-#define __irq_itoa(irq) BTFIXUP_CALL(__irq_itoa)(irq)
 
 #define NR_IRQS    16
 
 
 #define __bucket(irq) ((struct ino_bucket *)(unsigned long)(irq))
 #define __irq(bucket) ((unsigned int)(unsigned long)(bucket))
 
-static __inline__ char *__irq_itoa(unsigned int irq)
-{
-       static char buff[16];
-
-       sprintf(buff, "%d,%x", __irq_pil(irq), (unsigned int)__irq_ino(irq));
-       return buff;
-}
-
 #define NR_IRQS    16
 
 #define irq_canonicalize(irq)  (irq)
 
 
        if (request_irq(irq_prop->pri, snd_amd7930_interrupt,
                        SA_INTERRUPT | SA_SHIRQ, "amd7930", amd)) {
-               snd_printk("amd7930-%d: Unable to grab IRQ %s\n",
+               snd_printk("amd7930-%d: Unable to grab IRQ %d\n",
                           dev,
-                          __irq_itoa(irq_prop->pri));
+                          irq_prop->pri);
                snd_amd7930_free(amd);
                return -EBUSY;
        }
 
        strcpy(card->driver, "AMD7930");
        strcpy(card->shortname, "Sun AMD7930");
-       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %s",
+       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %d",
                card->shortname,
                rp->flags & 0xffL,
                rp->start,
-               __irq_itoa(irq_prop.pri));
+               irq_prop.pri);
 
        if ((err = snd_amd7930_create(card, sdev, rp, reg_prop.reg_size,
                                          &irq_prop, dev, &amd)) < 0)
 
 
        if (request_irq(sdev->irqs[0], snd_cs4231_sbus_interrupt,
                        SA_SHIRQ, "cs4231", chip)) {
-               snd_printdd("cs4231-%d: Unable to grab SBUS IRQ %s\n",
-                          dev,
-                          __irq_itoa(sdev->irqs[0]));
+               snd_printdd("cs4231-%d: Unable to grab SBUS IRQ %d\n",
+                           dev, sdev->irqs[0]);
                snd_cs4231_sbus_free(chip);
                return -EBUSY;
        }
        if (err)
                return err;
 
-       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %s",
+       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %d",
                card->shortname,
                rp->flags & 0xffL,
                rp->start,
-               __irq_itoa(sdev->irqs[0]));
+               sdev->irqs[0]);
 
        if ((err = snd_cs4231_sbus_create(card, sdev, dev, &cp)) < 0) {
                snd_card_free(card);
        if (err)
                return err;
 
-       sprintf(card->longname, "%s at 0x%lx, irq %s",
+       sprintf(card->longname, "%s at 0x%lx, irq %d",
                card->shortname,
                edev->resource[0].start,
-               __irq_itoa(edev->irqs[0]));
+               edev->irqs[0]);
 
        if ((err = snd_cs4231_ebus_create(card, edev, dev, &chip)) < 0) {
                snd_card_free(card);
 
        strcpy(card->driver, "DBRI");
        strcpy(card->shortname, "Sun DBRI");
        rp = &sdev->resource[0];
-       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %s",
+       sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %d",
                card->shortname,
-               rp->flags & 0xffL, rp->start, __irq_itoa(irq.pri));
+               rp->flags & 0xffL, rp->start, irq.pri);
 
        if ((err = snd_dbri_create(card, sdev, &irq, dev)) < 0) {
                snd_card_free(card);