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
Kirill Smelkov
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
Hide 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
;
}
if
(
pci_has_flag
(
PCI_PROBE_ONLY
))
return
0
;
/*
* 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
);
}
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