diff -Nru clisp-2.49/debian/changelog clisp-2.49/debian/changelog --- clisp-2.49/debian/changelog 2012-02-17 17:06:28.000000000 +0000 +++ clisp-2.49/debian/changelog 2012-08-12 06:10:44.000000000 +0100 @@ -1,3 +1,12 @@ +clisp (1:2.49-8.1+rpi1) wheezy-staging; urgency=low + + * add armhf to architecture lists + * build with gcc-4.7 to avoid ICE + * apply patch from sourceforce to fix illegal instruction error caused by + arm assembler (thanks to jerry james and tomfor) + + -- Peter Michael Green Sat, 11 Aug 2012 18:12:55 +0000 + clisp (1:2.49-8.1) unstable; urgency=low * Non-maintainer upload. diff -Nru clisp-2.49/debian/control clisp-2.49/debian/control --- clisp-2.49/debian/control 2012-02-17 17:06:28.000000000 +0000 +++ clisp-2.49/debian/control 2012-08-12 06:10:20.000000000 +0100 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Debian Common Lisp Team Uploaders: Peter Van Eynde , Christoph Egger -Build-Depends: debhelper (>> 7), gettext, bison, libncurses5-dev, groff, libx11-dev, libxext-dev, libxpm-dev, libsigsegv-dev (>= 2.8), libreadline-gplv2-dev, dh-lisp (>= 0.7.1), libdb-dev, libffcall1-dev , libgdbm-dev , libpq-dev [ !armel !hppa !ia64 !m68k !s390 !mipsel !powerpc], libpcre3-dev, libdbus-1-dev [ !armel !hppa !ia64 !m68k !s390 !mipsel !powerpc], zlib1g-dev [ !armel !hppa !ia64 !m68k !s390 !mipsel !powerpc] +Build-Depends: debhelper (>> 7), gettext, bison, libncurses5-dev, groff, libx11-dev, libxext-dev, libxpm-dev, libsigsegv-dev (>= 2.8), libreadline-gplv2-dev, dh-lisp (>= 0.7.1), libdb-dev, libffcall1-dev , libgdbm-dev , libpq-dev [ !armel !armhf !hppa !ia64 !m68k !s390 !mipsel !powerpc], libpcre3-dev, libdbus-1-dev [ !armel !armhf !hppa !ia64 !m68k !s390 !mipsel !powerpc], zlib1g-dev [ !armel !armhf !hppa !ia64 !m68k !s390 !mipsel !powerpc], gcc-4.7 Build-Conflicts: libsigsegv-dev (<= 2.8), libreadline6-dev Standards-Version: 3.9.1.0 Homepage: http://www.clisp.org/ @@ -11,7 +11,7 @@ Vcs-Browser: http://git.debian.org/?p=pkg-common-lisp/clisp.git;a=summary Package: clisp -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 sparc +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 sparc Pre-Depends: ${xlibs:PreDepends} Conflicts: clisp-dev (<< 1:2.49-2) Depends: ${shlibs:Depends}, ${misc:Depends} @@ -40,7 +40,7 @@ GNU CLISP runs Maxima, ACL2 and many other Common Lisp packages. Package: clisp-dev -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 sparc +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 sparc Depends: clisp, ${misc:Depends} Description: GNU CLISP, a Common Lisp implementation (development files) This is the link kit of clisp, it can be used to add external modules (written @@ -78,14 +78,14 @@ Package: clisp-module-berkeley-db -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 Depends: ${shlibs:Depends}, clisp, ${misc:Depends} Description: clisp module that adds an interface to Berkeley DB This adds a module to clisp that implements an interface to the Berkeley DB. Package: clisp-module-pcre -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 Depends: ${shlibs:Depends}, clisp, ${misc:Depends} Description: clisp module that adds libpcre support This adds a module to clisp that implements an interface to the @@ -106,14 +106,14 @@ PostgreSQL DB using the C bindings. Package: clisp-module-clx -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 Depends: ${shlibs:Depends}, clisp, ${misc:Depends} Description: clisp module that adds X11 bindings This adds a module to clisp that implements an interface to the X11 called CLX. Package: clisp-module-rawsock -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 Depends: ${shlibs:Depends}, clisp, ${misc:Depends} Description: clisp module that adds a low level socket interface This adds a module to clisp that implements an interface to the @@ -134,7 +134,7 @@ called shell globbing. Package: clisp-module-gdbm -Architecture: alpha amd64 armel hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 +Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc kfreebsd-i386 kfreebsd-amd64 m68k hurd-i386 s390 Depends: ${shlibs:Depends}, clisp, ${misc:Depends} Description: clisp module that adds an interface to GNU DBM This adds a module to clisp that implements an interface to diff -Nru clisp-2.49/debian/patches/arm-sf.patch clisp-2.49/debian/patches/arm-sf.patch --- clisp-2.49/debian/patches/arm-sf.patch 1970-01-01 01:00:00.000000000 +0100 +++ clisp-2.49/debian/patches/arm-sf.patch 2012-08-11 06:49:40.000000000 +0100 @@ -0,0 +1,874 @@ +Description: Added SF patch + See: + http://sourceforge.net/tracker/index.php?func=detail&aid=3529615&group_id=1355&atid=301355 +Author: Tom Vijlbrief + +--- +The information above should follow the Patch Tagging Guidelines, please +checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here +are templates for supplementary fields that you might want to add: + +Origin: , +Bug: +Bug-Debian: http://bugs.debian.org/ +Bug-Ubuntu: https://launchpad.net/bugs/ +Forwarded: +Reviewed-By: +Last-Update: + +--- clisp-2.49.orig/src/ariarm.d ++++ clisp-2.49/src/ariarm.d +@@ -86,7 +86,7 @@ pc .req r15 + + #define C(x) x + #define EXPORT(x) .global x +-#define GLABEL(x) x: ++#define GLABEL(x) .type x STT_FUNC; x: + #define LABEL(x) x: + #define RRX rrx + #define END +@@ -187,7 +187,7 @@ GLABEL(mulu32_) + LDR a3,[pc,#ptr_mulu32_high-.-8] + STR a2,[a3,#0] + #endif +- MOVS pc,lr ++ BX lr + + /* extern uint16 divu_3216_1616_ (uint32 x, uint16 y); + entry +@@ -243,7 +243,7 @@ GLABEL(divu_3216_1616_) + LDR a3,[pc,#ptr_divu_16_rest-.-8] /* save rest so can be picked up later */ + STR a2,[a3,#0] /* the result is 16 bits */ + #endif +- MOVS pc, lr ++ BX lr + + /* extern uint32 divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y); | -> Quotient q + extern uint32 divu_32_rest; | -> Rest r +@@ -278,7 +278,7 @@ GLABEL(divu_6432_3232_) + LDR a4,[pc,#ptr_divu_32_rest-.-8] + STR a2,[a4,#0] /* divu_32_rest = remainder */ + #endif +- LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}^ ++ LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc} + + LABEL(divu_6432_3232_l1) + MOV v3, #0 /* s = 0 */ +@@ -346,7 +346,7 @@ LABEL(divu_6432_3232_l1) + LDR a3,[pc,#ptr_divu_32_rest-.-8] + STR a2,[a3,#0] /* divu_32_rest = remainder */ + #endif +- LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}^ ++ LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc} + + /* extern uintD* copy_loop_up (uintD* sourceptr, uintD* destptr, uintC count); + entry +@@ -370,7 +370,7 @@ GLABEL(copy_loop_up) + LABEL(copy_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,a2 /* return addr of last word stored */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1,lr} /* save work regs */ + LABEL(copy_loop_up_l2) + LDMIA a1!,{a3,v1,ip,lr} /* copy 4 words in one go */ +@@ -380,7 +380,7 @@ LABEL(copy_loop_up_l2) + STMGEIA a2!,{a3,v1,ip,lr} /* 4 more words */ + BGT copy_loop_up_l2 /* and loop */ + MOV a1,a2 /* return addr of last word stored */ +- LDMFD sp!,{v1,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return */ + + /* extern uintD* copy_loop_down (uintD* sourceptr, uintD* destptr, uintC count); + entry +@@ -404,7 +404,7 @@ GLABEL(copy_loop_down) + LABEL(copy_loop_down_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,a2 /* return addr of last word stored */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1,lr} /* save work regs */ + LABEL(copy_loop_down_l2) + LDMDB a1!,{a3,v1,ip,lr} /* copy 4 words in one go */ +@@ -414,7 +414,7 @@ LABEL(copy_loop_down_l2) + STMGEDB a2!,{a3,v1,ip,lr} /* 4 more words */ + BGT copy_loop_down_l2 /* and loop */ + MOV a1,a2 /* return addr of last word stored */ +- LDMFD sp!,{v1,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return */ + + /* extern uintD* clear_loop_up (uintD* destptr, uintC count); + entry +@@ -446,7 +446,7 @@ GLABEL(fill_loop_up) + STRGT a3,[a1],#4 + LABEL(fill_loop_up_l1) + BICS a4,a2,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1,lr} /* save work regs */ + MOV v1,a3 /* copy filler to three other */ + MOV ip,a3 /* registers */ +@@ -456,7 +456,7 @@ LABEL(fill_loop_up_l2) + SUBS a4,a4,#8 /* decrement counter by 8 */ + STMGEIA a1!,{a3,v1,ip,lr} /* if count still positive then store 4 */ + BGT fill_loop_up_l2 /* more and loop */ +- LDMFD sp!,{v1,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return */ + + + /* extern uintD* clear_loop_down (uintD* destptr, uintC count); +@@ -489,7 +489,7 @@ GLABEL(fill_loop_down) + STRGT a3,[a1,#-4]! + LABEL(fill_loop_down_l1) + BICS a4,a2,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1,lr} /* save work regs */ + MOV v1,a3 /* copy filler to three other */ + MOV ip,a3 /* registers */ +@@ -499,7 +499,7 @@ LABEL(fill_loop_down_l2) + SUBS a4,a4,#8 /* decrement counter by 8 */ + STMGEDB a1!,{a3,v1,ip,lr} /* if count still positive then store 4 */ + BGT fill_loop_down_l2 /* more and loop */ +- LDMFD sp!,{v1,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return */ + + /* extern void or_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -529,7 +529,7 @@ GLABEL(or_loop_up) + STRGT ip,[a1],#4 + LABEL(or_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(or_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -541,7 +541,7 @@ LABEL(or_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT or_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void xor_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -571,7 +571,7 @@ GLABEL(xor_loop_up) + STRGT ip,[a1],#4 + LABEL(xor_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(xor_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -583,7 +583,7 @@ LABEL(xor_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT xor_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void and_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -613,7 +613,7 @@ GLABEL(and_loop_up) + STRGT ip,[a1],#4 + LABEL(and_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(and_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -625,7 +625,7 @@ LABEL(and_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT and_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void eqv_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -659,7 +659,7 @@ GLABEL(eqv_loop_up) + STRGT ip,[a1],#4 + LABEL(eqv_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(eqv_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -675,7 +675,7 @@ LABEL(eqv_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT eqv_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void nand_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -709,7 +709,7 @@ GLABEL(nand_loop_up) + STRGT ip,[a1],#4 + LABEL(nand_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(nand_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -725,7 +725,7 @@ LABEL(nand_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT nand_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void nor_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -759,7 +759,7 @@ GLABEL(nor_loop_up) + STRGT ip,[a1],#4 + LABEL(nor_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(nor_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -775,7 +775,7 @@ LABEL(nor_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT nor_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void andc2_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -805,7 +805,7 @@ GLABEL(andc2_loop_up) + STRGT ip,[a1],#4 + LABEL(andc2_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(andc2_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -817,7 +817,7 @@ LABEL(andc2_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT andc2_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void orc2_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -851,7 +851,7 @@ GLABEL(orc2_loop_up) + STRGT ip,[a1],#4 + LABEL(orc2_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(orc2_loop_up_l2) + LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */ +@@ -867,7 +867,7 @@ LABEL(orc2_loop_up_l2) + STMIA a1!,{v3,v4,v5,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT orc2_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern void not_loop_up (uintD* xptr, uintC count); + entry +@@ -893,7 +893,7 @@ GLABEL(not_loop_up) + STRGT a3,[a1],#4 + LABEL(not_loop_up_l1) + BICS a4,a2,#3 /* set counter to multiple of 4 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{lr} /* save work regs */ + LABEL(not_loop_up_l2) + LDMIA a1,{a2,a3,ip,lr} /* load 4 words in one go,NO writeback */ +@@ -904,7 +904,7 @@ LABEL(not_loop_up_l2) + STMIA a1!,{a2,a3,ip,lr} /* store 4 results */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT not_loop_up_l2 /* if count still positive then loop */ +- LDMFD sp!,{pc}^ /* restore work regs and return */ ++ LDMFD sp!,{pc} /* restore work regs and return */ + + /* extern void and_test_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -923,13 +923,13 @@ GLABEL(and_test_loop_up) + LDR ip,[a1],#4 /* to align the total to a multiple */ + TST ip,a4 /* of 4 words */ + MOVNE a1,#1 /* return true if AND_TEST ok */ +- MOVNES pc,lr ++ BXNE lr + BCC and_test_loop_up_l1 /* better to branch than skip instrs. */ + LDRGE a4,[a2],#4 + LDRGE ip,[a1],#4 + TSTGE ip,a4 + MOVNE a1,#1 +- MOVNES pc,lr ++ BXNE lr + ANDS a4,a3,#3 + CMP a4,#2 + BLE and_test_loop_up_l1 /* better to branch than skip instrs. */ +@@ -937,11 +937,11 @@ GLABEL(and_test_loop_up) + LDRGT ip,[a1],#4 + TSTGT ip,a4 + MOVNE a1,#1 +- MOVNES pc,lr ++ BXNE lr + LABEL(and_test_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* return false */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v6,lr} /* save work regs */ + MOV v6,a1 /* move xptr to v6 */ + MOV a1,#1 /* set result to true */ +@@ -952,11 +952,11 @@ LABEL(and_test_loop_up_l2) + TSTEQ v4,v1 + TSTEQ v5,v2 + TSTEQ lr,ip +- LDMNEFD sp!,{v1-v6,pc}^ ++ LDMNEFD sp!,{v1-v6,pc} + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT and_test_loop_up_l2 /* if count still positive then loop */ + MOV a1,#0 +- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */ + + /* extern void test_loop_up (uintD* xptr, uintC count); + entry +@@ -973,21 +973,21 @@ GLABEL(test_loop_up) + BEQ test_loop_up_l1 /* yup, so branch */ + LDR a4,[ip],#4 /* TEST the first 1-3 words */ + TEQ a4,#0 /* align the total to a multiple of 4 */ +- MOVNES pc,lr /* return true if AND_TEST ok */ ++ BXNE lr /* return true if AND_TEST ok */ + CMP a3,#2 + BLT test_loop_up_l1 /* need to branch 'cos PSR set */ + LDRGE a4,[ip],#4 /* when checking against zero */ + TEQGE a4,#0 +- MOVNES pc,lr ++ BXNE lr + CMP a3,#2 + BLE test_loop_up_l1 /* need to branch 'cos PSR set */ + LDRGT a4,[ip],#4 /* when checking against zero */ + TEQGT a4,#0 +- MOVNES pc,lr ++ BXNE lr + LABEL(test_loop_up_l1) + BICS a4,a2,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* return false */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1,lr} /* save work regs */ + LABEL(test_loop_up_l2) + LDMIA ip!,{a2,a3,v1,lr} /* load 4 words in one go */ +@@ -995,11 +995,11 @@ LABEL(test_loop_up_l2) + TEQEQ a3,#0 + TEQEQ v1,#0 + TEQEQ lr,#0 +- LDMNEFD sp!,{v1,pc}^ ++ LDMNEFD sp!,{v1,pc} + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT test_loop_up_l2 /* if count still positive then loop */ + MOV a1,#0 +- LDMFD sp!,{v1,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return */ + + /* extern void compare_loop_up (uintD* xptr, uintD* yptr, uintC count); + entry +@@ -1021,7 +1021,7 @@ GLABEL(compare_loop_up) + CMP ip,a4 /* of 4 words */ + MVNLO a1,#0 /* x < y -> -1 */ + MOVHI a1,#1 /* x > y -> +1 */ +- MOVNES pc,lr /* and return result if not equal */ ++ BXNE lr /* and return result if not equal */ + ANDS a4,a3,#3 + CMP a4,#2 + BLT compare_loop_up_l1 /* need to branch 'cos PSR used */ +@@ -1030,7 +1030,7 @@ GLABEL(compare_loop_up) + CMP ip,a4 + MVNLO a1,#0 + MOVHI a1,#1 +- MOVNES pc,lr ++ BXNE lr + ANDS a4,a3,#3 + CMP a4,#2 + BLE compare_loop_up_l1 /* need to branch 'cos PSR used */ +@@ -1039,11 +1039,11 @@ GLABEL(compare_loop_up) + CMP ip,a4 + MVNLO a1,#0 + MOVHI a1,#1 +- MOVNES pc,lr ++ BXNE lr + LABEL(compare_loop_up_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* xptr[] == yptr[] -> 0 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v6,lr} /* save work regs */ + MOV v6,a1 /* move xptr to v6 */ + MOV a1,#1 /* set result to +1 */ +@@ -1055,11 +1055,11 @@ LABEL(compare_loop_up_l2) + CMPEQ v5,v2 + CMPEQ lr,ip + MVNLO a1,#0 /* x < y -> -1 (a1 already holds +1) */ +- LDMNEFD sp!,{v1-v6,pc}^ ++ LDMNEFD sp!,{v1-v6,pc} + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT compare_loop_up_l2 /* if count still positive then loop */ + MOV a1,#0 +- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */ + + /* extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count); + entry +@@ -1111,11 +1111,11 @@ LABEL(add_loop_down_l0) /* at l + BICS a4,a4,#3 /* set counter to multiple of 4 */ + BNE add_loop_down_l3 /* branch if more adds to do */ + ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMEQFD sp!,{v6,pc}^ /* and return */ ++ LDMEQFD sp!,{v6,pc} /* and return */ + LABEL(add_loop_down_l1) + BICS a4,a4,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* no adds, so C = 0 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + CMN a4,#0 /* clear carry bit */ + STMFD sp!,{v6,lr} + LABEL(add_loop_down_l3) +@@ -1132,7 +1132,7 @@ LABEL(add_loop_down_l2) + TEQ a4,#0 /* are we done ? */ + BNE add_loop_down_l2 /* if count non-zero then loop */ + ADC a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */ + + /* extern uintD inc_loop_down (uintD* ptr, uintC count); + entry +@@ -1150,11 +1150,11 @@ GLABEL(inc_loop_down) + ADDS a4,a4,#1 /* align the total to a multiple of 2 */ + STR a4,[a1] + MOVNE a1,#0 /* set result to 0 */ +- MOVNES pc,lr /* return 0 if non-zero result */ ++ BXNE lr /* return 0 if non-zero result */ + LABEL(inc_loop_down_l1) + BICS a4,a2,#1 /* set counter to multiple of 2 */ + MOVEQ a1,#1 /* return 1 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + MOV ip,a1 /* move ptr to ip */ + MOV a1,#0 /* set result to 0 */ + ANDS a3,a4,#3 +@@ -1163,10 +1163,10 @@ LABEL(inc_loop_down_l1) + ADDS a3,a3,#1 /* INC the two words */ + ADDEQS a2,a2,#1 /* stopping when first word non-zero */ + STMDB ip!,{a2,a3} /* store 2 results */ +- MOVNES pc,lr /* return 0 if any result non-zero */ ++ BXNE lr /* return 0 if any result non-zero */ + SUBS a4,a4,#2 /* decrement counter by 2 */ + MOVEQ a1,#1 /* if finished loop then */ +- MOVEQS pc,lr /* return 1 */ ++ BXEQ lr /* return 1 */ + LABEL(inc_loop_down_l3) /* now a multiple of 4 words */ + STMFD sp!,{v1,lr} /* save work regs */ + LABEL(inc_loop_down_l2) +@@ -1176,11 +1176,11 @@ LABEL(inc_loop_down_l2) + ADDEQS a3,a3,#1 + ADDEQS a2,a2,#1 + STMDB ip!,{a2,a3,v1,lr} /* store 4 results */ +- LDMNEFD sp!,{v1,pc}^ /* return 0 if any result non-zero */ ++ LDMNEFD sp!,{v1,pc} /* return 0 if any result non-zero */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT inc_loop_down_l2 /* if count still positive then loop */ + MOV a1,#1 +- LDMFD sp!,{v1,pc}^ /* restore work regs and return 1 */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return 1 */ + + /* extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); + entry +@@ -1206,7 +1206,7 @@ GLABEL(sub_loop_down) + LABEL(sub_loop_down_l4) /* drop through for better instr. timings */ + BICS a4,a4,#3 /* set counter to multiple of 4 */ + SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMEQFD sp!,{v6,pc}^ /* and return */ ++ LDMEQFD sp!,{v6,pc} /* and return */ + STMFD sp!,{v1-v5} /* save work regs */ + B sub_loop_down_l2 /* branch if more subtracts to do */ + LABEL(sub_loop_down_l0) +@@ -1224,7 +1224,7 @@ LABEL(sub_loop_down_l0) + LABEL(sub_loop_down_l1) + BICS a4,a4,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* no subtracts, so C = 0 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + CMP a4,#0 /* set carry bit, since a4 > 0 */ + STMFD sp!,{v1-v6,lr} /* save work regs */ + LABEL(sub_loop_down_l2) +@@ -1239,7 +1239,7 @@ LABEL(sub_loop_down_l2) + TEQ a4,#0 /* are we done ? */ + BNE sub_loop_down_l2 /* if count non-zero then loop */ + SBC a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */ + + /* extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry); + entry +@@ -1269,7 +1269,7 @@ LABEL(subx_loop_down_lsub) + LABEL(subx_loop_down_l4) /* drop through for better instr. timings */ + BICS a4,a4,#3 /* set counter to multiple of 4 */ + SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMEQFD sp!,{v6,pc}^ /* and return */ ++ LDMEQFD sp!,{v6,pc} /* and return */ + STMFD sp!,{v1-v5} /* save work regs */ + B subx_loop_down_l2 /* branch if more subtracts to do */ + LABEL(subx_loop_down_l0) +@@ -1287,7 +1287,7 @@ LABEL(subx_loop_down_l0) + LABEL(subx_loop_down_l1) + BICS a4,a4,#3 /* set counter to multiple of 4 */ + SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{v1-v6,lr} /* save work regs */ + LABEL(subx_loop_down_l2) + LDMDB a2!,{v1,v2,v3,ip} /* load 4 words in one go */ +@@ -1301,7 +1301,7 @@ LABEL(subx_loop_down_l2) + TEQ a4,#0 /* are we done ? */ + BNE subx_loop_down_l2 /* if count non-zero then loop */ + SBC a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */ + + /* extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count); + entry +@@ -1326,7 +1326,7 @@ GLABEL(subfrom_loop_down) + LABEL(subfrom_loop_down_l4) /* drop through for better instr. timings */ + BICS a4,a3,#3 /* set counter to multiple of 4 */ + SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMEQFD sp!,{pc}^ /* and return */ ++ LDMEQFD sp!,{pc} /* and return */ + STMFD sp!,{v1-v5} /* save work regs */ + B subfrom_loop_down_l2 /* branch if more subtracts to do */ + LABEL(subfrom_loop_down_l0) +@@ -1344,7 +1344,7 @@ LABEL(subfrom_loop_down_l0) + LABEL(subfrom_loop_down_l1) + BICS a4,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,#0 /* no subtracts, so C = 0 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + CMP a4,#0 /* set carry bit, since a4 > 0 */ + STMFD sp!,{v1-v5,lr} /* save work regs */ + LABEL(subfrom_loop_down_l2) +@@ -1359,7 +1359,7 @@ LABEL(subfrom_loop_down_l2) + TEQ a4,#0 /* are we done ? */ + BNE subfrom_loop_down_l2 /* if count non-zero then loop */ + SBC a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */ + + /* extern uintD dec_loop_down (uintD* ptr, uintC count); + entry +@@ -1377,11 +1377,11 @@ GLABEL(dec_loop_down) + SUBS a4,a4,#1 /* align the total to a multiple of 2 */ + STR a4,[a1] + MOVCS a1,#0 /* set result to 0 */ +- MOVCSS pc,lr /* return 0 if non-zero result */ ++ BXCS lr /* return 0 if non-zero result */ + LABEL(dec_loop_down_l1) + BICS a4,a2,#1 /* set counter to multiple of 2 */ + MVNEQ a1,#0 /* return -1 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + MOV ip,a1 /* move ptr to ip */ + MOV a1,#0 /* set result to 0 */ + ANDS a3,a4,#3 +@@ -1390,10 +1390,10 @@ LABEL(dec_loop_down_l1) + SUBS a3,a3,#1 /* DEC the two words */ + SUBCCS a2,a2,#1 /* stopping when first word non-zero */ + STMDB ip!,{a2,a3} /* store 2 results */ +- MOVCSS pc,lr /* return 0 if any result non-zero */ ++ BXCS lr /* return 0 if any result non-zero */ + SUBS a4,a4,#2 /* decrement counter by 2 */ + MVNEQ a1,#0 /* if finished loop then */ +- MOVEQS pc,lr /* return -1 */ ++ BXEQ lr /* return -1 */ + LABEL(dec_loop_down_l3) /* now a multiple of 4 words */ + STMFD sp!,{v1,lr} /* save work regs */ + LABEL(dec_loop_down_l2) +@@ -1403,11 +1403,11 @@ LABEL(dec_loop_down_l2) + SUBCCS a3,a3,#1 + SUBCCS a2,a2,#1 + STMDB ip!,{a2,a3,v1,lr} /* store 4 results */ +- LDMCSFD sp!,{v1,pc}^ /* return 0 if any carry */ ++ LDMCSFD sp!,{v1,pc} /* return 0 if any carry */ + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT dec_loop_down_l2 /* if count still positive then loop */ + MVN a1,#0 +- LDMFD sp!,{v1,pc}^ /* restore work regs and return -1 */ ++ LDMFD sp!,{v1,pc} /* restore work regs and return -1 */ + + /* extern void neg_loop_down (uintD* ptr, uintC count); + entry +@@ -1421,7 +1421,7 @@ LABEL(dec_loop_down_l2) + GLABEL(neg_loop_down) + CMPS a2,#0 /* count = 0 ? */ + MOVEQ a1,#0 /* yup, so return 0 */ +- MOVEQS pc,lr ++ BXEQ lr + LABEL(neg_loop_down_l1) /* skip all the zero words first */ + LDR a3,[a1,#-4]! /* compare words against zero */ + CMPS a3,#0 /* downwards in memory */ +@@ -1429,13 +1429,13 @@ LABEL(neg_loop_down_l1) /* skip + SUBS a2,a2,#1 /* reduce count of words */ + BNE neg_loop_down_l1 /* more ?, so loop */ + MOV a1,#0 /* return 0 */ +- MOVS pc,lr ++ BX lr + LABEL(neg_loop_down_l2) + RSB a3,a3,#0 /* first non-zero word = -word */ + STR a3,[a1] + SUBS a2,a2,#1 + MVNEQ a1,#0 /* done ? -> return -1 */ +- MOVEQS pc,lr ++ BXEQ lr + /* now NOT rest of the words */ + ANDS a3,a2,#3 /* multiple of 4 words ? */ + BEQ neg_loop_down_l3 /* yup, so branch */ +@@ -1453,7 +1453,7 @@ LABEL(neg_loop_down_l2) + LABEL(neg_loop_down_l3) + BICS a4,a2,#3 /* set counter to multiple of 4 */ + MVNEQ a1,#0 /* set result to -1 */ +- MOVEQS pc,lr /* if zero then we're done */ ++ BXEQ lr /* if zero then we're done */ + STMFD sp!,{lr} /* save work regs */ + LABEL(neg_loop_down_l4) + LDMDB a1,{a2,a3,ip,lr} /* load 4 words in one go,NO writeback */ +@@ -1465,7 +1465,7 @@ LABEL(neg_loop_down_l4) + SUBS a4,a4,#4 /* decrement counter by 4 */ + BGT neg_loop_down_l4 /* if count still positive then loop */ + MVN a1,#0 /* set result to -1 */ +- LDMFD sp!,{pc}^ /* restore work regs and return -1 */ ++ LDMFD sp!,{pc} /* restore work regs and return -1 */ + + /* extern uintD shift1left_loop_down (uintD* ptr, uintC count); + entry +@@ -1485,7 +1485,7 @@ GLABEL(shift1left_loop_down) + LABEL(shift1left_loop_down_l1) + BICS a4,a2,#1 /* set counter to multiple of 2 */ + ADCEQ a1,a4,a4 /* if zero set result to C (a4 is 0) */ +- MOVEQS pc,lr /* and return */ ++ BXEQ lr /* and return */ + ANDS a3,a4,#3 /* multiple of 4 words ? */ + BEQ shift1left_loop_down_l3 /* yup, so branch */ + LDMDB a1,{a2,a3} /* load 2 words in one go */ +@@ -1494,7 +1494,7 @@ LABEL(shift1left_loop_down_l1) + STMDB a1!,{a2,a3} /* store 2 results */ + BICS a4,a4,#2 /* decrement counter by 2 */ + ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- MOVEQS pc,lr /* and return */ ++ BXEQ lr /* and return */ + LABEL(shift1left_loop_down_l3) /* now a multiple of 4 words */ + STMFD sp!,{lr} /* save work regs */ + LABEL(shift1left_loop_down_l2) +@@ -1508,7 +1508,7 @@ LABEL(shift1left_loop_down_l2) + TEQ a4,#0 /* are we done ? */ + BNE shift1left_loop_down_l2 /* if count non-zero then loop */ + ADC a1,a4,a4 /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{pc}^ /* restore work regs and return 1 */ ++ LDMFD sp!,{pc} /* restore work regs and return 1 */ + + /* extern uintD shiftleft_loop_down (uintD* ptr, uintC count, uintC i, uintD carry); + entry +@@ -1542,7 +1542,7 @@ GLABEL(shiftleft_loop_down) + LABEL(shiftleft_loop_down_l1) + BICS ip,a2,#3 /* set counter to multiple of 4 */ + MOVEQ a1,a4 /* if zero then we're done */ +- LDMEQFD sp!,{v6,pc}^ /* so return last shift out */ ++ LDMEQFD sp!,{v6,pc} /* so return last shift out */ + STMFD sp!,{v1-v3} /* save work regs */ + LABEL(shiftleft_loop_down_l2) + LDMDB a1,{a2,v1,v2,v3} /* load 4 words in one go */ +@@ -1558,7 +1558,7 @@ LABEL(shiftleft_loop_down_l2) + SUBS ip,ip,#4 /* decrement counter by 4 */ + BGT shiftleft_loop_down_l2 /* if count still positive then loop */ + MOV a1,a4 /* result = last shift out */ +- LDMFD sp!,{v1-v3,v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v3,v6,pc} /* restore work regs and return */ + + /* extern uintD shiftleftcopy_loop_down (uintD* sourceptr, uintD* destptr, uintC count, uintC i); + entry +@@ -1593,7 +1593,7 @@ GLABEL(shiftleftcopy_loop_down) + LABEL(shiftleftcopy_loop_down_l1) + BICS ip,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,v5 /* if zero then we're done */ +- LDMEQFD sp!,{v5,v6,pc}^ /* so return last shift out */ ++ LDMEQFD sp!,{v5,v6,pc} /* so return last shift out */ + STMFD sp!,{v1-v3} /* save work regs */ + LABEL(shiftleftcopy_loop_down_l2) + LDMDB a1!,{a3,v1,v2,v3} /* load 4 words in one go */ +@@ -1609,7 +1609,7 @@ LABEL(shiftleftcopy_loop_down_l2) + SUBS ip,ip,#4 /* decrement counter by 4 */ + BGT shiftleftcopy_loop_down_l2 /* if count still positive then loop */ + MOV a1,v5 /* result = last shift out */ +- LDMFD sp!,{v1-v3,v5,v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v3,v5,v6,pc} /* restore work regs and return */ + + /* extern uintD shift1right_loop_up (uintD* ptr, uintC count, uintD carry); + entry +@@ -1630,7 +1630,7 @@ GLABEL(shift1right_loop_up) + LABEL(shift1right_loop_up_l1) + BICS a4,a2,#1 /* set counter to multiple of 2 */ + MOVEQ a1,a4,RRX /* if zero set result to C (a4 is 0) */ +- MOVEQS pc,lr /* and return */ ++ BXEQ lr /* and return */ + ANDS a3,a4,#3 /* multiple of 4 words ? */ + BEQ shift1right_loop_up_l3 /* yup, so branch */ + LDMIA a1,{a2,a3} /* load 2 words in one go */ +@@ -1639,7 +1639,7 @@ LABEL(shift1right_loop_up_l1) + STMIA a1!,{a2,a3} /* store 2 results */ + BICS a4,a4,#2 /* decrement counter by 2 */ + ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */ +- MOVEQS pc,lr /* and return */ ++ BXEQ lr /* and return */ + LABEL(shift1right_loop_up_l3) /* now a multiple of 4 words */ + STMFD sp!,{lr} /* save work regs */ + LABEL(shift1right_loop_up_l2) +@@ -1653,7 +1653,7 @@ LABEL(shift1right_loop_up_l2) + TEQ a4,#0 /* are we done ? */ + BNE shift1right_loop_up_l2 /* if count non-zero then loop */ + MOV a1,a4,RRX /* set result to Carry (a4 is 0) */ +- LDMFD sp!,{pc}^ /* restore work regs and return 1 */ ++ LDMFD sp!,{pc} /* restore work regs and return 1 */ + + /* extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i); + entry +@@ -1688,7 +1688,7 @@ LABEL(shiftright_loop_up_l0) + LABEL(shiftright_loop_up_l1) + BICS ip,a2,#3 /* set counter to multiple of 4 */ + MOVEQ a1,a4 /* if zero then we're done */ +- LDMEQFD sp!,{v6,pc}^ /* so return last shift out */ ++ LDMEQFD sp!,{v6,pc} /* so return last shift out */ + STMFD sp!,{v1-v3} /* save work regs */ + LABEL(shiftright_loop_up_l2) + LDMIA a1,{v1,v2,v3,lr} /* load 4 words in one go */ +@@ -1704,7 +1704,7 @@ LABEL(shiftright_loop_up_l2) + SUBS ip,ip,#4 /* decrement counter by 4 */ + BGT shiftright_loop_up_l2 /* if count still positive then loop */ + MOV a1,a4 /* result = last shift out */ +- LDMFD sp!,{v1-v3,v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v3,v6,pc} /* restore work regs and return */ + + /* extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i); + entry +@@ -1759,7 +1759,7 @@ LABEL(shiftrightcopy_loop_up_l0) + LABEL(shiftrightcopy_loop_up_l1) + BICS ip,a3,#3 /* set counter to multiple of 4 */ + MOVEQ a1,v5 /* if zero then we're done */ +- LDMEQFD sp!,{v5,v6,pc}^ /* so return last shift out */ ++ LDMEQFD sp!,{v5,v6,pc} /* so return last shift out */ + STMFD sp!,{v1-v3} /* save work regs */ + LABEL(shiftrightcopy_loop_up_l2) + LDMIA a1!,{v1,v2,v3,lr} /* load 4 words in one go */ +@@ -1775,7 +1775,7 @@ LABEL(shiftrightcopy_loop_up_l2) + SUBS ip,ip,#4 /* decrement counter by 4 */ + BGT shiftrightcopy_loop_up_l2 /* if count still positive then loop */ + MOV a1,v5 /* result = last shift out */ +- LDMFD sp!,{v1-v3,v5,v6,pc}^ /* restore work regs and return */ ++ LDMFD sp!,{v1-v3,v5,v6,pc} /* restore work regs and return */ + + #ifndef HAVE_umull + /* mulu32_64_vregs +@@ -1800,7 +1800,7 @@ LABEL(mulu32_64_vregs) + ADDCS v2,v2,#0x10000 /* carry from above add */ + ADDS v1,v4,ip,LSL #16 /* x is now bottom 32 bits of result */ + ADC ip,v2,ip,LSR #16 /* hi is top 32 bits */ +- MOVS pc,lr ++ BX lr + #endif /* HAVE_umull */ + + /* extern uintD mulusmall_loop_down (uintD digit, uintD* ptr, uintC len, uintD newdigit); +@@ -1816,7 +1816,7 @@ LABEL(mulu32_64_vregs) + GLABEL(mulusmall_loop_down) + CMP a3,#0 + MOVEQ a1,a4 +- MOVEQS pc,lr ++ BXEQ lr + #ifdef HAVE_umull + STMFD sp!,{v1,lr} + LABEL(mulusmall_loop_down_l1) +@@ -1828,7 +1828,7 @@ LABEL(mulusmall_loop_down_l1) + SUBS a3,a3,#1 /* len-- */ + BNE mulusmall_loop_down_l1 /* until len==0 */ + MOV a1,a4 /* return carry */ +- LDMFD sp!,{v1,pc}^ ++ LDMFD sp!,{v1,pc} + #else + STMFD sp!,{v1-v2,lr} + LABEL(mulusmall_loop_down_l1) +@@ -1850,7 +1850,7 @@ LABEL(mulusmall_loop_down_l1) + SUBS a3,a3,#1 /* len-- */ + BNE mulusmall_loop_down_l1 /* until len==0 */ + MOV a1,a4 /* return carry */ +- LDMFD sp!,{v1-v2,pc}^ ++ LDMFD sp!,{v1-v2,pc} + #endif + + /* extern void mulu_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); +@@ -1875,7 +1875,7 @@ LABEL(mulu_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE mulu_loop_down_l1 /* until len==0 */ + STR v5,[a3,#-4]! /* *--destptr = carry */ +- LDMFD sp!,{v1,v5,pc}^ ++ LDMFD sp!,{v1,v5,pc} + #else + STMFD sp!,{v1-v5,lr} + MOV v5,#0 +@@ -1888,7 +1888,7 @@ LABEL(mulu_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE mulu_loop_down_l1 /* until len==0 */ + STR v5,[a3,#-4]! /* *--destptr = carry */ +- LDMFD sp!,{v1-v5,pc}^ ++ LDMFD sp!,{v1-v5,pc} + #endif + + /* extern void muluadd_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); +@@ -1916,7 +1916,7 @@ LABEL(muluadd_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE muluadd_loop_down_l1 /* until len==0 */ + MOV a1,v5 /* return carry */ +- LDMFD sp!,{v1,v5,pc}^ ++ LDMFD sp!,{v1,v5,pc} + #else + STMFD sp!,{v1-v5,lr} + MOV v5,#0 +@@ -1932,7 +1932,7 @@ LABEL(muluadd_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE muluadd_loop_down_l1 /* until len==0 */ + MOV a1,v5 /* return carry */ +- LDMFD sp!,{v1-v5,pc}^ ++ LDMFD sp!,{v1-v5,pc} + #endif + + /* extern void mulusub_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); +@@ -1960,7 +1960,7 @@ LABEL(mulusub_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE mulusub_loop_down_l1 /* until len==0 */ + MOV a1,v5 /* return carry */ +- LDMFD sp!,{v1,v5,pc}^ ++ LDMFD sp!,{v1,v5,pc} + #else + STMFD sp!,{v1-v5,lr} + MOV v5,#0 +@@ -1976,7 +1976,7 @@ LABEL(mulusub_loop_down_l1) + SUBS a4,a4,#1 /* len-- */ + BNE mulusub_loop_down_l1 /* until len==0 */ + MOV a1,v5 /* return carry */ +- LDMFD sp!,{v1-v5,pc}^ ++ LDMFD sp!,{v1-v5,pc} + #endif + + END diff -Nru clisp-2.49/debian/patches/series clisp-2.49/debian/patches/series --- clisp-2.49/debian/patches/series 2012-02-17 17:06:28.000000000 +0000 +++ clisp-2.49/debian/patches/series 2012-08-11 19:12:29.000000000 +0100 @@ -4,3 +4,4 @@ s390x-workaround.patch kfreebsd-amd64.diff bdb-5.1.patch +arm-sf.patch diff -Nru clisp-2.49/debian/rules clisp-2.49/debian/rules --- clisp-2.49/debian/rules 2011-04-08 22:37:36.000000000 +0100 +++ clisp-2.49/debian/rules 2012-08-11 06:49:39.000000000 +0100 @@ -7,6 +7,8 @@ DEBUG_FLAGS:=$(if $(findstring debug,$(DEB_BUILD_OPTIONS)),--with-debug,) #standard C flags: +CC=gcc-4.7 +export CC CFLAGS:=-falign-functions=4 export CFLAGS @@ -25,7 +27,7 @@ CFLAGS:=-mcpu=v9 -fno-gcse -DSAFETY=3 -D SAFETY=3 -D NO_MULTIMAP_SHM -D NO_MULTIMAP_FILE -D NO_SINGLEMAP -D NO_TRIVIALMAP ${CFLAGS} endif -ifneq (,$(filter armel hppa ia64 m68k s390 mipsel powerpc,$(DEB_BUILD_ARCH))) +ifneq (,$(filter armel armhf hppa ia64 m68k s390 mipsel powerpc,$(DEB_BUILD_ARCH))) # Disable FFI FFI:=--without-dynamic-ffi MODULES:=--with-module=gdbm --with-module=berkeley-db --with-module=pcre --with-module=rawsock --with-module=clx/new-clx