Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
67dadcb3
Commit
67dadcb3
authored
Apr 28, 2014
by
David Vrabel
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit '
e26a9e00
' into stable/for-linus-3.15
parents
eb47f712
e26a9e00
Changes
69
Show whitespace changes
Inline
Side-by-side
Showing
69 changed files
with
502 additions
and
387 deletions
+502
-387
arch/arm/common/Makefile
arch/arm/common/Makefile
+1
-0
arch/arm/include/asm/assembler.h
arch/arm/include/asm/assembler.h
+4
-4
arch/arm/include/asm/atomic.h
arch/arm/include/asm/atomic.h
+40
-4
arch/arm/include/asm/cmpxchg.h
arch/arm/include/asm/cmpxchg.h
+6
-0
arch/arm/include/asm/cputype.h
arch/arm/include/asm/cputype.h
+1
-0
arch/arm/include/asm/floppy.h
arch/arm/include/asm/floppy.h
+1
-1
arch/arm/include/asm/futex.h
arch/arm/include/asm/futex.h
+3
-6
arch/arm/include/asm/hw_breakpoint.h
arch/arm/include/asm/hw_breakpoint.h
+1
-0
arch/arm/include/asm/hwcap.h
arch/arm/include/asm/hwcap.h
+2
-1
arch/arm/include/asm/jump_label.h
arch/arm/include/asm/jump_label.h
+0
-1
arch/arm/include/asm/memory.h
arch/arm/include/asm/memory.h
+24
-17
arch/arm/include/asm/pgtable-2level.h
arch/arm/include/asm/pgtable-2level.h
+1
-0
arch/arm/include/asm/pgtable.h
arch/arm/include/asm/pgtable.h
+5
-2
arch/arm/include/asm/sync_bitops.h
arch/arm/include/asm/sync_bitops.h
+0
-1
arch/arm/include/asm/system.h
arch/arm/include/asm/system.h
+0
-7
arch/arm/include/asm/uaccess.h
arch/arm/include/asm/uaccess.h
+1
-1
arch/arm/include/uapi/asm/hwcap.h
arch/arm/include/uapi/asm/hwcap.h
+9
-0
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+1
-1
arch/arm/kernel/bios32.c
arch/arm/kernel/bios32.c
+3
-34
arch/arm/kernel/head.S
arch/arm/kernel/head.S
+9
-8
arch/arm/kernel/hw_breakpoint.c
arch/arm/kernel/hw_breakpoint.c
+2
-1
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+16
-0
arch/arm/kernel/unwind.c
arch/arm/kernel/unwind.c
+100
-37
arch/arm/lib/bitops.h
arch/arm/lib/bitops.h
+5
-0
arch/arm/lib/copy_template.S
arch/arm/lib/copy_template.S
+18
-18
arch/arm/lib/csumpartialcopygeneric.S
arch/arm/lib/csumpartialcopygeneric.S
+48
-48
arch/arm/lib/io-readsl.S
arch/arm/lib/io-readsl.S
+6
-6
arch/arm/lib/io-writesl.S
arch/arm/lib/io-writesl.S
+6
-6
arch/arm/lib/memmove.S
arch/arm/lib/memmove.S
+18
-18
arch/arm/lib/uaccess.S
arch/arm/lib/uaccess.S
+96
-96
arch/arm/mach-cns3xxx/core.c
arch/arm/mach-cns3xxx/core.c
+1
-1
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/core.c
+1
-1
arch/arm/mach-footbridge/dc21285-timer.c
arch/arm/mach-footbridge/dc21285-timer.c
+3
-3
arch/arm/mach-footbridge/dc21285.c
arch/arm/mach-footbridge/dc21285.c
+5
-5
arch/arm/mach-footbridge/isa-timer.c
arch/arm/mach-footbridge/isa-timer.c
+1
-1
arch/arm/mach-gemini/idle.c
arch/arm/mach-gemini/idle.c
+1
-1
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_ap.c
+1
-1
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/common.c
+1
-1
arch/arm/mach-ixp4xx/dsmg600-setup.c
arch/arm/mach-ixp4xx/dsmg600-setup.c
+1
-2
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/fsg-setup.c
+2
-4
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
+1
-2
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
+2
-4
arch/arm/mach-ks8695/time.c
arch/arm/mach-ks8695/time.c
+1
-1
arch/arm/mach-lpc32xx/timer.c
arch/arm/mach-lpc32xx/timer.c
+1
-1
arch/arm/mach-mmp/time.c
arch/arm/mach-mmp/time.c
+1
-1
arch/arm/mach-netx/time.c
arch/arm/mach-netx/time.c
+1
-1
arch/arm/mach-omap2/am35xx-emac.c
arch/arm/mach-omap2/am35xx-emac.c
+0
-1
arch/arm/mach-rpc/dma.c
arch/arm/mach-rpc/dma.c
+1
-1
arch/arm/mach-rpc/time.c
arch/arm/mach-rpc/time.c
+0
-1
arch/arm/mach-sa1100/time.c
arch/arm/mach-sa1100/time.c
+1
-1
arch/arm/mach-spear/time.c
arch/arm/mach-spear/time.c
+1
-1
arch/arm/mach-vexpress/Makefile
arch/arm/mach-vexpress/Makefile
+3
-0
arch/arm/mach-w90x900/time.c
arch/arm/mach-w90x900/time.c
+1
-1
arch/arm/mm/Kconfig
arch/arm/mm/Kconfig
+1
-2
arch/arm/mm/cache-feroceon-l2.c
arch/arm/mm/cache-feroceon-l2.c
+3
-1
arch/arm/mm/dma-mapping.c
arch/arm/mm/dma-mapping.c
+0
-3
arch/arm/mm/mmu.c
arch/arm/mm/mmu.c
+10
-0
arch/arm/mm/proc-macros.S
arch/arm/mm/proc-macros.S
+6
-13
arch/arm/mm/proc-v7-2level.S
arch/arm/mm/proc-v7-2level.S
+0
-7
arch/arm/mm/proc-v7.S
arch/arm/mm/proc-v7.S
+11
-0
arch/arm/plat-iop/time.c
arch/arm/plat-iop/time.c
+1
-1
drivers/clocksource/timer-u300.c
drivers/clocksource/timer-u300.c
+1
-1
drivers/scsi/arm/acornscsi.c
drivers/scsi/arm/acornscsi.c
+1
-1
drivers/scsi/arm/cumana_1.c
drivers/scsi/arm/cumana_1.c
+1
-1
drivers/scsi/arm/cumana_2.c
drivers/scsi/arm/cumana_2.c
+1
-1
drivers/scsi/arm/powertec.c
drivers/scsi/arm/powertec.c
+1
-1
drivers/usb/gadget/lpc32xx_udc.c
drivers/usb/gadget/lpc32xx_udc.c
+0
-1
include/linux/memblock.h
include/linux/memblock.h
+2
-0
mm/memblock.c
mm/memblock.c
+5
-0
No files found.
arch/arm/common/Makefile
View file @
67dadcb3
...
...
@@ -13,6 +13,7 @@ obj-$(CONFIG_SHARP_SCOOP) += scoop.o
obj-$(CONFIG_PCI_HOST_ITE8152)
+=
it8152.o
obj-$(CONFIG_ARM_TIMER_SP804)
+=
timer-sp.o
obj-$(CONFIG_MCPM)
+=
mcpm_head.o mcpm_entry.o mcpm_platsmp.o vlock.o
CFLAGS_REMOVE_mcpm_entry.o
=
-pg
AFLAGS_mcpm_head.o
:=
-march
=
armv7-a
AFLAGS_vlock.o
:=
-march
=
armv7-a
obj-$(CONFIG_TI_PRIV_EDMA)
+=
edma.o
...
...
arch/arm/include/asm/assembler.h
View file @
67dadcb3
...
...
@@ -30,8 +30,8 @@
* Endian independent macros for shifting bytes within registers.
*/
#ifndef __ARMEB__
#define
pull
lsr
#define
push
lsl
#define
lspull
lsr
#define
lspush
lsl
#define get_byte_0 lsl #0
#define get_byte_1 lsr #8
#define get_byte_2 lsr #16
...
...
@@ -41,8 +41,8 @@
#define put_byte_2 lsl #16
#define put_byte_3 lsl #24
#else
#define
pull
lsl
#define
push
lsr
#define
lspull
lsl
#define
lspush
lsr
#define get_byte_0 lsr #24
#define get_byte_1 lsr #16
#define get_byte_2 lsr #8
...
...
arch/arm/include/asm/atomic.h
View file @
67dadcb3
...
...
@@ -60,6 +60,7 @@ static inline int atomic_add_return(int i, atomic_t *v)
int
result
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic_add_return
\n
"
"1: ldrex %0, [%3]
\n
"
...
...
@@ -99,6 +100,7 @@ static inline int atomic_sub_return(int i, atomic_t *v)
int
result
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic_sub_return
\n
"
"1: ldrex %0, [%3]
\n
"
...
...
@@ -121,6 +123,7 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
unsigned
long
res
;
smp_mb
();
prefetchw
(
&
ptr
->
counter
);
do
{
__asm__
__volatile__
(
"@ atomic_cmpxchg
\n
"
...
...
@@ -138,6 +141,33 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
return
oldval
;
}
static
inline
int
__atomic_add_unless
(
atomic_t
*
v
,
int
a
,
int
u
)
{
int
oldval
,
newval
;
unsigned
long
tmp
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic_add_unless
\n
"
"1: ldrex %0, [%4]
\n
"
" teq %0, %5
\n
"
" beq 2f
\n
"
" add %1, %0, %6
\n
"
" strex %2, %1, [%4]
\n
"
" teq %2, #0
\n
"
" bne 1b
\n
"
"2:"
:
"=&r"
(
oldval
),
"=&r"
(
newval
),
"=&r"
(
tmp
),
"+Qo"
(
v
->
counter
)
:
"r"
(
&
v
->
counter
),
"r"
(
u
),
"r"
(
a
)
:
"cc"
);
if
(
oldval
!=
u
)
smp_mb
();
return
oldval
;
}
#else
/* ARM_ARCH_6 */
#ifdef CONFIG_SMP
...
...
@@ -186,10 +216,6 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
return
ret
;
}
#endif
/* __LINUX_ARM_ARCH__ */
#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
static
inline
int
__atomic_add_unless
(
atomic_t
*
v
,
int
a
,
int
u
)
{
int
c
,
old
;
...
...
@@ -200,6 +226,10 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
return
c
;
}
#endif
/* __LINUX_ARM_ARCH__ */
#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
#define atomic_inc(v) atomic_add(1, v)
#define atomic_dec(v) atomic_sub(1, v)
...
...
@@ -299,6 +329,7 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v)
unsigned
long
tmp
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic64_add_return
\n
"
"1: ldrexd %0, %H0, [%3]
\n
"
...
...
@@ -340,6 +371,7 @@ static inline long long atomic64_sub_return(long long i, atomic64_t *v)
unsigned
long
tmp
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic64_sub_return
\n
"
"1: ldrexd %0, %H0, [%3]
\n
"
...
...
@@ -364,6 +396,7 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
unsigned
long
res
;
smp_mb
();
prefetchw
(
&
ptr
->
counter
);
do
{
__asm__
__volatile__
(
"@ atomic64_cmpxchg
\n
"
...
...
@@ -388,6 +421,7 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
unsigned
long
tmp
;
smp_mb
();
prefetchw
(
&
ptr
->
counter
);
__asm__
__volatile__
(
"@ atomic64_xchg
\n
"
"1: ldrexd %0, %H0, [%3]
\n
"
...
...
@@ -409,6 +443,7 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
unsigned
long
tmp
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic64_dec_if_positive
\n
"
"1: ldrexd %0, %H0, [%3]
\n
"
...
...
@@ -436,6 +471,7 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
int
ret
=
1
;
smp_mb
();
prefetchw
(
&
v
->
counter
);
__asm__
__volatile__
(
"@ atomic64_add_unless
\n
"
"1: ldrexd %0, %H0, [%4]
\n
"
...
...
arch/arm/include/asm/cmpxchg.h
View file @
67dadcb3
...
...
@@ -2,6 +2,7 @@
#define __ASM_ARM_CMPXCHG_H
#include <linux/irqflags.h>
#include <linux/prefetch.h>
#include <asm/barrier.h>
#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110)
...
...
@@ -35,6 +36,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
#endif
smp_mb
();
prefetchw
((
const
void
*
)
ptr
);
switch
(
size
)
{
#if __LINUX_ARM_ARCH__ >= 6
...
...
@@ -138,6 +140,8 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
{
unsigned
long
oldval
,
res
;
prefetchw
((
const
void
*
)
ptr
);
switch
(
size
)
{
#ifndef CONFIG_CPU_V6
/* min ARCH >= ARMv6K */
case
1
:
...
...
@@ -230,6 +234,8 @@ static inline unsigned long long __cmpxchg64(unsigned long long *ptr,
unsigned
long
long
oldval
;
unsigned
long
res
;
prefetchw
(
ptr
);
__asm__
__volatile__
(
"1: ldrexd %1, %H1, [%3]
\n
"
" teq %1, %4
\n
"
...
...
arch/arm/include/asm/cputype.h
View file @
67dadcb3
...
...
@@ -71,6 +71,7 @@
#define ARM_CPU_PART_CORTEX_A5 0xC050
#define ARM_CPU_PART_CORTEX_A15 0xC0F0
#define ARM_CPU_PART_CORTEX_A7 0xC070
#define ARM_CPU_PART_CORTEX_A12 0xC0D0
#define ARM_CPU_XSCALE_ARCH_MASK 0xe000
#define ARM_CPU_XSCALE_ARCH_V1 0x2000
...
...
arch/arm/include/asm/floppy.h
View file @
67dadcb3
...
...
@@ -25,7 +25,7 @@
#define fd_inb(port) inb((port))
#define fd_request_irq() request_irq(IRQ_FLOPPYDISK,floppy_interrupt,\
IRQF_DISABLED
,"floppy",NULL)
0
,"floppy",NULL)
#define fd_free_irq() free_irq(IRQ_FLOPPYDISK,NULL)
#define fd_disable_irq() disable_irq(IRQ_FLOPPYDISK)
#define fd_enable_irq() enable_irq(IRQ_FLOPPYDISK)
...
...
arch/arm/include/asm/futex.h
View file @
67dadcb3
...
...
@@ -3,11 +3,6 @@
#ifdef __KERNEL__
#if defined(CONFIG_CPU_USE_DOMAINS) && defined(CONFIG_SMP)
/* ARM doesn't provide unprivileged exclusive memory accessors */
#include <asm-generic/futex.h>
#else
#include <linux/futex.h>
#include <linux/uaccess.h>
#include <asm/errno.h>
...
...
@@ -28,6 +23,7 @@
#define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \
smp_mb(); \
prefetchw(uaddr); \
__asm__ __volatile__( \
"1: ldrex %1, [%3]\n" \
" " insn "\n" \
...
...
@@ -51,6 +47,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
return
-
EFAULT
;
smp_mb
();
/* Prefetching cannot fault */
prefetchw
(
uaddr
);
__asm__
__volatile__
(
"@futex_atomic_cmpxchg_inatomic
\n
"
"1: ldrex %1, [%4]
\n
"
" teq %1, %2
\n
"
...
...
@@ -164,6 +162,5 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
return
ret
;
}
#endif
/* !(CPU_USE_DOMAINS && SMP) */
#endif
/* __KERNEL__ */
#endif
/* _ASM_ARM_FUTEX_H */
arch/arm/include/asm/hw_breakpoint.h
View file @
67dadcb3
...
...
@@ -51,6 +51,7 @@ static inline void decode_ctrl_reg(u32 reg,
#define ARM_DEBUG_ARCH_V7_ECP14 3
#define ARM_DEBUG_ARCH_V7_MM 4
#define ARM_DEBUG_ARCH_V7_1 5
#define ARM_DEBUG_ARCH_V8 6
/* Breakpoint */
#define ARM_BREAKPOINT_EXECUTE 0
...
...
arch/arm/include/asm/hwcap.h
View file @
67dadcb3
...
...
@@ -9,6 +9,7 @@
* instruction set this cpu supports.
*/
#define ELF_HWCAP (elf_hwcap)
extern
unsigned
int
elf_hwcap
;
#define ELF_HWCAP2 (elf_hwcap2)
extern
unsigned
int
elf_hwcap
,
elf_hwcap2
;
#endif
#endif
arch/arm/include/asm/jump_label.h
View file @
67dadcb3
...
...
@@ -4,7 +4,6 @@
#ifdef __KERNEL__
#include <linux/types.h>
#include <asm/system.h>
#define JUMP_LABEL_NOP_SIZE 4
...
...
arch/arm/include/asm/memory.h
View file @
67dadcb3
...
...
@@ -166,9 +166,17 @@
* Physical vs virtual RAM address space conversion. These are
* private definitions which should NOT be used outside memory.h
* files. Use virt_to_phys/phys_to_virt/__pa/__va instead.
*
* PFNs are used to describe any physical page; this means
* PFN 0 == physical address 0.
*/
#ifndef __virt_to_phys
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
#if defined(__virt_to_phys)
#define PHYS_OFFSET PLAT_PHYS_OFFSET
#define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT))
#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
#elif defined(CONFIG_ARM_PATCH_PHYS_VIRT)
/*
* Constants used to force the right instruction encodings and shifts
...
...
@@ -177,12 +185,17 @@
#define __PV_BITS_31_24 0x81000000
#define __PV_BITS_7_0 0x81
extern
u
64
__pv_phys
_offset
;
extern
u
nsigned
long
__pv_phys_pfn
_offset
;
extern
u64
__pv_offset
;
extern
void
fixup_pv_table
(
const
void
*
,
unsigned
long
);
extern
const
void
*
__pv_table_begin
,
*
__pv_table_end
;
#define PHYS_OFFSET __pv_phys_offset
#define PHYS_OFFSET ((phys_addr_t)__pv_phys_pfn_offset << PAGE_SHIFT)
#define PHYS_PFN_OFFSET (__pv_phys_pfn_offset)
#define virt_to_pfn(kaddr) \
((((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT) + \
PHYS_PFN_OFFSET)
#define __pv_stub(from,to,instr,type) \
__asm__("@ __pv_stub\n" \
...
...
@@ -243,6 +256,7 @@ static inline unsigned long __phys_to_virt(phys_addr_t x)
#else
#define PHYS_OFFSET PLAT_PHYS_OFFSET
#define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT))
static
inline
phys_addr_t
__virt_to_phys
(
unsigned
long
x
)
{
...
...
@@ -254,18 +268,11 @@ static inline unsigned long __phys_to_virt(phys_addr_t x)
return
x
-
PHYS_OFFSET
+
PAGE_OFFSET
;
}
#endif
#endif
#define virt_to_pfn(kaddr) \
((((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT) + \
PHYS_PFN_OFFSET)
/*
* PFNs are used to describe any physical page; this means
* PFN 0 == physical address 0.
*
* This is the PFN of the first RAM page in the kernel
* direct-mapped view. We assume this is the first page
* of RAM in the mem_map as well.
*/
#define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT))
#endif
/*
* These are *only* valid on the kernel direct mapped RAM memory.
...
...
@@ -343,9 +350,9 @@ static inline __deprecated void *bus_to_virt(unsigned long x)
*/
#define ARCH_PFN_OFFSET PHYS_PFN_OFFSET
#define virt_to_page(kaddr) pfn_to_page(
__pa(kaddr) >> PAGE_SHIFT
)
#define virt_to_page(kaddr) pfn_to_page(
virt_to_pfn(kaddr)
)
#define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) \
&& pfn_valid(
__pa(kaddr) >> PAGE_SHIFT)
)
&& pfn_valid(
virt_to_pfn(kaddr))
)
#endif
...
...
arch/arm/include/asm/pgtable-2level.h
View file @
67dadcb3
...
...
@@ -140,6 +140,7 @@
#define L_PTE_MT_DEV_NONSHARED (_AT(pteval_t, 0x0c) << 2)
/* 1100 */
#define L_PTE_MT_DEV_WC (_AT(pteval_t, 0x09) << 2)
/* 1001 */
#define L_PTE_MT_DEV_CACHED (_AT(pteval_t, 0x0b) << 2)
/* 1011 */
#define L_PTE_MT_VECTORS (_AT(pteval_t, 0x0f) << 2)
/* 1111 */
#define L_PTE_MT_MASK (_AT(pteval_t, 0x0f) << 2)
#ifndef __ASSEMBLY__
...
...
arch/arm/include/asm/pgtable.h
View file @
67dadcb3
...
...
@@ -216,13 +216,16 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd)
#define pte_none(pte) (!pte_val(pte))
#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT)
#define pte_valid(pte) (pte_val(pte) & L_PTE_VALID)
#define pte_accessible(mm, pte) (mm_tlb_flush_pending(mm) ? pte_present(pte) : pte_valid(pte))
#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY))
#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY)
#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG)
#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN))
#define pte_special(pte) (0)
#define pte_present_user(pte) (pte_present(pte) && (pte_val(pte) & L_PTE_USER))
#define pte_valid_user(pte) \
(pte_valid(pte) && (pte_val(pte) & L_PTE_USER) && pte_young(pte))
#if __LINUX_ARM_ARCH__ < 6
static
inline
void
__sync_icache_dcache
(
pte_t
pteval
)
...
...
@@ -237,7 +240,7 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
{
unsigned
long
ext
=
0
;
if
(
addr
<
TASK_SIZE
&&
pte_
present
_user
(
pteval
))
{
if
(
addr
<
TASK_SIZE
&&
pte_
valid
_user
(
pteval
))
{
__sync_icache_dcache
(
pteval
);
ext
|=
PTE_EXT_NG
;
}
...
...
arch/arm/include/asm/sync_bitops.h
View file @
67dadcb3
...
...
@@ -2,7 +2,6 @@
#define __ASM_SYNC_BITOPS_H__
#include <asm/bitops.h>
#include <asm/system.h>
/* sync_bitops functions are equivalent to the SMP implementation of the
* original functions, independently from CONFIG_SMP being defined.
...
...
arch/arm/include/asm/system.h
deleted
100644 → 0
View file @
eb47f712
/* FILE TO BE DELETED. DO NOT ADD STUFF HERE! */
#include <asm/barrier.h>
#include <asm/compiler.h>
#include <asm/cmpxchg.h>
#include <asm/switch_to.h>
#include <asm/system_info.h>
#include <asm/system_misc.h>
arch/arm/include/asm/uaccess.h
View file @
67dadcb3
...
...
@@ -19,7 +19,7 @@
#include <asm/unified.h>
#include <asm/compiler.h>
#if
__LINUX_ARM_ARCH__ < 6
#if
ndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
#include <asm-generic/uaccess-unaligned.h>
#else
#define __get_user_unaligned __get_user
...
...
arch/arm/include/uapi/asm/hwcap.h
View file @
67dadcb3
...
...
@@ -28,4 +28,13 @@
#define HWCAP_LPAE (1 << 20)
#define HWCAP_EVTSTRM (1 << 21)
/*
* HWCAP2 flags - for elf_hwcap2 (in kernel) and AT_HWCAP2
*/
#define HWCAP2_AES (1 << 0)
#define HWCAP2_PMULL (1 << 1)
#define HWCAP2_SHA1 (1 << 2)
#define HWCAP2_SHA2 (1 << 3)
#define HWCAP2_CRC32 (1 << 4)
#endif
/* _UAPI__ASMARM_HWCAP_H */
arch/arm/kernel/armksyms.c
View file @
67dadcb3
...
...
@@ -158,6 +158,6 @@ EXPORT_SYMBOL(__gnu_mcount_nc);
#endif
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
EXPORT_SYMBOL
(
__pv_phys_offset
);
EXPORT_SYMBOL
(
__pv_phys_
pfn_
offset
);
EXPORT_SYMBOL
(
__pv_offset
);
#endif
arch/arm/kernel/bios32.c
View file @
67dadcb3
...
...
@@ -608,41 +608,10 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
*/
int
pcibios_enable_device
(
struct
pci_dev
*
dev
,
int
mask
)
{
u16
cmd
,
old_cmd
;
int
idx
;
struct
resource
*
r
;
pci_read_config_word
(
dev
,
PCI_COMMAND
,
&
cmd
);
old_cmd
=
cmd
;
for
(
idx
=
0
;
idx
<
6
;
idx
++
)
{
/* Only set up the requested stuff */
if
(
!
(
mask
&
(
1
<<
idx
)))
continue
;
r
=
dev
->
resource
+
idx
;
if
(
!
r
->
start
&&
r
->
end
)
{
printk
(
KERN_ERR
"PCI: Device %s not available because"
" of resource collisions
\n
"
,
pci_name
(
dev
));
return
-
EINVAL
;
}
if
(
r
->
flags
&
IORESOURCE_IO
)
cmd
|=
PCI_COMMAND_IO
;
if
(
r
->
flags
&
IORESOURCE_MEM
)
cmd
|=
PCI_COMMAND_MEMORY
;
}
/*
* Bridges (eg, cardbus bridges) need to be fully enabled
*/
if
((
dev
->
class
>>
16
)
==
PCI_BASE_CLASS_BRIDGE
)
cmd
|=
PCI_COMMAND_IO
|
PCI_COMMAND_MEMORY
;
if
(
cmd
!=
old_cmd
)
{
printk
(
"PCI: enabling device %s (%04x -> %04x)
\n
"
,
pci_name
(
dev
),
old_cmd
,
cmd
);
pci_write_config_word
(
dev
,
PCI_COMMAND
,
cmd
);
}
if
(
pci_has_flag
(
PCI_PROBE_ONLY
))
return
0
;
return
pci_enable_resources
(
dev
,
mask
);
}
int
pci_mmap_page_range
(
struct
pci_dev
*
dev
,
struct
vm_area_struct
*
vma
,
...
...
arch/arm/kernel/head.S
View file @
67dadcb3
...
...
@@ -584,9 +584,10 @@ __fixup_pv_table:
subs
r3
,
r0
,
r3
@
PHYS_OFFSET
-
PAGE_OFFSET
add
r4
,
r4
,
r3
@
adjust
table
start
address
add
r5
,
r5
,
r3
@
adjust
table
end
address
add
r6
,
r6
,
r3
@
adjust
__pv_phys_offset
address
add
r6
,
r6
,
r3
@
adjust
__pv_phys_
pfn_
offset
address
add
r7
,
r7
,
r3
@
adjust
__pv_offset
address
str
r8
,
[
r6
,
#
LOW_OFFSET
]
@
save
computed
PHYS_OFFSET
to
__pv_phys_offset
mov
r0
,
r8
,
lsr
#
12
@
convert
to
PFN
str
r0
,
[
r6
,
#
LOW_OFFSET
]
@
save
computed
PHYS_OFFSET
to
__pv_phys_pfn_offset
strcc
ip
,
[
r7
,
#
HIGH_OFFSET
]
@
save
to
__pv_offset
high
bits
mov
r6
,
r3
,
lsr
#
24
@
constant
for
add
/
sub
instructions
teq
r3
,
r6
,
lsl
#
24
@
must
be
16
MiB
aligned
...
...
@@ -600,7 +601,7 @@ ENDPROC(__fixup_pv_table)
1
:
.
long
.
.
long
__pv_table_begin
.
long
__pv_table_end
2
:
.
long
__pv_phys_offset
2
:
.
long
__pv_phys_
pfn_
offset
.
long
__pv_offset
.
text
...
...
@@ -688,11 +689,11 @@ ENTRY(fixup_pv_table)
ENDPROC
(
fixup_pv_table
)
.
data
.
globl
__pv_phys_offset
.
type
__pv_phys_offset
,
%
object
__pv_phys_offset
:
.
qua
d
0
.
size
__pv_phys_
offset
,
.
-
__pv_phys
_offset
.
globl
__pv_phys_
pfn_
offset
.
type
__pv_phys_
pfn_
offset
,
%
object
__pv_phys_
pfn_
offset
:
.
wor
d
0
.
size
__pv_phys_
pfn_offset
,
.
-
__pv_phys_pfn
_offset
.
globl
__pv_offset
.
type
__pv_offset
,
%
object
...
...
arch/arm/kernel/hw_breakpoint.c
View file @
67dadcb3
...
...
@@ -167,7 +167,7 @@ static int debug_arch_supported(void)
/* Can we determine the watchpoint access type from the fsr? */
static
int
debug_exception_updates_fsr
(
void
)
{
return
0
;
return
get_debug_arch
()
>=
ARM_DEBUG_ARCH_V8
;
}
/* Determine number of WRP registers available. */
...
...
@@ -257,6 +257,7 @@ static int enable_monitor_mode(void)
break
;
case
ARM_DEBUG_ARCH_V7_ECP14
:
case
ARM_DEBUG_ARCH_V7_1
:
case
ARM_DEBUG_ARCH_V8
:
ARM_DBG_WRITE
(
c0
,
c2
,
2
,
(
dscr
|
ARM_DSCR_MDBGEN
));
isb
();
break
;
...
...
arch/arm/kernel/setup.c
View file @
67dadcb3
...
...
@@ -100,6 +100,9 @@ EXPORT_SYMBOL(system_serial_high);
unsigned
int
elf_hwcap
__read_mostly
;
EXPORT_SYMBOL
(
elf_hwcap
);
unsigned
int
elf_hwcap2
__read_mostly
;
EXPORT_SYMBOL
(
elf_hwcap2
);
#ifdef MULTI_CPU
struct
processor
processor
__read_mostly
;
...
...
@@ -1005,6 +1008,15 @@ static const char *hwcap_str[] = {
NULL
};
static
const
char
*
hwcap2_str
[]
=
{
"aes"
,
"pmull"
,
"sha1"
,
"sha2"
,
"crc32"
,
NULL
};
static
int
c_show
(
struct
seq_file
*
m
,
void
*
v
)
{
int
i
,
j
;
...
...
@@ -1028,6 +1040,10 @@ static int c_show(struct seq_file *m, void *v)
if
(
elf_hwcap
&
(
1
<<
j
))
seq_printf
(
m
,
"%s "
,
hwcap_str
[
j
]);
for
(
j
=
0
;
hwcap2_str
[
j
];
j
++
)
if
(
elf_hwcap2
&
(
1
<<
j
))
seq_printf
(
m
,
"%s "
,
hwcap2_str
[
j
]);
seq_printf
(
m
,
"
\n
CPU implementer
\t
: 0x%02x
\n
"
,
cpuid
>>
24
);
seq_printf
(
m
,
"CPU architecture: %s
\n
"
,
proc_arch
[
cpu_architecture
()]);
...
...
arch/arm/kernel/unwind.c
View file @
67dadcb3
...
...
@@ -68,6 +68,12 @@ EXPORT_SYMBOL(__aeabi_unwind_cpp_pr2);
struct
unwind_ctrl_block
{
unsigned
long
vrs
[
16
];
/* virtual register set */
const
unsigned
long
*
insn
;
/* pointer to the current instructions word */
unsigned
long
sp_high
;
/* highest value of sp allowed */
/*
* 1 : check for stack overflow for each register pop.
* 0 : save overhead if there is plenty of stack remaining.
*/
int
check_each_pop
;
int
entries
;
/* number of entries left to interpret */
int
byte
;
/* current byte number in the instructions word */
};
...
...
@@ -235,12 +241,85 @@ static unsigned long unwind_get_byte(struct unwind_ctrl_block *ctrl)
return
ret
;
}
/* Before poping a register check whether it is feasible or not */
static
int
unwind_pop_register
(
struct
unwind_ctrl_block
*
ctrl
,
unsigned
long
**
vsp
,
unsigned
int
reg
)
{
if
(
unlikely
(
ctrl
->
check_each_pop
))
if
(
*
vsp
>=
(
unsigned
long
*
)
ctrl
->
sp_high
)
return
-
URC_FAILURE
;
ctrl
->
vrs
[
reg
]
=
*
(
*
vsp
)
++
;
return
URC_OK
;
}
/* Helper functions to execute the instructions */
static
int
unwind_exec_pop_subset_r4_to_r13
(
struct
unwind_ctrl_block
*
ctrl
,
unsigned
long
mask
)
{
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
load_sp
,
reg
=
4
;
load_sp
=
mask
&
(
1
<<
(
13
-
4
));
while
(
mask
)
{
if
(
mask
&
1
)
if
(
unwind_pop_register
(
ctrl
,
&
vsp
,
reg
))
return
-
URC_FAILURE
;
mask
>>=
1
;
reg
++
;
}
if
(
!
load_sp
)
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
return
URC_OK
;
}
static
int
unwind_exec_pop_r4_to_rN
(
struct
unwind_ctrl_block
*
ctrl
,
unsigned
long
insn
)
{
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
reg
;
/* pop R4-R[4+bbb] */
for
(
reg
=
4
;
reg
<=
4
+
(
insn
&
7
);
reg
++
)
if
(
unwind_pop_register
(
ctrl
,
&
vsp
,
reg
))
return
-
URC_FAILURE
;
if
(
insn
&
0x80
)
if
(
unwind_pop_register
(
ctrl
,
&
vsp
,
14
))
return
-
URC_FAILURE
;
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
return
URC_OK
;
}
static
int
unwind_exec_pop_subset_r0_to_r3
(
struct
unwind_ctrl_block
*
ctrl
,
unsigned
long
mask
)
{
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
reg
=
0
;
/* pop R0-R3 according to mask */
while
(
mask
)
{
if
(
mask
&
1
)
if
(
unwind_pop_register
(
ctrl
,
&
vsp
,
reg
))
return
-
URC_FAILURE
;
mask
>>=
1
;
reg
++
;
}
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
return
URC_OK
;
}
/*
* Execute the current unwind instruction.
*/
static
int
unwind_exec_insn
(
struct
unwind_ctrl_block
*
ctrl
)
{
unsigned
long
insn
=
unwind_get_byte
(
ctrl
);
int
ret
=
URC_OK
;
pr_debug
(
"%s: insn = %08lx
\n
"
,
__func__
,
insn
);
...
...
@@ -250,8 +329,6 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
ctrl
->
vrs
[
SP
]
-=
((
insn
&
0x3f
)
<<
2
)
+
4
;
else
if
((
insn
&
0xf0
)
==
0x80
)
{
unsigned
long
mask
;
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
load_sp
,
reg
=
4
;
insn
=
(
insn
<<
8
)
|
unwind_get_byte
(
ctrl
);
mask
=
insn
&
0x0fff
;
...
...
@@ -261,29 +338,16 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
return
-
URC_FAILURE
;
}
/* pop R4-R15 according to mask */
load_sp
=
mask
&
(
1
<<
(
13
-
4
));
while
(
mask
)
{
if
(
mask
&
1
)
ctrl
->
vrs
[
reg
]
=
*
vsp
++
;
mask
>>=
1
;
reg
++
;
}
if
(
!
load_sp
)
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
ret
=
unwind_exec_pop_subset_r4_to_r13
(
ctrl
,
mask
);
if
(
ret
)
goto
error
;
}
else
if
((
insn
&
0xf0
)
==
0x90
&&
(
insn
&
0x0d
)
!=
0x0d
)
ctrl
->
vrs
[
SP
]
=
ctrl
->
vrs
[
insn
&
0x0f
];
else
if
((
insn
&
0xf0
)
==
0xa0
)
{
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
reg
;
/* pop R4-R[4+bbb] */
for
(
reg
=
4
;
reg
<=
4
+
(
insn
&
7
);
reg
++
)
ctrl
->
vrs
[
reg
]
=
*
vsp
++
;
if
(
insn
&
0x80
)
ctrl
->
vrs
[
14
]
=
*
vsp
++
;
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
ret
=
unwind_exec_pop_r4_to_rN
(
ctrl
,
insn
);
if
(
ret
)
goto
error
;
}
else
if
(
insn
==
0xb0
)
{
if
(
ctrl
->
vrs
[
PC
]
==
0
)
ctrl
->
vrs
[
PC
]
=
ctrl
->
vrs
[
LR
];
...
...
@@ -291,8 +355,6 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
ctrl
->
entries
=
0
;
}
else
if
(
insn
==
0xb1
)
{
unsigned
long
mask
=
unwind_get_byte
(
ctrl
);
unsigned
long
*
vsp
=
(
unsigned
long
*
)
ctrl
->
vrs
[
SP
];
int
reg
=
0
;
if
(
mask
==
0
||
mask
&
0xf0
)
{
pr_warning
(
"unwind: Spare encoding %04lx
\n
"
,
...
...
@@ -300,14 +362,9 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
return
-
URC_FAILURE
;
}
/* pop R0-R3 according to mask */
while
(
mask
)
{
if
(
mask
&
1
)
ctrl
->
vrs
[
reg
]
=
*
vsp
++
;
mask
>>=
1
;
reg
++
;
}
ctrl
->
vrs
[
SP
]
=
(
unsigned
long
)
vsp
;
ret
=
unwind_exec_pop_subset_r0_to_r3
(
ctrl
,
mask
);
if
(
ret
)
goto
error
;
}
else
if
(
insn
==
0xb2
)
{
unsigned
long
uleb128
=
unwind_get_byte
(
ctrl
);
...
...
@@ -320,7 +377,8 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
pr_debug
(
"%s: fp = %08lx sp = %08lx lr = %08lx pc = %08lx
\n
"
,
__func__
,
ctrl
->
vrs
[
FP
],
ctrl
->
vrs
[
SP
],
ctrl
->
vrs
[
LR
],
ctrl
->
vrs
[
PC
]);
return
URC_OK
;
error:
return
ret
;
}
/*
...
...
@@ -329,13 +387,13 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
*/
int
unwind_frame
(
struct
stackframe
*
frame
)
{
unsigned
long
high
,
low
;
unsigned
long
low
;
const
struct
unwind_idx
*
idx
;
struct
unwind_ctrl_block
ctrl
;
/*
only go to a higher address on the stack
*/
/*
store the highest address on the stack to avoid crossing it
*/
low
=
frame
->
sp
;
high
=
ALIGN
(
low
,
THREAD_SIZE
);
ctrl
.
sp_
high
=
ALIGN
(
low
,
THREAD_SIZE
);
pr_debug
(
"%s(pc = %08lx lr = %08lx sp = %08lx)
\n
"
,
__func__
,
frame
->
pc
,
frame
->
lr
,
frame
->
sp
);
...
...
@@ -382,11 +440,16 @@ int unwind_frame(struct stackframe *frame)
return
-
URC_FAILURE
;
}
ctrl
.
check_each_pop
=
0
;
while
(
ctrl
.
entries
>
0
)
{
int
urc
=
unwind_exec_insn
(
&
ctrl
);
int
urc
;
if
((
ctrl
.
sp_high
-
ctrl
.
vrs
[
SP
])
<
sizeof
(
ctrl
.
vrs
))
ctrl
.
check_each_pop
=
1
;
urc
=
unwind_exec_insn
(
&
ctrl
);
if
(
urc
<
0
)
return
urc
;
if
(
ctrl
.
vrs
[
SP
]
<
low
||
ctrl
.
vrs
[
SP
]
>=
high
)
if
(
ctrl
.
vrs
[
SP
]
<
low
||
ctrl
.
vrs
[
SP
]
>=
ctrl
.
sp_
high
)
return
-
URC_FAILURE
;
}
...
...
arch/arm/lib/bitops.h
View file @
67dadcb3
...
...
@@ -37,6 +37,11 @@ UNWIND( .fnstart )
add
r1
,
r1
,
r0
,
lsl
#
2
@
Get
word
offset
mov
r3
,
r2
,
lsl
r3
@
create
mask
smp_dmb
#if __LINUX_ARM_ARCH__ >= 7 && defined(CONFIG_SMP)
.
arch_extension
mp
ALT_SMP
(
W
(
pldw
)
[
r1
])
ALT_UP
(
W
(
nop
))
#endif
1
:
ldrex
r2
,
[
r1
]
ands
r0
,
r2
,
r3
@
save
old
value
of
bit
\
instr
r2
,
r2
,
r3
@
toggle
bit
...
...
arch/arm/lib/copy_template.S
View file @
67dadcb3
...
...
@@ -197,24 +197,24 @@
12
:
PLD
(
pld
[
r1
,
#
124
]
)
13
:
ldr4w
r1
,
r4
,
r5
,
r6
,
r7
,
abort
=
19
f
mov
r3
,
lr
,
pull
#
\
pull
mov
r3
,
lr
,
ls
pull
#
\
pull
subs
r2
,
r2
,
#
32
ldr4w
r1
,
r8
,
r9
,
ip
,
lr
,
abort
=
19
f
orr
r3
,
r3
,
r4
,
push
#
\
push
mov
r4
,
r4
,
pull
#
\
pull
orr
r4
,
r4
,
r5
,
push
#
\
push
mov
r5
,
r5
,
pull
#
\
pull
orr
r5
,
r5
,
r6
,
push
#
\
push
mov
r6
,
r6
,
pull
#
\
pull
orr
r6
,
r6
,
r7
,
push
#
\
push
mov
r7
,
r7
,
pull
#
\
pull
orr
r7
,
r7
,
r8
,
push
#
\
push
mov
r8
,
r8
,
pull
#
\
pull
orr
r8
,
r8
,
r9
,
push
#
\
push
mov
r9
,
r9
,
pull
#
\
pull
orr
r9
,
r9
,
ip
,
push
#
\
push
mov
ip
,
ip
,
pull
#
\
pull
orr
ip
,
ip
,
lr
,
push
#
\
push
orr
r3
,
r3
,
r4
,
ls
push
#
\
push
mov
r4
,
r4
,
ls
pull
#
\
pull
orr
r4
,
r4
,
r5
,
ls
push
#
\
push
mov
r5
,
r5
,
ls
pull
#
\
pull
orr
r5
,
r5
,
r6
,
ls
push
#
\
push
mov
r6
,
r6
,
ls
pull
#
\
pull
orr
r6
,
r6
,
r7
,
ls
push
#
\
push
mov
r7
,
r7
,
ls
pull
#
\
pull
orr
r7
,
r7
,
r8
,
ls
push
#
\
push
mov
r8
,
r8
,
ls
pull
#
\
pull
orr
r8
,
r8
,
r9
,
ls
push
#
\
push
mov
r9
,
r9
,
ls
pull
#
\
pull
orr
r9
,
r9
,
ip
,
ls
push
#
\
push
mov
ip
,
ip
,
ls
pull
#
\
pull
orr
ip
,
ip
,
lr
,
ls
push
#
\
push
str8w
r0
,
r3
,
r4
,
r5
,
r6
,
r7
,
r8
,
r9
,
ip
,
,
abort
=
19
f
bge
12
b
PLD
(
cmn
r2
,
#
96
)
...
...
@@ -225,10 +225,10 @@
14
:
ands
ip
,
r2
,
#
28
beq
16
f
15
:
mov
r3
,
lr
,
pull
#
\
pull
15
:
mov
r3
,
lr
,
ls
pull
#
\
pull
ldr1w
r1
,
lr
,
abort
=
21
f
subs
ip
,
ip
,
#
4
orr
r3
,
r3
,
lr
,
push
#
\
push
orr
r3
,
r3
,
lr
,
ls
push
#
\
push
str1w
r0
,
r3
,
abort
=
21
f
bgt
15
b
CALGN
(
cmp
r2
,
#
0
)
...
...
arch/arm/lib/csumpartialcopygeneric.S
View file @
67dadcb3
...
...
@@ -141,7 +141,7 @@ FN_ENTRY
tst
len
,
#
2
mov
r5
,
r4
,
get_byte_0
beq
.
Lexit
adcs
sum
,
sum
,
r4
,
push
#
16
adcs
sum
,
sum
,
r4
,
ls
push
#
16
strb
r5
,
[
dst
],
#
1
mov
r5
,
r4
,
get_byte_1
strb
r5
,
[
dst
],
#
1
...
...
@@ -171,23 +171,23 @@ FN_ENTRY
cmp
ip
,
#
2
beq
.
Lsrc2_aligned
bhi
.
Lsrc3_aligned
mov
r4
,
r5
,
pull
#
8
@
C
=
0
mov
r4
,
r5
,
ls
pull
#
8
@
C
=
0
bics
ip
,
len
,
#
15
beq
2
f
1
:
load4l
r5
,
r6
,
r7
,
r8
orr
r4
,
r4
,
r5
,
push
#
24
mov
r5
,
r5
,
pull
#
8
orr
r5
,
r5
,
r6
,
push
#
24
mov
r6
,
r6
,
pull
#
8
orr
r6
,
r6
,
r7
,
push
#
24
mov
r7
,
r7
,
pull
#
8
orr
r7
,
r7
,
r8
,
push
#
24
orr
r4
,
r4
,
r5
,
ls
push
#
24
mov
r5
,
r5
,
ls
pull
#
8
orr
r5
,
r5
,
r6
,
ls
push
#
24
mov
r6
,
r6
,
ls
pull
#
8
orr
r6
,
r6
,
r7
,
ls
push
#
24
mov
r7
,
r7
,
ls
pull
#
8
orr
r7
,
r7
,
r8
,
ls
push
#
24
stmia
dst
!,
{
r4
,
r5
,
r6
,
r7
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
adcs
sum
,
sum
,
r6
adcs
sum
,
sum
,
r7
mov
r4
,
r8
,
pull
#
8
mov
r4
,
r8
,
ls
pull
#
8
sub
ip
,
ip
,
#
16
teq
ip
,
#
0
bne
1
b
...
...
@@ -196,50 +196,50 @@ FN_ENTRY
tst
ip
,
#
8
beq
3
f
load2l
r5
,
r6
orr
r4
,
r4
,
r5
,
push
#
24
mov
r5
,
r5
,
pull
#
8
orr
r5
,
r5
,
r6
,
push
#
24
orr
r4
,
r4
,
r5
,
ls
push
#
24
mov
r5
,
r5
,
ls
pull
#
8
orr
r5
,
r5
,
r6
,
ls
push
#
24
stmia
dst
!,
{
r4
,
r5
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
mov
r4
,
r6
,
pull
#
8
mov
r4
,
r6
,
ls
pull
#
8
tst
ip
,
#
4
beq
4
f
3
:
load1l
r5
orr
r4
,
r4
,
r5
,
push
#
24
orr
r4
,
r4
,
r5
,
ls
push
#
24
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
8
mov
r4
,
r5
,
ls
pull
#
8
4
:
ands
len
,
len
,
#
3
beq
.
Ldone
mov
r5
,
r4
,
get_byte_0
tst
len
,
#
2
beq
.
Lexit
adcs
sum
,
sum
,
r4
,
push
#
16
adcs
sum
,
sum
,
r4
,
ls
push
#
16
strb
r5
,
[
dst
],
#
1
mov
r5
,
r4
,
get_byte_1
strb
r5
,
[
dst
],
#
1
mov
r5
,
r4
,
get_byte_2
b
.
Lexit
.
Lsrc2_aligned
:
mov
r4
,
r5
,
pull
#
16
.
Lsrc2_aligned
:
mov
r4
,
r5
,
ls
pull
#
16
adds
sum
,
sum
,
#
0
bics
ip
,
len
,
#
15
beq
2
f
1
:
load4l
r5
,
r6
,
r7
,
r8
orr
r4
,
r4
,
r5
,
push
#
16
mov
r5
,
r5
,
pull
#
16
orr
r5
,
r5
,
r6
,
push
#
16
mov
r6
,
r6
,
pull
#
16
orr
r6
,
r6
,
r7
,
push
#
16
mov
r7
,
r7
,
pull
#
16
orr
r7
,
r7
,
r8
,
push
#
16
orr
r4
,
r4
,
r5
,
ls
push
#
16
mov
r5
,
r5
,
ls
pull
#
16
orr
r5
,
r5
,
r6
,
ls
push
#
16
mov
r6
,
r6
,
ls
pull
#
16
orr
r6
,
r6
,
r7
,
ls
push
#
16
mov
r7
,
r7
,
ls
pull
#
16
orr
r7
,
r7
,
r8
,
ls
push
#
16
stmia
dst
!,
{
r4
,
r5
,
r6
,
r7
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
adcs
sum
,
sum
,
r6
adcs
sum
,
sum
,
r7
mov
r4
,
r8
,
pull
#
16
mov
r4
,
r8
,
ls
pull
#
16
sub
ip
,
ip
,
#
16
teq
ip
,
#
0
bne
1
b
...
...
@@ -248,20 +248,20 @@ FN_ENTRY
tst
ip
,
#
8
beq
3
f
load2l
r5
,
r6
orr
r4
,
r4
,
r5
,
push
#
16
mov
r5
,
r5
,
pull
#
16
orr
r5
,
r5
,
r6
,
push
#
16
orr
r4
,
r4
,
r5
,
ls
push
#
16
mov
r5
,
r5
,
ls
pull
#
16
orr
r5
,
r5
,
r6
,
ls
push
#
16
stmia
dst
!,
{
r4
,
r5
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
mov
r4
,
r6
,
pull
#
16
mov
r4
,
r6
,
ls
pull
#
16
tst
ip
,
#
4
beq
4
f
3
:
load1l
r5
orr
r4
,
r4
,
r5
,
push
#
16
orr
r4
,
r4
,
r5
,
ls
push
#
16
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
16
mov
r4
,
r5
,
ls
pull
#
16
4
:
ands
len
,
len
,
#
3
beq
.
Ldone
mov
r5
,
r4
,
get_byte_0
...
...
@@ -276,24 +276,24 @@ FN_ENTRY
load1b
r5
b
.
Lexit
.
Lsrc3_aligned
:
mov
r4
,
r5
,
pull
#
24
.
Lsrc3_aligned
:
mov
r4
,
r5
,
ls
pull
#
24
adds
sum
,
sum
,
#
0
bics
ip
,
len
,
#
15
beq
2
f
1
:
load4l
r5
,
r6
,
r7
,
r8
orr
r4
,
r4
,
r5
,
push
#
8
mov
r5
,
r5
,
pull
#
24
orr
r5
,
r5
,
r6
,
push
#
8
mov
r6
,
r6
,
pull
#
24
orr
r6
,
r6
,
r7
,
push
#
8
mov
r7
,
r7
,
pull
#
24
orr
r7
,
r7
,
r8
,
push
#
8
orr
r4
,
r4
,
r5
,
ls
push
#
8
mov
r5
,
r5
,
ls
pull
#
24
orr
r5
,
r5
,
r6
,
ls
push
#
8
mov
r6
,
r6
,
ls
pull
#
24
orr
r6
,
r6
,
r7
,
ls
push
#
8
mov
r7
,
r7
,
ls
pull
#
24
orr
r7
,
r7
,
r8
,
ls
push
#
8
stmia
dst
!,
{
r4
,
r5
,
r6
,
r7
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
adcs
sum
,
sum
,
r6
adcs
sum
,
sum
,
r7
mov
r4
,
r8
,
pull
#
24
mov
r4
,
r8
,
ls
pull
#
24
sub
ip
,
ip
,
#
16
teq
ip
,
#
0
bne
1
b
...
...
@@ -302,20 +302,20 @@ FN_ENTRY
tst
ip
,
#
8
beq
3
f
load2l
r5
,
r6
orr
r4
,
r4
,
r5
,
push
#
8
mov
r5
,
r5
,
pull
#
24
orr
r5
,
r5
,
r6
,
push
#
8
orr
r4
,
r4
,
r5
,
ls
push
#
8
mov
r5
,
r5
,
ls
pull
#
24
orr
r5
,
r5
,
r6
,
ls
push
#
8
stmia
dst
!,
{
r4
,
r5
}
adcs
sum
,
sum
,
r4
adcs
sum
,
sum
,
r5
mov
r4
,
r6
,
pull
#
24
mov
r4
,
r6
,
ls
pull
#
24
tst
ip
,
#
4
beq
4
f
3
:
load1l
r5
orr
r4
,
r4
,
r5
,
push
#
8
orr
r4
,
r4
,
r5
,
ls
push
#
8
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
24
mov
r4
,
r5
,
ls
pull
#
24
4
:
ands
len
,
len
,
#
3
beq
.
Ldone
mov
r5
,
r4
,
get_byte_0
...
...
@@ -326,7 +326,7 @@ FN_ENTRY
load1l
r4
mov
r5
,
r4
,
get_byte_0
strb
r5
,
[
dst
],
#
1
adcs
sum
,
sum
,
r4
,
push
#
24
adcs
sum
,
sum
,
r4
,
ls
push
#
24
mov
r5
,
r4
,
get_byte_1
b
.
Lexit
FN_EXIT
arch/arm/lib/io-readsl.S
View file @
67dadcb3
...
...
@@ -47,25 +47,25 @@ ENTRY(__raw_readsl)
strb
ip
,
[
r1
],
#
1
4
:
subs
r2
,
r2
,
#
1
mov
ip
,
r3
,
pull
#
24
mov
ip
,
r3
,
ls
pull
#
24
ldrne
r3
,
[
r0
]
orrne
ip
,
ip
,
r3
,
push
#
8
orrne
ip
,
ip
,
r3
,
ls
push
#
8
strne
ip
,
[
r1
],
#
4
bne
4
b
b
8
f
5
:
subs
r2
,
r2
,
#
1
mov
ip
,
r3
,
pull
#
16
mov
ip
,
r3
,
ls
pull
#
16
ldrne
r3
,
[
r0
]
orrne
ip
,
ip
,
r3
,
push
#
16
orrne
ip
,
ip
,
r3
,
ls
push
#
16
strne
ip
,
[
r1
],
#
4
bne
5
b
b
7
f
6
:
subs
r2
,
r2
,
#
1
mov
ip
,
r3
,
pull
#
8
mov
ip
,
r3
,
ls
pull
#
8
ldrne
r3
,
[
r0
]
orrne
ip
,
ip
,
r3
,
push
#
24
orrne
ip
,
ip
,
r3
,
ls
push
#
24
strne
ip
,
[
r1
],
#
4
bne
6
b
...
...
arch/arm/lib/io-writesl.S
View file @
67dadcb3
...
...
@@ -41,26 +41,26 @@ ENTRY(__raw_writesl)
blt
5
f
bgt
6
f
4
:
mov
ip
,
r3
,
pull
#
16
4
:
mov
ip
,
r3
,
ls
pull
#
16
ldr
r3
,
[
r1
],
#
4
subs
r2
,
r2
,
#
1
orr
ip
,
ip
,
r3
,
push
#
16
orr
ip
,
ip
,
r3
,
ls
push
#
16
str
ip
,
[
r0
]
bne
4
b
mov
pc
,
lr
5
:
mov
ip
,
r3
,
pull
#
8
5
:
mov
ip
,
r3
,
ls
pull
#
8
ldr
r3
,
[
r1
],
#
4
subs
r2
,
r2
,
#
1
orr
ip
,
ip
,
r3
,
push
#
24
orr
ip
,
ip
,
r3
,
ls
push
#
24
str
ip
,
[
r0
]
bne
5
b
mov
pc
,
lr
6
:
mov
ip
,
r3
,
pull
#
24
6
:
mov
ip
,
r3
,
ls
pull
#
24
ldr
r3
,
[
r1
],
#
4
subs
r2
,
r2
,
#
1
orr
ip
,
ip
,
r3
,
push
#
8
orr
ip
,
ip
,
r3
,
ls
push
#
8
str
ip
,
[
r0
]
bne
6
b
mov
pc
,
lr
...
...
arch/arm/lib/memmove.S
View file @
67dadcb3
...
...
@@ -147,24 +147,24 @@ ENTRY(memmove)
12
:
PLD
(
pld
[
r1
,
#-
128
]
)
13
:
ldmdb
r1
!,
{
r7
,
r8
,
r9
,
ip
}
mov
lr
,
r3
,
push
#
\
push
mov
lr
,
r3
,
ls
push
#
\
push
subs
r2
,
r2
,
#
32
ldmdb
r1
!,
{
r3
,
r4
,
r5
,
r6
}
orr
lr
,
lr
,
ip
,
pull
#
\
pull
mov
ip
,
ip
,
push
#
\
push
orr
ip
,
ip
,
r9
,
pull
#
\
pull
mov
r9
,
r9
,
push
#
\
push
orr
r9
,
r9
,
r8
,
pull
#
\
pull
mov
r8
,
r8
,
push
#
\
push
orr
r8
,
r8
,
r7
,
pull
#
\
pull
mov
r7
,
r7
,
push
#
\
push
orr
r7
,
r7
,
r6
,
pull
#
\
pull
mov
r6
,
r6
,
push
#
\
push
orr
r6
,
r6
,
r5
,
pull
#
\
pull
mov
r5
,
r5
,
push
#
\
push
orr
r5
,
r5
,
r4
,
pull
#
\
pull
mov
r4
,
r4
,
push
#
\
push
orr
r4
,
r4
,
r3
,
pull
#
\
pull
orr
lr
,
lr
,
ip
,
ls
pull
#
\
pull
mov
ip
,
ip
,
ls
push
#
\
push
orr
ip
,
ip
,
r9
,
ls
pull
#
\
pull
mov
r9
,
r9
,
ls
push
#
\
push
orr
r9
,
r9
,
r8
,
ls
pull
#
\
pull
mov
r8
,
r8
,
ls
push
#
\
push
orr
r8
,
r8
,
r7
,
ls
pull
#
\
pull
mov
r7
,
r7
,
ls
push
#
\
push
orr
r7
,
r7
,
r6
,
ls
pull
#
\
pull
mov
r6
,
r6
,
ls
push
#
\
push
orr
r6
,
r6
,
r5
,
ls
pull
#
\
pull
mov
r5
,
r5
,
ls
push
#
\
push
orr
r5
,
r5
,
r4
,
ls
pull
#
\
pull
mov
r4
,
r4
,
ls
push
#
\
push
orr
r4
,
r4
,
r3
,
ls
pull
#
\
pull
stmdb
r0
!,
{
r4
-
r9
,
ip
,
lr
}
bge
12
b
PLD
(
cmn
r2
,
#
96
)
...
...
@@ -175,10 +175,10 @@ ENTRY(memmove)
14
:
ands
ip
,
r2
,
#
28
beq
16
f
15
:
mov
lr
,
r3
,
push
#
\
push
15
:
mov
lr
,
r3
,
ls
push
#
\
push
ldr
r3
,
[
r1
,
#-
4
]!
subs
ip
,
ip
,
#
4
orr
lr
,
lr
,
r3
,
pull
#
\
pull
orr
lr
,
lr
,
r3
,
ls
pull
#
\
pull
str
lr
,
[
r0
,
#-
4
]!
bgt
15
b
CALGN
(
cmp
r2
,
#
0
)
...
...
arch/arm/lib/uaccess.S
View file @
67dadcb3
...
...
@@ -117,9 +117,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
.
Lc2u_1fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lc2u_1nowords
mov
r3
,
r7
,
pull
#
8
mov
r3
,
r7
,
ls
pull
#
8
ldr
r7
,
[
r1
],
#
4
orr
r3
,
r3
,
r7
,
push
#
24
orr
r3
,
r3
,
r7
,
ls
push
#
24
USER
(
TUSER
(
str
)
r3
,
[
r0
],
#
4
)
@
May
fault
mov
ip
,
r0
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -131,30 +131,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
subs
ip
,
ip
,
#
16
blt
.
Lc2u_1rem8lp
.
Lc2u_1cpy8lp
:
mov
r3
,
r7
,
pull
#
8
.
Lc2u_1cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
8
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
24
mov
r4
,
r4
,
pull
#
8
orr
r4
,
r4
,
r5
,
push
#
24
mov
r5
,
r5
,
pull
#
8
orr
r5
,
r5
,
r6
,
push
#
24
mov
r6
,
r6
,
pull
#
8
orr
r6
,
r6
,
r7
,
push
#
24
orr
r3
,
r3
,
r4
,
ls
push
#
24
mov
r4
,
r4
,
ls
pull
#
8
orr
r4
,
r4
,
r5
,
ls
push
#
24
mov
r5
,
r5
,
ls
pull
#
8
orr
r5
,
r5
,
r6
,
ls
push
#
24
mov
r6
,
r6
,
ls
pull
#
8
orr
r6
,
r6
,
r7
,
ls
push
#
24
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
Lc2u_1cpy8lp
.
Lc2u_1rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
ls
pull
#
8
ldmneia
r1
!,
{
r4
,
r7
}
orrne
r3
,
r3
,
r4
,
push
#
24
movne
r4
,
r4
,
pull
#
8
orrne
r4
,
r4
,
r7
,
push
#
24
orrne
r3
,
r3
,
r4
,
ls
push
#
24
movne
r4
,
r4
,
ls
pull
#
8
orrne
r4
,
r4
,
r7
,
ls
push
#
24
stmneia
r0
!,
{
r3
-
r4
}
@
Shouldnt
fault
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
ls
pull
#
8
ldrne
r7
,
[
r1
],
#
4
orrne
r3
,
r3
,
r7
,
push
#
24
orrne
r3
,
r3
,
r7
,
ls
push
#
24
TUSER
(
strne
)
r3
,
[
r0
],
#
4
@
Shouldnt
fault
ands
ip
,
ip
,
#
3
beq
.
Lc2u_1fupi
...
...
@@ -172,9 +172,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
.
Lc2u_2fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lc2u_2nowords
mov
r3
,
r7
,
pull
#
16
mov
r3
,
r7
,
ls
pull
#
16
ldr
r7
,
[
r1
],
#
4
orr
r3
,
r3
,
r7
,
push
#
16
orr
r3
,
r3
,
r7
,
ls
push
#
16
USER
(
TUSER
(
str
)
r3
,
[
r0
],
#
4
)
@
May
fault
mov
ip
,
r0
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -186,30 +186,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
subs
ip
,
ip
,
#
16
blt
.
Lc2u_2rem8lp
.
Lc2u_2cpy8lp
:
mov
r3
,
r7
,
pull
#
16
.
Lc2u_2cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
16
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
16
mov
r4
,
r4
,
pull
#
16
orr
r4
,
r4
,
r5
,
push
#
16
mov
r5
,
r5
,
pull
#
16
orr
r5
,
r5
,
r6
,
push
#
16
mov
r6
,
r6
,
pull
#
16
orr
r6
,
r6
,
r7
,
push
#
16
orr
r3
,
r3
,
r4
,
ls
push
#
16
mov
r4
,
r4
,
ls
pull
#
16
orr
r4
,
r4
,
r5
,
ls
push
#
16
mov
r5
,
r5
,
ls
pull
#
16
orr
r5
,
r5
,
r6
,
ls
push
#
16
mov
r6
,
r6
,
ls
pull
#
16
orr
r6
,
r6
,
r7
,
ls
push
#
16
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
Lc2u_2cpy8lp
.
Lc2u_2rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
ls
pull
#
16
ldmneia
r1
!,
{
r4
,
r7
}
orrne
r3
,
r3
,
r4
,
push
#
16
movne
r4
,
r4
,
pull
#
16
orrne
r4
,
r4
,
r7
,
push
#
16
orrne
r3
,
r3
,
r4
,
ls
push
#
16
movne
r4
,
r4
,
ls
pull
#
16
orrne
r4
,
r4
,
r7
,
ls
push
#
16
stmneia
r0
!,
{
r3
-
r4
}
@
Shouldnt
fault
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
ls
pull
#
16
ldrne
r7
,
[
r1
],
#
4
orrne
r3
,
r3
,
r7
,
push
#
16
orrne
r3
,
r3
,
r7
,
ls
push
#
16
TUSER
(
strne
)
r3
,
[
r0
],
#
4
@
Shouldnt
fault
ands
ip
,
ip
,
#
3
beq
.
Lc2u_2fupi
...
...
@@ -227,9 +227,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
.
Lc2u_3fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lc2u_3nowords
mov
r3
,
r7
,
pull
#
24
mov
r3
,
r7
,
ls
pull
#
24
ldr
r7
,
[
r1
],
#
4
orr
r3
,
r3
,
r7
,
push
#
8
orr
r3
,
r3
,
r7
,
ls
push
#
8
USER
(
TUSER
(
str
)
r3
,
[
r0
],
#
4
)
@
May
fault
mov
ip
,
r0
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -241,30 +241,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
subs
ip
,
ip
,
#
16
blt
.
Lc2u_3rem8lp
.
Lc2u_3cpy8lp
:
mov
r3
,
r7
,
pull
#
24
.
Lc2u_3cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
24
ldmia
r1
!,
{
r4
-
r7
}
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
8
mov
r4
,
r4
,
pull
#
24
orr
r4
,
r4
,
r5
,
push
#
8
mov
r5
,
r5
,
pull
#
24
orr
r5
,
r5
,
r6
,
push
#
8
mov
r6
,
r6
,
pull
#
24
orr
r6
,
r6
,
r7
,
push
#
8
orr
r3
,
r3
,
r4
,
ls
push
#
8
mov
r4
,
r4
,
ls
pull
#
24
orr
r4
,
r4
,
r5
,
ls
push
#
8
mov
r5
,
r5
,
ls
pull
#
24
orr
r5
,
r5
,
r6
,
ls
push
#
8
mov
r6
,
r6
,
ls
pull
#
24
orr
r6
,
r6
,
r7
,
ls
push
#
8
stmia
r0
!,
{
r3
-
r6
}
@
Shouldnt
fault
bpl
.
Lc2u_3cpy8lp
.
Lc2u_3rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
ls
pull
#
24
ldmneia
r1
!,
{
r4
,
r7
}
orrne
r3
,
r3
,
r4
,
push
#
8
movne
r4
,
r4
,
pull
#
24
orrne
r4
,
r4
,
r7
,
push
#
8
orrne
r3
,
r3
,
r4
,
ls
push
#
8
movne
r4
,
r4
,
ls
pull
#
24
orrne
r4
,
r4
,
r7
,
ls
push
#
8
stmneia
r0
!,
{
r3
-
r4
}
@
Shouldnt
fault
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
ls
pull
#
24
ldrne
r7
,
[
r1
],
#
4
orrne
r3
,
r3
,
r7
,
push
#
8
orrne
r3
,
r3
,
r7
,
ls
push
#
8
TUSER
(
strne
)
r3
,
[
r0
],
#
4
@
Shouldnt
fault
ands
ip
,
ip
,
#
3
beq
.
Lc2u_3fupi
...
...
@@ -382,9 +382,9 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
.
Lcfu_1fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lcfu_1nowords
mov
r3
,
r7
,
pull
#
8
mov
r3
,
r7
,
ls
pull
#
8
USER
(
TUSER
(
ldr
)
r7
,
[
r1
],
#
4
)
@
May
fault
orr
r3
,
r3
,
r7
,
push
#
24
orr
r3
,
r3
,
r7
,
ls
push
#
24
str
r3
,
[
r0
],
#
4
mov
ip
,
r1
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -396,30 +396,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
subs
ip
,
ip
,
#
16
blt
.
Lcfu_1rem8lp
.
Lcfu_1cpy8lp
:
mov
r3
,
r7
,
pull
#
8
.
Lcfu_1cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
8
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
24
mov
r4
,
r4
,
pull
#
8
orr
r4
,
r4
,
r5
,
push
#
24
mov
r5
,
r5
,
pull
#
8
orr
r5
,
r5
,
r6
,
push
#
24
mov
r6
,
r6
,
pull
#
8
orr
r6
,
r6
,
r7
,
push
#
24
orr
r3
,
r3
,
r4
,
ls
push
#
24
mov
r4
,
r4
,
ls
pull
#
8
orr
r4
,
r4
,
r5
,
ls
push
#
24
mov
r5
,
r5
,
ls
pull
#
8
orr
r5
,
r5
,
r6
,
ls
push
#
24
mov
r6
,
r6
,
ls
pull
#
8
orr
r6
,
r6
,
r7
,
ls
push
#
24
stmia
r0
!,
{
r3
-
r6
}
bpl
.
Lcfu_1cpy8lp
.
Lcfu_1rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
ls
pull
#
8
ldmneia
r1
!,
{
r4
,
r7
}
@
Shouldnt
fault
orrne
r3
,
r3
,
r4
,
push
#
24
movne
r4
,
r4
,
pull
#
8
orrne
r4
,
r4
,
r7
,
push
#
24
orrne
r3
,
r3
,
r4
,
ls
push
#
24
movne
r4
,
r4
,
ls
pull
#
8
orrne
r4
,
r4
,
r7
,
ls
push
#
24
stmneia
r0
!,
{
r3
-
r4
}
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
8
movne
r3
,
r7
,
ls
pull
#
8
USER
(
TUSER
(
ldrne
)
r7
,
[
r1
],
#
4
)
@
May
fault
orrne
r3
,
r3
,
r7
,
push
#
24
orrne
r3
,
r3
,
r7
,
ls
push
#
24
strne
r3
,
[
r0
],
#
4
ands
ip
,
ip
,
#
3
beq
.
Lcfu_1fupi
...
...
@@ -437,9 +437,9 @@ USER( TUSER( ldrne) r7, [r1], #4) @ May fault
.
Lcfu_2fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lcfu_2nowords
mov
r3
,
r7
,
pull
#
16
mov
r3
,
r7
,
ls
pull
#
16
USER
(
TUSER
(
ldr
)
r7
,
[
r1
],
#
4
)
@
May
fault
orr
r3
,
r3
,
r7
,
push
#
16
orr
r3
,
r3
,
r7
,
ls
push
#
16
str
r3
,
[
r0
],
#
4
mov
ip
,
r1
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -452,30 +452,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
blt
.
Lcfu_2rem8lp
.
Lcfu_2cpy8lp
:
mov
r3
,
r7
,
pull
#
16
.
Lcfu_2cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
16
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
subs
ip
,
ip
,
#
16
orr
r3
,
r3
,
r4
,
push
#
16
mov
r4
,
r4
,
pull
#
16
orr
r4
,
r4
,
r5
,
push
#
16
mov
r5
,
r5
,
pull
#
16
orr
r5
,
r5
,
r6
,
push
#
16
mov
r6
,
r6
,
pull
#
16
orr
r6
,
r6
,
r7
,
push
#
16
orr
r3
,
r3
,
r4
,
ls
push
#
16
mov
r4
,
r4
,
ls
pull
#
16
orr
r4
,
r4
,
r5
,
ls
push
#
16
mov
r5
,
r5
,
ls
pull
#
16
orr
r5
,
r5
,
r6
,
ls
push
#
16
mov
r6
,
r6
,
ls
pull
#
16
orr
r6
,
r6
,
r7
,
ls
push
#
16
stmia
r0
!,
{
r3
-
r6
}
bpl
.
Lcfu_2cpy8lp
.
Lcfu_2rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
ls
pull
#
16
ldmneia
r1
!,
{
r4
,
r7
}
@
Shouldnt
fault
orrne
r3
,
r3
,
r4
,
push
#
16
movne
r4
,
r4
,
pull
#
16
orrne
r4
,
r4
,
r7
,
push
#
16
orrne
r3
,
r3
,
r4
,
ls
push
#
16
movne
r4
,
r4
,
ls
pull
#
16
orrne
r4
,
r4
,
r7
,
ls
push
#
16
stmneia
r0
!,
{
r3
-
r4
}
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
16
movne
r3
,
r7
,
ls
pull
#
16
USER
(
TUSER
(
ldrne
)
r7
,
[
r1
],
#
4
)
@
May
fault
orrne
r3
,
r3
,
r7
,
push
#
16
orrne
r3
,
r3
,
r7
,
ls
push
#
16
strne
r3
,
[
r0
],
#
4
ands
ip
,
ip
,
#
3
beq
.
Lcfu_2fupi
...
...
@@ -493,9 +493,9 @@ USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
.
Lcfu_3fupi
:
subs
r2
,
r2
,
#
4
addmi
ip
,
r2
,
#
4
bmi
.
Lcfu_3nowords
mov
r3
,
r7
,
pull
#
24
mov
r3
,
r7
,
ls
pull
#
24
USER
(
TUSER
(
ldr
)
r7
,
[
r1
],
#
4
)
@
May
fault
orr
r3
,
r3
,
r7
,
push
#
8
orr
r3
,
r3
,
r7
,
ls
push
#
8
str
r3
,
[
r0
],
#
4
mov
ip
,
r1
,
lsl
#
32
-
PAGE_SHIFT
rsb
ip
,
ip
,
#
0
...
...
@@ -507,30 +507,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
subs
ip
,
ip
,
#
16
blt
.
Lcfu_3rem8lp
.
Lcfu_3cpy8lp
:
mov
r3
,
r7
,
pull
#
24
.
Lcfu_3cpy8lp
:
mov
r3
,
r7
,
ls
pull
#
24
ldmia
r1
!,
{
r4
-
r7
}
@
Shouldnt
fault
orr
r3
,
r3
,
r4
,
push
#
8
mov
r4
,
r4
,
pull
#
24
orr
r4
,
r4
,
r5
,
push
#
8
mov
r5
,
r5
,
pull
#
24
orr
r5
,
r5
,
r6
,
push
#
8
mov
r6
,
r6
,
pull
#
24
orr
r6
,
r6
,
r7
,
push
#
8
orr
r3
,
r3
,
r4
,
ls
push
#
8
mov
r4
,
r4
,
ls
pull
#
24
orr
r4
,
r4
,
r5
,
ls
push
#
8
mov
r5
,
r5
,
ls
pull
#
24
orr
r5
,
r5
,
r6
,
ls
push
#
8
mov
r6
,
r6
,
ls
pull
#
24
orr
r6
,
r6
,
r7
,
ls
push
#
8
stmia
r0
!,
{
r3
-
r6
}
subs
ip
,
ip
,
#
16
bpl
.
Lcfu_3cpy8lp
.
Lcfu_3rem8lp
:
tst
ip
,
#
8
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
ls
pull
#
24
ldmneia
r1
!,
{
r4
,
r7
}
@
Shouldnt
fault
orrne
r3
,
r3
,
r4
,
push
#
8
movne
r4
,
r4
,
pull
#
24
orrne
r4
,
r4
,
r7
,
push
#
8
orrne
r3
,
r3
,
r4
,
ls
push
#
8
movne
r4
,
r4
,
ls
pull
#
24
orrne
r4
,
r4
,
r7
,
ls
push
#
8
stmneia
r0
!,
{
r3
-
r4
}
tst
ip
,
#
4
movne
r3
,
r7
,
pull
#
24
movne
r3
,
r7
,
ls
pull
#
24
USER
(
TUSER
(
ldrne
)
r7
,
[
r1
],
#
4
)
@
May
fault
orrne
r3
,
r3
,
r7
,
push
#
8
orrne
r3
,
r3
,
r7
,
ls
push
#
8
strne
r3
,
[
r0
],
#
4
ands
ip
,
ip
,
#
3
beq
.
Lcfu_3fupi
...
...
arch/arm/mach-cns3xxx/core.c
View file @
67dadcb3
...
...
@@ -155,7 +155,7 @@ static irqreturn_t cns3xxx_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
cns3xxx_timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
cns3xxx_timer_interrupt
,
};
...
...
arch/arm/mach-ebsa110/core.c
View file @
67dadcb3
...
...
@@ -206,7 +206,7 @@ ebsa110_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
ebsa110_timer_irq
=
{
.
name
=
"EBSA110 Timer Tick"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
ebsa110_timer_interrupt
,
};
...
...
arch/arm/mach-footbridge/dc21285-timer.c
View file @
67dadcb3
...
...
@@ -105,7 +105,7 @@ static irqreturn_t timer1_interrupt(int irq, void *dev_id)
static
struct
irqaction
footbridge_timer_irq
=
{
.
name
=
"dc21285_timer1"
,
.
handler
=
timer1_interrupt
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
dev_id
=
&
ckevt_dc21285
,
};
...
...
@@ -125,7 +125,7 @@ void __init footbridge_timer_init(void)
clockevents_config_and_register
(
ce
,
rate
,
0x4
,
0xffffff
);
}
static
u
32
notrace
footbridge_read_sched_clock
(
void
)
static
u
64
notrace
footbridge_read_sched_clock
(
void
)
{
return
~*
CSR_TIMER3_VALUE
;
}
...
...
@@ -138,5 +138,5 @@ void __init footbridge_sched_clock(void)
*
CSR_TIMER3_CLR
=
0
;
*
CSR_TIMER3_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_DIV16
;
s
etup_sched_clock
(
footbridge_read_sched_clock
,
24
,
rate
);
s
ched_clock_register
(
footbridge_read_sched_clock
,
24
,
rate
);
}
arch/arm/mach-footbridge/dc21285.c
View file @
67dadcb3
...
...
@@ -334,15 +334,15 @@ void __init dc21285_preinit(void)
/*
* We don't care if these fail.
*/
dc21285_request_irq
(
IRQ_PCI_SERR
,
dc21285_serr_irq
,
IRQF_DISABLED
,
dc21285_request_irq
(
IRQ_PCI_SERR
,
dc21285_serr_irq
,
0
,
"PCI system error"
,
&
serr_timer
);
dc21285_request_irq
(
IRQ_PCI_PERR
,
dc21285_parity_irq
,
IRQF_DISABLED
,
dc21285_request_irq
(
IRQ_PCI_PERR
,
dc21285_parity_irq
,
0
,
"PCI parity error"
,
&
perr_timer
);
dc21285_request_irq
(
IRQ_PCI_ABORT
,
dc21285_abort_irq
,
IRQF_DISABLED
,
dc21285_request_irq
(
IRQ_PCI_ABORT
,
dc21285_abort_irq
,
0
,
"PCI abort"
,
NULL
);
dc21285_request_irq
(
IRQ_DISCARD_TIMER
,
dc21285_discard_irq
,
IRQF_DISABLED
,
dc21285_request_irq
(
IRQ_DISCARD_TIMER
,
dc21285_discard_irq
,
0
,
"Discard timer"
,
NULL
);
dc21285_request_irq
(
IRQ_PCI_DPERR
,
dc21285_dparity_irq
,
IRQF_DISABLED
,
dc21285_request_irq
(
IRQ_PCI_DPERR
,
dc21285_dparity_irq
,
0
,
"PCI data parity"
,
NULL
);
if
(
cfn_mode
)
{
...
...
arch/arm/mach-footbridge/isa-timer.c
View file @
67dadcb3
...
...
@@ -27,7 +27,7 @@ static irqreturn_t pit_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
pit_timer_irq
=
{
.
name
=
"pit"
,
.
handler
=
pit_timer_interrupt
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
dev_id
=
&
i8253_clockevent
,
};
...
...
arch/arm/mach-gemini/idle.c
View file @
67dadcb3
...
...
@@ -3,7 +3,7 @@
*/
#include <linux/init.h>
#include <asm/system.h>
#include <asm/system
_misc
.h>
#include <asm/proc-fns.h>
static
void
gemini_idle
(
void
)
...
...
arch/arm/mach-integrator/integrator_ap.c
View file @
67dadcb3
...
...
@@ -358,7 +358,7 @@ static struct clock_event_device integrator_clockevent = {
static
struct
irqaction
integrator_timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
integrator_timer_interrupt
,
.
dev_id
=
&
integrator_clockevent
,
};
...
...
arch/arm/mach-ixp4xx/common.c
View file @
67dadcb3
...
...
@@ -312,7 +312,7 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
ixp4xx_timer_irq
=
{
.
name
=
"timer1"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
ixp4xx_timer_interrupt
,
.
dev_id
=
&
clockevent_ixp4xx
,
};
...
...
arch/arm/mach-ixp4xx/dsmg600-setup.c
View file @
67dadcb3
...
...
@@ -233,8 +233,7 @@ static int __init dsmg600_gpio_init(void)
gpio_request
(
DSMG600_RB_GPIO
,
"reset button"
);
if
(
request_irq
(
gpio_to_irq
(
DSMG600_RB_GPIO
),
&
dsmg600_reset_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_LOW
,
"DSM-G600 reset button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_LOW
,
"DSM-G600 reset button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Reset Button IRQ %d not available
\n
"
,
gpio_to_irq
(
DSMG600_RB_GPIO
));
...
...
arch/arm/mach-ixp4xx/fsg-setup.c
View file @
67dadcb3
...
...
@@ -208,16 +208,14 @@ static void __init fsg_init(void)
platform_add_devices
(
fsg_devices
,
ARRAY_SIZE
(
fsg_devices
));
if
(
request_irq
(
gpio_to_irq
(
FSG_RB_GPIO
),
&
fsg_reset_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_LOW
,
"FSG reset button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_LOW
,
"FSG reset button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Reset Button IRQ %d not available
\n
"
,
gpio_to_irq
(
FSG_RB_GPIO
));
}
if
(
request_irq
(
gpio_to_irq
(
FSG_SB_GPIO
),
&
fsg_power_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_LOW
,
"FSG power button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_LOW
,
"FSG power button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Power Button IRQ %d not available
\n
"
,
gpio_to_irq
(
FSG_SB_GPIO
));
...
...
arch/arm/mach-ixp4xx/nas100d-setup.c
View file @
67dadcb3
...
...
@@ -295,8 +295,7 @@ static void __init nas100d_init(void)
pm_power_off
=
nas100d_power_off
;
if
(
request_irq
(
gpio_to_irq
(
NAS100D_RB_GPIO
),
&
nas100d_reset_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_LOW
,
"NAS100D reset button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_LOW
,
"NAS100D reset button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Reset Button IRQ %d not available
\n
"
,
gpio_to_irq
(
NAS100D_RB_GPIO
));
...
...
arch/arm/mach-ixp4xx/nslu2-setup.c
View file @
67dadcb3
...
...
@@ -265,16 +265,14 @@ static void __init nslu2_init(void)
pm_power_off
=
nslu2_power_off
;
if
(
request_irq
(
gpio_to_irq
(
NSLU2_RB_GPIO
),
&
nslu2_reset_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_LOW
,
"NSLU2 reset button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_LOW
,
"NSLU2 reset button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Reset Button IRQ %d not available
\n
"
,
gpio_to_irq
(
NSLU2_RB_GPIO
));
}
if
(
request_irq
(
gpio_to_irq
(
NSLU2_PB_GPIO
),
&
nslu2_power_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_HIGH
,
"NSLU2 power button"
,
NULL
)
<
0
)
{
IRQF_TRIGGER_HIGH
,
"NSLU2 power button"
,
NULL
)
<
0
)
{
printk
(
KERN_DEBUG
"Power Button IRQ %d not available
\n
"
,
gpio_to_irq
(
NSLU2_PB_GPIO
));
...
...
arch/arm/mach-ks8695/time.c
View file @
67dadcb3
...
...
@@ -122,7 +122,7 @@ static irqreturn_t ks8695_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
ks8695_timer_irq
=
{
.
name
=
"ks8695_tick"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
,
.
flags
=
IRQF_TIMER
,
.
handler
=
ks8695_timer_interrupt
,
};
...
...
arch/arm/mach-lpc32xx/timer.c
View file @
67dadcb3
...
...
@@ -90,7 +90,7 @@ static irqreturn_t lpc32xx_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
lpc32xx_timer_irq
=
{
.
name
=
"LPC32XX Timer Tick"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
lpc32xx_timer_interrupt
,
};
...
...
arch/arm/mach-mmp/time.c
View file @
67dadcb3
...
...
@@ -186,7 +186,7 @@ static void __init timer_config(void)
static
struct
irqaction
timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
timer_interrupt
,
.
dev_id
=
&
ckevt
,
};
...
...
arch/arm/mach-netx/time.c
View file @
67dadcb3
...
...
@@ -99,7 +99,7 @@ netx_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
netx_timer_irq
=
{
.
name
=
"NetX Timer Tick"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
netx_timer_interrupt
,
};
...
...
arch/arm/mach-omap2/am35xx-emac.c
View file @
67dadcb3
...
...
@@ -17,7 +17,6 @@
#include <linux/err.h>
#include <linux/davinci_emac.h>
#include <asm/system.h>
#include "omap_device.h"
#include "am35xx.h"
#include "control.h"
...
...
arch/arm/mach-rpc/dma.c
View file @
67dadcb3
...
...
@@ -141,7 +141,7 @@ static int iomd_request_dma(unsigned int chan, dma_t *dma)
struct
iomd_dma
*
idma
=
container_of
(
dma
,
struct
iomd_dma
,
dma
);
return
request_irq
(
idma
->
irq
,
iomd_dma_handle
,
IRQF_DISABLED
,
idma
->
dma
.
device_id
,
idma
);
0
,
idma
->
dma
.
device_id
,
idma
);
}
static
void
iomd_free_dma
(
unsigned
int
chan
,
dma_t
*
dma
)
...
...
arch/arm/mach-rpc/time.c
View file @
67dadcb3
...
...
@@ -75,7 +75,6 @@ ioc_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
ioc_timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
IRQF_DISABLED
,
.
handler
=
ioc_timer_interrupt
};
...
...
arch/arm/mach-sa1100/time.c
View file @
67dadcb3
...
...
@@ -112,7 +112,7 @@ static struct clock_event_device ckevt_sa1100_osmr0 = {
static
struct
irqaction
sa1100_timer_irq
=
{
.
name
=
"ost0"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
sa1100_ost0_interrupt
,
.
dev_id
=
&
ckevt_sa1100_osmr0
,
};
...
...
arch/arm/mach-spear/time.c
View file @
67dadcb3
...
...
@@ -172,7 +172,7 @@ static irqreturn_t spear_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
spear_timer_irq
=
{
.
name
=
"timer"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
,
.
flags
=
IRQF_TIMER
,
.
handler
=
spear_timer_interrupt
};
...
...
arch/arm/mach-vexpress/Makefile
View file @
67dadcb3
...
...
@@ -8,8 +8,11 @@ obj-y := v2m.o
obj-$(CONFIG_ARCH_VEXPRESS_CA9X4)
+=
ct-ca9x4.o
obj-$(CONFIG_ARCH_VEXPRESS_DCSCB)
+=
dcscb.o dcscb_setup.o
CFLAGS_dcscb.o
+=
-march
=
armv7-a
CFLAGS_REMOVE_dcscb.o
=
-pg
obj-$(CONFIG_ARCH_VEXPRESS_SPC)
+=
spc.o
CFLAGS_REMOVE_spc.o
=
-pg
obj-$(CONFIG_ARCH_VEXPRESS_TC2_PM)
+=
tc2_pm.o
CFLAGS_tc2_pm.o
+=
-march
=
armv7-a
CFLAGS_REMOVE_tc2_pm.o
=
-pg
obj-$(CONFIG_SMP)
+=
platsmp.o
obj-$(CONFIG_HOTPLUG_CPU)
+=
hotplug.o
arch/arm/mach-w90x900/time.c
View file @
67dadcb3
...
...
@@ -111,7 +111,7 @@ static irqreturn_t nuc900_timer0_interrupt(int irq, void *dev_id)
static
struct
irqaction
nuc900_timer0_irq
=
{
.
name
=
"nuc900-timer0"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
nuc900_timer0_interrupt
,
};
...
...
arch/arm/mm/Kconfig
View file @
67dadcb3
...
...
@@ -446,7 +446,6 @@ config CPU_32v5
config CPU_32v6
bool
select CPU_USE_DOMAINS if CPU_V6 && MMU
select TLS_REG_EMUL if !CPU_32v6K && !MMU
config CPU_32v6K
...
...
@@ -671,7 +670,7 @@ config ARM_VIRT_EXT
config SWP_EMULATE
bool "Emulate SWP/SWPB instructions"
depends on
!CPU_USE_DOMAINS &&
CPU_V7
depends on CPU_V7
default y if SMP
select HAVE_PROC_CPU if PROC_FS
help
...
...
arch/arm/mm/cache-feroceon-l2.c
View file @
67dadcb3
...
...
@@ -331,7 +331,9 @@ static void __init enable_l2(void)
enable_icache
();
if
(
d
)
enable_dcache
();
}
}
else
pr_err
(
FW_BUG
"Feroceon L2: bootloader left the L2 cache on!
\n
"
);
}
void
__init
feroceon_l2_init
(
int
__l2_wt_override
)
...
...
arch/arm/mm/dma-mapping.c
View file @
67dadcb3
...
...
@@ -284,9 +284,6 @@ static void __dma_free_buffer(struct page *page, size_t size)
}
#ifdef CONFIG_MMU
#ifdef CONFIG_HUGETLB_PAGE
#warning ARM Coherent DMA allocator does not (yet) support huge TLB
#endif
static
void
*
__alloc_from_contiguous
(
struct
device
*
dev
,
size_t
size
,
pgprot_t
prot
,
struct
page
**
ret_page
,
...
...
arch/arm/mm/mmu.c
View file @
67dadcb3
...
...
@@ -515,6 +515,16 @@ static void __init build_mem_type_table(void)
hyp_device_pgprot
=
mem_types
[
MT_DEVICE
].
prot_pte
;
s2_device_pgprot
=
mem_types
[
MT_DEVICE
].
prot_pte_s2
;
/*
* We don't use domains on ARMv6 (since this causes problems with
* v6/v7 kernels), so we must use a separate memory type for user
* r/o, kernel r/w to map the vectors page.
*/
#ifndef CONFIG_ARM_LPAE
if
(
cpu_arch
==
CPU_ARCH_ARMv6
)
vecs_pgprot
|=
L_PTE_MT_VECTORS
;
#endif
/*
* ARMv6 and above have extended page tables.
*/
...
...
arch/arm/mm/proc-macros.S
View file @
67dadcb3
...
...
@@ -112,13 +112,9 @@
*
100
x
1
0
1
r
/
o
no
acc
*
10
x0
1
0
1
r
/
o
no
acc
*
1011
0
0
1
r
/
w
no
acc
*
110
x
0
1
0
r
/
w
r
/
o
*
11
x0
0
1
0
r
/
w
r
/
o
*
1111
0
1
1
r
/
w
r
/
w
*
*
If
!
CONFIG_CPU_USE_DOMAINS
,
the
following
permissions
are
changed
:
*
110
x
1
1
1
r
/
o
r
/
o
*
11
x0
1
1
1
r
/
o
r
/
o
*
1111
0
1
1
r
/
w
r
/
w
*/
.
macro
armv6_mt_table
pfx
\
pfx
\()
_mt_table
:
...
...
@@ -137,7 +133,7 @@
.
long
PTE_EXT_TEX
(
2
)
@
L_PTE_MT_DEV_NONSHARED
.
long
0x00
@
unused
.
long
0x00
@
unused
.
long
0x00
@
unused
.
long
PTE_CACHEABLE
| PTE_BUFFERABLE |
PTE_EXT_APX
@
L_PTE_MT_VECTORS
.
endm
.
macro
armv6_set_pte_ext
pfx
...
...
@@ -158,24 +154,21 @@
tst
r1
,
#
L_PTE_USER
orrne
r3
,
r3
,
#
PTE_EXT_AP1
#ifdef CONFIG_CPU_USE_DOMAINS
@
allow
kernel
read
/
write
access
to
read
-
only
user
pages
tstne
r3
,
#
PTE_EXT_APX
bicne
r3
,
r3
,
#
PTE_EXT_APX
|
PTE_EXT_AP0
#endif
@
user
read
-
only
->
kernel
read
-
only
bicne
r3
,
r3
,
#
PTE_EXT_AP0
tst
r1
,
#
L_PTE_XN
orrne
r3
,
r3
,
#
PTE_EXT_XN
or
r
r3
,
r3
,
r2
eo
r
r3
,
r3
,
r2
tst
r1
,
#
L_PTE_YOUNG
tstne
r1
,
#
L_PTE_PRESENT
moveq
r3
,
#
0
#ifndef CONFIG_CPU_USE_DOMAINS
tstne
r1
,
#
L_PTE_NONE
movne
r3
,
#
0
#endif
str
r3
,
[
r0
]
mcr
p15
,
0
,
r0
,
c7
,
c10
,
1
@
flush_pte
...
...
arch/arm/mm/proc-v7-2level.S
View file @
67dadcb3
...
...
@@ -90,21 +90,14 @@ ENTRY(cpu_v7_set_pte_ext)
tst
r1
,
#
L_PTE_USER
orrne
r3
,
r3
,
#
PTE_EXT_AP1
#ifdef CONFIG_CPU_USE_DOMAINS
@
allow
kernel
read
/
write
access
to
read
-
only
user
pages
tstne
r3
,
#
PTE_EXT_APX
bicne
r3
,
r3
,
#
PTE_EXT_APX
|
PTE_EXT_AP0
#endif
tst
r1
,
#
L_PTE_XN
orrne
r3
,
r3
,
#
PTE_EXT_XN
tst
r1
,
#
L_PTE_YOUNG
tstne
r1
,
#
L_PTE_VALID
#ifndef CONFIG_CPU_USE_DOMAINS
eorne
r1
,
r1
,
#
L_PTE_NONE
tstne
r1
,
#
L_PTE_NONE
#endif
moveq
r3
,
#
0
ARM
(
str
r3
,
[
r0
,
#
2048
]!
)
...
...
arch/arm/mm/proc-v7.S
View file @
67dadcb3
...
...
@@ -192,6 +192,7 @@ __v7_cr7mp_setup:
mov
r10
,
#(
1
<<
0
)
@
Cache
/
TLB
ops
broadcasting
b
1
f
__v7_ca7mp_setup
:
__v7_ca12mp_setup
:
__v7_ca15mp_setup
:
mov
r10
,
#
0
1
:
...
...
@@ -483,6 +484,16 @@ __v7_ca7mp_proc_info:
__v7_proc
__v7_ca7mp_setup
.
size
__v7_ca7mp_proc_info
,
.
-
__v7_ca7mp_proc_info
/
*
*
ARM
Ltd
.
Cortex
A12
processor
.
*/
.
type
__v7_ca12mp_proc_info
,
#
object
__v7_ca12mp_proc_info
:
.
long
0x410fc0d0
.
long
0xff0ffff0
__v7_proc
__v7_ca12mp_setup
.
size
__v7_ca12mp_proc_info
,
.
-
__v7_ca12mp_proc_info
/
*
*
ARM
Ltd
.
Cortex
A15
processor
.
*/
...
...
arch/arm/plat-iop/time.c
View file @
67dadcb3
...
...
@@ -127,7 +127,7 @@ iop_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
iop_timer_irq
=
{
.
name
=
"IOP Timer Tick"
,
.
handler
=
iop_timer_interrupt
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
dev_id
=
&
iop_clockevent
,
};
...
...
drivers/clocksource/timer-u300.c
View file @
67dadcb3
...
...
@@ -333,7 +333,7 @@ static irqreturn_t u300_timer_interrupt(int irq, void *dev_id)
static
struct
irqaction
u300_timer_irq
=
{
.
name
=
"U300 Timer Tick"
,
.
flags
=
IRQF_
DISABLED
|
IRQF_
TIMER
|
IRQF_IRQPOLL
,
.
flags
=
IRQF_TIMER
|
IRQF_IRQPOLL
,
.
handler
=
u300_timer_interrupt
,
};
...
...
drivers/scsi/arm/acornscsi.c
View file @
67dadcb3
...
...
@@ -2971,7 +2971,7 @@ static int acornscsi_probe(struct expansion_card *ec, const struct ecard_id *id)
ec
->
irqaddr
=
ashost
->
fast
+
INT_REG
;
ec
->
irqmask
=
0x0a
;
ret
=
request_irq
(
host
->
irq
,
acornscsi_intr
,
IRQF_DISABLED
,
"acornscsi"
,
ashost
);
ret
=
request_irq
(
host
->
irq
,
acornscsi_intr
,
0
,
"acornscsi"
,
ashost
);
if
(
ret
)
{
printk
(
KERN_CRIT
"scsi%d: IRQ%d not free: %d
\n
"
,
host
->
host_no
,
ashost
->
scsi
.
irq
,
ret
);
...
...
drivers/scsi/arm/cumana_1.c
View file @
67dadcb3
...
...
@@ -262,7 +262,7 @@ static int cumanascsi1_probe(struct expansion_card *ec,
goto
out_unmap
;
}
ret
=
request_irq
(
host
->
irq
,
cumanascsi_intr
,
IRQF_DISABLED
,
ret
=
request_irq
(
host
->
irq
,
cumanascsi_intr
,
0
,
"CumanaSCSI-1"
,
host
);
if
(
ret
)
{
printk
(
"scsi%d: IRQ%d not free: %d
\n
"
,
...
...
drivers/scsi/arm/cumana_2.c
View file @
67dadcb3
...
...
@@ -431,7 +431,7 @@ static int cumanascsi2_probe(struct expansion_card *ec,
goto
out_free
;
ret
=
request_irq
(
ec
->
irq
,
cumanascsi_2_intr
,
IRQF_DISABLED
,
"cumanascsi2"
,
info
);
0
,
"cumanascsi2"
,
info
);
if
(
ret
)
{
printk
(
"scsi%d: IRQ%d not free: %d
\n
"
,
host
->
host_no
,
ec
->
irq
,
ret
);
...
...
drivers/scsi/arm/powertec.c
View file @
67dadcb3
...
...
@@ -358,7 +358,7 @@ static int powertecscsi_probe(struct expansion_card *ec,
goto
out_free
;
ret
=
request_irq
(
ec
->
irq
,
powertecscsi_intr
,
IRQF_DISABLED
,
"powertec"
,
info
);
0
,
"powertec"
,
info
);
if
(
ret
)
{
printk
(
"scsi%d: IRQ%d not free: %d
\n
"
,
host
->
host_no
,
ec
->
irq
,
ret
);
...
...
drivers/usb/gadget/lpc32xx_udc.c
View file @
67dadcb3
...
...
@@ -55,7 +55,6 @@
#include <mach/hardware.h>
#include <linux/io.h>
#include <asm/irq.h>
#include <asm/system.h>
#include <mach/platform.h>
#include <mach/irqs.h>
...
...
include/linux/memblock.h
View file @
67dadcb3
...
...
@@ -252,6 +252,8 @@ static inline void memblock_dump_all(void)
void
memblock_set_current_limit
(
phys_addr_t
limit
);
phys_addr_t
memblock_get_current_limit
(
void
);
/*
* pfn conversion functions
*
...
...
mm/memblock.c
View file @
67dadcb3
...
...
@@ -1407,6 +1407,11 @@ void __init_memblock memblock_set_current_limit(phys_addr_t limit)
memblock
.
current_limit
=
limit
;
}
phys_addr_t
__init_memblock
memblock_get_current_limit
(
void
)
{
return
memblock
.
current_limit
;
}
static
void
__init_memblock
memblock_dump
(
struct
memblock_type
*
type
,
char
*
name
)
{
unsigned
long
long
base
,
size
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment