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