blob: 9d3cb6bbab1c331535daa5dd5ab9158813b3af51 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)
|