=============================================================================== 400185c0 <_POSIX_Keys_Key_value_allocate>: uint32_t max = Configuration.maximum_key_value_pairs; 400185c0: 03 10 00 bb sethi %hi(0x4002ec00), %g1 <== NOT EXECUTED 400185c4: c2 00 63 dc ld [ %g1 + 0x3dc ], %g1 ! 4002efdc <== NOT EXECUTED _Objects_Maximum_per_allocation( max ) : 0; 400185c8: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 400185cc: 16 80 00 05 bge 400185e0 <_POSIX_Keys_Key_value_allocate+0x20> <== NOT EXECUTED 400185d0: 94 10 20 00 clr %o2 <== NOT EXECUTED 400185d4: 15 00 00 3f sethi %hi(0xfc00), %o2 <== NOT EXECUTED 400185d8: 94 12 a3 ff or %o2, 0x3ff, %o2 ! ffff <_Configuration_Interrupt_stack_size+0xefff> <== NOT EXECUTED 400185dc: 94 08 40 0a and %g1, %o2, %o2 <== NOT EXECUTED return (POSIX_Keys_Key_value_pair *) _Freechain_Get( 400185e0: 13 10 00 79 sethi %hi(0x4001e400), %o1 <== NOT EXECUTED 400185e4: 11 10 00 d2 sethi %hi(0x40034800), %o0 <== NOT EXECUTED 400185e8: 96 10 20 24 mov 0x24, %o3 <== NOT EXECUTED 400185ec: 92 12 62 04 or %o1, 0x204, %o1 <== NOT EXECUTED 400185f0: 90 12 21 fc or %o0, 0x1fc, %o0 <== NOT EXECUTED 400185f4: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 400185f8: 40 00 01 c9 call 40018d1c <_Freechain_Get> <== NOT EXECUTED 400185fc: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED =============================================================================== 4001a1a0 <_POSIX_Threads_Sporadic_timer>: { 4001a1a0: 9d e3 bf 78 save %sp, -136, %sp <== NOT EXECUTED 4001a1a4: c0 27 bf f0 clr [ %fp + -16 ] <== NOT EXECUTED api = RTEMS_CONTAINER_OF( watchdog, POSIX_API_Control, Sporadic.Timer ); 4001a1a8: ba 06 3f f8 add %i0, -8, %i5 <== NOT EXECUTED the_thread = api->Sporadic.thread; 4001a1ac: f8 06 3f f8 ld [ %i0 + -8 ], %i4 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4001a1b0: 91 d0 20 09 ta 9 <== NOT EXECUTED _ISR_lock_ISR_disable( &queue_context->Lock_context.Lock_context ); 4001a1b4: c2 27 bf dc st %g1, [ %fp + -36 ] <== NOT EXECUTED if ( _Priority_Node_is_active( &api->Sporadic.Low_priority ) ) { 4001a1b8: c2 07 60 34 ld [ %i5 + 0x34 ], %g1 <== NOT EXECUTED 4001a1bc: 80 a0 7f ff cmp %g1, -1 <== NOT EXECUTED 4001a1c0: 02 80 00 0b be 4001a1ec <_POSIX_Threads_Sporadic_timer+0x4c> <== NOT EXECUTED 4001a1c4: 92 07 20 20 add %i4, 0x20, %o1 <== NOT EXECUTED _Thread_Priority_add( 4001a1c8: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED 4001a1cc: 7f ff e4 37 call 400132a8 <_Thread_Priority_add> <== NOT EXECUTED 4001a1d0: 94 07 bf dc add %fp, -36, %o2 <== NOT EXECUTED _Thread_Priority_remove( 4001a1d4: 94 07 bf dc add %fp, -36, %o2 <== NOT EXECUTED 4001a1d8: 92 06 20 20 add %i0, 0x20, %o1 <== NOT EXECUTED 4001a1dc: 7f ff e4 38 call 400132bc <_Thread_Priority_remove> <== NOT EXECUTED 4001a1e0: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED 4001a1e4: 82 10 3f ff mov -1, %g1 <== NOT EXECUTED 4001a1e8: c2 27 60 34 st %g1, [ %i5 + 0x34 ] <== NOT EXECUTED _Watchdog_Per_CPU_remove_ticks( &api->Sporadic.Timer ); 4001a1ec: b6 07 60 08 add %i5, 8, %i3 <== NOT EXECUTED 4001a1f0: 11 10 00 d5 sethi %hi(0x40035400), %o0 <== NOT EXECUTED 4001a1f4: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4001a1f8: 7f ff ee ff call 40015df4 <_Watchdog_Remove> <== NOT EXECUTED 4001a1fc: 90 12 20 78 or %o0, 0x78, %o0 <== NOT EXECUTED Thread_Control *the_thread, POSIX_API_Control *api ) { the_thread->cpu_time_budget = _Timespec_To_ticks( &api->Sporadic.sched_ss_init_budget ); 4001a200: 40 00 02 18 call 4001aa60 <_Timespec_To_ticks> <== NOT EXECUTED 4001a204: 90 07 60 50 add %i5, 0x50, %o0 <== NOT EXECUTED the_thread->cpu_time_budget = 4001a208: d0 27 20 8c st %o0, [ %i4 + 0x8c ] <== NOT EXECUTED _Watchdog_Per_CPU_insert_ticks( 4001a20c: b8 10 00 06 mov %g6, %i4 <== NOT EXECUTED 4001a210: 40 00 02 14 call 4001aa60 <_Timespec_To_ticks> <== NOT EXECUTED 4001a214: 90 07 60 40 add %i5, 0x40, %o0 <== NOT EXECUTED expire = ticks + cpu->Watchdog.ticks; 4001a218: d4 1f 20 30 ldd [ %i4 + 0x30 ], %o2 <== NOT EXECUTED _Watchdog_Insert(header, the_watchdog, expire); 4001a21c: 86 82 c0 08 addcc %o3, %o0, %g3 <== NOT EXECUTED 4001a220: 84 42 a0 00 addx %o2, 0, %g2 <== NOT EXECUTED 4001a224: 96 10 00 03 mov %g3, %o3 <== NOT EXECUTED 4001a228: 94 10 00 02 mov %g2, %o2 <== NOT EXECUTED 4001a22c: 92 10 00 1b mov %i3, %o1 <== NOT EXECUTED 4001a230: 7f ff ee c9 call 40015d54 <_Watchdog_Insert> <== NOT EXECUTED 4001a234: 90 07 20 38 add %i4, 0x38, %o0 <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 4001a238: c2 07 bf dc ld [ %fp + -36 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4001a23c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4001a240: 01 00 00 00 nop <== NOT EXECUTED _Thread_Priority_update( &queue_context ); 4001a244: 7f ff e4 2a call 400132ec <_Thread_Priority_update> <== NOT EXECUTED 4001a248: 90 07 bf dc add %fp, -36, %o0 <== NOT EXECUTED } 4001a24c: 81 c7 e0 08 ret <== NOT EXECUTED 4001a250: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4002c9ec <_POSIX_signals_Abnormal_termination_handler>: sigset_t _POSIX_signals_Pending; void _POSIX_signals_Abnormal_termination_handler( int signo RTEMS_UNUSED ) { 4002c9ec: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED exit( 1 ); 4002c9f0: 40 00 01 c7 call 4002d10c <== NOT EXECUTED 4002c9f4: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 4002c9f8: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4002d0a4 <_POSIX_signals_Clear_process_signals>: _Assert( _ISR_Get_level() != 0 ); clear_signal = true; mask = signo_to_mask( signo ); if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4002d0a4: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4002d0a8: 05 10 00 d5 sethi %hi(0x40035400), %g2 <== NOT EXECUTED 4002d0ac: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4002d0b0: 84 10 a3 e8 or %g2, 0x3e8, %g2 <== NOT EXECUTED 4002d0b4: 83 28 60 02 sll %g1, 2, %g1 <== NOT EXECUTED 4002d0b8: c4 00 80 01 ld [ %g2 + %g1 ], %g2 <== NOT EXECUTED 4002d0bc: 90 02 3f ff add %o0, -1, %o0 <== NOT EXECUTED 4002d0c0: 80 a0 a0 02 cmp %g2, 2 <== NOT EXECUTED 4002d0c4: 84 10 20 01 mov 1, %g2 <== NOT EXECUTED 4002d0c8: 02 80 00 07 be 4002d0e4 <_POSIX_signals_Clear_process_signals+0x40> <== NOT EXECUTED 4002d0cc: 91 28 80 08 sll %g2, %o0, %o0 <== NOT EXECUTED if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) clear_signal = false; } if ( clear_signal ) { _POSIX_signals_Pending &= ~mask; 4002d0d0: 03 10 00 d6 sethi %hi(0x40035800), %g1 <== NOT EXECUTED 4002d0d4: c4 00 61 74 ld [ %g1 + 0x174 ], %g2 ! 40035974 <_POSIX_signals_Pending> <== NOT EXECUTED 4002d0d8: 90 28 80 08 andn %g2, %o0, %o0 <== NOT EXECUTED } } 4002d0dc: 81 c3 e0 08 retl <== NOT EXECUTED 4002d0e0: d0 20 61 74 st %o0, [ %g1 + 0x174 ] <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 4002d0e4: 05 10 00 d6 sethi %hi(0x40035800), %g2 <== NOT EXECUTED 4002d0e8: 84 10 a1 78 or %g2, 0x178, %g2 ! 40035978 <_POSIX_signals_Siginfo> <== NOT EXECUTED if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) 4002d0ec: c6 00 80 01 ld [ %g2 + %g1 ], %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 4002d0f0: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002d0f4: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4002d0f8: 80 a0 c0 01 cmp %g3, %g1 <== NOT EXECUTED 4002d0fc: 02 bf ff f6 be 4002d0d4 <_POSIX_signals_Clear_process_signals+0x30> <== NOT EXECUTED 4002d100: 03 10 00 d6 sethi %hi(0x40035800), %g1 <== NOT EXECUTED } 4002d104: 81 c3 e0 08 retl <== NOT EXECUTED 4002d108: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4002cf50 <_POSIX_signals_Clear_signals>: siginfo_t *info, bool is_global, bool check_blocked, bool do_signals_acquire_release ) { 4002cf50: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED 4002cf54: 84 10 20 01 mov 1, %g2 <== NOT EXECUTED 4002cf58: 86 06 7f ff add %i1, -1, %g3 <== NOT EXECUTED */ if ( check_blocked ) signals_unblocked = api->signals_unblocked; else signals_unblocked = SIGNAL_ALL_MASK; 4002cf5c: 88 10 3f ff mov -1, %g4 <== NOT EXECUTED if ( check_blocked ) 4002cf60: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED 4002cf64: 02 80 00 03 be 4002cf70 <_POSIX_signals_Clear_signals+0x20> <== NOT EXECUTED 4002cf68: 85 28 80 03 sll %g2, %g3, %g2 <== NOT EXECUTED signals_unblocked = api->signals_unblocked; 4002cf6c: c8 06 20 68 ld [ %i0 + 0x68 ], %g4 <== NOT EXECUTED /* XXX is this right for siginfo type signals? */ /* XXX are we sure they can be cleared the same way? */ if ( do_signals_acquire_release ) { 4002cf70: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4002cf74: 02 80 00 04 be 4002cf84 <_POSIX_signals_Clear_signals+0x34> <== NOT EXECUTED 4002cf78: 80 a6 e0 00 cmp %i3, 0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002cf7c: 91 d0 20 09 ta 9 <== NOT EXECUTED _Thread_queue_Context_initialize( &queue_context ); _POSIX_signals_Acquire( &queue_context ); } if ( is_global ) { 4002cf80: 80 a6 e0 00 cmp %i3, 0 <== NOT EXECUTED 4002cf84: 22 80 00 10 be,a 4002cfc4 <_POSIX_signals_Clear_signals+0x74> <== NOT EXECUTED 4002cf88: f8 06 20 6c ld [ %i0 + 0x6c ], %i4 <== NOT EXECUTED if ( mask & (_POSIX_signals_Pending & signals_unblocked) ) { 4002cf8c: 07 10 00 d6 sethi %hi(0x40035800), %g3 <== NOT EXECUTED 4002cf90: c6 00 e1 74 ld [ %g3 + 0x174 ], %g3 ! 40035974 <_POSIX_signals_Pending> <== NOT EXECUTED 4002cf94: 84 08 80 03 and %g2, %g3, %g2 <== NOT EXECUTED 4002cf98: 80 88 80 04 btst %g2, %g4 <== NOT EXECUTED 4002cf9c: 12 80 00 12 bne 4002cfe4 <_POSIX_signals_Clear_signals+0x94> <== NOT EXECUTED 4002cfa0: 86 10 20 00 clr %g3 <== NOT EXECUTED api->signals_pending &= ~mask; do_callout = true; } } if ( do_signals_acquire_release ) { 4002cfa4: 80 a7 60 00 cmp %i5, 0 <== NOT EXECUTED 4002cfa8: 22 80 00 05 be,a 4002cfbc <_POSIX_signals_Clear_signals+0x6c> <== NOT EXECUTED 4002cfac: b0 08 e0 01 and %g3, 1, %i0 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002cfb0: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002cfb4: 01 00 00 00 nop <== NOT EXECUTED _POSIX_signals_Release( &queue_context ); } return do_callout; } 4002cfb8: b0 08 e0 01 and %g3, 1, %i0 <== NOT EXECUTED 4002cfbc: 81 c7 e0 08 ret <== NOT EXECUTED 4002cfc0: 81 e8 00 00 restore <== NOT EXECUTED if ( mask & (api->signals_pending & signals_unblocked) ) { 4002cfc4: b6 0f 00 02 and %i4, %g2, %i3 <== NOT EXECUTED 4002cfc8: 80 8e c0 04 btst %i3, %g4 <== NOT EXECUTED 4002cfcc: 02 bf ff f6 be 4002cfa4 <_POSIX_signals_Clear_signals+0x54> <== NOT EXECUTED 4002cfd0: 86 10 20 00 clr %g3 <== NOT EXECUTED api->signals_pending &= ~mask; 4002cfd4: 84 2f 00 02 andn %i4, %g2, %g2 <== NOT EXECUTED do_callout = true; 4002cfd8: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED api->signals_pending &= ~mask; 4002cfdc: 10 bf ff f2 b 4002cfa4 <_POSIX_signals_Clear_signals+0x54> <== NOT EXECUTED 4002cfe0: c4 26 20 6c st %g2, [ %i0 + 0x6c ] <== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4002cfe4: 85 2e 60 01 sll %i1, 1, %g2 <== NOT EXECUTED 4002cfe8: 07 10 00 d5 sethi %hi(0x40035400), %g3 <== NOT EXECUTED 4002cfec: 84 00 80 19 add %g2, %i1, %g2 <== NOT EXECUTED 4002cff0: 86 10 e3 e8 or %g3, 0x3e8, %g3 <== NOT EXECUTED 4002cff4: 85 28 a0 02 sll %g2, 2, %g2 <== NOT EXECUTED 4002cff8: c6 00 c0 02 ld [ %g3 + %g2 ], %g3 <== NOT EXECUTED 4002cffc: 80 a0 e0 02 cmp %g3, 2 <== NOT EXECUTED 4002d000: 22 80 00 08 be,a 4002d020 <_POSIX_signals_Clear_signals+0xd0> <== NOT EXECUTED 4002d004: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED 4002d008: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED _POSIX_signals_Clear_process_signals( signo ); 4002d00c: 40 00 00 26 call 4002d0a4 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED 4002d010: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED do_callout = true; 4002d014: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED 4002d018: 10 bf ff e3 b 4002cfa4 <_POSIX_signals_Clear_signals+0x54> <== NOT EXECUTED 4002d01c: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); 4002d020: 07 10 00 d6 sethi %hi(0x40035800), %g3 <== NOT EXECUTED 4002d024: 86 10 e1 78 or %g3, 0x178, %g3 ! 40035978 <_POSIX_signals_Siginfo> <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 4002d028: f8 00 80 03 ld [ %g2 + %g3 ], %i4 <== NOT EXECUTED return &the_chain->Tail.Node; 4002d02c: 88 00 a0 04 add %g2, 4, %g4 <== NOT EXECUTED 4002d030: 88 01 00 03 add %g4, %g3, %g4 <== NOT EXECUTED if ( !_Chain_Is_empty(the_chain)) 4002d034: 80 a7 00 04 cmp %i4, %g4 <== NOT EXECUTED 4002d038: 02 80 00 17 be 4002d094 <_POSIX_signals_Clear_signals+0x144> <== NOT EXECUTED 4002d03c: b6 00 80 03 add %g2, %g3, %i3 <== NOT EXECUTED new_first = old_first->next; 4002d040: c8 07 00 00 ld [ %i4 ], %g4 <== NOT EXECUTED head->next = new_first; 4002d044: c8 20 80 03 st %g4, [ %g2 + %g3 ] <== NOT EXECUTED _POSIX_signals_Clear_process_signals( signo ); 4002d048: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 4002d04c: 40 00 00 16 call 4002d0a4 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED 4002d050: f6 21 20 04 st %i3, [ %g4 + 4 ] <== NOT EXECUTED *info = psiginfo->Info; 4002d054: c4 07 20 08 ld [ %i4 + 8 ], %g2 <== NOT EXECUTED 4002d058: c4 26 80 00 st %g2, [ %i2 ] <== NOT EXECUTED 4002d05c: c4 07 20 0c ld [ %i4 + 0xc ], %g2 <== NOT EXECUTED 4002d060: c4 26 a0 04 st %g2, [ %i2 + 4 ] <== NOT EXECUTED old_last = tail->previous; 4002d064: 05 10 00 d6 sethi %hi(0x40035800), %g2 <== NOT EXECUTED 4002d068: c6 07 20 10 ld [ %i4 + 0x10 ], %g3 <== NOT EXECUTED 4002d06c: c6 26 a0 08 st %g3, [ %i2 + 8 ] <== NOT EXECUTED 4002d070: 84 10 a1 68 or %g2, 0x168, %g2 <== NOT EXECUTED 4002d074: c6 00 a0 08 ld [ %g2 + 8 ], %g3 <== NOT EXECUTED the_node->next = tail; 4002d078: 88 00 a0 04 add %g2, 4, %g4 <== NOT EXECUTED 4002d07c: c8 27 00 00 st %g4, [ %i4 ] <== NOT EXECUTED tail->previous = the_node; 4002d080: f8 20 a0 08 st %i4, [ %g2 + 8 ] <== NOT EXECUTED old_last->next = the_node; 4002d084: f8 20 c0 00 st %i4, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 4002d088: c6 27 20 04 st %g3, [ %i4 + 4 ] <== NOT EXECUTED 4002d08c: 10 bf ff df b 4002d008 <_POSIX_signals_Clear_signals+0xb8> <== NOT EXECUTED 4002d090: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED _POSIX_signals_Clear_process_signals( signo ); 4002d094: 40 00 00 04 call 4002d0a4 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED 4002d098: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 4002d09c: 10 bf ff db b 4002d008 <_POSIX_signals_Clear_signals+0xb8> <== NOT EXECUTED 4002d0a0: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED =============================================================================== 400317b0 <_POSIX_signals_Default_vectors>: 400317b0: 00 00 00 00 ff ff ff ff 00 00 00 01 00 00 00 00 ................ 400317c0: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 400317d0: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 400317e0: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 400317f0: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 40031800: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 40031810: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 40031820: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 40031830: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 40031840: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 40031850: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 40031860: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 40031870: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 40031880: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 40031890: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 400318a0: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 400318b0: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 400318c0: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 400318d0: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 400318e0: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 400318f0: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... 40031900: 00 00 00 00 ff ff ff ff 40 02 c9 ec 00 00 00 00 ........@....... 40031910: ff ff ff ff 40 02 c9 ec 00 00 00 00 ff ff ff ff ....@........... 40031920: 40 02 c9 ec 00 00 00 00 ff ff ff ff 40 02 c9 ec @...........@... =============================================================================== 4002c5bc <_POSIX_signals_Send>: int _POSIX_signals_Send( pid_t pid, int sig, const union sigval *value ) { 4002c5bc: 9d e3 bf 88 save %sp, -120, %sp <== NOT EXECUTED Per_CPU_Control *cpu_self; /* * Only supported for the "calling process" (i.e. this node). */ if ( pid != getpid() ) 4002c5c0: 7f ff fe ba call 4002c0a8 <== NOT EXECUTED 4002c5c4: 01 00 00 00 nop <== NOT EXECUTED 4002c5c8: 80 a2 00 18 cmp %o0, %i0 <== NOT EXECUTED 4002c5cc: 12 80 00 e7 bne 4002c968 <_POSIX_signals_Send+0x3ac> <== NOT EXECUTED 4002c5d0: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); /* * Validate the signal passed. */ if ( !sig ) 4002c5d4: 02 80 00 df be 4002c950 <_POSIX_signals_Send+0x394> <== NOT EXECUTED 4002c5d8: b8 06 7f ff add %i1, -1, %i4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 4002c5dc: 80 a7 20 1f cmp %i4, 0x1f <== NOT EXECUTED 4002c5e0: 18 80 00 dc bgu 4002c950 <_POSIX_signals_Send+0x394> <== NOT EXECUTED 4002c5e4: bb 2e 60 01 sll %i1, 1, %i5 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* * If the signal is being ignored, then we are out of here. */ if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) 4002c5e8: 37 10 00 d5 sethi %hi(0x40035400), %i3 <== NOT EXECUTED 4002c5ec: ba 07 40 19 add %i5, %i1, %i5 <== NOT EXECUTED 4002c5f0: b6 16 e3 e8 or %i3, 0x3e8, %i3 <== NOT EXECUTED 4002c5f4: 83 2f 60 02 sll %i5, 2, %g1 <== NOT EXECUTED 4002c5f8: 82 06 c0 01 add %i3, %g1, %g1 <== NOT EXECUTED 4002c5fc: c2 00 60 08 ld [ %g1 + 8 ], %g1 <== NOT EXECUTED 4002c600: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002c604: 02 80 00 56 be 4002c75c <_POSIX_signals_Send+0x1a0> <== NOT EXECUTED 4002c608: b0 10 20 00 clr %i0 <== NOT EXECUTED /* * P1003.1c/Draft 10, p. 33 says that certain signals should always * be directed to the executing thread such as those caused by hardware * faults. */ if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) ) 4002c60c: 82 06 7f fc add %i1, -4, %g1 <== NOT EXECUTED 4002c610: 80 88 7f fb btst -5, %g1 <== NOT EXECUTED 4002c614: 02 80 00 46 be 4002c72c <_POSIX_signals_Send+0x170> <== NOT EXECUTED 4002c618: 80 a6 60 0b cmp %i1, 0xb <== NOT EXECUTED 4002c61c: 02 80 00 44 be 4002c72c <_POSIX_signals_Send+0x170> <== NOT EXECUTED 4002c620: 82 10 20 01 mov 1, %g1 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; 4002c624: f2 27 bf f4 st %i1, [ %fp + -12 ] <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 4002c628: b9 28 40 1c sll %g1, %i4, %i4 <== NOT EXECUTED siginfo->si_code = SI_USER; if ( !value ) { 4002c62c: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 4002c630: 02 80 00 99 be 4002c894 <_POSIX_signals_Send+0x2d8> <== NOT EXECUTED 4002c634: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED siginfo->si_value.sival_int = 0; } else { siginfo->si_value = *value; 4002c638: c2 06 80 00 ld [ %i2 ], %g1 <== NOT EXECUTED 4002c63c: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED 4002c640: b4 10 00 06 mov %g6, %i2 <== NOT EXECUTED disable_level = cpu_self->thread_dispatch_disable_level; 4002c644: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1 <== NOT EXECUTED return cpu->executing; 4002c648: d0 01 a0 20 ld [ %g6 + 0x20 ], %o0 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level + 1; 4002c64c: 82 00 60 01 inc %g1 <== NOT EXECUTED * get it an execute it as soon as the dispatcher executes. */ the_thread = _Per_CPU_Get_executing( cpu_self ); api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( _POSIX_signals_Is_interested( api, mask ) ) { 4002c650: c4 02 21 5c ld [ %o0 + 0x15c ], %g2 <== NOT EXECUTED 4002c654: c2 21 a0 18 st %g1, [ %g6 + 0x18 ] <== NOT EXECUTED 4002c658: c2 00 a0 68 ld [ %g2 + 0x68 ], %g1 <== NOT EXECUTED 4002c65c: 80 8f 00 01 btst %i4, %g1 <== NOT EXECUTED 4002c660: 12 80 00 1a bne 4002c6c8 <_POSIX_signals_Send+0x10c> <== NOT EXECUTED 4002c664: 03 10 00 cc sethi %hi(0x40033000), %g1 <== NOT EXECUTED * There is no requirement on the order of threads pending on a sigwait(). */ /* XXX violation of visibility -- need to define thread queue support */ heads = _POSIX_signals_Wait_queue.Queue.heads; 4002c668: c4 00 62 48 ld [ %g1 + 0x248 ], %g2 ! 40033248 <_POSIX_signals_Wait_queue> <== NOT EXECUTED if ( heads != NULL ) { 4002c66c: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002c670: 02 80 00 3d be 4002c764 <_POSIX_signals_Send+0x1a8> <== NOT EXECUTED 4002c674: 17 10 00 bb sethi %hi(0x4002ec00), %o3 <== NOT EXECUTED 4002c678: c2 00 80 00 ld [ %g2 ], %g1 <== NOT EXECUTED return &the_chain->Tail.Node; 4002c67c: 84 00 a0 04 add %g2, 4, %g2 <== NOT EXECUTED Chain_Control *the_chain = &heads->Heads.Fifo; for ( the_node = _Chain_First( the_chain ); 4002c680: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4002c684: 32 80 00 0d bne,a 4002c6b8 <_POSIX_signals_Send+0xfc> <== NOT EXECUTED 4002c688: d0 00 7f f8 ld [ %g1 + -8 ], %o0 <== NOT EXECUTED 4002c68c: 10 80 00 37 b 4002c768 <_POSIX_signals_Send+0x1ac> <== NOT EXECUTED 4002c690: 9e 10 3f ff mov -1, %o7 <== NOT EXECUTED /* * Is this thread is blocked waiting for another signal but has * not blocked this one? */ if (api->signals_unblocked & mask) 4002c694: c6 01 20 68 ld [ %g4 + 0x68 ], %g3 <== NOT EXECUTED 4002c698: 80 8f 00 03 btst %i4, %g3 <== NOT EXECUTED 4002c69c: 12 80 00 0c bne 4002c6cc <_POSIX_signals_Send+0x110> <== NOT EXECUTED 4002c6a0: 94 07 bf f4 add %fp, -12, %o2 <== NOT EXECUTED the_node = the_node->next ) { 4002c6a4: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); 4002c6a8: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4002c6ac: 02 80 00 2e be 4002c764 <_POSIX_signals_Send+0x1a8> <== NOT EXECUTED 4002c6b0: 17 10 00 bb sethi %hi(0x4002ec00), %o3 <== NOT EXECUTED 4002c6b4: d0 00 7f f8 ld [ %g1 + -8 ], %o0 <== NOT EXECUTED if (the_thread->Wait.option & mask) 4002c6b8: c6 02 20 48 ld [ %o0 + 0x48 ], %g3 <== NOT EXECUTED 4002c6bc: 80 8f 00 03 btst %i4, %g3 <== NOT EXECUTED 4002c6c0: 02 bf ff f5 be 4002c694 <_POSIX_signals_Send+0xd8> <== NOT EXECUTED 4002c6c4: c8 02 21 5c ld [ %o0 + 0x15c ], %g4 <== NOT EXECUTED /* * Returns true if the signal was synchronously given to a thread * blocked waiting for the signal. */ if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) { 4002c6c8: 94 07 bf f4 add %fp, -12, %o2 <== NOT EXECUTED 4002c6cc: 40 00 01 60 call 4002cc4c <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 4002c6d0: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4002c6d4: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4002c6d8: 12 80 00 1b bne 4002c744 <_POSIX_signals_Send+0x188> <== NOT EXECUTED 4002c6dc: 01 00 00 00 nop <== NOT EXECUTED /* * We may have woken up a thread but we definitely need to post the * signal to the process wide information set. */ _POSIX_signals_Set_process_signals( mask ); 4002c6e0: 40 00 00 f0 call 4002caa0 <_POSIX_signals_Set_process_signals> <== NOT EXECUTED 4002c6e4: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002c6e8: 91 d0 20 09 ta 9 <== NOT EXECUTED return psr; 4002c6ec: 86 10 00 01 mov %g1, %g3 <== NOT EXECUTED _Thread_queue_Context_initialize( &queue_context ); _POSIX_signals_Acquire( &queue_context ); if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 4002c6f0: bb 2f 60 02 sll %i5, 2, %i5 <== NOT EXECUTED 4002c6f4: c4 06 c0 1d ld [ %i3 + %i5 ], %g2 <== NOT EXECUTED 4002c6f8: 80 a0 a0 02 cmp %g2, 2 <== NOT EXECUTED 4002c6fc: 02 80 00 6c be 4002c8ac <_POSIX_signals_Send+0x2f0> <== NOT EXECUTED 4002c700: 09 10 00 d6 sethi %hi(0x40035800), %g4 <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 4002c704: 82 10 00 03 mov %g3, %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002c708: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002c70c: 01 00 00 00 nop <== NOT EXECUTED uint32_t disable_level = cpu_self->thread_dispatch_disable_level; 4002c710: c2 06 a0 18 ld [ %i2 + 0x18 ], %g1 <== NOT EXECUTED if ( disable_level == 1 ) { 4002c714: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002c718: 02 80 00 7f be 4002c914 <_POSIX_signals_Send+0x358> <== NOT EXECUTED 4002c71c: 82 00 7f ff add %g1, -1, %g1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level - 1; 4002c720: c2 26 a0 18 st %g1, [ %i2 + 0x18 ] <== NOT EXECUTED _POSIX_signals_Release( &queue_context ); DEBUG_STEP("\n"); _Thread_Dispatch_enable( cpu_self ); return 0; } 4002c724: 81 c7 e0 08 ret <== NOT EXECUTED 4002c728: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED return pthread_kill( pthread_self(), sig ); 4002c72c: 40 00 01 f9 call 4002cf10 <== NOT EXECUTED 4002c730: 01 00 00 00 nop <== NOT EXECUTED 4002c734: 40 00 01 b5 call 4002ce08 <== NOT EXECUTED 4002c738: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4002c73c: 81 c7 e0 08 ret <== NOT EXECUTED 4002c740: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED uint32_t disable_level = cpu_self->thread_dispatch_disable_level; 4002c744: c2 06 a0 18 ld [ %i2 + 0x18 ], %g1 <== NOT EXECUTED if ( disable_level == 1 ) { 4002c748: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002c74c: 02 80 00 72 be 4002c914 <_POSIX_signals_Send+0x358> <== NOT EXECUTED 4002c750: 82 00 7f ff add %g1, -1, %g1 <== NOT EXECUTED return 0; 4002c754: b0 10 20 00 clr %i0 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level - 1; 4002c758: c2 26 a0 18 st %g1, [ %i2 + 0x18 ] <== NOT EXECUTED 4002c75c: 81 c7 e0 08 ret <== NOT EXECUTED 4002c760: 81 e8 00 00 restore <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); 4002c764: 9e 10 3f ff mov -1, %o7 <== NOT EXECUTED 4002c768: 94 10 3f ff mov -1, %o2 <== NOT EXECUTED 4002c76c: 90 10 20 00 clr %o0 <== NOT EXECUTED 4002c770: 98 10 20 02 mov 2, %o4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal ( States_Control the_states ) { return (the_states & STATES_INTERRUPTIBLE_BY_SIGNAL); 4002c774: 13 04 00 00 sethi %hi(0x10000000), %o1 <== NOT EXECUTED 4002c778: 96 12 e2 f0 or %o3, 0x2f0, %o3 <== NOT EXECUTED if ( !_Objects_Information_table[ the_api ] ) 4002c77c: 83 2b 20 02 sll %o4, 2, %g1 <== NOT EXECUTED 4002c780: c2 02 c0 01 ld [ %o3 + %g1 ], %g1 <== NOT EXECUTED 4002c784: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4002c788: 02 80 00 39 be 4002c86c <_POSIX_signals_Send+0x2b0> <== NOT EXECUTED 4002c78c: 80 a3 20 03 cmp %o4, 3 <== NOT EXECUTED the_info = _Objects_Information_table[ the_api ][ 1 ]; 4002c790: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED if ( !the_info ) 4002c794: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4002c798: 02 80 00 35 be 4002c86c <_POSIX_signals_Send+0x2b0> <== NOT EXECUTED 4002c79c: 80 a3 20 03 cmp %o4, 3 <== NOT EXECUTED maximum = the_info->maximum; 4002c7a0: f0 10 60 10 lduh [ %g1 + 0x10 ], %i0 <== NOT EXECUTED for ( index = 1 ; index <= maximum ; index++ ) { 4002c7a4: 80 a6 20 00 cmp %i0, 0 <== NOT EXECUTED 4002c7a8: 02 80 00 30 be 4002c868 <_POSIX_signals_Send+0x2ac> <== NOT EXECUTED 4002c7ac: c2 00 60 1c ld [ %g1 + 0x1c ], %g1 <== NOT EXECUTED 4002c7b0: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002c7b4: b1 2e 20 02 sll %i0, 2, %i0 <== NOT EXECUTED 4002c7b8: b0 06 00 01 add %i0, %g1, %i0 <== NOT EXECUTED the_thread = (Thread_Control *) object_table[ index ]; 4002c7bc: c4 00 40 00 ld [ %g1 ], %g2 <== NOT EXECUTED if ( !the_thread ) 4002c7c0: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002c7c4: 22 80 00 26 be,a 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c7c8: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002c7cc: c6 00 a0 38 ld [ %g2 + 0x38 ], %g3 <== NOT EXECUTED 4002c7d0: c8 00 e0 18 ld [ %g3 + 0x18 ], %g4 <== NOT EXECUTED if ( _Thread_Get_priority( the_thread ) > interested_priority ) 4002c7d4: 80 a1 00 0f cmp %g4, %o7 <== NOT EXECUTED 4002c7d8: 18 80 00 20 bgu 4002c858 <_POSIX_signals_Send+0x29c> <== NOT EXECUTED 4002c7dc: c6 00 e0 1c ld [ %g3 + 0x1c ], %g3 <== NOT EXECUTED 4002c7e0: 02 80 00 29 be 4002c884 <_POSIX_signals_Send+0x2c8> <== NOT EXECUTED 4002c7e4: 80 a0 c0 0a cmp %g3, %o2 <== NOT EXECUTED if ( !_POSIX_signals_Is_interested( api, mask ) ) 4002c7e8: da 00 a1 5c ld [ %g2 + 0x15c ], %o5 <== NOT EXECUTED 4002c7ec: da 03 60 68 ld [ %o5 + 0x68 ], %o5 <== NOT EXECUTED 4002c7f0: 80 8f 00 0d btst %i4, %o5 <== NOT EXECUTED 4002c7f4: 02 80 00 19 be 4002c858 <_POSIX_signals_Send+0x29c> <== NOT EXECUTED 4002c7f8: 80 a3 c0 04 cmp %o7, %g4 <== NOT EXECUTED if ( _Thread_Get_priority( the_thread ) < interested_priority ) { 4002c7fc: 38 80 00 15 bgu,a 4002c850 <_POSIX_signals_Send+0x294> <== NOT EXECUTED 4002c800: 9e 10 00 04 mov %g4, %o7 <== NOT EXECUTED 4002c804: 02 80 00 26 be 4002c89c <_POSIX_signals_Send+0x2e0> <== NOT EXECUTED 4002c808: 80 a2 80 03 cmp %o2, %g3 <== NOT EXECUTED if ( interested && !_States_Is_ready( interested->current_state ) ) { 4002c80c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4002c810: 22 80 00 13 be,a 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c814: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002c818: da 02 20 1c ld [ %o0 + 0x1c ], %o5 <== NOT EXECUTED 4002c81c: 80 a3 60 00 cmp %o5, 0 <== NOT EXECUTED 4002c820: 22 80 00 0f be,a 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c824: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED if ( _States_Is_ready( the_thread->current_state ) ) { 4002c828: e0 00 a0 1c ld [ %g2 + 0x1c ], %l0 <== NOT EXECUTED 4002c82c: 80 a4 20 00 cmp %l0, 0 <== NOT EXECUTED 4002c830: 02 80 00 07 be 4002c84c <_POSIX_signals_Send+0x290> <== NOT EXECUTED 4002c834: 80 8b 40 09 btst %o5, %o1 <== NOT EXECUTED if ( !_States_Is_interruptible_by_signal(interested->current_state) ) { 4002c838: 32 80 00 09 bne,a 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c83c: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) { 4002c840: 80 8c 00 09 btst %l0, %o1 <== NOT EXECUTED 4002c844: 22 80 00 06 be,a 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c848: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002c84c: 9e 10 00 04 mov %g4, %o7 <== NOT EXECUTED 4002c850: 94 10 00 03 mov %g3, %o2 <== NOT EXECUTED 4002c854: 90 10 00 02 mov %g2, %o0 <== NOT EXECUTED 4002c858: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED for ( index = 1 ; index <= maximum ; index++ ) { 4002c85c: 80 a6 00 01 cmp %i0, %g1 <== NOT EXECUTED 4002c860: 32 bf ff d8 bne,a 4002c7c0 <_POSIX_signals_Send+0x204> <== NOT EXECUTED 4002c864: c4 00 40 00 ld [ %g1 ], %g2 <== NOT EXECUTED for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) { 4002c868: 80 a3 20 03 cmp %o4, 3 <== NOT EXECUTED 4002c86c: 12 bf ff c4 bne 4002c77c <_POSIX_signals_Send+0x1c0> <== NOT EXECUTED 4002c870: 98 10 20 03 mov 3, %o4 <== NOT EXECUTED if ( interested ) { 4002c874: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4002c878: 12 bf ff 95 bne 4002c6cc <_POSIX_signals_Send+0x110> <== NOT EXECUTED 4002c87c: 94 07 bf f4 add %fp, -12, %o2 <== NOT EXECUTED 4002c880: 30 bf ff 98 b,a 4002c6e0 <_POSIX_signals_Send+0x124> <== NOT EXECUTED if ( _Thread_Get_priority( the_thread ) > interested_priority ) 4002c884: 28 bf ff da bleu,a 4002c7ec <_POSIX_signals_Send+0x230> <== NOT EXECUTED 4002c888: da 00 a1 5c ld [ %g2 + 0x15c ], %o5 <== NOT EXECUTED 4002c88c: 10 bf ff f4 b 4002c85c <_POSIX_signals_Send+0x2a0> <== NOT EXECUTED 4002c890: 82 00 60 04 add %g1, 4, %g1 <== NOT EXECUTED 4002c894: 10 bf ff 6b b 4002c640 <_POSIX_signals_Send+0x84> <== NOT EXECUTED 4002c898: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED if ( _Thread_Get_priority( the_thread ) < interested_priority ) { 4002c89c: 08 bf ff dd bleu 4002c810 <_POSIX_signals_Send+0x254> <== NOT EXECUTED 4002c8a0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4002c8a4: 10 bf ff eb b 4002c850 <_POSIX_signals_Send+0x294> <== NOT EXECUTED 4002c8a8: 9e 10 00 04 mov %g4, %o7 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 4002c8ac: c4 01 21 68 ld [ %g4 + 0x168 ], %g2 <== NOT EXECUTED 4002c8b0: b8 11 21 68 or %g4, 0x168, %i4 <== NOT EXECUTED if ( !_Chain_Is_empty(the_chain)) 4002c8b4: b6 07 20 04 add %i4, 4, %i3 <== NOT EXECUTED 4002c8b8: 80 a0 80 1b cmp %g2, %i3 <== NOT EXECUTED 4002c8bc: 02 80 00 31 be 4002c980 <_POSIX_signals_Send+0x3c4> <== NOT EXECUTED 4002c8c0: 01 00 00 00 nop <== NOT EXECUTED new_first = old_first->next; 4002c8c4: c2 00 80 00 ld [ %g2 ], %g1 <== NOT EXECUTED new_first->previous = head; 4002c8c8: f8 20 60 04 st %i4, [ %g1 + 4 ] <== NOT EXECUTED psiginfo->Info = *siginfo; 4002c8cc: f6 07 bf fc ld [ %fp + -4 ], %i3 <== NOT EXECUTED 4002c8d0: f2 07 bf f8 ld [ %fp + -8 ], %i1 <== NOT EXECUTED head->next = new_first; 4002c8d4: c2 21 21 68 st %g1, [ %g4 + 0x168 ] <== NOT EXECUTED _Chain_Append_unprotected( 4002c8d8: 03 10 00 d6 sethi %hi(0x40035800), %g1 <== NOT EXECUTED psiginfo->Info = *siginfo; 4002c8dc: c8 07 bf f4 ld [ %fp + -12 ], %g4 <== NOT EXECUTED 4002c8e0: c8 20 a0 08 st %g4, [ %g2 + 8 ] <== NOT EXECUTED _Chain_Append_unprotected( 4002c8e4: 82 10 61 78 or %g1, 0x178, %g1 <== NOT EXECUTED psiginfo->Info = *siginfo; 4002c8e8: f2 20 a0 0c st %i1, [ %g2 + 0xc ] <== NOT EXECUTED _Chain_Append_unprotected( 4002c8ec: b8 07 40 01 add %i5, %g1, %i4 <== NOT EXECUTED return &the_chain->Tail.Node; 4002c8f0: ba 07 60 04 add %i5, 4, %i5 <== NOT EXECUTED old_last = tail->previous; 4002c8f4: c8 07 20 08 ld [ %i4 + 8 ], %g4 <== NOT EXECUTED return &the_chain->Tail.Node; 4002c8f8: ba 07 40 01 add %i5, %g1, %i5 <== NOT EXECUTED psiginfo->Info = *siginfo; 4002c8fc: f6 20 a0 10 st %i3, [ %g2 + 0x10 ] <== NOT EXECUTED the_node->next = tail; 4002c900: fa 20 80 00 st %i5, [ %g2 ] <== NOT EXECUTED tail->previous = the_node; 4002c904: c4 27 20 08 st %g2, [ %i4 + 8 ] <== NOT EXECUTED old_last->next = the_node; 4002c908: c4 21 00 00 st %g2, [ %g4 ] <== NOT EXECUTED the_node->previous = old_last; 4002c90c: 10 bf ff 7e b 4002c704 <_POSIX_signals_Send+0x148> <== NOT EXECUTED 4002c910: c8 20 a0 04 st %g4, [ %g2 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002c914: 91 d0 20 09 ta 9 <== NOT EXECUTED if ( 4002c918: c4 0e a0 1c ldub [ %i2 + 0x1c ], %g2 <== NOT EXECUTED 4002c91c: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002c920: 12 80 00 07 bne 4002c93c <_POSIX_signals_Send+0x380> <== NOT EXECUTED 4002c924: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = 0; 4002c928: c0 26 a0 18 clr [ %i2 + 0x18 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002c92c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002c930: 01 00 00 00 nop <== NOT EXECUTED return 0; 4002c934: 81 c7 e0 08 ret <== NOT EXECUTED 4002c938: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED _Thread_Do_dispatch( cpu_self, level ); 4002c93c: c2 27 bf ec st %g1, [ %fp + -20 ] <== NOT EXECUTED 4002c940: 7f ff 9a f2 call 40013508 <_Thread_Do_dispatch> <== NOT EXECUTED 4002c944: 90 10 00 1a mov %i2, %o0 <== NOT EXECUTED 4002c948: 10 bf ff f9 b 4002c92c <_POSIX_signals_Send+0x370> <== NOT EXECUTED 4002c94c: c2 07 bf ec ld [ %fp + -20 ], %g1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4002c950: 7f ff bc ec call 4001bd00 <__errno> <== NOT EXECUTED 4002c954: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4002c958: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4002c95c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4002c960: 81 c7 e0 08 ret <== NOT EXECUTED 4002c964: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 4002c968: 7f ff bc e6 call 4001bd00 <__errno> <== NOT EXECUTED 4002c96c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4002c970: 82 10 20 03 mov 3, %g1 <== NOT EXECUTED 4002c974: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4002c978: 81 c7 e0 08 ret <== NOT EXECUTED 4002c97c: 81 e8 00 00 restore <== NOT EXECUTED 4002c980: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002c984: 01 00 00 00 nop <== NOT EXECUTED uint32_t disable_level = cpu_self->thread_dispatch_disable_level; 4002c988: c2 06 a0 18 ld [ %i2 + 0x18 ], %g1 <== NOT EXECUTED if ( disable_level == 1 ) { 4002c98c: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002c990: 02 80 00 09 be 4002c9b4 <_POSIX_signals_Send+0x3f8> <== NOT EXECUTED 4002c994: 82 00 7f ff add %g1, -1, %g1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level - 1; 4002c998: c2 26 a0 18 st %g1, [ %i2 + 0x18 ] <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 4002c99c: 7f ff bc d9 call 4001bd00 <__errno> <== NOT EXECUTED 4002c9a0: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4002c9a4: 82 10 20 0b mov 0xb, %g1 <== NOT EXECUTED 4002c9a8: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4002c9ac: 81 c7 e0 08 ret <== NOT EXECUTED 4002c9b0: 81 e8 00 00 restore <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002c9b4: 91 d0 20 09 ta 9 <== NOT EXECUTED if ( 4002c9b8: c4 0e a0 1c ldub [ %i2 + 0x1c ], %g2 <== NOT EXECUTED 4002c9bc: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002c9c0: 12 80 00 06 bne 4002c9d8 <_POSIX_signals_Send+0x41c> <== NOT EXECUTED 4002c9c4: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = 0; 4002c9c8: c0 26 a0 18 clr [ %i2 + 0x18 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002c9cc: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002c9d0: 01 00 00 00 nop <== NOT EXECUTED 4002c9d4: 30 bf ff f2 b,a 4002c99c <_POSIX_signals_Send+0x3e0> <== NOT EXECUTED _Thread_Do_dispatch( cpu_self, level ); 4002c9d8: c2 27 bf ec st %g1, [ %fp + -20 ] <== NOT EXECUTED 4002c9dc: 7f ff 9a cb call 40013508 <_Thread_Do_dispatch> <== NOT EXECUTED 4002c9e0: 90 10 00 1a mov %i2, %o0 <== NOT EXECUTED 4002c9e4: 10 bf ff fa b 4002c9cc <_POSIX_signals_Send+0x410> <== NOT EXECUTED 4002c9e8: c2 07 bf ec ld [ %fp + -20 ], %g1 <== NOT EXECUTED =============================================================================== 4002caa0 <_POSIX_signals_Set_process_signals>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002caa0: 91 d0 20 09 ta 9 <== NOT EXECUTED { Thread_queue_Context queue_context; _Thread_queue_Context_initialize( &queue_context ); _POSIX_signals_Acquire( &queue_context ); _POSIX_signals_Pending |= mask; 4002caa4: 07 10 00 d6 sethi %hi(0x40035800), %g3 <== NOT EXECUTED 4002caa8: c4 00 e1 74 ld [ %g3 + 0x174 ], %g2 ! 40035974 <_POSIX_signals_Pending> <== NOT EXECUTED 4002caac: 90 10 80 08 or %g2, %o0, %o0 <== NOT EXECUTED 4002cab0: d0 20 e1 74 st %o0, [ %g3 + 0x174 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002cab4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002cab8: 01 00 00 00 nop <== NOT EXECUTED _POSIX_signals_Release( &queue_context ); } 4002cabc: 81 c3 e0 08 retl <== NOT EXECUTED 4002cac0: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4002cc4c <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 4002cc4c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED POSIX_API_Control *api; sigset_t mask; siginfo_t *the_info = NULL; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4002cc50: fa 06 21 5c ld [ %i0 + 0x15c ], %i5 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 4002cc54: c6 06 20 1c ld [ %i0 + 0x1c ], %g3 <== NOT EXECUTED 4002cc58: 05 04 00 01 sethi %hi(0x10000400), %g2 <== NOT EXECUTED 4002cc5c: 88 10 20 01 mov 1, %g4 <== NOT EXECUTED 4002cc60: 82 06 7f ff add %i1, -1, %g1 <== NOT EXECUTED 4002cc64: b8 08 c0 02 and %g3, %g2, %i4 <== NOT EXECUTED 4002cc68: 83 29 00 01 sll %g4, %g1, %g1 <== NOT EXECUTED 4002cc6c: 80 a7 00 02 cmp %i4, %g2 <== NOT EXECUTED 4002cc70: 02 80 00 19 be 4002ccd4 <_POSIX_signals_Unblock_thread+0x88> <== NOT EXECUTED 4002cc74: b6 07 60 70 add %i5, 0x70, %i3 <== NOT EXECUTED } /* * Thread is not waiting due to a sigwait. */ if ( api->signals_unblocked & mask ) { 4002cc78: c4 07 60 68 ld [ %i5 + 0x68 ], %g2 <== NOT EXECUTED 4002cc7c: 80 88 40 02 btst %g1, %g2 <== NOT EXECUTED 4002cc80: 02 80 00 05 be 4002cc94 <_POSIX_signals_Unblock_thread+0x48> <== NOT EXECUTED 4002cc84: 03 04 00 00 sethi %hi(0x10000000), %g1 <== NOT EXECUTED * it is not blocked, THEN * we need to dispatch at the end of this ISR. * + Any other combination, do nothing. */ if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) { 4002cc88: 80 88 c0 01 btst %g3, %g1 <== NOT EXECUTED 4002cc8c: 12 80 00 4b bne 4002cdb8 <_POSIX_signals_Unblock_thread+0x16c> <== NOT EXECUTED 4002cc90: 82 10 24 0d mov 0x40d, %g1 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002cc94: 91 d0 20 09 ta 9 <== NOT EXECUTED action->handler = handler; 4002cc98: 05 10 00 b2 sethi %hi(0x4002c800), %g2 <== NOT EXECUTED 4002cc9c: 84 10 a3 60 or %g2, 0x360, %g2 ! 4002cb60 <_POSIX_signals_Action_handler> <== NOT EXECUTED 4002cca0: c4 27 60 78 st %g2, [ %i5 + 0x78 ] <== NOT EXECUTED cpu_self->dispatch_necessary = true; 4002cca4: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED 4002cca8: c6 29 a0 1c stb %g3, [ %g6 + 0x1c ] <== NOT EXECUTED if ( _Chain_Is_node_off_chain( the_node ) ) { 4002ccac: c4 07 60 70 ld [ %i5 + 0x70 ], %g2 <== NOT EXECUTED 4002ccb0: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002ccb4: 22 80 00 1a be,a 4002cd1c <_POSIX_signals_Unblock_thread+0xd0> <== NOT EXECUTED 4002ccb8: c4 06 20 e8 ld [ %i0 + 0xe8 ], %g2 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002ccbc: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002ccc0: 01 00 00 00 nop <== NOT EXECUTED the_thread->Wait.return_code = STATUS_INTERRUPTED; _Thread_queue_Extract_with_proxy( the_thread ); } } return _POSIX_signals_Unblock_thread_done( the_thread, api, false ); 4002ccc4: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED } 4002ccc8: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4002cccc: 81 c7 e0 08 ret <== NOT EXECUTED 4002ccd0: 81 e8 00 00 restore <== NOT EXECUTED if ( (the_thread->Wait.option & mask) || (api->signals_unblocked & mask) ) { 4002ccd4: c4 06 20 48 ld [ %i0 + 0x48 ], %g2 <== NOT EXECUTED 4002ccd8: 80 88 40 02 btst %g1, %g2 <== NOT EXECUTED 4002ccdc: 32 80 00 16 bne,a 4002cd34 <_POSIX_signals_Unblock_thread+0xe8> <== NOT EXECUTED 4002cce0: 82 10 24 0d mov 0x40d, %g1 <== NOT EXECUTED 4002cce4: c4 07 60 68 ld [ %i5 + 0x68 ], %g2 <== NOT EXECUTED 4002cce8: 80 88 40 02 btst %g1, %g2 <== NOT EXECUTED 4002ccec: 12 80 00 12 bne 4002cd34 <_POSIX_signals_Unblock_thread+0xe8> <== NOT EXECUTED 4002ccf0: 82 10 24 0d mov 0x40d, %g1 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002ccf4: 91 d0 20 09 ta 9 <== NOT EXECUTED 4002ccf8: 05 10 00 b2 sethi %hi(0x4002c800), %g2 <== NOT EXECUTED 4002ccfc: 84 10 a3 60 or %g2, 0x360, %g2 ! 4002cb60 <_POSIX_signals_Action_handler> <== NOT EXECUTED 4002cd00: c4 27 60 78 st %g2, [ %i5 + 0x78 ] <== NOT EXECUTED 4002cd04: c8 29 a0 1c stb %g4, [ %g6 + 0x1c ] <== NOT EXECUTED 4002cd08: c4 07 60 70 ld [ %i5 + 0x70 ], %g2 <== NOT EXECUTED 4002cd0c: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002cd10: 12 bf ff eb bne 4002ccbc <_POSIX_signals_Unblock_thread+0x70> <== NOT EXECUTED 4002cd14: 01 00 00 00 nop <== NOT EXECUTED old_last = tail->previous; 4002cd18: c4 06 20 e8 ld [ %i0 + 0xe8 ], %g2 <== NOT EXECUTED return &the_chain->Tail.Node; 4002cd1c: 86 06 20 e4 add %i0, 0xe4, %g3 <== NOT EXECUTED the_node->next = tail; 4002cd20: c6 27 60 70 st %g3, [ %i5 + 0x70 ] <== NOT EXECUTED tail->previous = the_node; 4002cd24: f6 26 20 e8 st %i3, [ %i0 + 0xe8 ] <== NOT EXECUTED old_last->next = the_node; 4002cd28: f6 20 80 00 st %i3, [ %g2 ] <== NOT EXECUTED the_node->previous = old_last; 4002cd2c: 10 bf ff e4 b 4002ccbc <_POSIX_signals_Unblock_thread+0x70> <== NOT EXECUTED 4002cd30: c4 27 60 74 st %g2, [ %i5 + 0x74 ] <== NOT EXECUTED the_thread->Wait.return_code = STATUS_INTERRUPTED; 4002cd34: c2 26 20 4c st %g1, [ %i0 + 0x4c ] <== NOT EXECUTED if ( !info ) { 4002cd38: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 4002cd3c: 02 80 00 2e be 4002cdf4 <_POSIX_signals_Unblock_thread+0x1a8> <== NOT EXECUTED 4002cd40: c2 06 20 40 ld [ %i0 + 0x40 ], %g1 <== NOT EXECUTED *the_info = *info; 4002cd44: c4 06 80 00 ld [ %i2 ], %g2 <== NOT EXECUTED 4002cd48: c4 20 40 00 st %g2, [ %g1 ] <== NOT EXECUTED 4002cd4c: c4 06 a0 04 ld [ %i2 + 4 ], %g2 <== NOT EXECUTED 4002cd50: c4 20 60 04 st %g2, [ %g1 + 4 ] <== NOT EXECUTED 4002cd54: c4 06 a0 08 ld [ %i2 + 8 ], %g2 <== NOT EXECUTED 4002cd58: c4 20 60 08 st %g2, [ %g1 + 8 ] <== NOT EXECUTED _Thread_queue_Extract_with_proxy( the_thread ); 4002cd5c: 7f ff b7 3e call 4001aa54 <_Thread_queue_Extract_with_proxy> <== NOT EXECUTED 4002cd60: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4002cd64: 91 d0 20 09 ta 9 <== NOT EXECUTED 4002cd68: 05 10 00 b2 sethi %hi(0x4002c800), %g2 <== NOT EXECUTED 4002cd6c: 84 10 a3 60 or %g2, 0x360, %g2 ! 4002cb60 <_POSIX_signals_Action_handler> <== NOT EXECUTED 4002cd70: c4 27 60 78 st %g2, [ %i5 + 0x78 ] <== NOT EXECUTED 4002cd74: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED 4002cd78: c6 29 a0 1c stb %g3, [ %g6 + 0x1c ] <== NOT EXECUTED if ( _Chain_Is_node_off_chain( the_node ) ) { 4002cd7c: c4 07 60 70 ld [ %i5 + 0x70 ], %g2 <== NOT EXECUTED 4002cd80: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002cd84: 12 80 00 07 bne 4002cda0 <_POSIX_signals_Unblock_thread+0x154> <== NOT EXECUTED 4002cd88: 86 06 20 e4 add %i0, 0xe4, %g3 <== NOT EXECUTED old_last = tail->previous; 4002cd8c: c4 06 20 e8 ld [ %i0 + 0xe8 ], %g2 <== NOT EXECUTED the_node->next = tail; 4002cd90: c6 27 60 70 st %g3, [ %i5 + 0x70 ] <== NOT EXECUTED tail->previous = the_node; 4002cd94: f6 26 20 e8 st %i3, [ %i0 + 0xe8 ] <== NOT EXECUTED old_last->next = the_node; 4002cd98: f6 20 80 00 st %i3, [ %g2 ] <== NOT EXECUTED the_node->previous = old_last; 4002cd9c: c4 27 60 74 st %g2, [ %i5 + 0x74 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002cda0: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002cda4: 01 00 00 00 nop <== NOT EXECUTED return _POSIX_signals_Unblock_thread_done( the_thread, api, true ); 4002cda8: b0 10 20 01 mov 1, %i0 ! 1 <_TLS_Alignment> <== NOT EXECUTED } 4002cdac: b0 0e 20 01 and %i0, 1, %i0 <== NOT EXECUTED 4002cdb0: 81 c7 e0 08 ret <== NOT EXECUTED 4002cdb4: 81 e8 00 00 restore <== NOT EXECUTED the_thread->Wait.return_code = STATUS_INTERRUPTED; 4002cdb8: c2 26 20 4c st %g1, [ %i0 + 0x4c ] <== NOT EXECUTED _Thread_queue_Extract_with_proxy( the_thread ); 4002cdbc: 7f ff b7 26 call 4001aa54 <_Thread_queue_Extract_with_proxy> <== NOT EXECUTED 4002cdc0: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002cdc4: 91 d0 20 09 ta 9 <== NOT EXECUTED 4002cdc8: 05 10 00 b2 sethi %hi(0x4002c800), %g2 <== NOT EXECUTED 4002cdcc: 84 10 a3 60 or %g2, 0x360, %g2 ! 4002cb60 <_POSIX_signals_Action_handler> <== NOT EXECUTED 4002cdd0: c4 27 60 78 st %g2, [ %i5 + 0x78 ] <== NOT EXECUTED 4002cdd4: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED 4002cdd8: c6 29 a0 1c stb %g3, [ %g6 + 0x1c ] <== NOT EXECUTED if ( _Chain_Is_node_off_chain( the_node ) ) { 4002cddc: c4 07 60 70 ld [ %i5 + 0x70 ], %g2 <== NOT EXECUTED 4002cde0: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002cde4: 12 bf ff b6 bne 4002ccbc <_POSIX_signals_Unblock_thread+0x70> <== NOT EXECUTED 4002cde8: 01 00 00 00 nop <== NOT EXECUTED old_last = tail->previous; 4002cdec: 10 bf ff cc b 4002cd1c <_POSIX_signals_Unblock_thread+0xd0> <== NOT EXECUTED 4002cdf0: c4 06 20 e8 ld [ %i0 + 0xe8 ], %g2 <== NOT EXECUTED the_info->si_code = SI_USER; 4002cdf4: 84 10 20 01 mov 1, %g2 <== NOT EXECUTED the_info->si_signo = signo; 4002cdf8: f2 20 40 00 st %i1, [ %g1 ] <== NOT EXECUTED the_info->si_code = SI_USER; 4002cdfc: c4 20 60 04 st %g2, [ %g1 + 4 ] <== NOT EXECUTED 4002ce00: 10 bf ff d7 b 4002cd5c <_POSIX_signals_Unblock_thread+0x110> <== NOT EXECUTED 4002ce04: c0 20 60 08 clr [ %g1 + 8 ] <== NOT EXECUTED =============================================================================== 4002c1e8 <_kill_r>: int _kill_r( struct _reent *ptr, pid_t pid, int sig ) { 4002c1e8: 82 10 00 0a mov %o2, %g1 <== NOT EXECUTED return _POSIX_signals_Send( pid, sig, NULL ); 4002c1ec: 90 10 00 09 mov %o1, %o0 <== NOT EXECUTED 4002c1f0: 94 10 20 00 clr %o2 <== NOT EXECUTED 4002c1f4: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED 4002c1f8: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 4002c1fc: 40 00 00 f0 call 4002c5bc <_POSIX_signals_Send> <== NOT EXECUTED 4002c200: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED =============================================================================== 40006298 : int clock_gettime( clockid_t clock_id, struct timespec *tp ) { 40006298: 9d e3 bf a0 save %sp, -96, %sp if ( !tp ) 4000629c: 80 a6 60 00 cmp %i1, 0 400062a0: 02 80 00 1f be 4000631c <== NEVER TAKEN 400062a4: 80 a6 20 01 cmp %i0, 1 rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 400062a8: 02 80 00 18 be 40006308 <== ALWAYS TAKEN 400062ac: 82 06 3f fe add %i0, -2, %g1 return 0; } #endif #ifdef _POSIX_CPUTIME if ( clock_id == CLOCK_PROCESS_CPUTIME_ID ) { 400062b0: 80 88 7f fd btst -3, %g1 <== NOT EXECUTED 400062b4: 02 80 00 0a be 400062dc <== NOT EXECUTED 400062b8: 80 a6 20 03 cmp %i0, 3 <== NOT EXECUTED return 0; } #endif #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME_ID ) 400062bc: 02 80 00 0d be 400062f0 <== NOT EXECUTED 400062c0: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif rtems_set_errno_and_return_minus_one( EINVAL ); 400062c4: 40 00 22 92 call 4000ed0c <__errno> <== NOT EXECUTED 400062c8: b0 10 3f ff mov -1, %i0 ! ffffffff <== NOT EXECUTED 400062cc: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 400062d0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return 0; } 400062d4: 81 c7 e0 08 ret <== NOT EXECUTED 400062d8: 81 e8 00 00 restore <== NOT EXECUTED _Timecounter_Nanouptime( tp ); 400062dc: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 400062e0: 40 00 08 b7 call 400085bc <_Timecounter_Nanouptime> <== NOT EXECUTED 400062e4: b0 10 20 00 clr %i0 <== NOT EXECUTED return 0; 400062e8: 81 c7 e0 08 ret <== NOT EXECUTED 400062ec: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 400062f0: 40 00 22 87 call 4000ed0c <__errno> <== NOT EXECUTED 400062f4: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400062f8: 82 10 20 58 mov 0x58, %g1 <== NOT EXECUTED 400062fc: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40006300: 81 c7 e0 08 ret <== NOT EXECUTED 40006304: 81 e8 00 00 restore <== NOT EXECUTED _Timecounter_Nanotime( tod ); 40006308: 90 10 00 19 mov %i1, %o0 4000630c: 40 00 08 e7 call 400086a8 <_Timecounter_Nanotime> 40006310: b0 10 20 00 clr %i0 return 0; 40006314: 81 c7 e0 08 ret 40006318: 81 e8 00 00 restore rtems_set_errno_and_return_minus_one( EINVAL ); 4000631c: 40 00 22 7c call 4000ed0c <__errno> <== NOT EXECUTED 40006320: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40006324: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40006328: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000632c: 81 c7 e0 08 ret <== NOT EXECUTED 40006330: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40043848 : int clock_settime( clockid_t clock_id, const struct timespec *tp ) { 40043848: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED if ( !tp ) 4004384c: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 40043850: 02 80 00 2b be 400438fc <== NOT EXECUTED 40043854: 80 a6 20 01 cmp %i0, 1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 40043858: 02 80 00 12 be 400438a0 <== NOT EXECUTED 4004385c: 80 a6 20 02 cmp %i0, 2 <== NOT EXECUTED _TOD_Acquire( &lock_context ); _TOD_Set( tp, &lock_context ); _TOD_Unlock(); } #ifdef _POSIX_CPUTIME else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID ) 40043860: 02 80 00 0a be 40043888 <== NOT EXECUTED 40043864: 80 a6 20 03 cmp %i0, 3 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME_ID ) 40043868: 02 80 00 08 be 40043888 <== NOT EXECUTED 4004386c: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 40043870: 40 00 64 29 call 4005c914 <__errno> <== NOT EXECUTED 40043874: b0 10 3f ff mov -1, %i0 ! ffffffff <== NOT EXECUTED 40043878: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4004387c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return 0; } 40043880: 81 c7 e0 08 ret <== NOT EXECUTED 40043884: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 40043888: 40 00 64 23 call 4005c914 <__errno> <== NOT EXECUTED 4004388c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40043890: 82 10 20 58 mov 0x58, %g1 <== NOT EXECUTED 40043894: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40043898: 81 c7 e0 08 ret <== NOT EXECUTED 4004389c: 81 e8 00 00 restore <== NOT EXECUTED if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 ) 400438a0: c2 06 40 00 ld [ %i1 ], %g1 <== NOT EXECUTED 400438a4: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 400438a8: 04 80 00 0e ble 400438e0 <== NOT EXECUTED 400438ac: 01 00 00 00 nop <== NOT EXECUTED _TOD_Lock(); 400438b0: 40 00 03 d3 call 400447fc <_TOD_Lock> <== NOT EXECUTED 400438b4: 01 00 00 00 nop <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400438b8: 91 d0 20 09 ta 9 <== NOT EXECUTED _Timecounter_Acquire( lock_context ); 400438bc: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED _TOD_Set( tp, &lock_context ); 400438c0: 92 07 bf fc add %fp, -4, %o1 <== NOT EXECUTED 400438c4: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 400438c8: 40 00 03 d7 call 40044824 <_TOD_Set> <== NOT EXECUTED 400438cc: b0 10 20 00 clr %i0 <== NOT EXECUTED _TOD_Unlock(); 400438d0: 40 00 03 d0 call 40044810 <_TOD_Unlock> <== NOT EXECUTED 400438d4: 01 00 00 00 nop <== NOT EXECUTED return 0; 400438d8: 81 c7 e0 08 ret <== NOT EXECUTED 400438dc: 81 e8 00 00 restore <== NOT EXECUTED if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 ) 400438e0: 12 80 00 07 bne 400438fc <== NOT EXECUTED 400438e4: 03 08 76 b9 sethi %hi(0x21dae400), %g1 <== NOT EXECUTED 400438e8: c4 06 60 04 ld [ %i1 + 4 ], %g2 <== NOT EXECUTED 400438ec: 82 10 60 ff or %g1, 0xff, %g1 <== NOT EXECUTED 400438f0: 80 a0 80 01 cmp %g2, %g1 <== NOT EXECUTED 400438f4: 18 bf ff ef bgu 400438b0 <== NOT EXECUTED 400438f8: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 400438fc: 40 00 64 06 call 4005c914 <__errno> <== NOT EXECUTED 40043900: b0 10 3f ff mov -1, %i0 ! ffffffff <== NOT EXECUTED 40043904: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40043908: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4004390c: 81 c7 e0 08 ret <== NOT EXECUTED 40043910: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4002c3bc : { 4002c3bc: 9d e3 bf a0 save %sp, -96, %sp 4002c3c0: 92 10 20 00 clr %o1 4002c3c4: 94 10 00 18 mov %i0, %o2 4002c3c8: 96 10 00 19 mov %i1, %o3 4002c3cc: 7f ff ff 8e call 4002c204 4002c3d0: 90 10 20 01 mov 1, %o0 if ( eno != 0 ) { 4002c3d4: b0 92 20 00 orcc %o0, 0, %i0 4002c3d8: 12 80 00 04 bne 4002c3e8 <== NEVER TAKEN 4002c3dc: 01 00 00 00 nop } 4002c3e0: 81 c7 e0 08 ret 4002c3e4: 81 e8 00 00 restore rtems_set_errno_and_return_minus_one( eno ); 4002c3e8: 7f ff be 46 call 4001bd00 <__errno> <== NOT EXECUTED 4002c3ec: 01 00 00 00 nop <== NOT EXECUTED 4002c3f0: f0 22 00 00 st %i0, [ %o0 ] <== NOT EXECUTED } 4002c3f4: 81 c7 e0 08 ret <== NOT EXECUTED 4002c3f8: 91 e8 3f ff restore %g0, -1, %o0 <== NOT EXECUTED =============================================================================== 4001bbe4 : #include #include void pthread_exit( void *value_ptr ) { 4001bbe4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED disable_level = cpu_self->thread_dispatch_disable_level; 4001bbe8: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level + 1; 4001bbec: 82 00 60 01 inc %g1 <== NOT EXECUTED 4001bbf0: c2 21 a0 18 st %g1, [ %g6 + 0x18 ] <== NOT EXECUTED return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context ); 4001bbf4: ba 10 00 06 mov %g6, %i5 <== NOT EXECUTED Per_CPU_Control *cpu_self; cpu_self = _Thread_Dispatch_disable(); executing = _Per_CPU_Get_executing( cpu_self ); _Thread_Exit( executing, THREAD_LIFE_TERMINATING, value_ptr ); 4001bbf8: d0 01 a0 20 ld [ %g6 + 0x20 ], %o0 <== NOT EXECUTED 4001bbfc: 94 10 00 18 mov %i0, %o2 <== NOT EXECUTED 4001bc00: 7f ff e6 2a call 400154a8 <_Thread_Exit> <== NOT EXECUTED 4001bc04: 92 10 20 04 mov 4, %o1 <== NOT EXECUTED _Thread_Dispatch_direct( cpu_self ); 4001bc08: 7f ff de 88 call 40013628 <_Thread_Dispatch_direct> <== NOT EXECUTED 4001bc0c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4001bc10: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 400062a4 : ISR_Level level; _ISR_Local_disable( level ); #endif executing = _Thread_Executing; 400062a4: c6 01 a0 20 ld [ %g6 + 0x20 ], %g3 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400062a8: 91 d0 20 09 ta 9 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE RBTree_Node * const *_RBTree_Root_const_reference( const RBTree_Control *the_rbtree ) { return &RB_ROOT( the_rbtree ); 400062ac: 86 00 e1 60 add %g3, 0x160, %g3 RBTree_Node *parent; link = _RBTree_Root_const_reference( the_rbtree ); parent = NULL; while ( *link != NULL ) { 400062b0: c4 00 c0 00 ld [ %g3 ], %g2 400062b4: 80 a0 a0 00 cmp %g2, 0 400062b8: 02 80 00 0d be 400062ec <== ALWAYS TAKEN 400062bc: 86 00 bf f8 add %g2, -8, %g3 const POSIX_Keys_Key_value_pair *the_right; the_left = left; the_right = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( right ); return *the_left == the_right->key; 400062c0: c8 00 e0 18 ld [ %g3 + 0x18 ], %g4 <== NOT EXECUTED parent = *link; if ( ( *equal )( key, parent ) ) { 400062c4: 80 a2 00 04 cmp %o0, %g4 <== NOT EXECUTED 400062c8: 22 80 00 0e be,a 40006300 <== NOT EXECUTED 400062cc: d0 00 e0 20 ld [ %g3 + 0x20 ], %o0 <== NOT EXECUTED return ( *map )( parent ); } else if ( ( *less )( key, parent ) ) { 400062d0: 1a bf ff f8 bcc 400062b0 <== NOT EXECUTED 400062d4: 86 00 a0 04 add %g2, 4, %g3 <== NOT EXECUTED return &RB_LEFT( the_node, Node ); 400062d8: 86 10 00 02 mov %g2, %g3 <== NOT EXECUTED while ( *link != NULL ) { 400062dc: c4 00 c0 00 ld [ %g3 ], %g2 <== NOT EXECUTED 400062e0: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 400062e4: 12 bf ff f7 bne 400062c0 <== NOT EXECUTED 400062e8: 86 00 bf f8 add %g2, -8, %g3 <== NOT EXECUTED key_value_pair = _POSIX_Keys_Key_value_find( key, executing ); if ( key_value_pair != NULL ) { value = key_value_pair->value; } else { value = NULL; 400062ec: 90 10 20 00 clr %o0 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400062f0: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400062f4: 01 00 00 00 nop } _POSIX_Keys_Key_value_release( executing, &lock_context ); return value; } 400062f8: 81 c3 e0 08 retl 400062fc: 01 00 00 00 nop 40006300: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40006304: 01 00 00 00 nop <== NOT EXECUTED 40006308: 81 c3 e0 08 retl <== NOT EXECUTED 4000630c: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 40018354 : * 17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */ int pthread_key_delete( pthread_key_t key ) { 40018354: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED _RTEMS_Lock_allocator(); 40018358: 40 00 02 2e call 40018c10 <_RTEMS_Lock_allocator> <== NOT EXECUTED 4001835c: 33 10 00 d2 sethi %hi(0x40034800), %i1 <== NOT EXECUTED _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); } RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get( pthread_key_t key ) { return (POSIX_Keys_Control *) 40018360: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED the_key = _POSIX_Keys_Get( key ); if ( the_key != NULL ) { _POSIX_Keys_Destroy( the_key ); eno = 0; } else { eno = EINVAL; 40018364: b0 10 20 16 mov 0x16, %i0 <== NOT EXECUTED 40018368: 40 00 0b 1c call 4001afd8 <_Objects_Get_no_protection> <== NOT EXECUTED 4001836c: 92 16 61 c0 or %i1, 0x1c0, %o1 <== NOT EXECUTED if ( the_key != NULL ) { 40018370: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40018374: 02 80 00 24 be 40018404 <== NOT EXECUTED 40018378: b8 10 00 08 mov %o0, %i4 <== NOT EXECUTED _Objects_Close( &_POSIX_Keys_Information, &the_key->Object ); 4001837c: 92 10 00 08 mov %o0, %o1 <== NOT EXECUTED 40018380: 40 00 0a 1e call 4001abf8 <_Objects_Close> <== NOT EXECUTED 40018384: 90 16 61 c0 or %i1, 0x1c0, %o0 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40018388: fa 07 20 14 ld [ %i4 + 0x14 ], %i5 <== NOT EXECUTED return &the_chain->Tail.Node; 4001838c: b4 07 20 18 add %i4, 0x18, %i2 <== NOT EXECUTED while ( !_Chain_Is_empty( &the_key->Key_value_pairs ) ) { 40018390: 80 a6 80 1d cmp %i2, %i5 <== NOT EXECUTED 40018394: 02 80 00 19 be 400183f8 <== NOT EXECUTED 40018398: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 4001839c: 37 10 00 d2 sethi %hi(0x40034800), %i3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Keys_Key_value_free( POSIX_Keys_Key_value_pair *key_value_pair ) { _Chain_Extract_unprotected( &key_value_pair->Key_node ); _Freechain_Put( &_POSIX_Keys_Keypool, key_value_pair ); 400183a0: b6 16 e1 fc or %i3, 0x1fc, %i3 ! 400349fc <_POSIX_Keys_Keypool> <== NOT EXECUTED the_thread = key_value_pair->thread; 400183a4: d0 07 60 1c ld [ %i5 + 0x1c ], %o0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400183a8: 91 d0 20 09 ta 9 <== NOT EXECUTED return psr; 400183ac: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED _RBTree_Extract( 400183b0: 92 07 60 08 add %i5, 8, %o1 <== NOT EXECUTED 400183b4: 40 00 0b ba call 4001b29c <_RBTree_Extract> <== NOT EXECUTED 400183b8: 90 02 21 60 add %o0, 0x160, %o0 <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 400183bc: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400183c0: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400183c4: 01 00 00 00 nop <== NOT EXECUTED next = the_node->next; 400183c8: c4 07 40 00 ld [ %i5 ], %g2 <== NOT EXECUTED previous = the_node->previous; 400183cc: c2 07 60 04 ld [ %i5 + 4 ], %g1 <== NOT EXECUTED next->previous = previous; 400183d0: c2 20 a0 04 st %g1, [ %g2 + 4 ] <== NOT EXECUTED 400183d4: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED previous->next = next; 400183d8: c4 20 40 00 st %g2, [ %g1 ] <== NOT EXECUTED 400183dc: 40 00 02 6e call 40018d94 <_Freechain_Put> <== NOT EXECUTED 400183e0: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 400183e4: fa 07 20 14 ld [ %i4 + 0x14 ], %i5 <== NOT EXECUTED while ( !_Chain_Is_empty( &the_key->Key_value_pairs ) ) { 400183e8: 80 a7 40 1a cmp %i5, %i2 <== NOT EXECUTED 400183ec: 32 bf ff ef bne,a 400183a8 <== NOT EXECUTED 400183f0: d0 07 60 1c ld [ %i5 + 0x1c ], %o0 <== NOT EXECUTED _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 400183f4: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED 400183f8: 90 16 61 c0 or %i1, 0x1c0, %o0 <== NOT EXECUTED 400183fc: 40 00 0a cb call 4001af28 <_Objects_Free> <== NOT EXECUTED 40018400: b0 10 20 00 clr %i0 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 40018404: 40 00 02 08 call 40018c24 <_RTEMS_Unlock_allocator> <== NOT EXECUTED 40018408: 01 00 00 00 nop <== NOT EXECUTED } _Objects_Allocator_unlock(); return eno; } 4001840c: 81 c7 e0 08 ret <== NOT EXECUTED 40018410: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4002ce08 : #include #include #include int pthread_kill( pthread_t thread, int sig ) { 4002ce08: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 4002ce0c: ba 06 7f ff add %i1, -1, %i5 <== NOT EXECUTED Thread_Control *the_thread; ISR_lock_Context lock_context; POSIX_API_Control *api; Per_CPU_Control *cpu_self; if ( !is_valid_signo( sig ) ) { 4002ce10: 80 a7 60 1f cmp %i5, 0x1f <== NOT EXECUTED 4002ce14: 18 80 00 28 bgu 4002ceb4 <== NOT EXECUTED 4002ce18: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED return EINVAL; } the_thread = _Thread_Get( thread, &lock_context ); 4002ce1c: 92 07 bf fc add %fp, -4, %o1 <== NOT EXECUTED 4002ce20: 7f ff 9a 19 call 40013684 <_Thread_Get> <== NOT EXECUTED 4002ce24: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED if ( the_thread == NULL ) { 4002ce28: 86 92 20 00 orcc %o0, 0, %g3 <== NOT EXECUTED 4002ce2c: 02 80 00 22 be 4002ceb4 <== NOT EXECUTED 4002ce30: 82 10 20 03 mov 3, %g1 <== NOT EXECUTED return ESRCH; } api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 4002ce34: 83 2e 60 01 sll %i1, 1, %g1 <== NOT EXECUTED 4002ce38: 82 00 40 19 add %g1, %i1, %g1 <== NOT EXECUTED 4002ce3c: 85 28 60 02 sll %g1, 2, %g2 <== NOT EXECUTED 4002ce40: 03 10 00 d5 sethi %hi(0x40035400), %g1 <== NOT EXECUTED 4002ce44: 82 10 63 e8 or %g1, 0x3e8, %g1 ! 400357e8 <_POSIX_signals_Vectors> <== NOT EXECUTED 4002ce48: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4002ce4c: c2 00 60 08 ld [ %g1 + 8 ], %g1 <== NOT EXECUTED 4002ce50: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002ce54: 02 80 00 24 be 4002cee4 <== NOT EXECUTED 4002ce58: 01 00 00 00 nop <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4002ce5c: c8 00 e1 5c ld [ %g3 + 0x15c ], %g4 <== NOT EXECUTED return 0; } /* XXX critical section */ api->signals_pending |= signo_to_mask( sig ); 4002ce60: c4 01 20 6c ld [ %g4 + 0x6c ], %g2 <== NOT EXECUTED disable_level = cpu_self->thread_dispatch_disable_level; 4002ce64: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1 <== NOT EXECUTED return 1u << (sig - 1); 4002ce68: 86 10 20 01 mov 1, %g3 <== NOT EXECUTED 4002ce6c: bb 28 c0 1d sll %g3, %i5, %i5 <== NOT EXECUTED 4002ce70: ba 10 80 1d or %g2, %i5, %i5 <== NOT EXECUTED 4002ce74: fa 21 20 6c st %i5, [ %g4 + 0x6c ] <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level + 1; 4002ce78: 82 00 60 01 inc %g1 <== NOT EXECUTED return _Thread_Dispatch_disable_with_CPU( _Per_CPU_Get(), lock_context ); 4002ce7c: b8 10 00 06 mov %g6, %i4 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level + 1; 4002ce80: c2 21 a0 18 st %g1, [ %g6 + 0x18 ] <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 4002ce84: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002ce88: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002ce8c: 01 00 00 00 nop <== NOT EXECUTED cpu_self = _Thread_Dispatch_disable_critical( &lock_context ); _ISR_lock_ISR_enable( &lock_context ); (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); 4002ce90: 94 10 20 00 clr %o2 ! 0 <== NOT EXECUTED 4002ce94: 7f ff ff 6e call 4002cc4c <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 4002ce98: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED uint32_t disable_level = cpu_self->thread_dispatch_disable_level; 4002ce9c: c2 07 20 18 ld [ %i4 + 0x18 ], %g1 <== NOT EXECUTED if ( disable_level == 1 ) { 4002cea0: 80 a0 60 01 cmp %g1, 1 <== NOT EXECUTED 4002cea4: 02 80 00 06 be 4002cebc <== NOT EXECUTED 4002cea8: 84 00 7f ff add %g1, -1, %g2 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = disable_level - 1; 4002ceac: c4 27 20 18 st %g2, [ %i4 + 0x18 ] <== NOT EXECUTED _Thread_Dispatch_enable( cpu_self ); return 0; 4002ceb0: 82 10 20 00 clr %g1 <== NOT EXECUTED } 4002ceb4: 81 c7 e0 08 ret <== NOT EXECUTED 4002ceb8: 91 e8 00 01 restore %g0, %g1, %o0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4002cebc: 91 d0 20 09 ta 9 <== NOT EXECUTED if ( 4002cec0: c4 0f 20 1c ldub [ %i4 + 0x1c ], %g2 <== NOT EXECUTED 4002cec4: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4002cec8: 12 80 00 0d bne 4002cefc <== NOT EXECUTED 4002cecc: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED cpu_self->thread_dispatch_disable_level = 0; 4002ced0: c0 27 20 18 clr [ %i4 + 0x18 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002ced4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002ced8: 01 00 00 00 nop <== NOT EXECUTED return 0; 4002cedc: 10 bf ff f6 b 4002ceb4 <== NOT EXECUTED 4002cee0: 82 10 20 00 clr %g1 ! 0 <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 4002cee4: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4002cee8: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4002ceec: 01 00 00 00 nop <== NOT EXECUTED return 0; 4002cef0: 82 10 20 00 clr %g1 ! 0 <== NOT EXECUTED } 4002cef4: 81 c7 e0 08 ret <== NOT EXECUTED 4002cef8: 91 e8 00 01 restore %g0, %g1, %o0 <== NOT EXECUTED _Thread_Do_dispatch( cpu_self, level ); 4002cefc: c2 27 bf f4 st %g1, [ %fp + -12 ] <== NOT EXECUTED 4002cf00: 7f ff 99 82 call 40013508 <_Thread_Do_dispatch> <== NOT EXECUTED 4002cf04: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED 4002cf08: 10 bf ff f3 b 4002ced4 <== NOT EXECUTED 4002cf0c: c2 07 bf f4 ld [ %fp + -12 ], %g1 <== NOT EXECUTED =============================================================================== 4000dab8 : int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) { if ( !once_control || !init_routine ) 4000dab8: 80 a2 20 00 cmp %o0, 0 4000dabc: 02 80 00 07 be 4000dad8 <== NEVER TAKEN 4000dac0: 80 a2 60 00 cmp %o1, 0 4000dac4: 02 80 00 05 be 4000dad8 <== NEVER TAKEN 4000dac8: 01 00 00 00 nop return EINVAL; return _Once( &once_control->_flags, init_routine ); 4000dacc: 82 13 c0 00 mov %o7, %g1 4000dad0: 40 00 10 bc call 40011dc0 <_Once> 4000dad4: 9e 10 40 00 mov %g1, %o7 } 4000dad8: 81 c3 e0 08 retl <== NOT EXECUTED 4000dadc: 90 10 20 16 mov 0x16, %o0 <== NOT EXECUTED =============================================================================== 4002cf10 : #include #include pthread_t pthread_self( void ) { return _Thread_Get_executing()->Object.id; 4002cf10: c2 01 a0 20 ld [ %g6 + 0x20 ], %g1 <== NOT EXECUTED } 4002cf14: 81 c3 e0 08 retl <== NOT EXECUTED 4002cf18: d0 00 60 08 ld [ %g1 + 8 ], %o0 <== NOT EXECUTED =============================================================================== 40018600 : int pthread_setspecific( pthread_key_t key, const void *value ) { 40018600: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED 40018604: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED Thread_Control *executing; int eno; executing = _Thread_Get_executing(); if ( value != NULL ) { 40018608: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 4001860c: 02 80 00 52 be 40018754 <== NOT EXECUTED 40018610: f8 01 a0 20 ld [ %g6 + 0x20 ], %i4 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40018614: 91 d0 20 09 ta 9 <== NOT EXECUTED return &RB_ROOT( the_rbtree ); 40018618: b6 07 21 60 add %i4, 0x160, %i3 <== NOT EXECUTED link = _RBTree_Root_const_reference( the_rbtree ); 4001861c: 86 10 00 1b mov %i3, %g3 <== NOT EXECUTED while ( *link != NULL ) { 40018620: c4 00 c0 00 ld [ %g3 ], %g2 <== NOT EXECUTED 40018624: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40018628: 02 80 00 0d be 4001865c <== NOT EXECUTED 4001862c: 86 00 bf f8 add %g2, -8, %g3 <== NOT EXECUTED return *the_left == the_right->key; 40018630: c8 00 e0 18 ld [ %g3 + 0x18 ], %g4 <== NOT EXECUTED if ( ( *equal )( key, parent ) ) { 40018634: 80 a7 40 04 cmp %i5, %g4 <== NOT EXECUTED 40018638: 22 80 00 31 be,a 400186fc <== NOT EXECUTED 4001863c: f2 20 e0 20 st %i1, [ %g3 + 0x20 ] <== NOT EXECUTED } else if ( ( *less )( key, parent ) ) { 40018640: 1a bf ff f8 bcc 40018620 <== NOT EXECUTED 40018644: 86 00 a0 04 add %g2, 4, %g3 <== NOT EXECUTED return &RB_LEFT( the_node, Node ); 40018648: 86 10 00 02 mov %g2, %g3 <== NOT EXECUTED while ( *link != NULL ) { 4001864c: c4 00 c0 00 ld [ %g3 ], %g2 <== NOT EXECUTED 40018650: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40018654: 12 bf ff f7 bne 40018630 <== NOT EXECUTED 40018658: 86 00 bf f8 add %g2, -8, %g3 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4001865c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40018660: 01 00 00 00 nop <== NOT EXECUTED _RTEMS_Lock_allocator(); 40018664: 40 00 01 6b call 40018c10 <_RTEMS_Lock_allocator> <== NOT EXECUTED 40018668: b0 10 20 16 mov 0x16, %i0 ! 16 <_TLS_Alignment+0x15> <== NOT EXECUTED return (POSIX_Keys_Control *) 4001866c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 40018670: 13 10 00 d2 sethi %hi(0x40034800), %o1 <== NOT EXECUTED 40018674: 40 00 0a 59 call 4001afd8 <_Objects_Get_no_protection> <== NOT EXECUTED 40018678: 92 12 61 c0 or %o1, 0x1c0, %o1 ! 400349c0 <_POSIX_Keys_Information> <== NOT EXECUTED if ( the_key != NULL ) { 4001867c: b4 92 20 00 orcc %o0, 0, %i2 <== NOT EXECUTED 40018680: 02 80 00 31 be 40018744 <== NOT EXECUTED 40018684: 01 00 00 00 nop <== NOT EXECUTED key_value_pair = _POSIX_Keys_Key_value_allocate(); 40018688: 7f ff ff ce call 400185c0 <_POSIX_Keys_Key_value_allocate> <== NOT EXECUTED 4001868c: b0 10 20 0c mov 0xc, %i0 ! c <_TLS_Alignment+0xb> <== NOT EXECUTED if ( key_value_pair != NULL ) { 40018690: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40018694: 02 80 00 2c be 40018744 <== NOT EXECUTED 40018698: 88 10 00 08 mov %o0, %g4 <== NOT EXECUTED old_last = tail->previous; 4001869c: c2 06 a0 1c ld [ %i2 + 0x1c ], %g1 <== NOT EXECUTED return &the_chain->Tail.Node; 400186a0: 84 06 a0 18 add %i2, 0x18, %g2 <== NOT EXECUTED key_value_pair->key = key; 400186a4: fa 22 20 18 st %i5, [ %o0 + 0x18 ] <== NOT EXECUTED _RBTree_Initialize_node( &key_value_pair->Lookup_node ); 400186a8: b0 02 20 08 add %o0, 8, %i0 <== NOT EXECUTED key_value_pair->thread = executing; 400186ac: f8 22 20 1c st %i4, [ %o0 + 0x1c ] <== NOT EXECUTED key_value_pair->value = RTEMS_DECONST( void *, value ); 400186b0: f2 22 20 20 st %i1, [ %o0 + 0x20 ] <== NOT EXECUTED the_node->next = tail; 400186b4: c4 22 00 00 st %g2, [ %o0 ] <== NOT EXECUTED tail->previous = the_node; 400186b8: d0 26 a0 1c st %o0, [ %i2 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 400186bc: d0 20 40 00 st %o0, [ %g1 ] <== NOT EXECUTED the_node->previous = old_last; 400186c0: c2 22 20 04 st %g1, [ %o0 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400186c4: 91 d0 20 09 ta 9 <== NOT EXECUTED parent = NULL; 400186c8: b8 10 20 00 clr %i4 <== NOT EXECUTED link = _RBTree_Root_reference( the_rbtree ); 400186cc: 86 10 00 1b mov %i3, %g3 <== NOT EXECUTED while ( *link != NULL ) { 400186d0: c4 00 c0 00 ld [ %g3 ], %g2 <== NOT EXECUTED 400186d4: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 400186d8: 22 80 00 41 be,a 400187dc <== NOT EXECUTED 400186dc: f8 21 20 10 st %i4, [ %g4 + 0x10 ] <== NOT EXECUTED if ( ( *less )( key, parent ) ) { 400186e0: f8 00 a0 10 ld [ %g2 + 0x10 ], %i4 <== NOT EXECUTED 400186e4: 80 a7 40 1c cmp %i5, %i4 <== NOT EXECUTED 400186e8: 1a 80 00 03 bcc 400186f4 <== NOT EXECUTED 400186ec: 86 00 a0 04 add %g2, 4, %g3 <== NOT EXECUTED return &RB_LEFT( the_node, Node ); 400186f0: 86 10 00 02 mov %g2, %g3 <== NOT EXECUTED link = _RBTree_Root_const_reference( the_rbtree ); 400186f4: 10 bf ff f7 b 400186d0 <== NOT EXECUTED 400186f8: b8 10 00 02 mov %g2, %i4 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400186fc: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40018700: 01 00 00 00 nop <== NOT EXECUTED } else { eno = _POSIX_Keys_Delete_value( key, executing ); } return eno; } 40018704: 81 c7 e0 08 ret <== NOT EXECUTED 40018708: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED _RBTree_Extract( 4001870c: 40 00 0a e4 call 4001b29c <_RBTree_Extract> <== NOT EXECUTED 40018710: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 40018714: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40018718: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4001871c: 01 00 00 00 nop <== NOT EXECUTED next = the_node->next; 40018720: c4 07 00 00 ld [ %i4 ], %g2 <== NOT EXECUTED previous = the_node->previous; 40018724: c2 07 20 04 ld [ %i4 + 4 ], %g1 <== NOT EXECUTED next->previous = previous; 40018728: c2 20 a0 04 st %g1, [ %g2 + 4 ] <== NOT EXECUTED _Freechain_Put( &_POSIX_Keys_Keypool, key_value_pair ); 4001872c: 11 10 00 d2 sethi %hi(0x40034800), %o0 <== NOT EXECUTED previous->next = next; 40018730: c4 20 40 00 st %g2, [ %g1 ] <== NOT EXECUTED 40018734: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED eno = 0; 40018738: b0 10 20 00 clr %i0 <== NOT EXECUTED 4001873c: 40 00 01 96 call 40018d94 <_Freechain_Put> <== NOT EXECUTED 40018740: 90 12 21 fc or %o0, 0x1fc, %o0 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 40018744: 40 00 01 38 call 40018c24 <_RTEMS_Unlock_allocator> <== NOT EXECUTED 40018748: 01 00 00 00 nop <== NOT EXECUTED return eno; 4001874c: 81 c7 e0 08 ret <== NOT EXECUTED 40018750: 81 e8 00 00 restore <== NOT EXECUTED _RTEMS_Lock_allocator(); 40018754: 40 00 01 2f call 40018c10 <_RTEMS_Lock_allocator> <== NOT EXECUTED 40018758: 01 00 00 00 nop <== NOT EXECUTED return (POSIX_Keys_Control *) 4001875c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 40018760: 13 10 00 d2 sethi %hi(0x40034800), %o1 <== NOT EXECUTED eno = EINVAL; 40018764: b0 10 20 16 mov 0x16, %i0 <== NOT EXECUTED 40018768: 40 00 0a 1c call 4001afd8 <_Objects_Get_no_protection> <== NOT EXECUTED 4001876c: 92 12 61 c0 or %o1, 0x1c0, %o1 <== NOT EXECUTED if ( the_key != NULL ) { 40018770: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40018774: 02 bf ff f4 be 40018744 <== NOT EXECUTED 40018778: 01 00 00 00 nop <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4001877c: 91 d0 20 09 ta 9 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Keys_Key_value_pair *_POSIX_Keys_Key_value_find( pthread_key_t key, const Thread_Control *the_thread ) { return _RBTree_Find_inline( 40018780: 90 07 21 60 add %i4, 0x160, %o0 <== NOT EXECUTED 40018784: 84 10 00 08 mov %o0, %g2 <== NOT EXECUTED while ( *link != NULL ) { 40018788: d2 00 80 00 ld [ %g2 ], %o1 <== NOT EXECUTED 4001878c: 80 a2 60 00 cmp %o1, 0 <== NOT EXECUTED 40018790: 02 80 00 0d be 400187c4 <== NOT EXECUTED 40018794: b8 02 7f f8 add %o1, -8, %i4 <== NOT EXECUTED return *the_left == the_right->key; 40018798: c4 07 20 18 ld [ %i4 + 0x18 ], %g2 <== NOT EXECUTED if ( ( *equal )( key, parent ) ) { 4001879c: 80 a7 40 02 cmp %i5, %g2 <== NOT EXECUTED 400187a0: 02 bf ff db be 4001870c <== NOT EXECUTED 400187a4: 01 00 00 00 nop <== NOT EXECUTED } else if ( ( *less )( key, parent ) ) { 400187a8: 1a bf ff f8 bcc 40018788 <== NOT EXECUTED 400187ac: 84 02 60 04 add %o1, 4, %g2 <== NOT EXECUTED return &RB_LEFT( the_node, Node ); 400187b0: 84 10 00 09 mov %o1, %g2 <== NOT EXECUTED while ( *link != NULL ) { 400187b4: d2 00 80 00 ld [ %g2 ], %o1 <== NOT EXECUTED 400187b8: 80 a2 60 00 cmp %o1, 0 <== NOT EXECUTED 400187bc: 12 bf ff f7 bne 40018798 <== NOT EXECUTED 400187c0: b8 02 7f f8 add %o1, -8, %i4 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400187c4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400187c8: 01 00 00 00 nop <== NOT EXECUTED _RTEMS_Unlock_allocator(); 400187cc: 40 00 01 16 call 40018c24 <_RTEMS_Unlock_allocator> <== NOT EXECUTED 400187d0: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED return eno; 400187d4: 81 c7 e0 08 ret <== NOT EXECUTED 400187d8: 81 e8 00 00 restore <== NOT EXECUTED RB_SET( child, parent, Node ); 400187dc: 84 10 20 01 mov 1, %g2 <== NOT EXECUTED 400187e0: c0 21 20 0c clr [ %g4 + 0xc ] <== NOT EXECUTED _RBTree_Insert_color( the_rbtree, the_node ); 400187e4: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED RB_SET( child, parent, Node ); 400187e8: c0 21 20 08 clr [ %g4 + 8 ] <== NOT EXECUTED _RBTree_Insert_color( the_rbtree, the_node ); 400187ec: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED RB_SET( child, parent, Node ); 400187f0: c4 21 20 14 st %g2, [ %g4 + 0x14 ] <== NOT EXECUTED *link = child; 400187f4: f0 20 c0 00 st %i0, [ %g3 ] <== NOT EXECUTED _RBTree_Insert_color( the_rbtree, the_node ); 400187f8: 40 00 0c 0b call 4001b824 <_RBTree_Insert_color> <== NOT EXECUTED 400187fc: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */ 40018800: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40018804: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40018808: 01 00 00 00 nop <== NOT EXECUTED eno = 0; 4001880c: 10 bf ff ce b 40018744 <== NOT EXECUTED 40018810: b0 10 20 00 clr %i0 ! 0 <== NOT EXECUTED =============================================================================== 400589a8 : int pthread_sigmask( int how, const sigset_t *__restrict set, sigset_t *__restrict oset ) { 400589a8: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED POSIX_API_Control *api; if ( !set && !oset ) 400589ac: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 400589b0: 12 80 00 04 bne 400589c0 <== NOT EXECUTED 400589b4: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 400589b8: 02 80 00 12 be 40058a00 <== NOT EXECUTED 400589bc: 01 00 00 00 nop <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Get_executing()->API_Extensions[ THREAD_API_POSIX ]; 400589c0: c2 01 a0 20 ld [ %g6 + 0x20 ], %g1 <== NOT EXECUTED if ( oset ) 400589c4: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 400589c8: 02 80 00 05 be 400589dc <== NOT EXECUTED 400589cc: c2 00 61 5c ld [ %g1 + 0x15c ], %g1 <== NOT EXECUTED *oset = ~api->signals_unblocked; 400589d0: c4 00 60 68 ld [ %g1 + 0x68 ], %g2 <== NOT EXECUTED 400589d4: 84 38 00 02 xnor %g0, %g2, %g2 <== NOT EXECUTED 400589d8: c4 26 80 00 st %g2, [ %i2 ] <== NOT EXECUTED if ( !set ) 400589dc: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 400589e0: 02 80 00 1b be 40058a4c <== NOT EXECUTED 400589e4: 80 a6 20 01 cmp %i0, 1 <== NOT EXECUTED return 0; switch ( how ) { 400589e8: 02 80 00 1e be 40058a60 <== NOT EXECUTED 400589ec: 80 a6 20 02 cmp %i0, 2 <== NOT EXECUTED 400589f0: 02 80 00 0a be 40058a18 <== NOT EXECUTED 400589f4: 80 a6 20 00 cmp %i0, 0 <== NOT EXECUTED 400589f8: 22 80 00 17 be,a 40058a54 <== NOT EXECUTED 400589fc: c4 06 40 00 ld [ %i1 ], %g2 <== NOT EXECUTED break; case SIG_SETMASK: api->signals_unblocked = ~*set; break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 40058a00: 40 00 0f c5 call 4005c914 <__errno> <== NOT EXECUTED 40058a04: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40058a08: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40058a0c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40058a10: 81 c7 e0 08 ret <== NOT EXECUTED 40058a14: 81 e8 00 00 restore <== NOT EXECUTED api->signals_unblocked |= *set; 40058a18: c4 00 60 68 ld [ %g1 + 0x68 ], %g2 <== NOT EXECUTED 40058a1c: c6 06 40 00 ld [ %i1 ], %g3 <== NOT EXECUTED 40058a20: 84 10 80 03 or %g2, %g3, %g2 <== NOT EXECUTED 40058a24: c4 20 60 68 st %g2, [ %g1 + 0x68 ] <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( api->signals_unblocked & (api->signals_pending | _POSIX_signals_Pending) ) { 40058a28: 07 10 02 45 sethi %hi(0x40091400), %g3 <== NOT EXECUTED 40058a2c: c2 00 60 6c ld [ %g1 + 0x6c ], %g1 <== NOT EXECUTED 40058a30: c6 00 e2 b4 ld [ %g3 + 0x2b4 ], %g3 <== NOT EXECUTED 40058a34: 82 10 40 03 or %g1, %g3, %g1 <== NOT EXECUTED if ( api->signals_unblocked & 40058a38: 80 88 40 02 btst %g1, %g2 <== NOT EXECUTED 40058a3c: 02 80 00 04 be 40058a4c <== NOT EXECUTED 40058a40: 01 00 00 00 nop <== NOT EXECUTED _Thread_Dispatch(); 40058a44: 7f ff 14 67 call 4001dbe0 <_Thread_Dispatch> <== NOT EXECUTED 40058a48: 01 00 00 00 nop <== NOT EXECUTED } return 0; } 40058a4c: 81 c7 e0 08 ret <== NOT EXECUTED 40058a50: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED api->signals_unblocked = ~*set; 40058a54: 84 38 00 02 xnor %g0, %g2, %g2 <== NOT EXECUTED break; 40058a58: 10 bf ff f4 b 40058a28 <== NOT EXECUTED 40058a5c: c4 20 60 68 st %g2, [ %g1 + 0x68 ] <== NOT EXECUTED api->signals_unblocked &= ~*set; 40058a60: c6 00 60 68 ld [ %g1 + 0x68 ], %g3 <== NOT EXECUTED 40058a64: c4 06 40 00 ld [ %i1 ], %g2 <== NOT EXECUTED 40058a68: 84 28 c0 02 andn %g3, %g2, %g2 <== NOT EXECUTED break; 40058a6c: 10 bf ff ef b 40058a28 <== NOT EXECUTED 40058a70: c4 20 60 68 st %g2, [ %g1 + 0x68 ] <== NOT EXECUTED =============================================================================== 40043b0c : int sigaddset( sigset_t *set, int signo ) { 40043b0c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED if ( !set ) 40043b10: 80 a6 20 00 cmp %i0, 0 <== NOT EXECUTED 40043b14: 02 80 00 0d be 40043b48 <== NOT EXECUTED 40043b18: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 40043b1c: 02 80 00 0b be 40043b48 <== NOT EXECUTED 40043b20: b2 06 7f ff add %i1, -1, %i1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) 40043b24: 80 a6 60 1f cmp %i1, 0x1f <== NOT EXECUTED 40043b28: 18 80 00 08 bgu 40043b48 <== NOT EXECUTED 40043b2c: 84 10 20 01 mov 1, %g2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); *set |= signo_to_mask(signo); 40043b30: c2 06 00 00 ld [ %i0 ], %g1 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 40043b34: b3 28 80 19 sll %g2, %i1, %i1 <== NOT EXECUTED 40043b38: b2 10 40 19 or %g1, %i1, %i1 <== NOT EXECUTED 40043b3c: f2 26 00 00 st %i1, [ %i0 ] <== NOT EXECUTED return 0; } 40043b40: 81 c7 e0 08 ret <== NOT EXECUTED 40043b44: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 40043b48: 40 00 63 73 call 4005c914 <__errno> <== NOT EXECUTED 40043b4c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40043b50: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 40043b54: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40043b58: 81 c7 e0 08 ret <== NOT EXECUTED 40043b5c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4002cf1c : #include int sigemptyset( sigset_t *set ) { 4002cf1c: 9d e3 bf a0 save %sp, -96, %sp if ( !set ) 4002cf20: 80 a6 20 00 cmp %i0, 0 4002cf24: 02 80 00 05 be 4002cf38 <== NEVER TAKEN 4002cf28: 01 00 00 00 nop rtems_set_errno_and_return_minus_one( EINVAL ); *set = 0; 4002cf2c: c0 26 00 00 clr [ %i0 ] return 0; } 4002cf30: 81 c7 e0 08 ret 4002cf34: 91 e8 20 00 restore %g0, 0, %o0 rtems_set_errno_and_return_minus_one( EINVAL ); 4002cf38: 7f ff bb 72 call 4001bd00 <__errno> <== NOT EXECUTED 4002cf3c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4002cf40: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4002cf44: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4002cf48: 81 c7 e0 08 ret <== NOT EXECUTED 4002cf4c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40043b94 : /* * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. */ #if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); 40043b94: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 40043b98: 40 00 53 84 call 400589a8 <== NOT EXECUTED 40043b9c: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED