1570af302Sopenharmony_ci#ifdef __SH_FDPIC__
2570af302Sopenharmony_ci
3570af302Sopenharmony_ci__asm__(
4570af302Sopenharmony_ci".text \n"
5570af302Sopenharmony_ci".global " START " \n"
6570af302Sopenharmony_ciSTART ": \n"
7570af302Sopenharmony_ci"	tst r8, r8 \n"
8570af302Sopenharmony_ci"	bf 1f \n"
9570af302Sopenharmony_ci"	mov #68, r3 \n"
10570af302Sopenharmony_ci"	add r3, r3 \n"
11570af302Sopenharmony_ci"	mov #8, r4 \n"
12570af302Sopenharmony_ci"	swap.w r4, r4 \n"
13570af302Sopenharmony_ci"	trapa #31 \n"
14570af302Sopenharmony_ci"	nop \n"
15570af302Sopenharmony_ci"	nop \n"
16570af302Sopenharmony_ci"	nop \n"
17570af302Sopenharmony_ci"	nop \n"
18570af302Sopenharmony_ci"1:	nop \n"
19570af302Sopenharmony_ci#ifndef SHARED
20570af302Sopenharmony_ci"	mov r8, r4 \n"
21570af302Sopenharmony_ci"	mova 1f, r0 \n"
22570af302Sopenharmony_ci"	mov.l 1f, r5 \n"
23570af302Sopenharmony_ci"	mov.l 1f+4, r6 \n"
24570af302Sopenharmony_ci"	add r0, r5 \n"
25570af302Sopenharmony_ci"	mov.l 4f, r1 \n"
26570af302Sopenharmony_ci"5:	bsrf r1 \n"
27570af302Sopenharmony_ci"	 add r0, r6 \n"
28570af302Sopenharmony_ci"	mov r0, r12 \n"
29570af302Sopenharmony_ci#endif
30570af302Sopenharmony_ci"	mov r10, r5 \n"
31570af302Sopenharmony_ci"	mov r15, r4 \n"
32570af302Sopenharmony_ci"	mov.l r9, @-r15 \n"
33570af302Sopenharmony_ci"	mov.l r8, @-r15 \n"
34570af302Sopenharmony_ci"	mov #-16, r0 \n"
35570af302Sopenharmony_ci"	mov.l 2f, r1 \n"
36570af302Sopenharmony_ci"3:	bsrf r1 \n"
37570af302Sopenharmony_ci"	 and r0, r15 \n"
38570af302Sopenharmony_ci".align 2 \n"
39570af302Sopenharmony_ci"1:	.long __ROFIXUP_LIST__@PCREL \n"
40570af302Sopenharmony_ci"	.long __ROFIXUP_END__@PCREL + 4 \n"
41570af302Sopenharmony_ci"2:	.long " START "_c@PCREL - (3b+4-.) \n"
42570af302Sopenharmony_ci#ifndef SHARED
43570af302Sopenharmony_ci"4:	.long __fdpic_fixup@PCREL - (5b+4-.) \n"
44570af302Sopenharmony_ci#endif
45570af302Sopenharmony_ci);
46570af302Sopenharmony_ci
47570af302Sopenharmony_ci#ifndef SHARED
48570af302Sopenharmony_ci#include "fdpic_crt.h"
49570af302Sopenharmony_ci#endif
50570af302Sopenharmony_ci
51570af302Sopenharmony_ci#else
52570af302Sopenharmony_ci
53570af302Sopenharmony_ci__asm__(
54570af302Sopenharmony_ci".text \n"
55570af302Sopenharmony_ci".global " START " \n"
56570af302Sopenharmony_ciSTART ": \n"
57570af302Sopenharmony_ci"	mova 1f, r0 \n"
58570af302Sopenharmony_ci"	mov.l 1f, r5 \n"
59570af302Sopenharmony_ci"	add r0, r5 \n"
60570af302Sopenharmony_ci"	mov r15, r4 \n"
61570af302Sopenharmony_ci"	mov #-16, r0 \n"
62570af302Sopenharmony_ci"	mov.l 2f, r1 \n"
63570af302Sopenharmony_ci"3:	bsrf r1 \n"
64570af302Sopenharmony_ci"	 and r0, r15 \n"
65570af302Sopenharmony_ci".align 2 \n"
66570af302Sopenharmony_ci".weak _DYNAMIC \n"
67570af302Sopenharmony_ci".hidden _DYNAMIC \n"
68570af302Sopenharmony_ci"1:	.long _DYNAMIC-. \n"
69570af302Sopenharmony_ci"2:	.long " START "_c@PCREL - (3b+4-.) \n"
70570af302Sopenharmony_ci);
71570af302Sopenharmony_ci
72570af302Sopenharmony_ci#endif
73570af302Sopenharmony_ci
74570af302Sopenharmony_ci/* used by gcc for switching the FPU between single and double precision */
75570af302Sopenharmony_ci#ifdef SHARED
76570af302Sopenharmony_ci__attribute__((__visibility__("hidden")))
77570af302Sopenharmony_ci#endif
78570af302Sopenharmony_ciconst unsigned long __fpscr_values[2] = { 0, 0x80000 };
79