On Wed, 2018-11-28 at 16:16 +0000, Robin Murphy wrote:
> 
> >   
> > +static int imx6q_pcie_abort_handler_thumb2(unsigned long addr,
> > +           unsigned int fsr, struct pt_regs *regs)
> > +{
> > +   unsigned long pc = instruction_pointer(regs);
> > +   unsigned long instr = *(unsigned long *)pc;
> > +   unsigned long thumb2_instr = __mem_to_opcode_thumb16(instr);
> > +   int reg = thumb2_instr & 7;
> > +
> > +   if (!__opcode_is_thumb16(instr & 0x0000ffffUL))
> > +           return 1;
> 
> There are plenty of 32-bit Thumb encodings of various LDR/STR variants, 
> and I doubt we can guarantee that the offset, target register, and/or 
> addressing mode for a config space access will *always* suit the 
> (relatively limited) 16-bit ones.

It might be the case that PLD/PLI, 32-bit thumb2 instructions, could
trigger an abort too.

Reply via email to