1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * The ARM LDRD and Thumb LDRSB instructions u 4 * differently than every other instruction, s 5 * even though the instructions are read instr 6 * during an abort the instructions will be tr 7 * handler will raise a signal from unwriteabl 8 * fault. We have to specifically check for th 9 * from the abort handlers to treat them prope 10 * 11 */ 12 13 .macro do_thumb_abort, fsr, pc, psr, 14 tst \psr, #PSR_T_BIT 15 beq not_thumb 16 ldrh \tmp, [\pc] 17 uaccess_disable ip 18 and \tmp, \tmp, # 0xfe00 19 cmp \tmp, # 0x5600 20 orreq \tmp, \tmp, #1 << 11 21 tst \tmp, #1 << 11 22 orreq \fsr, \fsr, #1 << 11 23 b do_DataAbort 24 not_thumb: 25 .endm 26 27 /* 28 * We check for the following instruction enco 29 * 30 * [27:25] == 000 31 * [7:4] == 1101 32 * [20] == 0 33 */ 34 .macro teq_ldrd, tmp, insn 35 mov \tmp, #0x0e100000 36 orr \tmp, #0x000000f0 37 and \tmp, \insn, \tmp 38 teq \tmp, #0x000000d0 39 .endm
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.