Message ID | 20121030100742.17910.70241.stgit@localhost6.localdomain6 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Jussi Kivilinna wrote the following: > Building cryptodev-2.6 tree with CONFIG_THUMB2_KERNEL=y and > CONFIG_CRYPTO_SHA1_ARM=y give following error: > > AS arch/arm/crypto/sha1-armv4-large.o > arch/arm/crypto/sha1-armv4-large.S: Assembler messages: > arch/arm/crypto/sha1-armv4-large.S:197: Error: r13 not allowed here -- > `teq r14,sp' > arch/arm/crypto/sha1-armv4-large.S:377: Error: r13 not allowed here -- > `teq r14,sp' > arch/arm/crypto/sha1-armv4-large.S:469: Error: r13 not allowed here -- > `teq r14,sp' > > Build can be fixed with adding '.arm' at head of sha1-armv4-large.S. > However I'm not sure if this correct fix as this is my first stab > at arm assembler and I could not get CONFIG_THUMB2_KERNEL boot up > on 'qemu-system-arm -M vexpress-a9' to verify correctness. So this > is only build tested. That fixes the problem for the assembler, in that you have forced it to treat the code as 32 bit (non-thumb). I know you can mix thumb and non-thumb code, and it seems that as long as all parties know what code is in what mode it should work. Unfortunately I don't know enough about it be sure this is a valid fix. I think we need a long term arm expert to pass judgement on this one, unless of source you manage to get it tested. I don't have any thumb targets I can try it on, sory, Cheers, Davidm > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-crypto@vger.kernel.org > Cc: David McCullough <ucdevel@gmail.com> > --- > arch/arm/crypto/sha1-armv4-large.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm/crypto/sha1-armv4-large.S b/arch/arm/crypto/sha1-armv4-large.S > index 7050ab1..e8a55eb 100644 > --- a/arch/arm/crypto/sha1-armv4-large.S > +++ b/arch/arm/crypto/sha1-armv4-large.S > @@ -53,6 +53,8 @@ > > .text > > +.arm > + > .global sha1_block_data_order > .type sha1_block_data_order,%function > >
diff --git a/arch/arm/crypto/sha1-armv4-large.S b/arch/arm/crypto/sha1-armv4-large.S index 7050ab1..e8a55eb 100644 --- a/arch/arm/crypto/sha1-armv4-large.S +++ b/arch/arm/crypto/sha1-armv4-large.S @@ -53,6 +53,8 @@ .text +.arm + .global sha1_block_data_order .type sha1_block_data_order,%function