diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-20 12:42:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-20 12:42:09 -0400 |
commit | a4d7a122385e27bdd91101635c704327d7c0d87f (patch) | |
tree | c7d2d601a0ff53194b4235e8f35e09234f98937b /arch | |
parent | 61fcbc8dfe40d6fb5e59ab31dfcef67d6019f1a5 (diff) | |
parent | 10aa5a35e34fb00a2dd814447199f08756eb307b (diff) |
Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM fixes from Russell King:
"This includes three MMCI changes - one to fix up the wrong version of
the DT support patch which was merged, and two to make deferred
probing work. It also includes a fix to the OMAP SPI driver which is
causing a boot time warning.
The remainder are very minor ARM fixes."
* 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
SPI: fix over-eager devm_xxx() conversion
ARM: 7427/1: mmc: mmci: Defer probe() in case of yet uninitialized GPIOs
ARM: 7426/1: mmc: mmci: Remove wrong error handling of gpio 0
ARM: 7425/1: extable: ensure fixup entries are 4-byte aligned
ARM: 7421/1: bpf_jit: BPF_S_ANC_ALU_XOR_X support
ARM: 7423/1: kprobes: run t32_simulate_ldr_literal() without insn slot
ARM: 7422/1: mmc: mmci: Allocate platform memory during Device Tree boot
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/futex.h | 1 | ||||
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 1 | ||||
-rw-r--r-- | arch/arm/kernel/kprobes-thumb.c | 2 | ||||
-rw-r--r-- | arch/arm/net/bpf_jit_32.c | 5 | ||||
-rw-r--r-- | arch/arm/net/bpf_jit_32.h | 4 |
5 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index 7be54690aeec..e42cf597f6e6 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -19,6 +19,7 @@ | |||
19 | " .long 1b, 4f, 2b, 4f\n" \ | 19 | " .long 1b, 4f, 2b, 4f\n" \ |
20 | " .popsection\n" \ | 20 | " .popsection\n" \ |
21 | " .pushsection .fixup,\"ax\"\n" \ | 21 | " .pushsection .fixup,\"ax\"\n" \ |
22 | " .align 2\n" \ | ||
22 | "4: mov %0, " err_reg "\n" \ | 23 | "4: mov %0, " err_reg "\n" \ |
23 | " b 3b\n" \ | 24 | " b 3b\n" \ |
24 | " .popsection" | 25 | " .popsection" |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 437f0c426517..0d1851ca6eb9 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -495,6 +495,7 @@ ENDPROC(__und_usr) | |||
495 | * The out of line fixup for the ldrt above. | 495 | * The out of line fixup for the ldrt above. |
496 | */ | 496 | */ |
497 | .pushsection .fixup, "ax" | 497 | .pushsection .fixup, "ax" |
498 | .align 2 | ||
498 | 4: mov pc, r9 | 499 | 4: mov pc, r9 |
499 | .popsection | 500 | .popsection |
500 | .pushsection __ex_table,"a" | 501 | .pushsection __ex_table,"a" |
diff --git a/arch/arm/kernel/kprobes-thumb.c b/arch/arm/kernel/kprobes-thumb.c index 8f96ec778e8d..6123daf397a7 100644 --- a/arch/arm/kernel/kprobes-thumb.c +++ b/arch/arm/kernel/kprobes-thumb.c | |||
@@ -660,7 +660,7 @@ static const union decode_item t32_table_1111_100x[] = { | |||
660 | /* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */ | 660 | /* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */ |
661 | /* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */ | 661 | /* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */ |
662 | /* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */ | 662 | /* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */ |
663 | DECODE_EMULATEX (0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal, | 663 | DECODE_SIMULATEX(0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal, |
664 | REGS(PC, NOSPPCX, 0, 0, 0)), | 664 | REGS(PC, NOSPPCX, 0, 0, 0)), |
665 | 665 | ||
666 | /* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */ | 666 | /* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */ |
diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c index 62135849f48b..c641fb685017 100644 --- a/arch/arm/net/bpf_jit_32.c +++ b/arch/arm/net/bpf_jit_32.c | |||
@@ -762,6 +762,11 @@ b_epilogue: | |||
762 | update_on_xread(ctx); | 762 | update_on_xread(ctx); |
763 | emit(ARM_MOV_R(r_A, r_X), ctx); | 763 | emit(ARM_MOV_R(r_A, r_X), ctx); |
764 | break; | 764 | break; |
765 | case BPF_S_ANC_ALU_XOR_X: | ||
766 | /* A ^= X */ | ||
767 | update_on_xread(ctx); | ||
768 | emit(ARM_EOR_R(r_A, r_A, r_X), ctx); | ||
769 | break; | ||
765 | case BPF_S_ANC_PROTOCOL: | 770 | case BPF_S_ANC_PROTOCOL: |
766 | /* A = ntohs(skb->protocol) */ | 771 | /* A = ntohs(skb->protocol) */ |
767 | ctx->seen |= SEEN_SKB; | 772 | ctx->seen |= SEEN_SKB; |
diff --git a/arch/arm/net/bpf_jit_32.h b/arch/arm/net/bpf_jit_32.h index 99ae5e3f46d2..7fa2f7d3cb90 100644 --- a/arch/arm/net/bpf_jit_32.h +++ b/arch/arm/net/bpf_jit_32.h | |||
@@ -68,6 +68,8 @@ | |||
68 | #define ARM_INST_CMP_R 0x01500000 | 68 | #define ARM_INST_CMP_R 0x01500000 |
69 | #define ARM_INST_CMP_I 0x03500000 | 69 | #define ARM_INST_CMP_I 0x03500000 |
70 | 70 | ||
71 | #define ARM_INST_EOR_R 0x00200000 | ||
72 | |||
71 | #define ARM_INST_LDRB_I 0x05d00000 | 73 | #define ARM_INST_LDRB_I 0x05d00000 |
72 | #define ARM_INST_LDRB_R 0x07d00000 | 74 | #define ARM_INST_LDRB_R 0x07d00000 |
73 | #define ARM_INST_LDRH_I 0x01d000b0 | 75 | #define ARM_INST_LDRH_I 0x01d000b0 |
@@ -132,6 +134,8 @@ | |||
132 | #define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm) | 134 | #define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm) |
133 | #define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm) | 135 | #define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm) |
134 | 136 | ||
137 | #define ARM_EOR_R(rd, rn, rm) _AL3_R(ARM_INST_EOR, rd, rn, rm) | ||
138 | |||
135 | #define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \ | 139 | #define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \ |
136 | | (off)) | 140 | | (off)) |
137 | #define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \ | 141 | #define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \ |