Commit 423ab71a authored by Linus Torvalds's avatar Linus Torvalds
parents b7ed1de0 63f716b9
...@@ -69,6 +69,9 @@ config GENERIC_ISA_DMA ...@@ -69,6 +69,9 @@ config GENERIC_ISA_DMA
config FIQ config FIQ
bool bool
config ARCH_MTD_XIP
bool
source "init/Kconfig" source "init/Kconfig"
menu "System Type" menu "System Type"
...@@ -136,6 +139,7 @@ config ARCH_L7200 ...@@ -136,6 +139,7 @@ config ARCH_L7200
config ARCH_PXA config ARCH_PXA
bool "PXA2xx-based" bool "PXA2xx-based"
select ARCH_MTD_XIP
config ARCH_RPC config ARCH_RPC
bool "RiscPC" bool "RiscPC"
...@@ -152,6 +156,7 @@ config ARCH_SA1100 ...@@ -152,6 +156,7 @@ config ARCH_SA1100
bool "SA1100-based" bool "SA1100-based"
select ISA select ISA
select ARCH_DISCONTIGMEM_ENABLE select ARCH_DISCONTIGMEM_ENABLE
select ARCH_MTD_XIP
config ARCH_S3C2410 config ARCH_S3C2410
bool "Samsung S3C2410" bool "Samsung S3C2410"
......
...@@ -142,11 +142,7 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka, ...@@ -142,11 +142,7 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
return 0; return 0;
} }
static inline compat_uptr_t to_user_ptr(void *kp) #define to_user_ptr(p) ptr_to_compat(p)
{
return (compat_uptr_t)(u64)kp;
}
#define from_user_ptr(p) compat_ptr(p) #define from_user_ptr(p) compat_ptr(p)
static inline int save_general_regs(struct pt_regs *regs, static inline int save_general_regs(struct pt_regs *regs,
...@@ -213,8 +209,8 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka, ...@@ -213,8 +209,8 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
return 0; return 0;
} }
#define to_user_ptr(p) (p) #define to_user_ptr(p) ((unsigned long)(p))
#define from_user_ptr(p) (p) #define from_user_ptr(p) ((void __user *)(p))
static inline int save_general_regs(struct pt_regs *regs, static inline int save_general_regs(struct pt_regs *regs,
struct mcontext __user *frame) struct mcontext __user *frame)
...@@ -526,7 +522,7 @@ long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act, ...@@ -526,7 +522,7 @@ long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
if (!ret && oact) { if (!ret && oact) {
ret = put_user((long)old_ka.sa.sa_handler, &oact->sa_handler); ret = put_user(to_user_ptr(old_ka.sa.sa_handler), &oact->sa_handler);
ret |= put_sigset_t(&oact->sa_mask, &old_ka.sa.sa_mask); ret |= put_sigset_t(&oact->sa_mask, &old_ka.sa.sa_mask);
ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
} }
...@@ -675,8 +671,8 @@ long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo ...@@ -675,8 +671,8 @@ long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo
int compat_sys_sigaltstack(u32 __new, u32 __old, int r5, int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
int r6, int r7, int r8, struct pt_regs *regs) int r6, int r7, int r8, struct pt_regs *regs)
{ {
stack_32_t __user * newstack = (stack_32_t __user *)(long) __new; stack_32_t __user * newstack = compat_ptr(__new);
stack_32_t __user * oldstack = (stack_32_t __user *)(long) __old; stack_32_t __user * oldstack = compat_ptr(__old);
stack_t uss, uoss; stack_t uss, uoss;
int ret; int ret;
mm_segment_t old_fs; mm_segment_t old_fs;
...@@ -708,7 +704,7 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5, ...@@ -708,7 +704,7 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
set_fs(old_fs); set_fs(old_fs);
/* Copy the stack information to the user output buffer */ /* Copy the stack information to the user output buffer */
if (!ret && oldstack && if (!ret && oldstack &&
(put_user((long)uoss.ss_sp, &oldstack->ss_sp) || (put_user(ptr_to_compat(uoss.ss_sp), &oldstack->ss_sp) ||
__put_user(uoss.ss_flags, &oldstack->ss_flags) || __put_user(uoss.ss_flags, &oldstack->ss_flags) ||
__put_user(uoss.ss_size, &oldstack->ss_size))) __put_user(uoss.ss_size, &oldstack->ss_size)))
return -EFAULT; return -EFAULT;
......
...@@ -60,8 +60,8 @@ struct rt_sigframe { ...@@ -60,8 +60,8 @@ struct rt_sigframe {
struct ucontext uc; struct ucontext uc;
unsigned long _unused[2]; unsigned long _unused[2];
unsigned int tramp[TRAMP_SIZE]; unsigned int tramp[TRAMP_SIZE];
struct siginfo *pinfo; struct siginfo __user *pinfo;
void *puc; void __user *puc;
struct siginfo info; struct siginfo info;
/* 64 bit ABI allows for 288 bytes below sp before decrementing it. */ /* 64 bit ABI allows for 288 bytes below sp before decrementing it. */
char abigap[288]; char abigap[288];
......
...@@ -136,14 +136,14 @@ static void __init fixup_bus_range(struct device_node *bridge) ...@@ -136,14 +136,14 @@ static void __init fixup_bus_range(struct device_node *bridge)
|(((unsigned int)(off)) & 0xFCUL) \ |(((unsigned int)(off)) & 0xFCUL) \
|1UL) |1UL)
static unsigned long macrisc_cfg_access(struct pci_controller* hose, static volatile void __iomem *macrisc_cfg_access(struct pci_controller* hose,
u8 bus, u8 dev_fn, u8 offset) u8 bus, u8 dev_fn, u8 offset)
{ {
unsigned int caddr; unsigned int caddr;
if (bus == hose->first_busno) { if (bus == hose->first_busno) {
if (dev_fn < (11 << 3)) if (dev_fn < (11 << 3))
return 0; return NULL;
caddr = MACRISC_CFA0(dev_fn, offset); caddr = MACRISC_CFA0(dev_fn, offset);
} else } else
caddr = MACRISC_CFA1(bus, dev_fn, offset); caddr = MACRISC_CFA1(bus, dev_fn, offset);
...@@ -154,14 +154,14 @@ static unsigned long macrisc_cfg_access(struct pci_controller* hose, ...@@ -154,14 +154,14 @@ static unsigned long macrisc_cfg_access(struct pci_controller* hose,
} while (in_le32(hose->cfg_addr) != caddr); } while (in_le32(hose->cfg_addr) != caddr);
offset &= has_uninorth ? 0x07 : 0x03; offset &= has_uninorth ? 0x07 : 0x03;
return ((unsigned long)hose->cfg_data) + offset; return hose->cfg_data + offset;
} }
static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn, static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 *val) int offset, int len, u32 *val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -177,13 +177,13 @@ static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn, ...@@ -177,13 +177,13 @@ static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
*val = in_8((u8 *)addr); *val = in_8(addr);
break; break;
case 2: case 2:
*val = in_le16((u16 *)addr); *val = in_le16(addr);
break; break;
default: default:
*val = in_le32((u32 *)addr); *val = in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -193,7 +193,7 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -193,7 +193,7 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 val) int offset, int len, u32 val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -209,16 +209,16 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -209,16 +209,16 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
out_8((u8 *)addr, val); out_8(addr, val);
(void) in_8((u8 *)addr); (void) in_8(addr);
break; break;
case 2: case 2:
out_le16((u16 *)addr, val); out_le16(addr, val);
(void) in_le16((u16 *)addr); (void) in_le16(addr);
break; break;
default: default:
out_le32((u32 *)addr, val); out_le32(addr, val);
(void) in_le32((u32 *)addr); (void) in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -348,25 +348,23 @@ static int u3_ht_skip_device(struct pci_controller *hose, ...@@ -348,25 +348,23 @@ static int u3_ht_skip_device(struct pci_controller *hose,
+ (((unsigned int)bus) << 16) \ + (((unsigned int)bus) << 16) \
+ 0x01000000UL) + 0x01000000UL)
static unsigned long u3_ht_cfg_access(struct pci_controller* hose, static volatile void __iomem *u3_ht_cfg_access(struct pci_controller* hose,
u8 bus, u8 devfn, u8 offset) u8 bus, u8 devfn, u8 offset)
{ {
if (bus == hose->first_busno) { if (bus == hose->first_busno) {
/* For now, we don't self probe U3 HT bridge */ /* For now, we don't self probe U3 HT bridge */
if (PCI_SLOT(devfn) == 0) if (PCI_SLOT(devfn) == 0)
return 0; return NULL;
return ((unsigned long)hose->cfg_data) + return hose->cfg_data + U3_HT_CFA0(devfn, offset);
U3_HT_CFA0(devfn, offset);
} else } else
return ((unsigned long)hose->cfg_data) + return hose->cfg_data + U3_HT_CFA1(bus, devfn, offset);
U3_HT_CFA1(bus, devfn, offset);
} }
static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn, static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 *val) int offset, int len, u32 *val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -400,13 +398,13 @@ static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn, ...@@ -400,13 +398,13 @@ static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
*val = in_8((u8 *)addr); *val = in_8(addr);
break; break;
case 2: case 2:
*val = in_le16((u16 *)addr); *val = in_le16(addr);
break; break;
default: default:
*val = in_le32((u32 *)addr); *val = in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -416,7 +414,7 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -416,7 +414,7 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 val) int offset, int len, u32 val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -442,16 +440,16 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -442,16 +440,16 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
out_8((u8 *)addr, val); out_8(addr, val);
(void) in_8((u8 *)addr); (void) in_8(addr);
break; break;
case 2: case 2:
out_le16((u16 *)addr, val); out_le16(addr, val);
(void) in_le16((u16 *)addr); (void) in_le16(addr);
break; break;
default: default:
out_le32((u32 *)addr, val); out_le32((u32 __iomem *)addr, val);
(void) in_le32((u32 *)addr); (void) in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -476,7 +474,7 @@ static struct pci_ops u3_ht_pci_ops = ...@@ -476,7 +474,7 @@ static struct pci_ops u3_ht_pci_ops =
|(((unsigned int)(off)) & 0xfcU) \ |(((unsigned int)(off)) & 0xfcU) \
|1UL) |1UL)
static unsigned long u4_pcie_cfg_access(struct pci_controller* hose, static volatile void __iomem *u4_pcie_cfg_access(struct pci_controller* hose,
u8 bus, u8 dev_fn, int offset) u8 bus, u8 dev_fn, int offset)
{ {
unsigned int caddr; unsigned int caddr;
...@@ -492,14 +490,14 @@ static unsigned long u4_pcie_cfg_access(struct pci_controller* hose, ...@@ -492,14 +490,14 @@ static unsigned long u4_pcie_cfg_access(struct pci_controller* hose,
} while (in_le32(hose->cfg_addr) != caddr); } while (in_le32(hose->cfg_addr) != caddr);
offset &= 0x03; offset &= 0x03;
return ((unsigned long)hose->cfg_data) + offset; return hose->cfg_data + offset;
} }
static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn, static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 *val) int offset, int len, u32 *val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -515,13 +513,13 @@ static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn, ...@@ -515,13 +513,13 @@ static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
*val = in_8((u8 *)addr); *val = in_8(addr);
break; break;
case 2: case 2:
*val = in_le16((u16 *)addr); *val = in_le16(addr);
break; break;
default: default:
*val = in_le32((u32 *)addr); *val = in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -531,7 +529,7 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -531,7 +529,7 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 val) int offset, int len, u32 val)
{ {
struct pci_controller *hose; struct pci_controller *hose;
unsigned long addr; volatile void __iomem *addr;
hose = pci_bus_to_host(bus); hose = pci_bus_to_host(bus);
if (hose == NULL) if (hose == NULL)
...@@ -547,16 +545,16 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn, ...@@ -547,16 +545,16 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
*/ */
switch (len) { switch (len) {
case 1: case 1:
out_8((u8 *)addr, val); out_8(addr, val);
(void) in_8((u8 *)addr); (void) in_8(addr);
break; break;
case 2: case 2:
out_le16((u16 *)addr, val); out_le16(addr, val);
(void) in_le16((u16 *)addr); (void) in_le16(addr);
break; break;
default: default:
out_le32((u32 *)addr, val); out_le32(addr, val);
(void) in_le32((u32 *)addr); (void) in_le32(addr);
break; break;
} }
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
...@@ -773,8 +771,7 @@ static void __init setup_u3_ht(struct pci_controller* hose) ...@@ -773,8 +771,7 @@ static void __init setup_u3_ht(struct pci_controller* hose)
* the reg address cell, we shall fix that by killing struct * the reg address cell, we shall fix that by killing struct
* reg_property and using some accessor functions instead * reg_property and using some accessor functions instead
*/ */
hose->cfg_data = (volatile unsigned char *)ioremap(0xf2000000, hose->cfg_data = ioremap(0xf2000000, 0x02000000);
0x02000000);
/* /*
* /ht node doesn't expose a "ranges" property, so we "remove" * /ht node doesn't expose a "ranges" property, so we "remove"
......
...@@ -59,7 +59,7 @@ static unsigned long dart_tablesize; ...@@ -59,7 +59,7 @@ static unsigned long dart_tablesize;
static u32 *dart_vbase; static u32 *dart_vbase;
/* Mapped base address for the dart */ /* Mapped base address for the dart */
static unsigned int *__iomem dart; static unsigned int __iomem *dart;
/* Dummy val that entries are set to when unused */ /* Dummy val that entries are set to when unused */
static unsigned int dart_emptyval; static unsigned int dart_emptyval;
......
This diff is collapsed.
...@@ -122,8 +122,8 @@ asmlinkage long old_mmap(struct mmap_arg_struct __user *arg) ...@@ -122,8 +122,8 @@ asmlinkage long old_mmap(struct mmap_arg_struct __user *arg)
#ifndef CONFIG_64BIT #ifndef CONFIG_64BIT
struct sel_arg_struct { struct sel_arg_struct {
unsigned long n; unsigned long n;
fd_set *inp, *outp, *exp; fd_set __user *inp, *outp, *exp;
struct timeval *tvp; struct timeval __user *tvp;
}; };
asmlinkage long old_select(struct sel_arg_struct __user *arg) asmlinkage long old_select(struct sel_arg_struct __user *arg)
......
...@@ -486,7 +486,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code) ...@@ -486,7 +486,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code)
info.si_signo = signal; info.si_signo = signal;
info.si_errno = 0; info.si_errno = 0;
info.si_code = ILL_ILLOPC; info.si_code = ILL_ILLOPC;
info.si_addr = (void *) location; info.si_addr = (void __user *) location;
do_trap(interruption_code, signal, do_trap(interruption_code, signal,
"illegal operation", regs, &info); "illegal operation", regs, &info);
} }
......
...@@ -216,24 +216,26 @@ void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count) ...@@ -216,24 +216,26 @@ void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count)
{ {
volatile __u8 *bp; volatile __u8 *bp;
volatile __u16 *p; volatile __u16 *p;
unsigned char *s = addr;
if (CHECK_AX88796L_PORT(port)) { if (CHECK_AX88796L_PORT(port)) {
p = (volatile unsigned short *)port88796l(port, 0); p = (volatile unsigned short *)port88796l(port, 0);
while (count--) *((unsigned char *) addr)++ = *p & 0xff; while (count--) *s++ = *p & 0xff;
} else if (PXSEG(port)) } else if (PXSEG(port))
while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)port; while (count--) *s++ = *(volatile unsigned char *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
bp = (__u8 *)PCI_IOMAP(port); bp = (__u8 *)PCI_IOMAP(port);
while (count--) *((volatile unsigned char *) addr)++ = *bp; while (count--) *s++ = *bp;
} else { } else {
p = (volatile unsigned short *)port2adr(port); p = (volatile unsigned short *)port2adr(port);
while (count--) *((unsigned char *) addr)++ = *p & 0xff; while (count--) *s++ = *p & 0xff;
} }
} }
void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count) void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
{ {
volatile __u16 *p; volatile __u16 *p;
__u16 *s = addr;
if (CHECK_AX88796L_PORT(port)) if (CHECK_AX88796L_PORT(port))
p = (volatile unsigned short *)port88796l(port, 1); p = (volatile unsigned short *)port88796l(port, 1);
...@@ -243,7 +245,7 @@ void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count) ...@@ -243,7 +245,7 @@ void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
p = (volatile unsigned short *)PCI_IOMAP(port); p = (volatile unsigned short *)PCI_IOMAP(port);
else else
p = (volatile unsigned short *)port2adr(port); p = (volatile unsigned short *)port2adr(port);
while (count--) *((__u16 *) addr)++ = *p; while (count--) *s++ = *p;
} }
void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count) void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
...@@ -252,8 +254,9 @@ void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count) ...@@ -252,8 +254,9 @@ void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
maybebadio(insl, port); maybebadio(insl, port);
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
volatile __u32 *p = (__u32 *)PCI_IOMAP(port); volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
__u32 *s = addr;
while (count--) *((__u32 *) addr)++ = *p; while (count--) *s++ = *p;
} else } else
maybebadio(insl, port); maybebadio(insl, port);
} }
...@@ -262,24 +265,26 @@ void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count) ...@@ -262,24 +265,26 @@ void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count)
{ {
volatile __u8 *bp; volatile __u8 *bp;
volatile __u16 *p; volatile __u16 *p;
const __u8 *s = addr;
if (CHECK_AX88796L_PORT(port)) { if (CHECK_AX88796L_PORT(port)) {
p = (volatile unsigned short *)port88796l(port, 0); p = (volatile unsigned short *)port88796l(port, 0);
while (count--) *p = *((unsigned char *) addr)++; while (count--) *p = *s++;
} else if (PXSEG(port)) } else if (PXSEG(port))
while (count--) *(volatile unsigned char *)port = *((unsigned char *) addr)++; while (count--) *(volatile unsigned char *)port = *s++;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
bp = (__u8 *)PCI_IOMAP(port); bp = (__u8 *)PCI_IOMAP(port);
while (count--) *bp = *((volatile unsigned char *) addr)++; while (count--) *bp = *s++;
} else { } else {
p = (volatile unsigned short *)port2adr(port); p = (volatile unsigned short *)port2adr(port);
while (count--) *p = *((unsigned char *) addr)++; while (count--) *p = *s++;
} }
} }
void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count) void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
{ {
volatile __u16 *p; volatile __u16 *p;
const __u16 *s = addr;
if (CHECK_AX88796L_PORT(port)) if (CHECK_AX88796L_PORT(port))
p = (volatile unsigned short *)port88796l(port, 1); p = (volatile unsigned short *)port88796l(port, 1);
...@@ -289,7 +294,7 @@ void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count) ...@@ -289,7 +294,7 @@ void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
p = (volatile unsigned short *)PCI_IOMAP(port); p = (volatile unsigned short *)PCI_IOMAP(port);
else else
p = (volatile unsigned short *)port2adr(port); p = (volatile unsigned short *)port2adr(port);
while (count--) *p = *((__u16 *) addr)++; while (count--) *p = *s++;
} }
void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count) void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
...@@ -298,8 +303,9 @@ void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count) ...@@ -298,8 +303,9 @@ void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
maybebadio(outsl, port); maybebadio(outsl, port);
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
volatile __u32 *p = (__u32 *)PCI_IOMAP(port); volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
const __u32 *s = addr;
while (count--) *p = *((__u32 *) addr)++; while (count--) *p = *s++;
} else } else
maybebadio(outsl, port); maybebadio(outsl, port);
} }
......
...@@ -222,7 +222,7 @@ config SYNCLINKMP ...@@ -222,7 +222,7 @@ config SYNCLINKMP
config SYNCLINK_GT config SYNCLINK_GT
tristate "SyncLink GT/AC support" tristate "SyncLink GT/AC support"
depends on SERIAL_NONSTANDARD depends on SERIAL_NONSTANDARD && PCI
help help
Support for SyncLink GT and SyncLink AC families of Support for SyncLink GT and SyncLink AC families of
synchronous and asynchronous serial adapters synchronous and asynchronous serial adapters
......
...@@ -351,7 +351,7 @@ config HISAX_ENTERNOW_PCI ...@@ -351,7 +351,7 @@ config HISAX_ENTERNOW_PCI
config HISAX_AMD7930 config HISAX_AMD7930
bool "Am7930 (EXPERIMENTAL)" bool "Am7930 (EXPERIMENTAL)"
depends on EXPERIMENTAL && SPARC depends on EXPERIMENTAL && SPARC && BROKEN
help help
This enables HiSax support for the AMD7930 chips on some SPARCs. This enables HiSax support for the AMD7930 chips on some SPARCs.
This code is not finished yet. This code is not finished yet.
......
...@@ -167,29 +167,32 @@ static int get_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user ...@@ -167,29 +167,32 @@ static int get_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user
if (kp->clipcount > 2048) if (kp->clipcount > 2048)
return -EINVAL; return -EINVAL;
if (kp->clipcount) { if (kp->clipcount) {
struct v4l2_clip32 *uclips = compat_ptr(up->clips); struct v4l2_clip32 __user *uclips;
struct v4l2_clip *kclips; struct v4l2_clip __user *kclips;
int n = kp->clipcount; int n = kp->clipcount;
compat_caddr_t p;
if (get_user(p, &up->clips))
return -EFAULT;
uclips = compat_ptr(p);
kclips = compat_alloc_user_space(n * sizeof(struct v4l2_clip)); kclips = compat_alloc_user_space(n * sizeof(struct v4l2_clip));
kp->clips = kclips; kp->clips = kclips;
while (--n >= 0) { while (--n >= 0) {
if (!access_ok(VERIFY_READ, &uclips->c, sizeof(uclips->c)) || if (copy_in_user(&kclips->c, &uclips->c, sizeof(uclips->c)))
copy_from_user(&kclips->c, &uclips->c, sizeof(uclips->c))) return -EFAULT;
if (put_user(n ? kclips + 1 : NULL, &kclips->next))
return -EFAULT; return -EFAULT;
kclips->next = n ? kclips + 1 : 0;
uclips += 1; uclips += 1;
kclips += 1; kclips += 1;
} }
} else } else
kp->clips = 0; kp->clips = NULL;
return 0; return 0;
} }
static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user *up) static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_window32)) || if (copy_to_user(&up->w, &kp->w, sizeof(up->w)) ||
copy_to_user(&up->w, &kp->w, sizeof(up->w)) ||
put_user(kp->field, &up->field) || put_user(kp->field, &up->field) ||
put_user(kp->chromakey, &up->chromakey) || put_user(kp->chromakey, &up->chromakey) ||
put_user(kp->clipcount, &up->clipcount)) put_user(kp->clipcount, &up->clipcount))
...@@ -199,32 +202,28 @@ static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user ...@@ -199,32 +202,28 @@ static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user
static inline int get_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up) static inline int get_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_pix_format)) || if (copy_from_user(kp, up, sizeof(struct v4l2_pix_format)))
copy_from_user(kp, up, sizeof(struct v4l2_pix_format)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int put_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up) static inline int put_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_pix_format)) || if (copy_to_user(up, kp, sizeof(struct v4l2_pix_format)))
copy_to_user(up, kp, sizeof(struct v4l2_pix_format)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int get_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up) static inline int get_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_vbi_format)) || if (copy_from_user(kp, up, sizeof(struct v4l2_vbi_format)))
copy_from_user(kp, up, sizeof(struct v4l2_vbi_format)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int put_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up) static inline int put_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_vbi_format)) || if (copy_to_user(up, kp, sizeof(struct v4l2_vbi_format)))
copy_to_user(up, kp, sizeof(struct v4l2_vbi_format)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -279,8 +278,7 @@ static int put_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user ...@@ -279,8 +278,7 @@ static int put_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user
static inline int get_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up) static inline int get_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_standard)) || if (copy_from_user(kp, up, sizeof(struct v4l2_standard)))
copy_from_user(kp, up, sizeof(struct v4l2_standard)))
return -EFAULT; return -EFAULT;
return 0; return 0;
...@@ -288,8 +286,7 @@ static inline int get_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standa ...@@ -288,8 +286,7 @@ static inline int get_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standa
static inline int put_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up) static inline int put_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_standard)) || if (copy_to_user(up, kp, sizeof(struct v4l2_standard)))
copy_to_user(up, kp, sizeof(struct v4l2_standard)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -328,8 +325,7 @@ static int put_v4l2_standard32(struct v4l2_standard *kp, struct v4l2_standard32 ...@@ -328,8 +325,7 @@ static int put_v4l2_standard32(struct v4l2_standard *kp, struct v4l2_standard32
static inline int get_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up) static inline int get_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_tuner)) || if (copy_from_user(kp, up, sizeof(struct v4l2_tuner)))
copy_from_user(kp, up, sizeof(struct v4l2_tuner)))
return -EFAULT; return -EFAULT;
return 0; return 0;
...@@ -337,8 +333,7 @@ static inline int get_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user ...@@ -337,8 +333,7 @@ static inline int get_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user
static inline int put_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up) static inline int put_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_tuner)) || if (copy_to_user(up, kp, sizeof(struct v4l2_tuner)))
copy_to_user(up, kp, sizeof(struct v4l2_tuner)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
...@@ -380,11 +375,13 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user ...@@ -380,11 +375,13 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
break; break;
case V4L2_MEMORY_USERPTR: case V4L2_MEMORY_USERPTR:
{ {
unsigned long tmp = (unsigned long)compat_ptr(up->m.userptr); compat_long_t tmp;
if(get_user(kp->length, &up->length) || if (get_user(kp->length, &up->length) ||
get_user(kp->m.userptr, &tmp)) get_user(tmp, &up->m.userptr))
return -EFAULT; return -EFAULT;
kp->m.userptr = (unsigned long)compat_ptr(tmp);
} }
break; break;
case V4L2_MEMORY_OVERLAY: case V4L2_MEMORY_OVERLAY:
...@@ -468,32 +465,28 @@ static int put_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame ...@@ -468,32 +465,28 @@ static int put_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
static inline int get_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up) static inline int get_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_input) - 4) || if (copy_from_user(kp, up, sizeof(struct v4l2_input) - 4))
copy_from_user(kp, up, sizeof(struct v4l2_input) - 4))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int put_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up) static inline int put_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_input) - 4) || if (copy_to_user(up, kp, sizeof(struct v4l2_input) - 4))
copy_to_user(up, kp, sizeof(struct v4l2_input) - 4))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int get_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up) static inline int get_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up)
{ {
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_input)) || if (copy_from_user(kp, up, sizeof(struct v4l2_input)))
copy_from_user(kp, up, sizeof(struct v4l2_input)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
static inline int put_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up) static inline int put_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up)
{ {
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_input)) || if (copy_to_user(up, kp, sizeof(struct v4l2_input)))
copy_to_user(up, kp, sizeof(struct v4l2_input)))
return -EFAULT; return -EFAULT;
return 0; return 0;
} }
......
...@@ -301,7 +301,7 @@ config MTD_JEDEC ...@@ -301,7 +301,7 @@ config MTD_JEDEC
config MTD_XIP config MTD_XIP
bool "XIP aware MTD support" bool "XIP aware MTD support"
depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARM depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARCH_MTD_XIP
default y if XIP_KERNEL default y if XIP_KERNEL
help help
This allows MTD support to work with flash memory which is also This allows MTD support to work with flash memory which is also
......
...@@ -748,7 +748,7 @@ prism54_get_essid(struct net_device *ndev, struct iw_request_info *info, ...@@ -748,7 +748,7 @@ prism54_get_essid(struct net_device *ndev, struct iw_request_info *info,
if (essid->length) { if (essid->length) {
dwrq->flags = 1; /* set ESSID to ON for Wireless Extensions */ dwrq->flags = 1; /* set ESSID to ON for Wireless Extensions */
/* if it is to big, trunk it */ /* if it is to big, trunk it */
dwrq->length = min(IW_ESSID_MAX_SIZE, essid->length); dwrq->length = min((u8)IW_ESSID_MAX_SIZE, essid->length);
} else { } else {
dwrq->flags = 0; dwrq->flags = 0;
dwrq->length = 0; dwrq->length = 0;
......
...@@ -37,7 +37,7 @@ struct old_serial_port { ...@@ -37,7 +37,7 @@ struct old_serial_port {
unsigned int irq; unsigned int irq;
unsigned int flags; unsigned int flags;
unsigned char io_type; unsigned char io_type;
unsigned char *iomem_base; unsigned char __iomem *iomem_base;
unsigned short iomem_reg_shift; unsigned short iomem_reg_shift;
}; };
......
...@@ -38,10 +38,10 @@ static inline unsigned mcr_pack(unsigned pulse, unsigned sample) ...@@ -38,10 +38,10 @@ static inline unsigned mcr_pack(unsigned pulse, unsigned sample)
static int nic_wait(struct ioc3_driver_data *idd) static int nic_wait(struct ioc3_driver_data *idd)
{ {
volatile unsigned mcr; unsigned mcr;
do { do {
mcr = (volatile unsigned)idd->vma->mcr; mcr = readl(&idd->vma->mcr);
} while (!(mcr & 2)); } while (!(mcr & 2));
return mcr & 1; return mcr & 1;
...@@ -53,7 +53,7 @@ static int nic_reset(struct ioc3_driver_data *idd) ...@@ -53,7 +53,7 @@ static int nic_reset(struct ioc3_driver_data *idd)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
idd->vma->mcr = mcr_pack(500, 65); writel(mcr_pack(500, 65), &idd->vma->mcr);
presence = nic_wait(idd); presence = nic_wait(idd);
local_irq_restore(flags); local_irq_restore(flags);
...@@ -68,7 +68,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd) ...@@ -68,7 +68,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
idd->vma->mcr = mcr_pack(6, 13); writel(mcr_pack(6, 13), &idd->vma->mcr);
result = nic_wait(idd); result = nic_wait(idd);
local_irq_restore(flags); local_irq_restore(flags);
...@@ -80,9 +80,9 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd) ...@@ -80,9 +80,9 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit) static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit)
{ {
if (bit) if (bit)
idd->vma->mcr = mcr_pack(6, 110); writel(mcr_pack(6, 110), &idd->vma->mcr);
else else
idd->vma->mcr = mcr_pack(80, 30); writel(mcr_pack(80, 30), &idd->vma->mcr);
nic_wait(idd); nic_wait(idd);
} }
...@@ -337,7 +337,7 @@ static void probe_nic(struct ioc3_driver_data *idd) ...@@ -337,7 +337,7 @@ static void probe_nic(struct ioc3_driver_data *idd)
int save = 0, loops = 3; int save = 0, loops = 3;
unsigned long first, addr; unsigned long first, addr;
idd->vma->gpcr_s = GPCR_MLAN_EN; writel(GPCR_MLAN_EN, &idd->vma->gpcr_s);
while(loops>0) { while(loops>0) {
idd->nic_part[0] = 0; idd->nic_part[0] = 0;
...@@ -408,7 +408,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs) ...@@ -408,7 +408,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
read_lock_irqsave(&ioc3_submodules_lock, flags); read_lock_irqsave(&ioc3_submodules_lock, flags);
if(idd->dual_irq && idd->vma->eisr) { if(idd->dual_irq && readb(&idd->vma->eisr)) {
/* send Ethernet IRQ to the driver */ /* send Ethernet IRQ to the driver */
if(ioc3_ethernet && idd->active[ioc3_ethernet->id] && if(ioc3_ethernet && idd->active[ioc3_ethernet->id] &&
ioc3_ethernet->intr) { ioc3_ethernet->intr) {
...@@ -682,7 +682,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) ...@@ -682,7 +682,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
idd->id = ioc3_counter++; idd->id = ioc3_counter++;
up_write(&ioc3_devices_rwsem); up_write(&ioc3_devices_rwsem);
idd->gpdr_shadow = idd->vma->gpdr; idd->gpdr_shadow = readl(&idd->vma->gpdr);
/* Read IOC3 NIC contents */ /* Read IOC3 NIC contents */
probe_nic(idd); probe_nic(idd);
......
...@@ -931,8 +931,8 @@ struct compat_sg_req_info { /* used by SG_GET_REQUEST_TABLE ioctl() */ ...@@ -931,8 +931,8 @@ struct compat_sg_req_info { /* used by SG_GET_REQUEST_TABLE ioctl() */
static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg) static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
{ {
int err, i; int err, i;
sg_req_info_t *r; sg_req_info_t __user *r;
struct compat_sg_req_info *o = (struct compat_sg_req_info *)arg; struct compat_sg_req_info __user *o = (void __user *)arg;
r = compat_alloc_user_space(sizeof(sg_req_info_t)*SG_MAX_QUEUE); r = compat_alloc_user_space(sizeof(sg_req_info_t)*SG_MAX_QUEUE);
err = sys_ioctl(fd,cmd,(unsigned long)r); err = sys_ioctl(fd,cmd,(unsigned long)r);
if (err < 0) if (err < 0)
...@@ -2739,8 +2739,8 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon ...@@ -2739,8 +2739,8 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon
static int static int
lp_timeout_trans(unsigned int fd, unsigned int cmd, unsigned long arg) lp_timeout_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
{ {
struct compat_timeval *tc = (struct compat_timeval *)arg; struct compat_timeval __user *tc = (struct compat_timeval __user *)arg;
struct timeval *tn = compat_alloc_user_space(sizeof(struct timeval)); struct timeval __user *tn = compat_alloc_user_space(sizeof(struct timeval));
struct timeval ts; struct timeval ts;
if (get_user(ts.tv_sec, &tc->tv_sec) || if (get_user(ts.tv_sec, &tc->tv_sec) ||
get_user(ts.tv_usec, &tc->tv_usec) || get_user(ts.tv_usec, &tc->tv_usec) ||
......
...@@ -56,38 +56,38 @@ ...@@ -56,38 +56,38 @@
* variations of functions: non-prefixed ones that preserve the value * variations of functions: non-prefixed ones that preserve the value
* and prefixed ones that preserve byte addresses. The latters are * and prefixed ones that preserve byte addresses. The latters are
* typically used for moving raw data between a peripheral and memory (cf. * typically used for moving raw data between a peripheral and memory (cf.
* string I/O functions), hence the "mem_" prefix. * string I/O functions), hence the "__mem_" prefix.
*/ */
#if defined(CONFIG_SWAP_IO_SPACE) #if defined(CONFIG_SWAP_IO_SPACE)
# define ioswabb(x) (x) # define ioswabb(x) (x)
# define mem_ioswabb(x) (x) # define __mem_ioswabb(x) (x)
# ifdef CONFIG_SGI_IP22 # ifdef CONFIG_SGI_IP22
/* /*
* IP22 seems braindead enough to swap 16bits values in hardware, but * IP22 seems braindead enough to swap 16bits values in hardware, but
* not 32bits. Go figure... Can't tell without documentation. * not 32bits. Go figure... Can't tell without documentation.
*/ */
# define ioswabw(x) (x) # define ioswabw(x) (x)
# define mem_ioswabw(x) le16_to_cpu(x) # define __mem_ioswabw(x) le16_to_cpu(x)
# else # else
# define ioswabw(x) le16_to_cpu(x) # define ioswabw(x) le16_to_cpu(x)
# define mem_ioswabw(x) (x) # define __mem_ioswabw(x) (x)
# endif # endif
# define ioswabl(x) le32_to_cpu(x) # define ioswabl(x) le32_to_cpu(x)
# define mem_ioswabl(x) (x) # define __mem_ioswabl(x) (x)
# define ioswabq(x) le64_to_cpu(x) # define ioswabq(x) le64_to_cpu(x)
# define mem_ioswabq(x) (x) # define __mem_ioswabq(x) (x)
#else #else
# define ioswabb(x) (x) # define ioswabb(x) (x)
# define mem_ioswabb(x) (x) # define __mem_ioswabb(x) (x)
# define ioswabw(x) (x) # define ioswabw(x) (x)
# define mem_ioswabw(x) cpu_to_le16(x) # define __mem_ioswabw(x) cpu_to_le16(x)
# define ioswabl(x) (x) # define ioswabl(x) (x)
# define mem_ioswabl(x) cpu_to_le32(x) # define __mem_ioswabl(x) cpu_to_le32(x)
# define ioswabq(x) (x) # define ioswabq(x) (x)
# define mem_ioswabq(x) cpu_to_le32(x) # define __mem_ioswabq(x) cpu_to_le32(x)
#endif #endif
...@@ -417,7 +417,7 @@ __BUILD_MEMORY_SINGLE(bus, bwlq, type, 1) ...@@ -417,7 +417,7 @@ __BUILD_MEMORY_SINGLE(bus, bwlq, type, 1)
\ \
__BUILD_MEMORY_PFX(__raw_, bwlq, type) \ __BUILD_MEMORY_PFX(__raw_, bwlq, type) \
__BUILD_MEMORY_PFX(, bwlq, type) \ __BUILD_MEMORY_PFX(, bwlq, type) \
__BUILD_MEMORY_PFX(mem_, bwlq, type) \ __BUILD_MEMORY_PFX(__mem_, bwlq, type) \
BUILDIO_MEM(b, u8) BUILDIO_MEM(b, u8)
BUILDIO_MEM(w, u16) BUILDIO_MEM(w, u16)
...@@ -430,7 +430,7 @@ BUILDIO_MEM(q, u64) ...@@ -430,7 +430,7 @@ BUILDIO_MEM(q, u64)
#define BUILDIO_IOPORT(bwlq, type) \ #define BUILDIO_IOPORT(bwlq, type) \
__BUILD_IOPORT_PFX(, bwlq, type) \ __BUILD_IOPORT_PFX(, bwlq, type) \
__BUILD_IOPORT_PFX(mem_, bwlq, type) __BUILD_IOPORT_PFX(__mem_, bwlq, type)
BUILDIO_IOPORT(b, u8) BUILDIO_IOPORT(b, u8)
BUILDIO_IOPORT(w, u16) BUILDIO_IOPORT(w, u16)
...@@ -464,7 +464,7 @@ static inline void writes##bwlq(volatile void __iomem *mem, \ ...@@ -464,7 +464,7 @@ static inline void writes##bwlq(volatile void __iomem *mem, \
const volatile type *__addr = addr; \ const volatile type *__addr = addr; \
\ \
while (count--) { \ while (count--) { \
mem_write##bwlq(*__addr, mem); \ __mem_write##bwlq(*__addr, mem); \
__addr++; \ __addr++; \
} \ } \
} \ } \
...@@ -475,7 +475,7 @@ static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \ ...@@ -475,7 +475,7 @@ static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \
volatile type *__addr = addr; \ volatile type *__addr = addr; \
\ \
while (count--) { \ while (count--) { \
*__addr = mem_read##bwlq(mem); \ *__addr = __mem_read##bwlq(mem); \
__addr++; \ __addr++; \
} \ } \
} }
...@@ -488,7 +488,7 @@ static inline void outs##bwlq(unsigned long port, const void *addr, \ ...@@ -488,7 +488,7 @@ static inline void outs##bwlq(unsigned long port, const void *addr, \
const volatile type *__addr = addr; \ const volatile type *__addr = addr; \
\ \
while (count--) { \ while (count--) { \
mem_out##bwlq(*__addr, port); \ __mem_out##bwlq(*__addr, port); \
__addr++; \ __addr++; \
} \ } \
} \ } \
...@@ -499,7 +499,7 @@ static inline void ins##bwlq(unsigned long port, void *addr, \ ...@@ -499,7 +499,7 @@ static inline void ins##bwlq(unsigned long port, void *addr, \
volatile type *__addr = addr; \ volatile type *__addr = addr; \
\ \
while (count--) { \ while (count--) { \
*__addr = mem_in##bwlq(port); \ *__addr = __mem_in##bwlq(port); \
__addr++; \ __addr++; \
} \ } \
} }
......
...@@ -126,6 +126,11 @@ static inline void __user *compat_ptr(compat_uptr_t uptr) ...@@ -126,6 +126,11 @@ static inline void __user *compat_ptr(compat_uptr_t uptr)
return (void __user *)(unsigned long)uptr; return (void __user *)(unsigned long)uptr;
} }
static inline compat_uptr_t ptr_to_compat(void __user *uptr)
{
return (u32)(unsigned long)uptr;
}
static inline void __user *compat_alloc_user_space(long len) static inline void __user *compat_alloc_user_space(long len)
{ {
struct pt_regs *regs = current->thread.regs; struct pt_regs *regs = current->thread.regs;
......
...@@ -37,7 +37,7 @@ struct thread_info { ...@@ -37,7 +37,7 @@ struct thread_info {
int preempt_count; /* 0 => preemptable, int preempt_count; /* 0 => preemptable,
<0 => BUG */ <0 => BUG */
struct restart_block restart_block; struct restart_block restart_block;
void *nvgprs_frame; void __user *nvgprs_frame;
/* low level flags - has atomic operations done on it */ /* low level flags - has atomic operations done on it */
unsigned long flags ____cacheline_aligned_in_smp; unsigned long flags ____cacheline_aligned_in_smp;
}; };
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
#define segment_eq(a,b) ((a).ar4 == (b).ar4) #define segment_eq(a,b) ((a).ar4 == (b).ar4)
static inline int __access_ok(const void *addr, unsigned long size) static inline int __access_ok(const void __user *addr, unsigned long size)
{ {
return 1; return 1;
} }
...@@ -208,25 +208,25 @@ extern int __put_user_bad(void) __attribute__((noreturn)); ...@@ -208,25 +208,25 @@ extern int __put_user_bad(void) __attribute__((noreturn));
case 1: { \ case 1: { \
unsigned char __x; \ unsigned char __x; \
__get_user_asm(__x, ptr, __gu_err); \ __get_user_asm(__x, ptr, __gu_err); \
(x) = *(__typeof__(*(ptr)) *) &__x; \ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
break; \ break; \
}; \ }; \
case 2: { \ case 2: { \
unsigned short __x; \ unsigned short __x; \
__get_user_asm(__x, ptr, __gu_err); \ __get_user_asm(__x, ptr, __gu_err); \
(x) = *(__typeof__(*(ptr)) *) &__x; \ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
break; \ break; \
}; \ }; \
case 4: { \ case 4: { \
unsigned int __x; \ unsigned int __x; \
__get_user_asm(__x, ptr, __gu_err); \ __get_user_asm(__x, ptr, __gu_err); \
(x) = *(__typeof__(*(ptr)) *) &__x; \ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
break; \ break; \
}; \ }; \
case 8: { \ case 8: { \
unsigned long long __x; \ unsigned long long __x; \
__get_user_asm(__x, ptr, __gu_err); \ __get_user_asm(__x, ptr, __gu_err); \
(x) = *(__typeof__(*(ptr)) *) &__x; \ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
break; \ break; \
}; \ }; \
default: \ default: \
......
...@@ -27,7 +27,7 @@ struct ioc3_driver_data { ...@@ -27,7 +27,7 @@ struct ioc3_driver_data {
int id; /* IOC3 sequence number */ int id; /* IOC3 sequence number */
/* PCI mapping */ /* PCI mapping */
unsigned long pma; /* physical address */ unsigned long pma; /* physical address */
struct __iomem ioc3 *vma; /* pointer to registers */ struct ioc3 __iomem *vma; /* pointer to registers */
struct pci_dev *pdev; /* PCI device */ struct pci_dev *pdev; /* PCI device */
/* IRQ stuff */ /* IRQ stuff */
int dual_irq; /* set if separate IRQs are used */ int dual_irq; /* set if separate IRQs are used */
......
...@@ -549,7 +549,7 @@ struct v4l2_framebuffer ...@@ -549,7 +549,7 @@ struct v4l2_framebuffer
struct v4l2_clip struct v4l2_clip
{ {
struct v4l2_rect c; struct v4l2_rect c;
struct v4l2_clip *next; struct v4l2_clip __user *next;
}; };
struct v4l2_window struct v4l2_window
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment