On 5 August 2017 at 17:33, James Cowgill <jcowg...@debian.org> wrote: > Hi, > > On 04/08/17 09:58, Jiong Wang wrote: >> Change >> >> "adreq lr,X(ff_h264_idct_add_neon) +CONFIG_THUMB" >> >> Into: >> >> .eqv ff_h264_idct_add_neon_without_func_type, X(ff_h264_idct_add_neon) >> adreq lr, ff_h264_idct_add_neon_without_func_type +CONFIG_THUMB >> >> might be a solution. The idea is we use .eqv to remove the function >> attribute, so the assembler won't set LSB in any case.
> On the technical side, does having the LSB clear when executing a blx > instruction cause a mode change out of Thumb, or does it retain the > mode? I think all the code in that file is compiled in the same mode, so > if the mode is retained then simply dropping +CONFIG_THUMB might work. All the usual register branch instructions set or reset T32 (Thumb) mode according to bit 0 of the target address. This is to enable "interworking": an A32 function can call a T32 function and vice versa. What Jiong suggested, above, looks like the right solution for now.