abort-ev6.S (d585a021c0b10b0477d6b608c53e1feb8cde0507) | abort-ev6.S (26584853a44c58f3d6ac7360d697a2ddcd1a3efa) |
---|---|
1#include <linux/linkage.h> 2#include <asm/assembler.h> 3#include "abort-macro.S" 4/* 5 * Function: v6_early_abort 6 * 7 * Params : r2 = address of aborted instruction 8 * : r3 = saved SPSR --- 23 unchanged lines hidden (view full) --- 32 * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR (erratum 326103). 33 * The test below covers all the write situations, including Java bytecodes 34 */ 35 bic r1, r1, #1 << 11 @ clear bit 11 of FSR 36 tst r3, #PSR_J_BIT @ Java? 37 movne pc, lr 38 do_thumb_abort 39 ldreq r3, [r2] @ read aborted ARM instruction | 1#include <linux/linkage.h> 2#include <asm/assembler.h> 3#include "abort-macro.S" 4/* 5 * Function: v6_early_abort 6 * 7 * Params : r2 = address of aborted instruction 8 * : r3 = saved SPSR --- 23 unchanged lines hidden (view full) --- 32 * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR (erratum 326103). 33 * The test below covers all the write situations, including Java bytecodes 34 */ 35 bic r1, r1, #1 << 11 @ clear bit 11 of FSR 36 tst r3, #PSR_J_BIT @ Java? 37 movne pc, lr 38 do_thumb_abort 39 ldreq r3, [r2] @ read aborted ARM instruction |
40#ifdef CONFIG_CPU_ENDIAN_BE8 41 reveq r3, r3 42#endif |
|
40 do_ldrd_abort 41 tst r3, #1 << 20 @ L = 0 -> write 42 orreq r1, r1, #1 << 11 @ yes. 43 mov pc, lr 44 45 | 43 do_ldrd_abort 44 tst r3, #1 << 20 @ L = 0 -> write 45 orreq r1, r1, #1 << 11 @ yes. 46 mov pc, lr 47 48 |