OLD | NEW |
| (Empty) |
1 #ifdef __SH_FDPIC__ | |
2 | |
3 __asm__( | |
4 ".text \n" | |
5 ".global " START " \n" | |
6 START ": \n" | |
7 " tst r8, r8 \n" | |
8 " bf 1f \n" | |
9 " mov #68, r3 \n" | |
10 " add r3, r3 \n" | |
11 " mov #8, r4 \n" | |
12 " swap.w r4, r4 \n" | |
13 " trapa #31 \n" | |
14 " nop \n" | |
15 " nop \n" | |
16 " nop \n" | |
17 " nop \n" | |
18 "1: nop \n" | |
19 #ifndef SHARED | |
20 " mov r8, r4 \n" | |
21 " mova 1f, r0 \n" | |
22 " mov.l 1f, r5 \n" | |
23 " mov.l 1f+4, r6 \n" | |
24 " add r0, r5 \n" | |
25 " mov.l 4f, r1 \n" | |
26 "5: bsrf r1 \n" | |
27 " add r0, r6 \n" | |
28 " mov r0, r12 \n" | |
29 #endif | |
30 " mov r10, r5 \n" | |
31 " mov r15, r4 \n" | |
32 " mov.l r9, @-r15 \n" | |
33 " mov.l r8, @-r15 \n" | |
34 " mov #-16, r0 \n" | |
35 " mov.l 2f, r1 \n" | |
36 "3: bsrf r1 \n" | |
37 " and r0, r15 \n" | |
38 ".align 2 \n" | |
39 "1: .long __ROFIXUP_LIST__@PCREL \n" | |
40 " .long __ROFIXUP_END__@PCREL + 4 \n" | |
41 "2: .long " START "_c@PCREL - (3b+4-.) \n" | |
42 #ifndef SHARED | |
43 "4: .long __fdpic_fixup@PCREL - (5b+4-.) \n" | |
44 #endif | |
45 ); | |
46 | |
47 #ifndef SHARED | |
48 #include "fdpic_crt.h" | |
49 #endif | |
50 | |
51 #else | |
52 | |
53 __asm__( | |
54 ".text \n" | |
55 ".global " START " \n" | |
56 START ": \n" | |
57 " mova 1f, r0 \n" | |
58 " mov.l 1f, r5 \n" | |
59 " add r0, r5 \n" | |
60 " mov r15, r4 \n" | |
61 " mov #-16, r0 \n" | |
62 " mov.l 2f, r1 \n" | |
63 "3: bsrf r1 \n" | |
64 " and r0, r15 \n" | |
65 ".align 2 \n" | |
66 ".weak _DYNAMIC \n" | |
67 ".hidden _DYNAMIC \n" | |
68 "1: .long _DYNAMIC-. \n" | |
69 "2: .long " START "_c@PCREL - (3b+4-.) \n" | |
70 ); | |
71 | |
72 #endif | |
73 | |
74 /* used by gcc for switching the FPU between single and double precision */ | |
75 #ifdef SHARED | |
76 __attribute__((__visibility__("hidden"))) | |
77 #endif | |
78 const unsigned long __fpscr_values[2] = { 0, 0x80000 }; | |
OLD | NEW |