On Mon, 14 Feb 2011, Dave Martin wrote: > On Mon, Feb 14, 2011 at 10:00:23AM -0500, Nicolas Pitre wrote: > > > +#ifdef CONFIG_THUMB2_KERNEL > > > + .align > > > + bx pc > > > + nop > > > + .arm > > > > Also here, the .align has the potential to introduce a zero halfword in > > the instruction stream before the bx. What about: > > > > adr r3, 1f > > bx r3 > > .align > > .arm > > 1: ... > > .align inserts a 16-bit nop when misaligned in Thumb in a text section, Ah, OK then. I didn't know about that. In ARM mode the all-zero bits decode to an instruction that sort of does nothing, but this isn't an eleguant nop, and that's what .align (used to?) insert as padding. > and a word-aligned bx pc is a specific architecturally allowed way > to do an inline switch to ARM. The linker uses this trick for PLT > veneers etc. Yep. It's just that with my suggestion the bx wasn't necessarily aligned. > A nicer fix for doing this sort of call from low-level code which > might be ARM is to convert arch/arm/mm/*-v7.S to use "bx lr" to return. > > Generally, we can do this for all arches >= v5, without any > incompatibility. However, since the need for it will be rare and it > will generate patch noise for not much real benefit, > I haven't proposed this. This can be done in those places where this might be needed without having to convert them all. Nicolas -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html