Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 258181
b: refs/heads/master
c: be020f8
h: refs/heads/master
i:
  258179: 25f5baf
v: v3
  • Loading branch information
Russell King committed Jun 29, 2011
1 parent a219638 commit 96b65ed
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0402becef94c43bb2bb483653a5cee2fb5049764
refs/heads/master: be020f8618caa0670a2a5b5a5df79549520f7867
2 changes: 1 addition & 1 deletion trunk/arch/arm/mm/abort-ev4t.S
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
ENTRY(v4t_early_abort)
mrc p15, 0, r1, c5, c0, 0 @ get FSR
mrc p15, 0, r0, c6, c0, 0 @ get FAR
do_thumb_abort
do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3
ldreq r3, [r2] @ read aborted ARM instruction
bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR
tst r3, #1 << 20 @ check write
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/arm/mm/abort-ev5t.S
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
ENTRY(v5t_early_abort)
mrc p15, 0, r1, c5, c0, 0 @ get FSR
mrc p15, 0, r0, c6, c0, 0 @ get FAR
do_thumb_abort
do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3
ldreq r3, [r2] @ read aborted ARM instruction
bic r1, r1, #1 << 11 @ clear bits 11 of FSR
do_ldrd_abort
do_ldrd_abort tmp=r2, insn=r3
tst r3, #1 << 20 @ check write
orreq r1, r1, #1 << 11
mov pc, lr
4 changes: 2 additions & 2 deletions trunk/arch/arm/mm/abort-ev5tj.S
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ ENTRY(v5tj_early_abort)
bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR
tst r3, #PSR_J_BIT @ Java?
movne pc, lr
do_thumb_abort
do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3
ldreq r3, [r2] @ read aborted ARM instruction
do_ldrd_abort
do_ldrd_abort tmp=r2, insn=r3
tst r3, #1 << 20 @ L = 0 -> write
orreq r1, r1, #1 << 11 @ yes.
mov pc, lr
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/arm/mm/abort-ev6.S
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ ENTRY(v6_early_abort)
bic r1, r1, #1 << 11 @ clear bit 11 of FSR
tst r3, #PSR_J_BIT @ Java?
movne pc, lr
do_thumb_abort
do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3
ldreq r3, [r2] @ read aborted ARM instruction
#ifdef CONFIG_CPU_ENDIAN_BE8
reveq r3, r3
#endif
do_ldrd_abort
do_ldrd_abort tmp=r2, insn=r3
tst r3, #1 << 20 @ L = 0 -> write
orreq r1, r1, #1 << 11 @ yes.
mov pc, lr
Expand Down
30 changes: 15 additions & 15 deletions trunk/arch/arm/mm/abort-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,33 @@
*
*/

.macro do_thumb_abort
tst r3, #PSR_T_BIT
.macro do_thumb_abort, fsr, pc, psr, tmp
tst \psr, #PSR_T_BIT
beq not_thumb
ldrh r3, [r2] @ Read aborted Thumb instruction
and r3, r3, # 0xfe00 @ Mask opcode field
cmp r3, # 0x5600 @ Is it ldrsb?
orreq r3, r3, #1 << 11 @ Set L-bit if yes
tst r3, #1 << 11 @ L = 0 -> write
orreq r1, r1, #1 << 11 @ yes.
ldrh \tmp, [\pc] @ Read aborted Thumb instruction
and \tmp, \tmp, # 0xfe00 @ Mask opcode field
cmp \tmp, # 0x5600 @ Is it ldrsb?
orreq \tmp, \tmp, #1 << 11 @ Set L-bit if yes
tst \tmp, #1 << 11 @ L = 0 -> write
orreq \psr, \psr, #1 << 11 @ yes.
mov pc, lr
not_thumb:
.endm

/*
* We check for the following insturction encoding for LDRD.
* We check for the following instruction encoding for LDRD.
*
* [27:25] == 0
* [27:25] == 000
* [7:4] == 1101
* [20] == 0
*/
.macro do_ldrd_abort
tst r3, #0x0e000000 @ [27:25] == 0
.macro do_ldrd_abort, tmp, insn
tst \insn, #0x0e000000 @ [27:25] == 0
bne not_ldrd
and r2, r3, #0x000000f0 @ [7:4] == 1101
cmp r2, #0x000000d0
and \tmp, \insn, #0x000000f0 @ [7:4] == 1101
cmp \tmp, #0x000000d0
bne not_ldrd
tst r3, #1 << 20 @ [20] == 0
tst \insn, #1 << 20 @ [20] == 0
moveq pc, lr
not_ldrd:
.endm
Expand Down

0 comments on commit 96b65ed

Please sign in to comment.