Merge branches 'cache-l2x0', 'fixes', 'hdrs', 'misc', 'mmci', 'vic' and 'warnings' into for-next
This commit is contained in:
@@ -250,6 +250,7 @@
|
||||
* Beware, it also clobers LR.
|
||||
*/
|
||||
.macro safe_svcmode_maskall reg:req
|
||||
#if __LINUX_ARM_ARCH__ >= 6
|
||||
mrs \reg , cpsr
|
||||
mov lr , \reg
|
||||
and lr , lr , #MODE_MASK
|
||||
@@ -266,6 +267,13 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
|
||||
__ERET
|
||||
1: msr cpsr_c, \reg
|
||||
2:
|
||||
#else
|
||||
/*
|
||||
* workaround for possibly broken pre-v6 hardware
|
||||
* (akita, Sharp Zaurus C-1000, PXA270-based)
|
||||
*/
|
||||
setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, \reg
|
||||
#endif
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
@@ -8,7 +8,7 @@
|
||||
#define flat_argvp_envp_on_stack() 1
|
||||
#define flat_old_ram_flag(flags) (flags)
|
||||
#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
|
||||
#define flat_get_addr_from_rp(rp, relval, flags, persistent) get_unaligned(rp)
|
||||
#define flat_get_addr_from_rp(rp, relval, flags, persistent) ((void)persistent,get_unaligned(rp))
|
||||
#define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp)
|
||||
#define flat_get_relocate_addr(rel) (rel)
|
||||
#define flat_set_persistent(relval, p) 0
|
||||
|
@@ -47,7 +47,7 @@
|
||||
struct device_node;
|
||||
struct pt_regs;
|
||||
|
||||
void __vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources,
|
||||
void __vic_init(void __iomem *base, int irq_start, u32 vic_sources,
|
||||
u32 resume_sources, struct device_node *node);
|
||||
void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources);
|
||||
int vic_of_init(struct device_node *node, struct device_node *parent);
|
||||
|
@@ -64,7 +64,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
|
||||
static inline void __raw_writew(u16 val, volatile void __iomem *addr)
|
||||
{
|
||||
asm volatile("strh %1, %0"
|
||||
: "+Qo" (*(volatile u16 __force *)addr)
|
||||
: "+Q" (*(volatile u16 __force *)addr)
|
||||
: "r" (val));
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ static inline u16 __raw_readw(const volatile void __iomem *addr)
|
||||
{
|
||||
u16 val;
|
||||
asm volatile("ldrh %1, %0"
|
||||
: "+Qo" (*(volatile u16 __force *)addr),
|
||||
: "+Q" (*(volatile u16 __force *)addr),
|
||||
"=r" (val));
|
||||
return val;
|
||||
}
|
||||
|
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* arch/arm/include/asm/mach/serial_at91.h
|
||||
*
|
||||
* Based on serial_sa1100.h by Nicolas Pitre
|
||||
*
|
||||
* Copyright (C) 2002 ATMEL Rousset
|
||||
*
|
||||
* Low level machine dependent UART functions.
|
||||
*/
|
||||
|
||||
struct uart_port;
|
||||
|
||||
/*
|
||||
* This is a temporary structure for registering these
|
||||
* functions; it is intended to be discarded after boot.
|
||||
*/
|
||||
struct atmel_port_fns {
|
||||
void (*set_mctrl)(struct uart_port *, u_int);
|
||||
u_int (*get_mctrl)(struct uart_port *);
|
||||
void (*enable_ms)(struct uart_port *);
|
||||
void (*pm)(struct uart_port *, u_int, u_int);
|
||||
int (*set_wake)(struct uart_port *, u_int);
|
||||
int (*open)(struct uart_port *);
|
||||
void (*close)(struct uart_port *);
|
||||
};
|
||||
|
||||
#if defined(CONFIG_SERIAL_ATMEL)
|
||||
void atmel_register_uart_fns(struct atmel_port_fns *fns);
|
||||
#else
|
||||
#define atmel_register_uart_fns(fns) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* arch/arm/include/asm/mach/serial_sa1100.h
|
||||
*
|
||||
* Author: Nicolas Pitre
|
||||
*
|
||||
* Moved and changed lots, Russell King
|
||||
*
|
||||
* Low level machine dependent UART functions.
|
||||
*/
|
||||
|
||||
struct uart_port;
|
||||
struct uart_info;
|
||||
|
||||
/*
|
||||
* This is a temporary structure for registering these
|
||||
* functions; it is intended to be discarded after boot.
|
||||
*/
|
||||
struct sa1100_port_fns {
|
||||
void (*set_mctrl)(struct uart_port *, u_int);
|
||||
u_int (*get_mctrl)(struct uart_port *);
|
||||
void (*pm)(struct uart_port *, u_int, u_int);
|
||||
int (*set_wake)(struct uart_port *, u_int);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SERIAL_SA1100
|
||||
void sa1100_register_uart_fns(struct sa1100_port_fns *fns);
|
||||
void sa1100_register_uart(int idx, int port);
|
||||
#else
|
||||
#define sa1100_register_uart_fns(fns) do { } while (0)
|
||||
#define sa1100_register_uart(idx,port) do { } while (0)
|
||||
#endif
|
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* arch/arm/include/asm/mach/udc_pxa2xx.h
|
||||
*
|
||||
* This supports machine-specific differences in how the PXA2xx
|
||||
* USB Device Controller (UDC) is wired.
|
||||
*
|
||||
* It is set in linux/arch/arm/mach-pxa/<machine>.c or in
|
||||
* linux/arch/mach-ixp4xx/<machine>.c and used in
|
||||
* the probe routine of linux/drivers/usb/gadget/pxa2xx_udc.c
|
||||
*/
|
||||
|
||||
struct pxa2xx_udc_mach_info {
|
||||
int (*udc_is_connected)(void); /* do we see host? */
|
||||
void (*udc_command)(int cmd);
|
||||
#define PXA2XX_UDC_CMD_CONNECT 0 /* let host see us */
|
||||
#define PXA2XX_UDC_CMD_DISCONNECT 1 /* so host won't see us */
|
||||
|
||||
/* Boards following the design guidelines in the developer's manual,
|
||||
* with on-chip GPIOs not Lubbock's weird hardware, can have a sane
|
||||
* VBUS IRQ and omit the methods above. Store the GPIO number
|
||||
* here. Note that sometimes the signals go through inverters...
|
||||
*/
|
||||
bool gpio_pullup_inverted;
|
||||
int gpio_pullup; /* high == pullup activated */
|
||||
};
|
||||
|
@@ -10,7 +10,5 @@
|
||||
|
||||
extern void sched_clock_postinit(void);
|
||||
extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate);
|
||||
extern void setup_sched_clock_needs_suspend(u32 (*read)(void), int bits,
|
||||
unsigned long rate);
|
||||
|
||||
#endif
|
||||
|
@@ -79,6 +79,7 @@ extern void cpu_die(void);
|
||||
|
||||
extern void arch_send_call_function_single_ipi(int cpu);
|
||||
extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
|
||||
extern void arch_send_wakeup_ipi_mask(const struct cpumask *mask);
|
||||
|
||||
struct smp_operations {
|
||||
#ifdef CONFIG_SMP
|
||||
|
@@ -7,6 +7,8 @@
|
||||
#ifndef _ASM_ARM_SYSCALL_H
|
||||
#define _ASM_ARM_SYSCALL_H
|
||||
|
||||
#include <linux/audit.h> /* for AUDIT_ARCH_* */
|
||||
#include <linux/elf.h> /* for ELF_EM */
|
||||
#include <linux/err.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
@@ -95,4 +97,11 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
memcpy(®s->ARM_r0 + i, args, n * sizeof(args[0]));
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
/* ARM tasks don't change audit architectures on the fly. */
|
||||
return AUDIT_ARCH_ARM;
|
||||
}
|
||||
|
||||
#endif /* _ASM_ARM_SYSCALL_H */
|
||||
|
@@ -151,10 +151,10 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
|
||||
#define TIF_SYSCALL_TRACE 8
|
||||
#define TIF_SYSCALL_AUDIT 9
|
||||
#define TIF_SYSCALL_TRACEPOINT 10
|
||||
#define TIF_SECCOMP 11 /* seccomp syscall filtering active */
|
||||
#define TIF_USING_IWMMXT 17
|
||||
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
|
||||
#define TIF_RESTORE_SIGMASK 20
|
||||
#define TIF_SECCOMP 21
|
||||
#define TIF_SWITCH_MM 22 /* deferred switch_mm */
|
||||
|
||||
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
||||
@@ -163,11 +163,12 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
|
||||
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
||||
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
|
||||
#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
|
||||
#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
|
||||
#define _TIF_SECCOMP (1 << TIF_SECCOMP)
|
||||
#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
|
||||
|
||||
/* Checks for any syscall work in entry-common.S */
|
||||
#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SYSCALL_TRACEPOINT)
|
||||
#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
|
||||
_TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP)
|
||||
|
||||
/*
|
||||
* Change these and you break ASM code in entry-common.S
|
||||
|
@@ -200,8 +200,8 @@ extern int __put_user_8(void *, unsigned long long);
|
||||
#define USER_DS KERNEL_DS
|
||||
|
||||
#define segment_eq(a,b) (1)
|
||||
#define __addr_ok(addr) (1)
|
||||
#define __range_ok(addr,size) (0)
|
||||
#define __addr_ok(addr) ((void)(addr),1)
|
||||
#define __range_ok(addr,size) ((void)(addr),0)
|
||||
#define get_fs() (KERNEL_DS)
|
||||
|
||||
static inline void set_fs(mm_segment_t fs)
|
||||
|
@@ -27,9 +27,9 @@
|
||||
#if __LINUX_ARM_ARCH__ <= 6
|
||||
ldr \tmp, =elf_hwcap @ may not have MVFR regs
|
||||
ldr \tmp, [\tmp, #0]
|
||||
tst \tmp, #HWCAP_VFPv3D16
|
||||
ldceql p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
|
||||
addne \base, \base, #32*4 @ step over unused register space
|
||||
tst \tmp, #HWCAP_VFPD32
|
||||
ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
|
||||
addeq \base, \base, #32*4 @ step over unused register space
|
||||
#else
|
||||
VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
|
||||
and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
|
||||
@@ -51,9 +51,9 @@
|
||||
#if __LINUX_ARM_ARCH__ <= 6
|
||||
ldr \tmp, =elf_hwcap @ may not have MVFR regs
|
||||
ldr \tmp, [\tmp, #0]
|
||||
tst \tmp, #HWCAP_VFPv3D16
|
||||
stceql p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
|
||||
addne \base, \base, #32*4 @ step over unused register space
|
||||
tst \tmp, #HWCAP_VFPD32
|
||||
stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
|
||||
addeq \base, \base, #32*4 @ step over unused register space
|
||||
#else
|
||||
VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
|
||||
and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
|
||||
|
@@ -29,16 +29,22 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/* Explicitly size integers that represent pfns in the interface with
|
||||
* Xen so that we can have one ABI that works for 32 and 64 bit guests. */
|
||||
* Xen so that we can have one ABI that works for 32 and 64 bit guests.
|
||||
* Note that this means that the xen_pfn_t type may be capable of
|
||||
* representing pfn's which the guest cannot represent in its own pfn
|
||||
* type. However since pfn space is controlled by the guest this is
|
||||
* fine since it simply wouldn't be able to create any sure pfns in
|
||||
* the first place.
|
||||
*/
|
||||
typedef uint64_t xen_pfn_t;
|
||||
#define PRI_xen_pfn "llx"
|
||||
typedef uint64_t xen_ulong_t;
|
||||
#define PRI_xen_ulong "llx"
|
||||
/* Guest handles for primitive C types. */
|
||||
__DEFINE_GUEST_HANDLE(uchar, unsigned char);
|
||||
__DEFINE_GUEST_HANDLE(uint, unsigned int);
|
||||
__DEFINE_GUEST_HANDLE(ulong, unsigned long);
|
||||
DEFINE_GUEST_HANDLE(char);
|
||||
DEFINE_GUEST_HANDLE(int);
|
||||
DEFINE_GUEST_HANDLE(long);
|
||||
DEFINE_GUEST_HANDLE(void);
|
||||
DEFINE_GUEST_HANDLE(uint64_t);
|
||||
DEFINE_GUEST_HANDLE(uint32_t);
|
||||
|
@@ -10,7 +10,7 @@
|
||||
#include <xen/interface/grant_table.h>
|
||||
|
||||
#define pfn_to_mfn(pfn) (pfn)
|
||||
#define phys_to_machine_mapping_valid (1)
|
||||
#define phys_to_machine_mapping_valid(pfn) (1)
|
||||
#define mfn_to_pfn(mfn) (mfn)
|
||||
#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT))
|
||||
|
||||
@@ -30,6 +30,8 @@ typedef struct xpaddr {
|
||||
#define XMADDR(x) ((xmaddr_t) { .maddr = (x) })
|
||||
#define XPADDR(x) ((xpaddr_t) { .paddr = (x) })
|
||||
|
||||
#define INVALID_P2M_ENTRY (~0UL)
|
||||
|
||||
static inline xmaddr_t phys_to_machine(xpaddr_t phys)
|
||||
{
|
||||
unsigned offset = phys.paddr & ~PAGE_MASK;
|
||||
@@ -74,9 +76,14 @@ static inline int m2p_remove_override(struct page *page, bool clear_pte)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn)
|
||||
{
|
||||
BUG_ON(pfn != mfn && mfn != INVALID_P2M_ENTRY);
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline bool set_phys_to_machine(unsigned long pfn, unsigned long mfn)
|
||||
{
|
||||
BUG();
|
||||
return false;
|
||||
return __set_phys_to_machine(pfn, mfn);
|
||||
}
|
||||
#endif /* _ASM_ARM_XEN_PAGE_H */
|
||||
|
Reference in New Issue
Block a user