Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 3672/1: PXA: don't probe output GPIOs for interrupt [ARM] 3671/1: ep93xx: add cirrus logic edb9315 support [ARM] 3370/2: ep93xx: add crunch support [ARM] 3665/1: crunch: add ptrace support [ARM] 3664/1: crunch: add signal frame save/restore [ARM] 3663/1: fix resource->end off-by-one thinko during physmap conversion [ARM] 3662/1: ixp23xx: don't include asm/hardware.h in uncompress.h [ARM] 3660/1: Remove legacy defines [ARM] 3661/1: S3C2412: Fix compilation if CPU_S3C2410 only [ARM] 3658/1: S3C244X: Change usb-gadget name to s3c2440-usbgadget [ARM] Remove the __arch_* layer from uaccess.h
This commit is contained in:
@@ -33,9 +33,7 @@
|
||||
* bus_to_virt: Used to convert an address for DMA operations
|
||||
* to an address that the kernel can use.
|
||||
*/
|
||||
#define __virt_to_bus__is_a_macro
|
||||
#define __virt_to_bus(x) __virt_to_phys(x)
|
||||
#define __bus_to_virt__is_a_macro
|
||||
#define __bus_to_virt(x) __phys_to_virt(x)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
* There is something to do here later !, Mar 2000, Jungjun Kim
|
||||
*/
|
||||
|
||||
#define __virt_to_bus__is_a_macro
|
||||
#define __virt_to_bus(x) __virt_to_phys(x)
|
||||
#define __bus_to_virt__is_a_macro
|
||||
#define __bus_to_virt(x) __phys_to_virt(x)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -30,9 +30,7 @@
|
||||
* bus_to_virt: Used to convert an address for DMA operations
|
||||
* to an address that the kernel can use.
|
||||
*/
|
||||
#define __virt_to_bus__is_a_macro
|
||||
#define __virt_to_bus(x) (x - PAGE_OFFSET + PHYS_OFFSET)
|
||||
#define __bus_to_virt__is_a_macro
|
||||
#define __bus_to_virt(x) (x - PHYS_OFFSET + PAGE_OFFSET)
|
||||
#define __virt_to_bus(x) (x - PAGE_OFFSET + PHYS_OFFSET)
|
||||
#define __bus_to_virt(x) (x - PHYS_OFFSET + PAGE_OFFSET)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -295,15 +295,4 @@
|
||||
#define IXP23XX_PCI_CPP_ADDR_BITS IXP23XX_PCI_CSR(0x0160)
|
||||
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/*
|
||||
* Is system memory on the XSI or CPP bus?
|
||||
*/
|
||||
static inline unsigned ixp23xx_cpp_boot(void)
|
||||
{
|
||||
return (*IXP23XX_EXP_CFG0 & IXP23XX_EXP_CFG0_XSI_NOT_PRES);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -43,5 +43,15 @@ extern struct sys_timer ixp23xx_timer;
|
||||
|
||||
#define IXP23XX_UART_XTAL 14745600
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/*
|
||||
* Is system memory on the XSI or CPP bus?
|
||||
*/
|
||||
static inline unsigned ixp23xx_cpp_boot(void)
|
||||
{
|
||||
return (*IXP23XX_EXP_CFG0 & IXP23XX_EXP_CFG0_XSI_NOT_PRES);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#ifndef __ASM_ARCH_UNCOMPRESS_H
|
||||
#define __ASM_ARCH_UNCOMPRESS_H
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/arch/ixp23xx.h>
|
||||
#include <linux/serial_reg.h>
|
||||
|
||||
#define UART_BASE ((volatile u32 *)IXP23XX_UART1_PHYS)
|
||||
|
||||
@@ -7,25 +7,23 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* S3C2440 Signal Drive Strength Control
|
||||
*
|
||||
* Changelog:
|
||||
* 11-Aug-2004 BJD Created file
|
||||
* 25-Aug-2004 BJD Added the _SELECT_* defs for using with functions
|
||||
* S3C2440/S3C2412 Signal Drive Strength Control
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ASM_ARCH_REGS_DSC_H
|
||||
#define __ASM_ARCH_REGS_DSC_H "2440-dsc"
|
||||
|
||||
#ifdef CONFIG_CPU_S3C2440
|
||||
#if defined(CONFIG_CPU_S3C2412)
|
||||
#define S3C2412_DSC0 S3C2410_GPIOREG(0xdc)
|
||||
#define S3C2412_DSC1 S3C2410_GPIOREG(0xe0)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_S3C2440)
|
||||
|
||||
#define S3C2440_DSC0 S3C2410_GPIOREG(0xc4)
|
||||
#define S3C2440_DSC1 S3C2410_GPIOREG(0xc8)
|
||||
|
||||
#define S3C2412_DSC0 S3C2410_GPIOREG(0xdc)
|
||||
#define S3C2412_DSC1 S3C2410_GPIOREG(0xe0)
|
||||
|
||||
#define S3C2440_SELECT_DSC0 (0)
|
||||
#define S3C2440_SELECT_DSC1 (1<<31)
|
||||
|
||||
|
||||
@@ -72,6 +72,14 @@ union fp_state {
|
||||
|
||||
#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
|
||||
|
||||
struct crunch_state {
|
||||
unsigned int mvdx[16][2];
|
||||
unsigned int mvax[4][3];
|
||||
unsigned int dspsc[2];
|
||||
};
|
||||
|
||||
#define CRUNCH_SIZE sizeof(struct crunch_state)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,11 @@
|
||||
|
||||
#define PTRACE_SET_SYSCALL 23
|
||||
|
||||
/* PTRACE_SYSCALL is 24 */
|
||||
|
||||
#define PTRACE_GETCRUNCHREGS 25
|
||||
#define PTRACE_SETCRUNCHREGS 26
|
||||
|
||||
/*
|
||||
* PSR bits
|
||||
*/
|
||||
|
||||
@@ -59,6 +59,7 @@ struct thread_info {
|
||||
struct cpu_context_save cpu_context; /* cpu context */
|
||||
__u8 used_cp[16]; /* thread used copro */
|
||||
unsigned long tp_value;
|
||||
struct crunch_state crunchstate;
|
||||
union fp_state fpstate __attribute__((aligned(8)));
|
||||
union vfp_state vfpstate;
|
||||
struct restart_block restart_block;
|
||||
@@ -101,6 +102,11 @@ extern void free_thread_info(struct thread_info *);
|
||||
#define thread_saved_fp(tsk) \
|
||||
((unsigned long)(task_thread_info(tsk)->cpu_context.fp))
|
||||
|
||||
extern void crunch_task_disable(struct thread_info *);
|
||||
extern void crunch_task_copy(struct thread_info *, void *);
|
||||
extern void crunch_task_restore(struct thread_info *, void *);
|
||||
extern void crunch_task_release(struct thread_info *);
|
||||
|
||||
extern void iwmmxt_task_disable(struct thread_info *);
|
||||
extern void iwmmxt_task_copy(struct thread_info *, void *);
|
||||
extern void iwmmxt_task_restore(struct thread_info *, void *);
|
||||
|
||||
@@ -353,66 +353,47 @@ do { \
|
||||
: "r" (x), "i" (-EFAULT) \
|
||||
: "cc")
|
||||
|
||||
extern unsigned long __arch_copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
extern unsigned long __arch_copy_to_user(void __user *to, const void *from, unsigned long n);
|
||||
extern unsigned long __arch_clear_user(void __user *addr, unsigned long n);
|
||||
extern unsigned long __arch_strncpy_from_user(char *to, const char __user *from, unsigned long count);
|
||||
extern unsigned long __arch_strnlen_user(const char __user *s, long n);
|
||||
|
||||
extern unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
extern unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n);
|
||||
extern unsigned long __clear_user(void __user *addr, unsigned long n);
|
||||
extern unsigned long __strncpy_from_user(char *to, const char __user *from, unsigned long count);
|
||||
extern unsigned long __strnlen_user(const char __user *s, long n);
|
||||
|
||||
static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_READ, from, n))
|
||||
n = __arch_copy_from_user(to, from, n);
|
||||
n = __copy_from_user(to, from, n);
|
||||
else /* security hole - plug it */
|
||||
memzero(to, n);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
return __arch_copy_from_user(to, from, n);
|
||||
}
|
||||
|
||||
static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_WRITE, to, n))
|
||||
n = __arch_copy_to_user(to, from, n);
|
||||
n = __copy_to_user(to, from, n);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
{
|
||||
return __arch_copy_to_user(to, from, n);
|
||||
}
|
||||
|
||||
#define __copy_to_user_inatomic __copy_to_user
|
||||
#define __copy_from_user_inatomic __copy_from_user
|
||||
|
||||
static inline unsigned long clear_user (void __user *to, unsigned long n)
|
||||
static inline unsigned long clear_user(void __user *to, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_WRITE, to, n))
|
||||
n = __arch_clear_user(to, n);
|
||||
n = __clear_user(to, n);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline unsigned long __clear_user (void __user *to, unsigned long n)
|
||||
{
|
||||
return __arch_clear_user(to, n);
|
||||
}
|
||||
|
||||
static inline long strncpy_from_user (char *dst, const char __user *src, long count)
|
||||
static inline long strncpy_from_user(char *dst, const char __user *src, long count)
|
||||
{
|
||||
long res = -EFAULT;
|
||||
if (access_ok(VERIFY_READ, src, 1))
|
||||
res = __arch_strncpy_from_user(dst, src, count);
|
||||
res = __strncpy_from_user(dst, src, count);
|
||||
return res;
|
||||
}
|
||||
|
||||
static inline long __strncpy_from_user (char *dst, const char __user *src, long count)
|
||||
{
|
||||
return __arch_strncpy_from_user(dst, src, count);
|
||||
}
|
||||
|
||||
#define strlen_user(s) strnlen_user(s, ~0UL >> 1)
|
||||
|
||||
static inline long strnlen_user(const char __user *s, long n)
|
||||
@@ -420,7 +401,7 @@ static inline long strnlen_user(const char __user *s, long n)
|
||||
unsigned long res = 0;
|
||||
|
||||
if (__addr_ok(s))
|
||||
res = __arch_strnlen_user(s, n);
|
||||
res = __strnlen_user(s, n);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,17 @@ struct ucontext {
|
||||
* bytes, to prevent unpredictable padding in the signal frame.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CRUNCH
|
||||
#define CRUNCH_MAGIC 0x5065cf03
|
||||
#define CRUNCH_STORAGE_SIZE (CRUNCH_SIZE + 8)
|
||||
|
||||
struct crunch_sigframe {
|
||||
unsigned long magic;
|
||||
unsigned long size;
|
||||
struct crunch_state storage;
|
||||
} __attribute__((__aligned__(8)));
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IWMMXT
|
||||
/* iwmmxt_area is 0x98 bytes long, preceeded by 8 bytes of signature */
|
||||
#define IWMMXT_MAGIC 0x12ef842a
|
||||
@@ -74,6 +85,9 @@ struct vfp_sigframe
|
||||
* one of these.
|
||||
*/
|
||||
struct aux_sigframe {
|
||||
#ifdef CONFIG_CRUNCH
|
||||
struct crunch_sigframe crunch;
|
||||
#endif
|
||||
#ifdef CONFIG_IWMMXT
|
||||
struct iwmmxt_sigframe iwmmxt;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user