static int __init add_legacy_port(struct device_node *np, int want_index,
                                  int iotype, phys_addr_t base,
                                  phys_addr_t taddr, unsigned long irq,
-                                 unsigned int flags)
+                                 upf_t flags)
 {
        u32 *clk, *spd, clock = BASE_BAUD * 16;
        int index;
 {
        phys_addr_t addr;
        u32 *addrp;
-       unsigned int flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ;
+       upf_t flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ;
 
        /* We only support ports that have a clock frequency properly
         * encoded in the device-tree.
 
                return 0;
        }
 #endif /* CONFIG_PPC_PMAC */
+       default:
+               return -EINVAL;
        }
-       return -EINVAL;
 }
 
 struct file_operations nvram_fops = {
 
                if (!(i % 8))
                        printk("\n");
 
-               if (BAD_PC(pc) || __get_user(instr, (unsigned int *)pc)) {
+               /* We use __get_user here *only* to avoid an OOPS on a
+                * bad address because the pc *should* only be a
+                * kernel address.
+                */
+               if (BAD_PC(pc) || __get_user(instr, (unsigned int __user *)pc)) {
                        printk("XXXXXXXX ");
                } else {
                        if (regs->nip == pc)
 
 
        /* First zero the BSS -- use memset_io, some platforms don't have
         * caches on yet */
-       memset_io(PTRRELOC(&__bss_start), 0, _end - __bss_start);
+       memset_io((void __iomem *)PTRRELOC(&__bss_start), 0, _end - __bss_start);
 
        /*
         * Identify the CPU type and fix up code sections
 
 
 #ifdef CONFIG_PPC64
 /* Bits in SRR1 that are copied from MSR */
-#define MSR_MASK       0xffffffff87c0ffff
+#define MSR_MASK       0xffffffff87c0ffffUL
 #else
 #define MSR_MASK       0x87c0ffff
 #endif
 
                    && (strcmp(model, "iMac,1") == 0
                        || strcmp(model, "PowerMac1,1") == 0)) {
                        bootx_printf("iMac,1 detected, shutting down USB \n");
-                       out_le32((unsigned *)0x80880008, 1);    /* XXX */
+                       out_le32((unsigned __iomem *)0x80880008, 1);    /* XXX */
                }
        }
 
 
  * Read and write the non-volatile RAM on PowerMacs and CHRP machines.
  */
 static int nvram_naddrs;
-static volatile unsigned char *nvram_data;
+static volatile unsigned char __iomem *nvram_data;
 static int is_core_99;
 static int core99_bank = 0;
 static int nvram_partitions[3];
 }
 
 #ifdef CONFIG_PPC32
-static volatile unsigned char *nvram_addr;
+static volatile unsigned char __iomem *nvram_addr;
 static int nvram_mult;
 
 static unsigned char direct_nvram_read_byte(int addr)
        int stat, i;
        unsigned long timeout;
 
-       u8* base = (u8 *)nvram_data + core99_bank*NVRAM_SIZE;
+       u8 __iomem *base = (u8 __iomem *)nvram_data + core99_bank*NVRAM_SIZE;
 
                DBG("nvram: Sharp/Micron Erasing bank %d...\n", bank);
 
        int i, stat = 0;
        unsigned long timeout;
 
-       u8* base = (u8 *)nvram_data + core99_bank*NVRAM_SIZE;
+       u8 __iomem *base = (u8 __iomem *)nvram_data + core99_bank*NVRAM_SIZE;
 
                DBG("nvram: Sharp/Micron Writing bank %d...\n", bank);
 
        int i, stat = 0;
        unsigned long timeout;
 
-       u8* base = (u8 *)nvram_data + core99_bank*NVRAM_SIZE;
+       u8 __iomem *base = (u8 __iomem *)nvram_data + core99_bank*NVRAM_SIZE;
 
                DBG("nvram: AMD Erasing bank %d...\n", bank);
 
        int i, stat = 0;
        unsigned long timeout;
 
-       u8* base = (u8 *)nvram_data + core99_bank*NVRAM_SIZE;
+       u8 __iomem *base = (u8 __iomem *)nvram_data + core99_bank*NVRAM_SIZE;
 
                DBG("nvram: AMD Writing bank %d...\n", bank);
 
 
        /* Setup for 57600 8N1 */
        if (ch == ch_a)
                addr += 0x20;
-       sccc = (volatile u8 * __iomem) ioremap(addr & PAGE_MASK, PAGE_SIZE) ;
+       sccc = ioremap(addr & PAGE_MASK, PAGE_SIZE) ;
        sccc += addr & ~PAGE_MASK;
        sccd = sccc + 0x10;