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