diff options
Diffstat (limited to 'packages/uclibc/uclibc-0.9.27/thumb-ldso-dlboot.patch')
-rw-r--r-- | packages/uclibc/uclibc-0.9.27/thumb-ldso-dlboot.patch | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/uclibc/uclibc-0.9.27/thumb-ldso-dlboot.patch b/packages/uclibc/uclibc-0.9.27/thumb-ldso-dlboot.patch new file mode 100644 index 0000000000..9d3cb6bbab --- /dev/null +++ b/packages/uclibc/uclibc-0.9.27/thumb-ldso-dlboot.patch @@ -0,0 +1,21 @@ +--- /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) |