diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-07-22 18:09:07 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-07-22 18:09:07 -0400 |
commit | 3ad55155b222f2a901405dea20ff7c68828ecd92 (patch) | |
tree | 53b24c981387b037084a333dc5ae23be8e82ef4a /arch/arm/include | |
parent | 06f365acef5ca54fd5708a0d853c4a89609536f1 (diff) | |
parent | 6645cb61f3a1186a71475385d33f875dd8fb38bf (diff) |
Merge branch 'devel-stable' into for-next
Conflicts:
arch/arm/kernel/entry-armv.S
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/assembler.h | 9 | ||||
-rw-r--r-- | arch/arm/include/asm/dma.h | 11 | ||||
-rw-r--r-- | arch/arm/include/asm/hwcap.h | 36 | ||||
-rw-r--r-- | arch/arm/include/asm/kprobes.h | 28 | ||||
-rw-r--r-- | arch/arm/include/asm/mach/arch.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/perf_event.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/ptrace.h | 11 |
7 files changed, 58 insertions, 43 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 65c3f2474f5e..29035e86a59d 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
@@ -293,4 +293,13 @@ | |||
293 | .macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f | 293 | .macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f |
294 | usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort | 294 | usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort |
295 | .endm | 295 | .endm |
296 | |||
297 | /* Utility macro for declaring string literals */ | ||
298 | .macro string name:req, string | ||
299 | .type \name , #object | ||
300 | \name: | ||
301 | .asciz "\string" | ||
302 | .size \name , . - \name | ||
303 | .endm | ||
304 | |||
296 | #endif /* __ASM_ASSEMBLER_H__ */ | 305 | #endif /* __ASM_ASSEMBLER_H__ */ |
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h index 42005542932b..628670e9d7c9 100644 --- a/arch/arm/include/asm/dma.h +++ b/arch/arm/include/asm/dma.h | |||
@@ -1,15 +1,16 @@ | |||
1 | #ifndef __ASM_ARM_DMA_H | 1 | #ifndef __ASM_ARM_DMA_H |
2 | #define __ASM_ARM_DMA_H | 2 | #define __ASM_ARM_DMA_H |
3 | 3 | ||
4 | #include <asm/memory.h> | ||
5 | |||
6 | /* | 4 | /* |
7 | * This is the maximum virtual address which can be DMA'd from. | 5 | * This is the maximum virtual address which can be DMA'd from. |
8 | */ | 6 | */ |
9 | #ifndef ARM_DMA_ZONE_SIZE | 7 | #ifndef CONFIG_ZONE_DMA |
10 | #define MAX_DMA_ADDRESS 0xffffffff | 8 | #define MAX_DMA_ADDRESS 0xffffffffUL |
11 | #else | 9 | #else |
12 | #define MAX_DMA_ADDRESS (PAGE_OFFSET + ARM_DMA_ZONE_SIZE) | 10 | #define MAX_DMA_ADDRESS ({ \ |
11 | extern unsigned long arm_dma_zone_size; \ | ||
12 | arm_dma_zone_size ? \ | ||
13 | (PAGE_OFFSET + arm_dma_zone_size) : 0xffffffffUL; }) | ||
13 | #endif | 14 | #endif |
14 | 15 | ||
15 | #ifdef CONFIG_ISA_DMA_API | 16 | #ifdef CONFIG_ISA_DMA_API |
diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h index c1062c317103..c93a22a8b924 100644 --- a/arch/arm/include/asm/hwcap.h +++ b/arch/arm/include/asm/hwcap.h | |||
@@ -4,22 +4,26 @@ | |||
4 | /* | 4 | /* |
5 | * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP | 5 | * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP |
6 | */ | 6 | */ |
7 | #define HWCAP_SWP 1 | 7 | #define HWCAP_SWP (1 << 0) |
8 | #define HWCAP_HALF 2 | 8 | #define HWCAP_HALF (1 << 1) |
9 | #define HWCAP_THUMB 4 | 9 | #define HWCAP_THUMB (1 << 2) |
10 | #define HWCAP_26BIT 8 /* Play it safe */ | 10 | #define HWCAP_26BIT (1 << 3) /* Play it safe */ |
11 | #define HWCAP_FAST_MULT 16 | 11 | #define HWCAP_FAST_MULT (1 << 4) |
12 | #define HWCAP_FPA 32 | 12 | #define HWCAP_FPA (1 << 5) |
13 | #define HWCAP_VFP 64 | 13 | #define HWCAP_VFP (1 << 6) |
14 | #define HWCAP_EDSP 128 | 14 | #define HWCAP_EDSP (1 << 7) |
15 | #define HWCAP_JAVA 256 | 15 | #define HWCAP_JAVA (1 << 8) |
16 | #define HWCAP_IWMMXT 512 | 16 | #define HWCAP_IWMMXT (1 << 9) |
17 | #define HWCAP_CRUNCH 1024 | 17 | #define HWCAP_CRUNCH (1 << 10) |
18 | #define HWCAP_THUMBEE 2048 | 18 | #define HWCAP_THUMBEE (1 << 11) |
19 | #define HWCAP_NEON 4096 | 19 | #define HWCAP_NEON (1 << 12) |
20 | #define HWCAP_VFPv3 8192 | 20 | #define HWCAP_VFPv3 (1 << 13) |
21 | #define HWCAP_VFPv3D16 16384 | 21 | #define HWCAP_VFPv3D16 (1 << 14) |
22 | #define HWCAP_TLS 32768 | 22 | #define HWCAP_TLS (1 << 15) |
23 | #define HWCAP_VFPv4 (1 << 16) | ||
24 | #define HWCAP_IDIVA (1 << 17) | ||
25 | #define HWCAP_IDIVT (1 << 18) | ||
26 | #define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) | ||
23 | 27 | ||
24 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) | 28 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) |
25 | /* | 29 | /* |
diff --git a/arch/arm/include/asm/kprobes.h b/arch/arm/include/asm/kprobes.h index e46bdd0097eb..feec86768f9c 100644 --- a/arch/arm/include/asm/kprobes.h +++ b/arch/arm/include/asm/kprobes.h | |||
@@ -24,12 +24,6 @@ | |||
24 | #define MAX_INSN_SIZE 2 | 24 | #define MAX_INSN_SIZE 2 |
25 | #define MAX_STACK_SIZE 64 /* 32 would probably be OK */ | 25 | #define MAX_STACK_SIZE 64 /* 32 would probably be OK */ |
26 | 26 | ||
27 | /* | ||
28 | * This undefined instruction must be unique and | ||
29 | * reserved solely for kprobes' use. | ||
30 | */ | ||
31 | #define KPROBE_BREAKPOINT_INSTRUCTION 0xe7f001f8 | ||
32 | |||
33 | #define regs_return_value(regs) ((regs)->ARM_r0) | 27 | #define regs_return_value(regs) ((regs)->ARM_r0) |
34 | #define flush_insn_slot(p) do { } while (0) | 28 | #define flush_insn_slot(p) do { } while (0) |
35 | #define kretprobe_blacklist_size 0 | 29 | #define kretprobe_blacklist_size 0 |
@@ -38,14 +32,17 @@ typedef u32 kprobe_opcode_t; | |||
38 | 32 | ||
39 | struct kprobe; | 33 | struct kprobe; |
40 | typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *); | 34 | typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *); |
41 | |||
42 | typedef unsigned long (kprobe_check_cc)(unsigned long); | 35 | typedef unsigned long (kprobe_check_cc)(unsigned long); |
36 | typedef void (kprobe_insn_singlestep_t)(struct kprobe *, struct pt_regs *); | ||
37 | typedef void (kprobe_insn_fn_t)(void); | ||
43 | 38 | ||
44 | /* Architecture specific copy of original instruction. */ | 39 | /* Architecture specific copy of original instruction. */ |
45 | struct arch_specific_insn { | 40 | struct arch_specific_insn { |
46 | kprobe_opcode_t *insn; | 41 | kprobe_opcode_t *insn; |
47 | kprobe_insn_handler_t *insn_handler; | 42 | kprobe_insn_handler_t *insn_handler; |
48 | kprobe_check_cc *insn_check_cc; | 43 | kprobe_check_cc *insn_check_cc; |
44 | kprobe_insn_singlestep_t *insn_singlestep; | ||
45 | kprobe_insn_fn_t *insn_fn; | ||
49 | }; | 46 | }; |
50 | 47 | ||
51 | struct prev_kprobe { | 48 | struct prev_kprobe { |
@@ -62,20 +59,9 @@ struct kprobe_ctlblk { | |||
62 | }; | 59 | }; |
63 | 60 | ||
64 | void arch_remove_kprobe(struct kprobe *); | 61 | void arch_remove_kprobe(struct kprobe *); |
65 | void kretprobe_trampoline(void); | ||
66 | |||
67 | int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); | 62 | int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); |
68 | int kprobe_exceptions_notify(struct notifier_block *self, | 63 | int kprobe_exceptions_notify(struct notifier_block *self, |
69 | unsigned long val, void *data); | 64 | unsigned long val, void *data); |
70 | 65 | ||
71 | enum kprobe_insn { | ||
72 | INSN_REJECTED, | ||
73 | INSN_GOOD, | ||
74 | INSN_GOOD_NO_SLOT | ||
75 | }; | ||
76 | |||
77 | enum kprobe_insn arm_kprobe_decode_insn(kprobe_opcode_t, | ||
78 | struct arch_specific_insn *); | ||
79 | void __init arm_kprobe_decode_init(void); | ||
80 | 66 | ||
81 | #endif /* _ARM_KPROBES_H */ | 67 | #endif /* _ARM_KPROBES_H */ |
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h index 946f4d778f71..3281fb4b12e3 100644 --- a/arch/arm/include/asm/mach/arch.h +++ b/arch/arm/include/asm/mach/arch.h | |||
@@ -23,6 +23,10 @@ struct machine_desc { | |||
23 | 23 | ||
24 | unsigned int nr_irqs; /* number of IRQs */ | 24 | unsigned int nr_irqs; /* number of IRQs */ |
25 | 25 | ||
26 | #ifdef CONFIG_ZONE_DMA | ||
27 | unsigned long dma_zone_size; /* size of DMA-able area */ | ||
28 | #endif | ||
29 | |||
26 | unsigned int video_start; /* start of video RAM */ | 30 | unsigned int video_start; /* start of video RAM */ |
27 | unsigned int video_end; /* end of video RAM */ | 31 | unsigned int video_end; /* end of video RAM */ |
28 | 32 | ||
diff --git a/arch/arm/include/asm/perf_event.h b/arch/arm/include/asm/perf_event.h index c4aa4e8c6af9..0f8e3827a89b 100644 --- a/arch/arm/include/asm/perf_event.h +++ b/arch/arm/include/asm/perf_event.h | |||
@@ -24,6 +24,8 @@ enum arm_perf_pmu_ids { | |||
24 | ARM_PERF_PMU_ID_V6MP, | 24 | ARM_PERF_PMU_ID_V6MP, |
25 | ARM_PERF_PMU_ID_CA8, | 25 | ARM_PERF_PMU_ID_CA8, |
26 | ARM_PERF_PMU_ID_CA9, | 26 | ARM_PERF_PMU_ID_CA9, |
27 | ARM_PERF_PMU_ID_CA5, | ||
28 | ARM_PERF_PMU_ID_CA15, | ||
27 | ARM_NUM_PMU_IDS, | 29 | ARM_NUM_PMU_IDS, |
28 | }; | 30 | }; |
29 | 31 | ||
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index 312d10877bd7..96187ff58c24 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h | |||
@@ -69,8 +69,9 @@ | |||
69 | #define PSR_c 0x000000ff /* Control */ | 69 | #define PSR_c 0x000000ff /* Control */ |
70 | 70 | ||
71 | /* | 71 | /* |
72 | * ARMv7 groups of APSR bits | 72 | * ARMv7 groups of PSR bits |
73 | */ | 73 | */ |
74 | #define APSR_MASK 0xf80f0000 /* N, Z, C, V, Q and GE flags */ | ||
74 | #define PSR_ISET_MASK 0x01000010 /* ISA state (J, T) mask */ | 75 | #define PSR_ISET_MASK 0x01000010 /* ISA state (J, T) mask */ |
75 | #define PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */ | 76 | #define PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */ |
76 | #define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */ | 77 | #define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */ |
@@ -200,6 +201,14 @@ extern unsigned long profile_pc(struct pt_regs *regs); | |||
200 | #define PREDICATE_ALWAYS 0xe0000000 | 201 | #define PREDICATE_ALWAYS 0xe0000000 |
201 | 202 | ||
202 | /* | 203 | /* |
204 | * True if instr is a 32-bit thumb instruction. This works if instr | ||
205 | * is the first or only half-word of a thumb instruction. It also works | ||
206 | * when instr holds all 32-bits of a wide thumb instruction if stored | ||
207 | * in the form (first_half<<16)|(second_half) | ||
208 | */ | ||
209 | #define is_wide_instruction(instr) ((unsigned)(instr) >= 0xe800) | ||
210 | |||
211 | /* | ||
203 | * kprobe-based event tracer support | 212 | * kprobe-based event tracer support |
204 | */ | 213 | */ |
205 | #include <linux/stddef.h> | 214 | #include <linux/stddef.h> |