|
@@ -41,6 +41,7 @@
|
|
|
* This code is not portable to processors with late data abort handling.
|
|
|
*/
|
|
|
#define CODING_BITS(i) (i & 0x0e000000)
|
|
|
+#define COND_BITS(i) (i & 0xf0000000)
|
|
|
|
|
|
#define LDST_I_BIT(i) (i & (1 << 26)) /* Immediate constant */
|
|
|
#define LDST_P_BIT(i) (i & (1 << 24)) /* Preindex */
|
|
@@ -821,6 +822,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
|
|
break;
|
|
|
|
|
|
case 0x04000000: /* ldr or str immediate */
|
|
|
+ if (COND_BITS(instr) == 0xf0000000) /* NEON VLDn, VSTn */
|
|
|
+ goto bad;
|
|
|
offset.un = OFFSET_BITS(instr);
|
|
|
handler = do_alignment_ldrstr;
|
|
|
break;
|