--- /home/work-tmp/jbowler/nslu2/ucslugc.0807/work/uclibc-0.9.27-r5/uClibc-0.9.27/ldso/ldso/arm/dl-startup.h 2005-01-11 23:59:21.000000000 -0800 +++ uClibc-0.9.27/ldso/ldso/arm/dl-startup.h 2005-08-11 23:40:01.393797745 -0700 @@ -7,6 +7,9 @@ /* Overrive the default _dl_boot function, and replace it with a bit of asm. * Then call the real _dl_boot function, which is now named _dl_boot2. */ +/*NOTE: the 'bx' instruction at the end replaces mov pc, r6 - which is not + * compatible with thumb interworking. The instruction should be supported + * on all modern ARM architectures (because they all support thumb). */ asm("" \ " .text\n" \ " .globl _dl_boot\n" \ @@ -17,7 +20,7 @@ " bl _dl_boot2\n" \ " mov r6, r0\n" \ " mov r0, r7\n" \ -" mov pc, r6\n" \ +" bx r6\n" \ ); #define DL_BOOT(X) static __attribute_used__ void* _dl_boot2 (X)