=============================================================================== 0004c908 : uint32_t TOD_MICROSECONDS_TO_TICKS( uint32_t microseconds ) { return (microseconds / rtems_configuration_get_microseconds_per_tick()); } 4c908: 41f9 0006 3e20 lea 63e20 ,%a0 <== NOT EXECUTED #include uint32_t TOD_MICROSECONDS_TO_TICKS( uint32_t microseconds ) { 4c90e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (microseconds / rtems_configuration_get_microseconds_per_tick()); } 4c912: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c916: 4e5e unlk %fp <== NOT EXECUTED 4c918: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED ... =============================================================================== 00047fb0 : #include uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t milliseconds ) { 47fb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (milliseconds / rtems_configuration_get_milliseconds_per_tick()); 47fb4: 2039 0005 f9a0 movel 5f9a0 ,%d0 <== NOT EXECUTED #include uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t milliseconds ) { 47fba: 2f02 movel %d2,%sp@- <== NOT EXECUTED return (milliseconds / rtems_configuration_get_milliseconds_per_tick()); 47fbc: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 47fc2: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED } 47fc6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47fca: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 47fce: 2002 movel %d2,%d0 <== NOT EXECUTED 47fd0: 241f movel %sp@+,%d2 <== NOT EXECUTED 47fd2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e670 : uint32_t TOD_TICKS_PER_SECOND_method(void) { return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); } 4e670: 41f9 0005 e3d0 lea 5e3d0 ,%a0 <== NOT EXECUTED #include #include #include uint32_t TOD_TICKS_PER_SECOND_method(void) { 4e676: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); } 4e67a: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4e680: 4e5e unlk %fp <== NOT EXECUTED 4e682: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED =============================================================================== 00046e9c <_API_Mutex_Unlock>: #include void _API_Mutex_Unlock( API_Mutex_Control *the_mutex ) { 46e9c: 4e56 0000 linkw %fp,#0 rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46ea0: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 46ea6: 5280 addql #1,%d0 46ea8: 206e 0008 moveal %fp@(8),%a0 46eac: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); _CORE_mutex_Surrender( 46eb2: 42a7 clrl %sp@- 46eb4: 2f28 0008 movel %a0@(8),%sp@- 46eb8: 4868 0010 pea %a0@(16) 46ebc: 4eb9 0004 71a4 jsr 471a4 <_CORE_mutex_Surrender> &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 46ec2: 4fef 000c lea %sp@(12),%sp } 46ec6: 4e5e unlk %fp _CORE_mutex_Surrender( &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 46ec8: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch> ... =============================================================================== 00046d76 <_API_extensions_Run_postdriver>: * * _API_extensions_Run_postdriver */ void _API_extensions_Run_postdriver( void ) { 46d76: 4e56 0000 linkw %fp,#0 46d7a: 2f0a movel %a2,%sp@- the_extension = (API_extensions_Control *) the_node; (*the_extension->postswitch_hook)( _Thread_Executing ); } } 46d7c: 2479 0005 fdf4 moveal 5fdf4 <_API_extensions_List>,%a2 void _API_extensions_Run_postdriver( void ) { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); 46d82: b5fc 0005 fdf8 cmpal #392696,%a2 46d88: 6710 beqs 46d9a <_API_extensions_Run_postdriver+0x24><== NEVER TAKEN * Currently all APIs configure this hook so it is always non-NULL. */ #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) if ( the_extension->postdriver_hook ) #endif (*the_extension->postdriver_hook)(); 46d8a: 206a 0008 moveal %a2@(8),%a0 46d8e: 4e90 jsr %a0@ Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { 46d90: 2452 moveal %a2@,%a2 void _API_extensions_Run_postdriver( void ) { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); 46d92: b5fc 0005 fdf8 cmpal #392696,%a2 46d98: 66f0 bnes 46d8a <_API_extensions_Run_postdriver+0x14> #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) if ( the_extension->postdriver_hook ) #endif (*the_extension->postdriver_hook)(); } } 46d9a: 246e fffc moveal %fp@(-4),%a2 46d9e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046da2 <_API_extensions_Run_postswitch>: * * _API_extensions_Run_postswitch */ void _API_extensions_Run_postswitch( void ) { 46da2: 4e56 0000 linkw %fp,#0 46da6: 2f0a movel %a2,%sp@- the_extension = (API_extensions_Control *) the_node; (*the_extension->postswitch_hook)( _Thread_Executing ); } } 46da8: 2479 0005 fdf4 moveal 5fdf4 <_API_extensions_List>,%a2 void _API_extensions_Run_postswitch( void ) { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); 46dae: b5fc 0005 fdf8 cmpal #392696,%a2 46db4: 6718 beqs 46dce <_API_extensions_Run_postswitch+0x2c><== NEVER TAKEN !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (API_extensions_Control *) the_node; (*the_extension->postswitch_hook)( _Thread_Executing ); 46db6: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@- 46dbc: 206a 000c moveal %a2@(12),%a0 46dc0: 4e90 jsr %a0@ Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { 46dc2: 2452 moveal %a2@,%a2 void _API_extensions_Run_postswitch( void ) { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _Chain_First( &_API_extensions_List ); 46dc4: 588f addql #4,%sp 46dc6: b5fc 0005 fdf8 cmpal #392696,%a2 46dcc: 66e8 bnes 46db6 <_API_extensions_Run_postswitch+0x14> the_extension = (API_extensions_Control *) the_node; (*the_extension->postswitch_hook)( _Thread_Executing ); } } 46dce: 246e fffc moveal %fp@(-4),%a2 46dd2: 4e5e unlk %fp ... =============================================================================== 00050af4 <_Barrier_Translate_core_barrier_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Barrier_Translate_core_barrier_return_code_[the_barrier_status]; 50af4: 41f9 0006 0fc8 lea 60fc8 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Barrier_Translate_core_barrier_return_code ( CORE_barrier_Status the_barrier_status ) { 50afa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Barrier_Translate_core_barrier_return_code_[the_barrier_status]; } 50afe: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 50b02: 4e5e unlk %fp <== NOT EXECUTED 50b04: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 000495ec <_CORE_RWLock_Initialize>: void _CORE_RWLock_Initialize( CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { 495ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 495f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; _Thread_queue_Initialize( 495f4: 4878 0003 pea 3 <== NOT EXECUTED CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { the_rwlock->Attributes = *the_rwlock_attributes; 495f8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; _Thread_queue_Initialize( 495fc: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { the_rwlock->Attributes = *the_rwlock_attributes; 49602: 2151 0040 movel %a1@,%a0@(64) <== NOT EXECUTED the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; _Thread_queue_Initialize( 49606: 42a7 clrl %sp@- <== NOT EXECUTED the_rwlock->Attributes = *the_rwlock_attributes; /* the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; 49608: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; 4960c: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED _Thread_queue_Initialize( 49610: 2f08 movel %a0,%sp@- <== NOT EXECUTED 49612: 4eb9 0004 b7e8 jsr 4b7e8 <_Thread_queue_Initialize> <== NOT EXECUTED 49618: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED &the_rwlock->Wait_queue, THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_RWLOCK, CORE_RWLOCK_TIMEOUT ); } 4961c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049620 <_CORE_RWLock_Obtain_for_reading>: * If unlocked, then OK to read. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 49620: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 49626: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4962a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4962e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49632: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 49636: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 4963a: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 4963e: 2679 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED * If unlocked, then OK to read. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 49644: 40c2 movew %sr,%d2 <== NOT EXECUTED 49646: 8082 orl %d2,%d0 <== NOT EXECUTED 49648: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 4964a: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 4964e: 661a bnes 4966a <_CORE_RWLock_Obtain_for_reading+0x4a><== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; 49650: 7001 moveq #1,%d0 <== NOT EXECUTED the_rwlock->number_of_readers += 1; 49652: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED */ _ISR_Disable( level ); switch ( the_rwlock->current_state ) { case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; 49656: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED the_rwlock->number_of_readers += 1; _ISR_Enable( level ); 4965a: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 4965c: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 49660: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49666: 4e5e unlk %fp <== NOT EXECUTED 49668: 4e75 rts <== NOT EXECUTED * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); switch ( the_rwlock->current_state ) { 4966a: 7201 moveq #1,%d1 <== NOT EXECUTED 4966c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4966e: 674e beqs 496be <_CORE_RWLock_Obtain_for_reading+0x9e><== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 49670: 4a03 tstb %d3 <== NOT EXECUTED 49672: 6612 bnes 49686 <_CORE_RWLock_Obtain_for_reading+0x66><== NOT EXECUTED _ISR_Enable( level ); 49674: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 49676: 7202 moveq #2,%d1 <== NOT EXECUTED 49678: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4967c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49682: 4e5e unlk %fp <== NOT EXECUTED 49684: 4e75 rts <== NOT EXECUTED 49686: 7001 moveq #1,%d0 <== NOT EXECUTED 49688: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED /* * We need to wait to enter this critical section */ _Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue ); executing->Wait.queue = &the_rwlock->Wait_queue; 4968c: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED executing->Wait.id = id; 49690: 2745 0020 movel %d5,%a3@(32) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; 49694: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 49698: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED _ISR_Enable( level ); 4969c: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 4969e: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 496a2: 223c 0004 984c movel #301132,%d1 <== NOT EXECUTED 496a8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 496ac: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); _Thread_queue_Enqueue_with_handler( 496b2: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 496b6: 4e5e unlk %fp <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); _Thread_queue_Enqueue_with_handler( 496b8: 4ef9 0004 b3a0 jmp 4b3a0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; return; case CORE_RWLOCK_LOCKED_FOR_READING: { Thread_Control *waiter; waiter = _Thread_queue_First( &the_rwlock->Wait_queue ); 496be: 2f0a movel %a2,%sp@- <== NOT EXECUTED 496c0: 4eb9 0004 b744 jsr 4b744 <_Thread_queue_First> <== NOT EXECUTED if ( !waiter ) { 496c6: 588f addql #4,%sp <== NOT EXECUTED 496c8: 4a80 tstl %d0 <== NOT EXECUTED 496ca: 66a4 bnes 49670 <_CORE_RWLock_Obtain_for_reading+0x50><== NOT EXECUTED the_rwlock->number_of_readers += 1; 496cc: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _ISR_Enable( level ); 496d0: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 496d2: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 496d6: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 496dc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000496e0 <_CORE_RWLock_Obtain_for_writing>: * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 496e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 496e6: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 496ea: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 496ee: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 496f2: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 496f6: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 496fa: 2279 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 49700: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 49704: 40c1 movew %sr,%d1 <== NOT EXECUTED 49706: 8081 orl %d1,%d0 <== NOT EXECUTED 49708: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 4970a: 4aa8 0044 tstl %a0@(68) <== NOT EXECUTED 4970e: 6614 bnes 49724 <_CORE_RWLock_Obtain_for_writing+0x44><== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 49710: 7002 moveq #2,%d0 <== NOT EXECUTED 49712: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED _ISR_Enable( level ); 49716: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 49718: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4971c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 49720: 4e5e unlk %fp <== NOT EXECUTED 49722: 4e75 rts <== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 49724: 4a02 tstb %d2 <== NOT EXECUTED 49726: 6610 bnes 49738 <_CORE_RWLock_Obtain_for_writing+0x58><== NOT EXECUTED _ISR_Enable( level ); 49728: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 4972a: 7002 moveq #2,%d0 <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4972c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 49730: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 49734: 4e5e unlk %fp <== NOT EXECUTED 49736: 4e75 rts <== NOT EXECUTED 49738: 7001 moveq #1,%d0 <== NOT EXECUTED 4973a: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED /* * We need to wait to enter this critical section */ _Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue ); executing->Wait.queue = &the_rwlock->Wait_queue; 4973e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 49742: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; 49746: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 4974a: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _ISR_Enable( level ); 4974e: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 49750: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 49754: 203c 0004 984c movel #301132,%d0 <== NOT EXECUTED 4975a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4975e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); _Thread_queue_Enqueue_with_handler( 49762: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 49766: 4e5e unlk %fp <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); _Thread_queue_Enqueue_with_handler( 49768: 4ef9 0004 b3a0 jmp 4b3a0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED ... =============================================================================== 00049770 <_CORE_RWLock_Release>: * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 49770: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 49776: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 4977a: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 49780: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 49784: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 49788: 40c1 movew %sr,%d1 <== NOT EXECUTED 4978a: 8081 orl %d1,%d0 <== NOT EXECUTED 4978c: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){ 4978e: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 49792: 6700 0090 beqw 49824 <_CORE_RWLock_Release+0xb4> <== NOT EXECUTED _ISR_Enable( level ); executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; return CORE_RWLOCK_SUCCESSFUL; } if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) { 49796: 7401 moveq #1,%d2 <== NOT EXECUTED 49798: b480 cmpl %d0,%d2 <== NOT EXECUTED 4979a: 676e beqs 4980a <_CORE_RWLock_Release+0x9a> <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; } } /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */ executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 4979c: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED /* * Implicitly transition to "unlocked" and find another thread interested * in obtaining this rwlock. */ the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; 497a0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED _ISR_Enable( level ); 497a4: 46c1 movew %d1,%sr <== NOT EXECUTED next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue ); 497a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497a8: 4eb9 0004 b228 jsr 4b228 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( next ) { 497ae: 588f addql #4,%sp <== NOT EXECUTED 497b0: 4a80 tstl %d0 <== NOT EXECUTED 497b2: 674a beqs 497fe <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) { 497b4: 7201 moveq #1,%d1 <== NOT EXECUTED 497b6: 2040 moveal %d0,%a0 <== NOT EXECUTED 497b8: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED 497bc: 677c beqs 4983a <_CORE_RWLock_Release+0xca> <== NOT EXECUTED /* * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING */ the_rwlock->number_of_readers += 1; the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; 497be: 7201 moveq #1,%d1 <== NOT EXECUTED } /* * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING */ the_rwlock->number_of_readers += 1; 497c0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED 497c4: 47f9 0004 b744 lea 4b744 <_Thread_queue_First>,%a3 <== NOT EXECUTED next = _Thread_queue_First( &the_rwlock->Wait_queue ); if ( !next || next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) return CORE_RWLOCK_SUCCESSFUL; the_rwlock->number_of_readers += 1; _Thread_queue_Extract( &the_rwlock->Wait_queue, next ); 497ca: 49f9 0004 b5ec lea 4b5ec <_Thread_queue_Extract>,%a4 <== NOT EXECUTED /* * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING */ the_rwlock->number_of_readers += 1; the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; 497d0: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 497d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497d6: 4e93 jsr %a3@ <== NOT EXECUTED if ( !next || 497d8: 588f addql #4,%sp <== NOT EXECUTED 497da: 4a80 tstl %d0 <== NOT EXECUTED 497dc: 6720 beqs 497fe <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED 497de: 7401 moveq #1,%d2 <== NOT EXECUTED 497e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 497e2: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED 497e6: 6716 beqs 497fe <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) return CORE_RWLOCK_SUCCESSFUL; the_rwlock->number_of_readers += 1; 497e8: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _Thread_queue_Extract( &the_rwlock->Wait_queue, next ); 497ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 497ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497f0: 4e94 jsr %a4@ <== NOT EXECUTED } 497f2: 508f addql #8,%sp <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 497f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497f6: 4e93 jsr %a3@ <== NOT EXECUTED if ( !next || 497f8: 588f addql #4,%sp <== NOT EXECUTED 497fa: 4a80 tstl %d0 <== NOT EXECUTED 497fc: 66e0 bnes 497de <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 497fe: 4280 clrl %d0 <== NOT EXECUTED 49800: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49806: 4e5e unlk %fp <== NOT EXECUTED 49808: 4e75 rts <== NOT EXECUTED _ISR_Enable( level ); executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; return CORE_RWLOCK_SUCCESSFUL; } if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) { the_rwlock->number_of_readers -= 1; 4980a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4980e: 5380 subql #1,%d0 <== NOT EXECUTED 49810: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED if ( the_rwlock->number_of_readers != 0 ) { 49814: 6786 beqs 4979c <_CORE_RWLock_Release+0x2c> <== NOT EXECUTED /* must be unlocked again */ _ISR_Enable( level ); 49816: 46c1 movew %d1,%sr <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 49818: 4280 clrl %d0 <== NOT EXECUTED 4981a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49820: 4e5e unlk %fp <== NOT EXECUTED 49822: 4e75 rts <== NOT EXECUTED * If any thread is waiting, then we wait. */ _ISR_Disable( level ); if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){ _ISR_Enable( level ); 49824: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 49826: 103c 0002 moveb #2,%d0 <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 4982a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED */ _ISR_Disable( level ); if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){ _ISR_Enable( level ); executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 49830: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 49834: 4280 clrl %d0 <== NOT EXECUTED 49836: 4e5e unlk %fp <== NOT EXECUTED 49838: 4e75 rts <== NOT EXECUTED next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue ); if ( next ) { if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) { the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 4983a: 7002 moveq #2,%d0 <== NOT EXECUTED 4983c: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 49840: 4280 clrl %d0 <== NOT EXECUTED 49842: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49848: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004984c <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) { 4984c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 49850: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49854: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49858: 4eb9 0004 aeec jsr 4aeec <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4985e: 508f addql #8,%sp <== NOT EXECUTED 49860: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49864: 6618 bnes 4987e <_CORE_RWLock_Timeout+0x32> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* impossible */ #endif break; case OBJECTS_LOCAL: _Thread_queue_Process_timeout( the_thread ); 49866: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49868: 4eb9 0004 b880 jsr 4b880 <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4986e: 588f addql #4,%sp <== NOT EXECUTED 49870: 2039 0006 2ddc movel 62ddc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49876: 5380 subql #1,%d0 <== NOT EXECUTED 49878: 23c0 0006 2ddc movel %d0,62ddc <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 4987e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d704 <_CORE_barrier_Release>: #else Objects_Id id __attribute__((unused)), CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused)) #endif ) { 4d704: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d708: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4d70c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4d710: 47f9 0004 9f98 lea 49f98 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED Thread_Control *the_thread; uint32_t count; count = 0; 4d716: 4282 clrl %d2 <== NOT EXECUTED while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) { 4d718: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d71a: 4e93 jsr %a3@ <== NOT EXECUTED 4d71c: 588f addql #4,%sp <== NOT EXECUTED 4d71e: 4a80 tstl %d0 <== NOT EXECUTED 4d720: 670c beqs 4d72e <_CORE_barrier_Release+0x2a> <== NOT EXECUTED 4d722: 2f0a movel %a2,%sp@- <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_barrier_mp_support) ( the_thread, id ); #endif count++; 4d724: 5282 addql #1,%d2 <== NOT EXECUTED { Thread_Control *the_thread; uint32_t count; count = 0; while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) { 4d726: 4e93 jsr %a3@ <== NOT EXECUTED 4d728: 588f addql #4,%sp <== NOT EXECUTED 4d72a: 4a80 tstl %d0 <== NOT EXECUTED 4d72c: 66f4 bnes 4d722 <_CORE_barrier_Release+0x1e> <== NOT EXECUTED #endif count++; } the_barrier->number_of_waiting_threads = 0; return count; } 4d72e: 2002 movel %d2,%d0 <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_barrier_mp_support) ( the_thread, id ); #endif count++; } the_barrier->number_of_waiting_threads = 0; 4d730: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED return count; } 4d734: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4d73a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048250 <_CORE_barrier_Wait>: Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 48250: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 48256: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 4825a: 2279 0006 19a6 moveal 619a6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 48260: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 48264: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; 48268: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 4826c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 48270: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48274: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 48278: 40c1 movew %sr,%d1 <== NOT EXECUTED 4827a: 8081 orl %d1,%d0 <== NOT EXECUTED 4827c: 46c0 movew %d0,%sr <== NOT EXECUTED the_barrier->number_of_waiting_threads++; 4827e: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 48282: 5280 addql #1,%d0 <== NOT EXECUTED 48284: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { 48288: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 4828c: 6606 bnes 48294 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED if ( the_barrier->number_of_waiting_threads == 4828e: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED 48292: 672e beqs 482c2 <_CORE_barrier_Wait+0x72> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 48294: 7001 moveq #1,%d0 <== NOT EXECUTED 48296: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED return; } } _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue ); executing->Wait.queue = &the_barrier->Wait_queue; 4829a: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 4829e: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED _ISR_Enable( level ); 482a2: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 482a4: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 482a8: 203c 0004 a4d4 movel #304340,%d0 <== NOT EXECUTED 482ae: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 482b2: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue ); executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 482b6: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED } 482ba: 4e5e unlk %fp <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue ); executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 482bc: 4ef9 0004 a110 jmp 4a110 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _ISR_Disable( level ); the_barrier->number_of_waiting_threads++; if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; 482c2: 7001 moveq #1,%d0 <== NOT EXECUTED 482c4: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _ISR_Enable( level ); 482c8: 46c1 movew %d1,%sr <== NOT EXECUTED _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 482ca: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 482ce: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); } 482d2: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; _ISR_Enable( level ); _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 482d6: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); } 482da: 4e5e unlk %fp <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; _ISR_Enable( level ); _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 482dc: 4ef9 0004 d704 jmp 4d704 <_CORE_barrier_Release> <== NOT EXECUTED ... =============================================================================== 00059d3c <_CORE_message_queue_Broadcast>: Objects_Id id __attribute__((unused)), CORE_message_queue_API_mp_support_callout api_message_queue_mp_support __attribute__((unused)), #endif uint32_t *count ) { 59d3c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 59d40: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 59d44: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 59d48: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 59d4c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 59d50: 2a2e 001c movel %fp@(28),%d5 <== NOT EXECUTED Thread_Control *the_thread; uint32_t number_broadcasted; Thread_Wait_information *waitp; if ( size > the_message_queue->maximum_message_size ) { 59d54: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED 59d58: 6262 bhis 59dbc <_CORE_message_queue_Broadcast+0x80><== NOT EXECUTED * NOTE: This check is critical because threads can block on * send and receive and this ensures that we are broadcasting * the message to threads waiting to receive -- not to send. */ if ( the_message_queue->number_of_pending_messages != 0 ) { 59d5a: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED 59d5e: 664c bnes 59dac <_CORE_message_queue_Broadcast+0x70><== NOT EXECUTED /* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread = 59d60: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59d62: 49f9 0005 c7fc lea 5c7fc <_Thread_queue_Dequeue>,%a4 <== NOT EXECUTED * NOTE: This check is critical because threads can block on * send and receive and this ensures that we are broadcasting * the message to threads waiting to receive -- not to send. */ if ( the_message_queue->number_of_pending_messages != 0 ) { 59d68: 4283 clrl %d3 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 59d6a: 4bf9 0006 2b5c lea 62b5c ,%a5 <== NOT EXECUTED /* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread = 59d70: 4e94 jsr %a4@ <== NOT EXECUTED 59d72: 588f addql #4,%sp <== NOT EXECUTED 59d74: 2440 moveal %d0,%a2 <== NOT EXECUTED 59d76: 4a80 tstl %d0 <== NOT EXECUTED 59d78: 6722 beqs 59d9c <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED 59d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) { waitp = &the_thread->Wait; number_broadcasted += 1; 59d7c: 5283 addql #1,%d3 <== NOT EXECUTED 59d7e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 59d80: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 59d84: 4e95 jsr %a5@ <== NOT EXECUTED buffer, waitp->return_argument_second.mutable_object, size ); *(size_t *) the_thread->Wait.return_argument = size; 59d86: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 59d8a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 59d8e: 2082 movel %d2,%a0@ <== NOT EXECUTED /* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread = 59d90: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59d92: 4e94 jsr %a4@ <== NOT EXECUTED 59d94: 588f addql #4,%sp <== NOT EXECUTED 59d96: 2440 moveal %d0,%a2 <== NOT EXECUTED 59d98: 4a80 tstl %d0 <== NOT EXECUTED 59d9a: 66de bnes 59d7a <_CORE_message_queue_Broadcast+0x3e><== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif } *count = number_broadcasted; 59d9c: 2045 moveal %d5,%a0 <== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 59d9e: 4280 clrl %d0 <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif } *count = number_broadcasted; 59da0: 2083 movel %d3,%a0@ <== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 59da2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59da8: 4e5e unlk %fp <== NOT EXECUTED 59daa: 4e75 rts <== NOT EXECUTED * send and receive and this ensures that we are broadcasting * the message to threads waiting to receive -- not to send. */ if ( the_message_queue->number_of_pending_messages != 0 ) { *count = 0; 59dac: 2045 moveal %d5,%a0 <== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 59dae: 4280 clrl %d0 <== NOT EXECUTED #endif } *count = number_broadcasted; return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 59db0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED * send and receive and this ensures that we are broadcasting * the message to threads waiting to receive -- not to send. */ if ( the_message_queue->number_of_pending_messages != 0 ) { *count = 0; 59db6: 4290 clrl %a0@ <== NOT EXECUTED #endif } *count = number_broadcasted; return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 59db8: 4e5e unlk %fp <== NOT EXECUTED 59dba: 4e75 rts <== NOT EXECUTED Thread_Control *the_thread; uint32_t number_broadcasted; Thread_Wait_information *waitp; if ( size > the_message_queue->maximum_message_size ) { return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE; 59dbc: 7001 moveq #1,%d0 <== NOT EXECUTED #endif } *count = number_broadcasted; return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 59dbe: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59dc4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e4f4 <_CORE_message_queue_Close>: void _CORE_message_queue_Close( CORE_message_queue_Control *the_message_queue, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 4e4f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e4f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * This will flush blocked threads whether they were blocked on * a send or receive. */ _Thread_queue_Flush( 4e4fa: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e4fe: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED void _CORE_message_queue_Close( CORE_message_queue_Control *the_message_queue, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 4e502: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * This will flush blocked threads whether they were blocked on * a send or receive. */ _Thread_queue_Flush( 4e506: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e508: 4eb9 0005 0974 jsr 50974 <_Thread_queue_Flush> <== NOT EXECUTED * This removes all messages from the pending message queue. Since * we just flushed all waiting threads, we don't have to worry about * the flush satisfying any blocked senders as a side-effect. */ if ( the_message_queue->number_of_pending_messages != 0 ) 4e50e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4e512: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4e516: 6612 bnes 4e52a <_CORE_message_queue_Close+0x36> <== NOT EXECUTED (void) _CORE_message_queue_Flush_support( the_message_queue ); (void) _Workspace_Free( the_message_queue->message_buffers ); 4e518: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED } 4e51e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e522: 4e5e unlk %fp <== NOT EXECUTED */ if ( the_message_queue->number_of_pending_messages != 0 ) (void) _CORE_message_queue_Flush_support( the_message_queue ); (void) _Workspace_Free( the_message_queue->message_buffers ); 4e524: 4ef9 0005 1552 jmp 51552 <_Workspace_Free> <== NOT EXECUTED * we just flushed all waiting threads, we don't have to worry about * the flush satisfying any blocked senders as a side-effect. */ if ( the_message_queue->number_of_pending_messages != 0 ) (void) _CORE_message_queue_Flush_support( the_message_queue ); 4e52a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e52c: 4eb9 0004 e548 jsr 4e548 <_CORE_message_queue_Flush_support><== NOT EXECUTED (void) _Workspace_Free( the_message_queue->message_buffers ); 4e532: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED * we just flushed all waiting threads, we don't have to worry about * the flush satisfying any blocked senders as a side-effect. */ if ( the_message_queue->number_of_pending_messages != 0 ) (void) _CORE_message_queue_Flush_support( the_message_queue ); 4e538: 588f addql #4,%sp <== NOT EXECUTED (void) _Workspace_Free( the_message_queue->message_buffers ); } 4e53a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e53e: 4e5e unlk %fp <== NOT EXECUTED */ if ( the_message_queue->number_of_pending_messages != 0 ) (void) _CORE_message_queue_Flush_support( the_message_queue ); (void) _Workspace_Free( the_message_queue->message_buffers ); 4e540: 4ef9 0005 1552 jmp 51552 <_Workspace_Free> <== NOT EXECUTED ... =============================================================================== 00059e1c <_CORE_message_queue_Flush>: */ uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue ) { 59e1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 59e20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages != 0 ) 59e24: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED 59e28: 6606 bnes 59e30 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED return _CORE_message_queue_Flush_support( the_message_queue ); else return 0; } 59e2a: 4280 clrl %d0 <== NOT EXECUTED 59e2c: 4e5e unlk %fp <== NOT EXECUTED 59e2e: 4e75 rts <== NOT EXECUTED 59e30: 4e5e unlk %fp <== NOT EXECUTED uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue ) { if ( the_message_queue->number_of_pending_messages != 0 ) return _CORE_message_queue_Flush_support( the_message_queue ); 59e32: 4ef9 0005 9e38 jmp 59e38 <_CORE_message_queue_Flush_support><== NOT EXECUTED =============================================================================== 0004e548 <_CORE_message_queue_Flush_support>: * * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); 4e548: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ uint32_t _CORE_message_queue_Flush_support( CORE_message_queue_Control *the_message_queue ) { 4e54e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e552: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e556: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED * * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); 4e55a: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e55c: 8081 orl %d1,%d0 <== NOT EXECUTED 4e55e: 46c0 movew %d0,%sr <== NOT EXECUTED count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; _ISR_Enable( level ); return count; } 4e560: 2668 0050 moveal %a0@(80),%a3 <== NOT EXECUTED * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); 4e564: 49e8 0068 lea %a0@(104),%a4 <== NOT EXECUTED count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; _ISR_Enable( level ); return count; } 4e568: 2268 0058 moveal %a0@(88),%a1 <== NOT EXECUTED inactive_first->previous = message_queue_last; message_queue_first->previous = inactive_head; _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; 4e56c: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); inactive_first = inactive_head->next;; 4e570: 2468 0068 moveal %a0@(104),%a2 <== NOT EXECUTED message_queue_first = _Chain_First( &the_message_queue->Pending_messages ); message_queue_last = _Chain_Last( &the_message_queue->Pending_messages ); inactive_head->next = message_queue_first; 4e574: 214b 0068 movel %a3,%a0@(104) <== NOT EXECUTED message_queue_last->next = inactive_first; inactive_first->previous = message_queue_last; 4e578: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED inactive_first = inactive_head->next;; message_queue_first = _Chain_First( &the_message_queue->Pending_messages ); message_queue_last = _Chain_Last( &the_message_queue->Pending_messages ); inactive_head->next = message_queue_first; message_queue_last->next = inactive_first; 4e57c: 228a movel %a2,%a1@ <== NOT EXECUTED * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); 4e57e: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4e582: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); 4e586: 49e8 0054 lea %a0@(84),%a4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4e58a: 214b 0058 movel %a3,%a0@(88) <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); 4e58e: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED head->next = tail; head->previous = NULL; 4e592: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED message_queue_first->previous = inactive_head; _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; 4e596: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED _ISR_Enable( level ); 4e59a: 46c1 movew %d1,%sr <== NOT EXECUTED return count; } 4e59c: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 4e5a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00050154 <_CORE_message_queue_Initialize>: /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 50154: 7203 moveq #3,%d1 <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) { 50156: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5015a: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 5015e: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 50162: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50166: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 5016a: c280 andl %d0,%d1 <== NOT EXECUTED ) { size_t message_buffering_required; size_t allocated_message_size; the_message_queue->maximum_pending_messages = maximum_pending_messages; 5016c: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED the_message_queue->number_of_pending_messages = 0; 50170: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED the_message_queue->maximum_message_size = maximum_message_size; 50174: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 50178: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 5017c: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 50180: 4a81 tstl %d1 <== NOT EXECUTED 50182: 6718 beqs 5019c <_CORE_message_queue_Initialize+0x48><== NOT EXECUTED allocated_message_size += sizeof(uint32_t); 50184: 2200 movel %d0,%d1 <== NOT EXECUTED 50186: 5881 addql #4,%d1 <== NOT EXECUTED allocated_message_size &= ~(sizeof(uint32_t) - 1); 50188: 76fc moveq #-4,%d3 <== NOT EXECUTED 5018a: c283 andl %d3,%d1 <== NOT EXECUTED } if (allocated_message_size < maximum_message_size) 5018c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5018e: 640e bccs 5019e <_CORE_message_queue_Initialize+0x4a><== NOT EXECUTED STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; } 50190: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) return false; 50196: 4200 clrb %d0 <== NOT EXECUTED STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; } 50198: 4e5e unlk %fp <== NOT EXECUTED 5019a: 4e75 rts <== NOT EXECUTED /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 5019c: 2200 movel %d0,%d1 <== NOT EXECUTED /* * Calculate how much total memory is required for message buffering and * check for overflow on the multiplication. */ message_buffering_required = (size_t) maximum_pending_messages * (allocated_message_size + sizeof(CORE_message_queue_Buffer_control)); 5019e: 2601 movel %d1,%d3 <== NOT EXECUTED 501a0: 0683 0000 0014 addil #20,%d3 <== NOT EXECUTED /* * Calculate how much total memory is required for message buffering and * check for overflow on the multiplication. */ message_buffering_required = (size_t) maximum_pending_messages * 501a6: 2003 movel %d3,%d0 <== NOT EXECUTED 501a8: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED (allocated_message_size + sizeof(CORE_message_queue_Buffer_control)); if (message_buffering_required < allocated_message_size) 501ac: b280 cmpl %d0,%d1 <== NOT EXECUTED 501ae: 62e0 bhis 50190 <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) _Workspace_Allocate( message_buffering_required ); 501b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501b2: 4eb9 0005 30fa jsr 530fa <_Workspace_Allocate> <== NOT EXECUTED if (the_message_queue->message_buffers == 0) 501b8: 588f addql #4,%sp <== NOT EXECUTED return false; /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) 501ba: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) 501be: 67d0 beqs 50190 <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED /* * Initialize the pool of inactive messages, pending messages, * and set of waiting threads. */ _Chain_Initialize ( 501c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 501c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 501c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501c6: 486a 0068 pea %a2@(104) <== NOT EXECUTED 501ca: 4eb9 0005 5994 jsr 55994 <_Chain_Initialize> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 501d0: 41ea 0054 lea %a2@(84),%a0 <== NOT EXECUTED allocated_message_size + sizeof( CORE_message_queue_Buffer_control ) ); _Chain_Initialize_empty( &the_message_queue->Pending_messages ); _Thread_queue_Initialize( 501d4: 7001 moveq #1,%d0 <== NOT EXECUTED 501d6: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 501da: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED 501de: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED 501e2: 4878 0006 pea 6 <== NOT EXECUTED 501e6: 4878 0080 pea 80 <== NOT EXECUTED 501ea: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 501ee: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED 501f2: b090 cmpl %a0@,%d0 <== NOT EXECUTED 501f4: 57c0 seq %d0 <== NOT EXECUTED 501f6: 49c0 extbl %d0 <== NOT EXECUTED 501f8: 4480 negl %d0 <== NOT EXECUTED 501fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 501fe: 4eb9 0005 2678 jsr 52678 <_Thread_queue_Initialize> <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; 50204: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED } 50208: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; 5020e: 7001 moveq #1,%d0 <== NOT EXECUTED } 50210: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00055a08 <_CORE_message_queue_Insert_message>: void _CORE_message_queue_Insert_message( CORE_message_queue_Control *the_message_queue, CORE_message_queue_Buffer_control *the_message, CORE_message_queue_Submit_types submit_type ) { 55a08: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 55a0c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 55a10: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 55a14: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 55a18: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 55a1c: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); else _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { 55a20: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 55a26: 677a beqs 55aa2 <_CORE_message_queue_Insert_message+0x9a><== NOT EXECUTED _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { 55a28: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED 55a2e: 6700 00a8 beqw 55ad8 <_CORE_message_queue_Insert_message+0xd0><== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 55a32: 2208 movel %a0,%d1 <== NOT EXECUTED 55a34: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED * the message is actually in the queue at this point. */ if ( notify && the_message_queue->notify_handler ) (*the_message_queue->notify_handler)(the_message_queue->notify_argument); #endif } 55a3a: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED int the_priority; the_priority = _CORE_message_queue_Get_message_priority(the_message); the_header = &the_message_queue->Pending_messages; the_node = _Chain_First( the_header ); while ( !_Chain_Is_tail( the_header, the_node ) ) { 55a3e: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55a40: 670c beqs 55a4e <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED this_message = (CORE_message_queue_Buffer_control *) the_node; this_priority = _CORE_message_queue_Get_message_priority(this_message); if ( this_priority <= the_priority ) { 55a42: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 55a46: 6d06 blts 55a4e <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED the_node = the_node->next; 55a48: 2452 moveal %a2@,%a2 <== NOT EXECUTED int the_priority; the_priority = _CORE_message_queue_Get_message_priority(the_message); the_header = &the_message_queue->Pending_messages; the_node = _Chain_First( the_header ); while ( !_Chain_Is_tail( the_header, the_node ) ) { 55a4a: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55a4c: 66f4 bnes 55a42 <_CORE_message_queue_Insert_message+0x3a><== NOT EXECUTED the_node = the_node->next; continue; } break; } _ISR_Disable( level ); 55a4e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55a54: 40c1 movew %sr,%d1 <== NOT EXECUTED 55a56: 8081 orl %d1,%d0 <== NOT EXECUTED 55a58: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 55a5a: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED the_message_queue->number_of_pending_messages++; 55a5e: 2400 movel %d0,%d2 <== NOT EXECUTED 55a60: 5282 addql #1,%d2 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55a62: 4a80 tstl %d0 <== NOT EXECUTED 55a64: 57c0 seq %d0 <== NOT EXECUTED break; } _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); 55a66: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55a6a: 4480 negl %d0 <== NOT EXECUTED } break; } _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 55a6c: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 55a70: 2652 moveal %a2@,%a3 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 55a72: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 55a76: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 55a78: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 55a7c: 228b movel %a3,%a1@ <== NOT EXECUTED _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); _ISR_Enable( level ); 55a7e: 46c1 movew %d1,%sr <== NOT EXECUTED /* * According to POSIX, does this happen before or after the message * is actually enqueued. It is logical to think afterwards, because * the message is actually in the queue at this point. */ if ( notify && the_message_queue->notify_handler ) 55a80: 4a00 tstb %d0 <== NOT EXECUTED 55a82: 6716 beqs 55a9a <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED 55a84: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED 55a88: 4a89 tstl %a1 <== NOT EXECUTED 55a8a: 670e beqs 55a9a <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED (*the_message_queue->notify_handler)(the_message_queue->notify_argument); 55a8c: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED #endif } 55a92: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55a96: 4e5e unlk %fp <== NOT EXECUTED * According to POSIX, does this happen before or after the message * is actually enqueued. It is logical to think afterwards, because * the message is actually in the queue at this point. */ if ( notify && the_message_queue->notify_handler ) (*the_message_queue->notify_handler)(the_message_queue->notify_argument); 55a98: 4ed1 jmp %a1@ <== NOT EXECUTED #endif } 55a9a: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55a9e: 4e5e unlk %fp <== NOT EXECUTED 55aa0: 4e75 rts <== NOT EXECUTED else _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { _ISR_Disable( level ); 55aa2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55aa8: 40c1 movew %sr,%d1 <== NOT EXECUTED 55aaa: 8081 orl %d1,%d0 <== NOT EXECUTED 55aac: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 55aae: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED the_message_queue->number_of_pending_messages++; 55ab2: 2400 movel %d0,%d2 <== NOT EXECUTED 55ab4: 5282 addql #1,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 55ab6: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55aba: 4a80 tstl %d0 <== NOT EXECUTED 55abc: 57c0 seq %d0 <== NOT EXECUTED _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 55abe: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED Chain_Node *old_last = tail->previous; 55ac2: 2468 0058 moveal %a0@(88),%a2 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55ac6: 4480 negl %d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 55ac8: 228b movel %a3,%a1@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 55aca: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED old_last->next = the_node; 55ace: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->previous = old_last; 55ad0: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 55ad4: 46c1 movew %d1,%sr <== NOT EXECUTED 55ad6: 60a8 bras 55a80 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { _ISR_Disable( level ); 55ad8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55ade: 40c1 movew %sr,%d1 <== NOT EXECUTED 55ae0: 8081 orl %d1,%d0 <== NOT EXECUTED 55ae2: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 55ae4: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED the_message_queue->number_of_pending_messages++; 55ae8: 2400 movel %d0,%d2 <== NOT EXECUTED 55aea: 5282 addql #1,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node); 55aec: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55af0: 4a80 tstl %d0 <== NOT EXECUTED 55af2: 57c0 seq %d0 <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 55af4: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 55af8: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 55afc: 4480 negl %d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node); 55afe: 234b 0004 movel %a3,%a1@(4) <== NOT EXECUTED { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; 55b02: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 55b06: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 55b0a: 228a movel %a2,%a1@ <== NOT EXECUTED } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 55b0c: 46c1 movew %d1,%sr <== NOT EXECUTED 55b0e: 6000 ff70 braw 55a80 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED ... =============================================================================== 00050214 <_CORE_message_queue_Seize>: CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 50214: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 5021a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; 5021e: 2279 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 50224: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 50228: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5022c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 50230: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 50234: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 50238: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED 5023c: 142e 001b moveb %fp@(27),%d2 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 50240: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _ISR_Disable( level ); 50244: 40c1 movew %sr,%d1 <== NOT EXECUTED 50246: 8081 orl %d1,%d0 <== NOT EXECUTED 50248: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 5024a: 200a movel %a2,%d0 <== NOT EXECUTED 5024c: 0680 0000 0054 addil #84,%d0 <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 50252: 266a 0050 moveal %a2@(80),%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 50256: b08b cmpl %a3,%d0 <== NOT EXECUTED 50258: 6700 0088 beqw 502e2 <_CORE_message_queue_Seize+0xce> <== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 5025c: 2253 moveal %a3@,%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 5025e: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED 50262: 234c 0004 movel %a4,%a1@(4) <== NOT EXECUTED executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); the_message = _CORE_message_queue_Get_pending_message( the_message_queue ); if ( the_message != NULL ) { the_message_queue->number_of_pending_messages -= 1; 50266: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; head->next = new_first; 5026a: 2549 0050 movel %a1,%a2@(80) <== NOT EXECUTED _ISR_Enable( level ); 5026e: 46c1 movew %d1,%sr <== NOT EXECUTED *size_p = the_message->Contents.size; _Thread_Executing->Wait.count = 50270: 2279 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED _CORE_message_queue_Get_message_priority( the_message ); _CORE_message_queue_Copy_buffer( the_message->Contents.buffer, 50276: 240b movel %a3,%d2 <== NOT EXECUTED 50278: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 5027e: 49f9 0005 87e8 lea 587e8 ,%a4 <== NOT EXECUTED the_message = _CORE_message_queue_Get_pending_message( the_message_queue ); if ( the_message != NULL ) { the_message_queue->number_of_pending_messages -= 1; _ISR_Enable( level ); *size_p = the_message->Contents.size; 50284: 20ab 000c movel %a3@(12),%a0@ <== NOT EXECUTED _Thread_Executing->Wait.count = 50288: 236b 0008 0024 movel %a3@(8),%a1@(36) <== NOT EXECUTED 5028e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 50290: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50292: 2f03 movel %d3,%sp@- <== NOT EXECUTED 50294: 4e94 jsr %a4@ <== NOT EXECUTED * is not, then we can go ahead and free the buffer. * * NOTE: If we note that the queue was not full before this receive, * then we can avoid this dequeue. */ the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 50296: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50298: 4eb9 0005 2248 jsr 52248 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( !the_thread ) { 5029e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED * is not, then we can go ahead and free the buffer. * * NOTE: If we note that the queue was not full before this receive, * then we can avoid this dequeue. */ the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 502a2: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !the_thread ) { 502a4: 4a80 tstl %d0 <== NOT EXECUTED 502a6: 6700 0088 beqw 50330 <_CORE_message_queue_Seize+0x11c><== NOT EXECUTED */ _CORE_message_queue_Set_message_priority( the_message, the_thread->Wait.count ); the_message->Contents.size = (size_t) the_thread->Wait.option; 502aa: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message, int priority ) { #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY) the_message->priority = priority; 502ae: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED 502b4: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 502b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 502ba: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 502be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 502c0: 4e94 jsr %a4@ <== NOT EXECUTED the_thread->Wait.return_argument_second.immutable_object, the_message->Contents.buffer, the_message->Contents.size ); _CORE_message_queue_Insert_message( 502c2: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED 502c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 502cc: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 502d0: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 502d4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 502da: 4e5e unlk %fp <== NOT EXECUTED the_thread->Wait.return_argument_second.immutable_object, the_message->Contents.buffer, the_message->Contents.size ); _CORE_message_queue_Insert_message( 502dc: 4ef9 0005 5a08 jmp 55a08 <_CORE_message_queue_Insert_message><== NOT EXECUTED return; } #endif } if ( !wait ) { 502e2: 4a02 tstb %d2 <== NOT EXECUTED 502e4: 6612 bnes 502f8 <_CORE_message_queue_Seize+0xe4> <== NOT EXECUTED _ISR_Enable( level ); 502e6: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 502e8: 7004 moveq #4,%d0 <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 502ea: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED #endif } if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 502f0: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 502f4: 4e5e unlk %fp <== NOT EXECUTED 502f6: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 502f8: 7001 moveq #1,%d0 <== NOT EXECUTED 502fa: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED } _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; executing->Wait.return_argument_second.mutable_object = buffer; 502fe: 2343 002c movel %d3,%a1@(44) <== NOT EXECUTED executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; return; } _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; 50302: 234a 0044 movel %a2,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 50306: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED executing->Wait.return_argument_second.mutable_object = buffer; executing->Wait.return_argument = size_p; 5030a: 2348 0028 movel %a0,%a1@(40) <== NOT EXECUTED /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); 5030e: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 50310: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED 50314: 49f9 0005 2784 lea 52784 <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED 5031a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 5031e: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED } 50322: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 50328: 4e5e unlk %fp <== NOT EXECUTED executing->Wait.return_argument_second.mutable_object = buffer; executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 5032a: 4ef9 0005 23c0 jmp 523c0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer ( CORE_message_queue_Control *the_message_queue, CORE_message_queue_Buffer_control *the_message ) { _Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node ); 50330: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED 50334: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 50338: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 5033c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 50342: 4e5e unlk %fp <== NOT EXECUTED 50344: 4ef9 0005 0088 jmp 50088 <_Chain_Append> <== NOT EXECUTED ... =============================================================================== 0005034c <_CORE_message_queue_Submit>: #endif CORE_message_queue_Submit_types submit_type, bool wait, Watchdog_Interval timeout ) { 5034c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 50350: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 50354: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50358: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 5035c: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED 50360: 162e 0023 moveb %fp@(35),%d3 <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message; Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { 50364: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED 50368: 6228 bhis 50392 <_CORE_message_queue_Submit+0x46><== NOT EXECUTED } /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { 5036a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 5036e: 672e beqs 5039e <_CORE_message_queue_Submit+0x52><== NOT EXECUTED /* * No one waiting on the message queue at this time, so attempt to * queue the message up for a future receive. */ if ( the_message_queue->number_of_pending_messages < 50370: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 50374: 6500 00ba bcsw 50430 <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED /* * No message buffers were available so we may need to return an * overflow error or block the sender until the message is placed * on the queue. */ if ( !wait ) { 50378: 4a03 tstb %d3 <== NOT EXECUTED 5037a: 6700 00f4 beqw 50470 <_CORE_message_queue_Submit+0x124><== NOT EXECUTED /* * Do NOT block on a send if the caller is in an ISR. It is * deadly to block in an ISR. */ if ( _ISR_Is_in_progress() ) { 5037e: 4ab9 0006 a116 tstl 6a116 <_Per_CPU_Information+0x8> <== NOT EXECUTED 50384: 6754 beqs 503da <_CORE_message_queue_Submit+0x8e><== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED; 50386: 7003 moveq #3,%d0 <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 50388: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5038e: 4e5e unlk %fp <== NOT EXECUTED 50390: 4e75 rts <== NOT EXECUTED { CORE_message_queue_Buffer_control *the_message; Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE; 50392: 7001 moveq #1,%d0 <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 50394: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5039a: 4e5e unlk %fp <== NOT EXECUTED 5039c: 4e75 rts <== NOT EXECUTED /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 5039e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 503a0: 4eb9 0005 2248 jsr 52248 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( the_thread ) { 503a6: 588f addql #4,%sp <== NOT EXECUTED /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 503a8: 2640 moveal %d0,%a3 <== NOT EXECUTED if ( the_thread ) { 503aa: 4a80 tstl %d0 <== NOT EXECUTED 503ac: 6700 00ce beqw 5047c <_CORE_message_queue_Submit+0x130><== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 503b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 503b2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 503b6: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 503ba: 4eb9 0005 87e8 jsr 587e8 <== NOT EXECUTED _CORE_message_queue_Copy_buffer( buffer, the_thread->Wait.return_argument_second.mutable_object, size ); *(size_t *) the_thread->Wait.return_argument = size; 503c0: 206b 0028 moveal %a3@(40),%a0 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 503c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 503c8: 4280 clrl %d0 <== NOT EXECUTED _CORE_message_queue_Copy_buffer( buffer, the_thread->Wait.return_argument_second.mutable_object, size ); *(size_t *) the_thread->Wait.return_argument = size; 503ca: 2082 movel %d2,%a0@ <== NOT EXECUTED the_thread->Wait.count = (uint32_t) submit_type; 503cc: 2744 0024 movel %d4,%a3@(36) <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 503d0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 503d6: 4e5e unlk %fp <== NOT EXECUTED 503d8: 4e75 rts <== NOT EXECUTED * Thus the unusual choice to open a new scope and declare * it as a variable. Doing this emphasizes how dangerous it * would be to use this variable prior to here. */ { Thread_Control *executing = _Thread_Executing; 503da: 2079 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 503e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 503e6: 40c1 movew %sr,%d1 <== NOT EXECUTED 503e8: 8081 orl %d1,%d0 <== NOT EXECUTED 503ea: 46c0 movew %d0,%sr <== NOT EXECUTED 503ec: 7001 moveq #1,%d0 <== NOT EXECUTED 503ee: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; executing->Wait.return_argument_second.immutable_object = buffer; 503f2: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; 503f6: 216e 0014 0020 movel %fp@(20),%a0@(32) <== NOT EXECUTED Thread_Control *executing = _Thread_Executing; ISR_Level level; _ISR_Disable( level ); _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; 503fc: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.return_argument_second.immutable_object = buffer; 50400: 2140 002c movel %d0,%a0@(44) <== NOT EXECUTED executing->Wait.option = (uint32_t) size; 50404: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED executing->Wait.count = submit_type; 50408: 2144 0024 movel %d4,%a0@(36) <== NOT EXECUTED _ISR_Enable( level ); 5040c: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 5040e: 4879 0005 2784 pea 52784 <_Thread_queue_Timeout> <== NOT EXECUTED 50414: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED 50418: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5041a: 4eb9 0005 23c0 jsr 523c0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; 50420: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 50424: 7007 moveq #7,%d0 <== NOT EXECUTED #endif } 50426: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5042c: 4e5e unlk %fp <== NOT EXECUTED 5042e: 4e75 rts <== NOT EXECUTED _CORE_message_queue_Allocate_message_buffer ( CORE_message_queue_Control *the_message_queue ) { return (CORE_message_queue_Buffer_control *) _Chain_Get( &the_message_queue->Inactive_messages ); 50430: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50434: 4eb9 0005 00e8 jsr 500e8 <_Chain_Get> <== NOT EXECUTED 5043a: 2640 moveal %d0,%a3 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 5043c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5043e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50442: 486b 0010 pea %a3@(16) <== NOT EXECUTED 50446: 4eb9 0005 87e8 jsr 587e8 <== NOT EXECUTED _CORE_message_queue_Copy_buffer( buffer, the_message->Contents.buffer, size ); the_message->Contents.size = size; 5044c: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message, int priority ) { #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY) the_message->priority = priority; 50450: 2744 0008 movel %d4,%a3@(8) <== NOT EXECUTED _CORE_message_queue_Set_message_priority( the_message, submit_type ); _CORE_message_queue_Insert_message( 50454: 2f04 movel %d4,%sp@- <== NOT EXECUTED 50456: 2f0b movel %a3,%sp@- <== NOT EXECUTED 50458: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5045a: 4eb9 0005 5a08 jsr 55a08 <_CORE_message_queue_Insert_message><== NOT EXECUTED the_message_queue, the_message, submit_type ); return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 50460: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 50464: 4280 clrl %d0 <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 50466: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5046c: 4e5e unlk %fp <== NOT EXECUTED 5046e: 4e75 rts <== NOT EXECUTED * No message buffers were available so we may need to return an * overflow error or block the sender until the message is placed * on the queue. */ if ( !wait ) { return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY; 50470: 7002 moveq #2,%d0 <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 50472: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 50478: 4e5e unlk %fp <== NOT EXECUTED 5047a: 4e75 rts <== NOT EXECUTED /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); if ( the_thread ) { 5047c: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED /* * No one waiting on the message queue at this time, so attempt to * queue the message up for a future receive. */ if ( the_message_queue->number_of_pending_messages < 50480: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 50484: 6400 fef2 bccw 50378 <_CORE_message_queue_Submit+0x2c><== NOT EXECUTED 50488: 60a6 bras 50430 <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED ... =============================================================================== 00046f78 <_CORE_mutex_Initialize>: CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 46f78: 4e56 0000 linkw %fp,#0 46f7c: 206e 0008 moveal %fp@(8),%a0 46f80: 2f0a movel %a2,%sp@- 46f82: 246e 000c moveal %fp@(12),%a2 /* Add this to the RTEMS environment later ????????? rtems_assert( initial_lock == CORE_MUTEX_LOCKED || initial_lock == CORE_MUTEX_UNLOCKED ); */ the_mutex->Attributes = *the_mutex_attributes; 46f86: 224a moveal %a2,%a1 46f88: 2159 0040 movel %a1@+,%a0@(64) 46f8c: 2159 0044 movel %a1@+,%a0@(68) 46f90: 2159 0048 movel %a1@+,%a0@(72) CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 46f94: 202e 0010 movel %fp@(16),%d0 /* Add this to the RTEMS environment later ????????? rtems_assert( initial_lock == CORE_MUTEX_LOCKED || initial_lock == CORE_MUTEX_UNLOCKED ); */ the_mutex->Attributes = *the_mutex_attributes; 46f98: 3151 004c movew %a1@,%a0@(76) the_mutex->lock = initial_lock; 46f9c: 2140 004e movel %d0,%a0@(78) the_mutex->blocked_count = 0; 46fa0: 42a8 0056 clrl %a0@(86) if ( initial_lock == CORE_MUTEX_LOCKED ) { 46fa4: 4a80 tstl %d0 46fa6: 6654 bnes 46ffc <_CORE_mutex_Initialize+0x84> the_mutex->nest_count = 1; the_mutex->holder = _Thread_Executing; 46fa8: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1 the_mutex->Attributes = *the_mutex_attributes; the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { the_mutex->nest_count = 1; 46fae: 7201 moveq #1,%d1 the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; 46fb0: 2169 0008 005e movel %a1@(8),%a0@(94) STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; } 46fb6: 2028 0046 movel %a0@(70),%d0 the_mutex->Attributes = *the_mutex_attributes; the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { the_mutex->nest_count = 1; 46fba: 2141 0052 movel %d1,%a0@(82) the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 46fbe: 123c 0002 moveb #2,%d1 the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { the_mutex->nest_count = 1; the_mutex->holder = _Thread_Executing; 46fc2: 2149 005a movel %a1,%a0@(90) the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 46fc6: b280 cmpl %d0,%d1 46fc8: 6762 beqs 4702c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN 46fca: 123c 0003 moveb #3,%d1 46fce: b280 cmpl %d0,%d1 46fd0: 675a beqs 4702c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN the_mutex->nest_count = 0; the_mutex->holder = NULL; the_mutex->holder_id = 0; } _Thread_queue_Initialize( 46fd2: 4aaa 0006 tstl %a2@(6) 46fd6: 56c0 sne %d0 46fd8: 4878 0005 pea 5 46fdc: 49c0 extbl %d0 46fde: 4878 0400 pea 400 46fe2: 4480 negl %d0 46fe4: 2f00 movel %d0,%sp@- 46fe6: 2f08 movel %a0,%sp@- 46fe8: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY, STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; 46fee: 4fef 0010 lea %sp@(16),%sp 46ff2: 4280 clrl %d0 } 46ff4: 246e fffc moveal %fp@(-4),%a2 46ff8: 4e5e unlk %fp 46ffa: 4e75 rts the_mutex->nest_count = 0; the_mutex->holder = NULL; the_mutex->holder_id = 0; } _Thread_queue_Initialize( 46ffc: 4aaa 0006 tstl %a2@(6) 47000: 56c0 sne %d0 #endif _Thread_Executing->resource_count++; } } else { the_mutex->nest_count = 0; 47002: 42a8 0052 clrl %a0@(82) the_mutex->holder = NULL; the_mutex->holder_id = 0; } _Thread_queue_Initialize( 47006: 49c0 extbl %d0 47008: 4480 negl %d0 _Thread_Executing->resource_count++; } } else { the_mutex->nest_count = 0; the_mutex->holder = NULL; 4700a: 42a8 005a clrl %a0@(90) the_mutex->holder_id = 0; 4700e: 42a8 005e clrl %a0@(94) } _Thread_queue_Initialize( 47012: 4878 0005 pea 5 47016: 4878 0400 pea 400 4701a: 2f00 movel %d0,%sp@- 4701c: 2f08 movel %a0,%sp@- 4701e: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY, STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; 47024: 4fef 0010 lea %sp@(16),%sp 47028: 4280 clrl %d0 4702a: 60c8 bras 46ff4 <_CORE_mutex_Initialize+0x7c> the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { if ( _Thread_Executing->current_priority < 4702c: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED 47030: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 47034: 6228 bhis 4705e <_CORE_mutex_Initialize+0xe6> <== NOT EXECUTED _Chain_Prepend_unprotected( &_Thread_Executing->lock_mutex, &the_mutex->queue.lock_queue ); the_mutex->queue.priority_before = _Thread_Executing->current_priority; #endif _Thread_Executing->resource_count++; 47036: 52a9 001c addql #1,%a1@(28) <== NOT EXECUTED the_mutex->nest_count = 0; the_mutex->holder = NULL; the_mutex->holder_id = 0; } _Thread_queue_Initialize( 4703a: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED 4703e: 56c0 sne %d0 <== NOT EXECUTED 47040: 4878 0005 pea 5 <== NOT EXECUTED 47044: 49c0 extbl %d0 <== NOT EXECUTED 47046: 4878 0400 pea 400 <== NOT EXECUTED 4704a: 4480 negl %d0 <== NOT EXECUTED 4704c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4704e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47050: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize> <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY, STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; 47056: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4705a: 4280 clrl %d0 <== NOT EXECUTED 4705c: 6096 bras 46ff4 <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED } 4705e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { if ( _Thread_Executing->current_priority < the_mutex->Attributes.priority_ceiling ) return CORE_MUTEX_STATUS_CEILING_VIOLATED; 47062: 7006 moveq #6,%d0 <== NOT EXECUTED STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; } 47064: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000470f4 <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 470f4: 4e56 0000 linkw %fp,#0 _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 470f8: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 470fe: 2f0a movel %a2,%sp@- 47100: 246e 0008 moveal %fp@(8),%a2 47104: 2f02 movel %d2,%sp@- 47106: 142e 0013 moveb %fp@(19),%d2 _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 4710a: 4a80 tstl %d0 4710c: 6704 beqs 47112 <_CORE_mutex_Seize+0x1e> 4710e: 4a02 tstb %d2 47110: 6634 bnes 47146 <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN 47112: 486e 0018 pea %fp@(24) 47116: 2f0a movel %a2,%sp@- 47118: 4eb9 0004 c44c jsr 4c44c <_CORE_mutex_Seize_interrupt_trylock> 4711e: 508f addql #8,%sp 47120: 4a80 tstl %d0 47122: 6716 beqs 4713a <_CORE_mutex_Seize+0x46> 47124: 4a02 tstb %d2 47126: 6636 bnes 4715e <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN 47128: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 4712c: 46c0 movew %d0,%sr <== NOT EXECUTED 4712e: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47134: 7001 moveq #1,%d0 <== NOT EXECUTED 47136: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED } 4713a: 242e fff8 movel %fp@(-8),%d2 4713e: 246e fffc moveal %fp@(-4),%a2 47142: 4e5e unlk %fp 47144: 4e75 rts bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 47146: 7001 moveq #1,%d0 47148: b0b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d0 4714e: 64c2 bccs 47112 <_CORE_mutex_Seize+0x1e> 47150: 4878 0012 pea 12 47154: 42a7 clrl %sp@- 47156: 42a7 clrl %sp@- 47158: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4715e: 7001 moveq #1,%d0 47160: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 47166: 2540 0030 movel %d0,%a2@(48) 4716a: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 47170: 5280 addql #1,%d0 47172: 216e 000c 0020 movel %fp@(12),%a0@(32) 47178: 214a 0044 movel %a2,%a0@(68) 4717c: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> 47182: 202e 0018 movel %fp@(24),%d0 47186: 46c0 movew %d0,%sr 47188: 2f2e 0014 movel %fp@(20),%sp@- 4718c: 2f0a movel %a2,%sp@- 4718e: 4eb9 0004 7068 jsr 47068 <_CORE_mutex_Seize_interrupt_blocking> } 47194: 242e fff8 movel %fp@(-8),%d2 bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 47198: 508f addql #8,%sp } 4719a: 246e fffc moveal %fp@(-4),%a2 4719e: 4e5e unlk %fp ... =============================================================================== 00047068 <_CORE_mutex_Seize_interrupt_blocking>: ) { Thread_Control *executing; executing = _Thread_Executing; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { 47068: 7002 moveq #2,%d0 void _CORE_mutex_Seize_interrupt_blocking( CORE_mutex_Control *the_mutex, Watchdog_Interval timeout ) { 4706a: 4e56 0000 linkw %fp,#0 Thread_Control *executing; executing = _Thread_Executing; 4706e: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 void _CORE_mutex_Seize_interrupt_blocking( CORE_mutex_Control *the_mutex, Watchdog_Interval timeout ) { 47074: 2f0a movel %a2,%sp@- 47076: 246e 0008 moveal %fp@(8),%a2 4707a: 2f02 movel %d2,%sp@- 4707c: 242e 000c movel %fp@(12),%d2 Thread_Control *executing; executing = _Thread_Executing; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { 47080: b0aa 0046 cmpl %a2@(70),%d0 47084: 6728 beqs 470ae <_CORE_mutex_Seize_interrupt_blocking+0x46> ); } } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 47086: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout> false ); } } the_mutex->blocked_count++; 4708c: 52aa 0056 addql #1,%a2@(86) _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 47090: 2f02 movel %d2,%sp@- 47092: 2f0a movel %a2,%sp@- 47094: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler> _Thread_Enable_dispatch(); } 4709a: 242e fff8 movel %fp@(-8),%d2 } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 4709e: 4fef 000c lea %sp@(12),%sp } 470a2: 246e fffc moveal %fp@(-4),%a2 470a6: 4e5e unlk %fp } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 470a8: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch> { Thread_Control *executing; executing = _Thread_Executing; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { if ( the_mutex->holder->current_priority > executing->current_priority ) { 470ae: 226a 005a moveal %a2@(90),%a1 470b2: 2028 0014 movel %a0@(20),%d0 470b6: b0a9 0014 cmpl %a1@(20),%d0 470ba: 64ca bccs 47086 <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN _Thread_Change_priority( 470bc: 42a7 clrl %sp@- 470be: 2f00 movel %d0,%sp@- 470c0: 2f09 movel %a1,%sp@- 470c2: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> 470c8: 4fef 000c lea %sp@(12),%sp ); } } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 470cc: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout> false ); } } the_mutex->blocked_count++; 470d2: 52aa 0056 addql #1,%a2@(86) _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 470d6: 2f02 movel %d2,%sp@- 470d8: 2f0a movel %a2,%sp@- 470da: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler> _Thread_Enable_dispatch(); } 470e0: 242e fff8 movel %fp@(-8),%d2 } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 470e4: 4fef 000c lea %sp@(12),%sp } 470e8: 246e fffc moveal %fp@(-4),%a2 470ec: 4e5e unlk %fp } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 470ee: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch> =============================================================================== 0004c44c <_CORE_mutex_Seize_interrupt_trylock>: #if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__) int _CORE_mutex_Seize_interrupt_trylock( CORE_mutex_Control *the_mutex, ISR_Level *level_p ) { 4c44c: 4e56 0000 linkw %fp,#0 { Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; 4c450: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1 4c456: 2f0a movel %a2,%sp@- 4c458: 206e 0008 moveal %fp@(8),%a0 4c45c: 2f02 movel %d2,%sp@- 4c45e: 246e 000c moveal %fp@(12),%a2 executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; 4c462: 42a9 0034 clrl %a1@(52) if ( !_CORE_mutex_Is_locked( the_mutex ) ) { 4c466: 4aa8 004e tstl %a0@(78) 4c46a: 673a beqs 4c4a6 <_CORE_mutex_Seize_interrupt_trylock+0x5a> the_mutex->lock = CORE_MUTEX_LOCKED; the_mutex->holder = executing; the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; 4c46c: 7201 moveq #1,%d1 executing = _Thread_Executing; executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; if ( !_CORE_mutex_Is_locked( the_mutex ) ) { the_mutex->lock = CORE_MUTEX_LOCKED; the_mutex->holder = executing; the_mutex->holder_id = executing->Object.id; 4c46e: 2169 0008 005e movel %a1@(8),%a0@(94) return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p ); } 4c474: 2028 0046 movel %a0@(70),%d0 the_mutex->nest_count = 1; 4c478: 2141 0052 movel %d1,%a0@(82) if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4c47c: 123c 0002 moveb #2,%d1 /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; if ( !_CORE_mutex_Is_locked( the_mutex ) ) { the_mutex->lock = CORE_MUTEX_LOCKED; 4c480: 42a8 004e clrl %a0@(78) the_mutex->holder = executing; 4c484: 2149 005a movel %a1,%a0@(90) the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4c488: b280 cmpl %d0,%d1 4c48a: 672e beqs 4c4ba <_CORE_mutex_Seize_interrupt_trylock+0x6e> 4c48c: 123c 0003 moveb #3,%d1 4c490: b280 cmpl %d0,%d1 4c492: 674e beqs 4c4e2 <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN executing->resource_count++; } if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { _ISR_Enable( *level_p ); 4c494: 2012 movel %a2@,%d0 4c496: 46c0 movew %d0,%sr return 0; 4c498: 4280 clrl %d0 4c49a: 242e fff8 movel %fp@(-8),%d2 4c49e: 246e fffc moveal %fp@(-4),%a2 4c4a2: 4e5e unlk %fp 4c4a4: 4e75 rts /* * At this point, we know the mutex was not available. If this thread * is the thread that has locked the mutex, let's see if we are allowed * to nest access. */ if ( _Thread_Is_executing( the_mutex->holder ) ) { 4c4a6: b3e8 005a cmpal %a0@(90),%a1 4c4aa: 671a beqs 4c4c6 <_CORE_mutex_Seize_interrupt_trylock+0x7a> 4c4ac: 242e fff8 movel %fp@(-8),%d2 /* * The mutex is not available and the caller must deal with the possibility * of blocking. */ return 1; 4c4b0: 7001 moveq #1,%d0 4c4b2: 246e fffc moveal %fp@(-4),%a2 4c4b6: 4e5e unlk %fp 4c4b8: 4e75 rts _Chain_Prepend_unprotected( &executing->lock_mutex, &the_mutex->queue.lock_queue ); the_mutex->queue.priority_before = executing->current_priority; #endif executing->resource_count++; 4c4ba: 52a9 001c addql #1,%a1@(28) } if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { _ISR_Enable( *level_p ); 4c4be: 2012 movel %a2@,%d0 4c4c0: 46c0 movew %d0,%sr return 0; 4c4c2: 4280 clrl %d0 4c4c4: 60d4 bras 4c49a <_CORE_mutex_Seize_interrupt_trylock+0x4e> * At this point, we know the mutex was not available. If this thread * is the thread that has locked the mutex, let's see if we are allowed * to nest access. */ if ( _Thread_Is_executing( the_mutex->holder ) ) { switch ( the_mutex->Attributes.lock_nesting_behavior ) { 4c4c6: 2028 0040 movel %a0@(64),%d0 4c4ca: 6658 bnes 4c524 <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN case CORE_MUTEX_NESTING_ACQUIRES: the_mutex->nest_count++; 4c4cc: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED _ISR_Enable( *level_p ); 4c4d0: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c4d2: 46c0 movew %d0,%sr <== NOT EXECUTED 4c4d4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED return 0; 4c4d8: 4280 clrl %d0 <== NOT EXECUTED 4c4da: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c4de: 4e5e unlk %fp <== NOT EXECUTED 4c4e0: 4e75 rts <== NOT EXECUTED _Chain_Prepend_unprotected( &executing->lock_mutex, &the_mutex->queue.lock_queue ); the_mutex->queue.priority_before = executing->current_priority; #endif executing->resource_count++; 4c4e2: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED 4c4e6: 2002 movel %d2,%d0 <== NOT EXECUTED 4c4e8: 5280 addql #1,%d0 <== NOT EXECUTED 4c4ea: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED */ { Priority_Control ceiling; Priority_Control current; ceiling = the_mutex->Attributes.priority_ceiling; 4c4ee: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED current = executing->current_priority; 4c4f2: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED if ( current == ceiling ) { 4c4f6: b081 cmpl %d1,%d0 <== NOT EXECUTED 4c4f8: 6700 0082 beqw 4c57c <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED _ISR_Enable( *level_p ); return 0; } if ( current > ceiling ) { 4c4fc: 6244 bhis 4c542 <_CORE_mutex_Seize_interrupt_trylock+0xf6><== NOT EXECUTED ); _Thread_Enable_dispatch(); return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; 4c4fe: 7206 moveq #6,%d1 <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_UNLOCKED; 4c500: 7001 moveq #1,%d0 <== NOT EXECUTED ); _Thread_Enable_dispatch(); return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; 4c502: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_UNLOCKED; 4c506: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED the_mutex->nest_count = 0; /* undo locking above */ 4c50a: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED executing->resource_count--; /* undo locking above */ 4c50e: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED _ISR_Enable( *level_p ); 4c512: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c514: 46c0 movew %d0,%sr <== NOT EXECUTED 4c516: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED return 0; 4c51a: 4280 clrl %d0 <== NOT EXECUTED 4c51c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c520: 4e5e unlk %fp <== NOT EXECUTED 4c522: 4e75 rts <== NOT EXECUTED * At this point, we know the mutex was not available. If this thread * is the thread that has locked the mutex, let's see if we are allowed * to nest access. */ if ( _Thread_Is_executing( the_mutex->holder ) ) { switch ( the_mutex->Attributes.lock_nesting_behavior ) { 4c524: 7201 moveq #1,%d1 4c526: b280 cmpl %d0,%d1 4c528: 6682 bnes 4c4ac <_CORE_mutex_Seize_interrupt_trylock+0x60><== ALWAYS TAKEN case CORE_MUTEX_NESTING_ACQUIRES: the_mutex->nest_count++; _ISR_Enable( *level_p ); return 0; case CORE_MUTEX_NESTING_IS_ERROR: executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED; 4c52a: 7002 moveq #2,%d0 <== NOT EXECUTED 4c52c: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _ISR_Enable( *level_p ); 4c530: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c532: 46c0 movew %d0,%sr <== NOT EXECUTED 4c534: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED return 0; 4c538: 4280 clrl %d0 <== NOT EXECUTED 4c53a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c53e: 4e5e unlk %fp <== NOT EXECUTED 4c540: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4c542: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c548: 5280 addql #1,%d0 <== NOT EXECUTED 4c54a: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED return 0; } if ( current > ceiling ) { _Thread_Disable_dispatch(); _ISR_Enable( *level_p ); 4c550: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c552: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_Change_priority( 4c554: 42a7 clrl %sp@- <== NOT EXECUTED 4c556: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED 4c55a: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED 4c55e: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED the_mutex->holder, the_mutex->Attributes.priority_ceiling, false ); _Thread_Enable_dispatch(); 4c564: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED 4c56a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c56e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED return 0; 4c572: 4280 clrl %d0 <== NOT EXECUTED 4c574: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c578: 4e5e unlk %fp <== NOT EXECUTED 4c57a: 4e75 rts <== NOT EXECUTED Priority_Control current; ceiling = the_mutex->Attributes.priority_ceiling; current = executing->current_priority; if ( current == ceiling ) { _ISR_Enable( *level_p ); 4c57c: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c57e: 46c0 movew %d0,%sr <== NOT EXECUTED 4c580: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED return 0; 4c584: 4280 clrl %d0 <== NOT EXECUTED 4c586: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c58a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000471a4 <_CORE_mutex_Surrender>: #else Objects_Id id __attribute__((unused)), CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused)) #endif ) { 471a4: 4e56 0000 linkw %fp,#0 471a8: 2f0a movel %a2,%sp@- 471aa: 246e 0008 moveal %fp@(8),%a2 Thread_Control *the_thread; Thread_Control *holder; holder = the_mutex->holder; 471ae: 206a 005a moveal %a2@(90),%a0 * allowed when the mutex in quetion is FIFO or simple Priority * discipline. But Priority Ceiling or Priority Inheritance mutexes * must be released by the thread which acquired them. */ if ( the_mutex->Attributes.only_owner_release ) { 471b2: 4a2a 0044 tstb %a2@(68) 471b6: 6712 beqs 471ca <_CORE_mutex_Surrender+0x26> if ( !_Thread_Is_executing( holder ) ) 471b8: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0 471be: 670a beqs 471ca <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 471c0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED * must be released by the thread which acquired them. */ if ( the_mutex->Attributes.only_owner_release ) { if ( !_Thread_Is_executing( holder ) ) return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE; 471c4: 7003 moveq #3,%d0 <== NOT EXECUTED } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 471c6: 4e5e unlk %fp <== NOT EXECUTED 471c8: 4e75 rts <== NOT EXECUTED return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE; } /* XXX already unlocked -- not right status */ if ( !the_mutex->nest_count ) 471ca: 202a 0052 movel %a2@(82),%d0 471ce: 6758 beqs 47228 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN return CORE_MUTEX_STATUS_SUCCESSFUL; the_mutex->nest_count--; 471d0: 5380 subql #1,%d0 471d2: 2540 0052 movel %d0,%a2@(82) if ( the_mutex->nest_count != 0 ) { 471d6: 6650 bnes 47228 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 471d8: 202a 0046 movel %a2@(70),%d0 /* * Formally release the mutex before possibly transferring it to a * blocked thread. */ if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 471dc: 7202 moveq #2,%d1 471de: b280 cmpl %d0,%d1 471e0: 6750 beqs 47232 <_CORE_mutex_Surrender+0x8e> 471e2: 123c 0003 moveb #3,%d1 471e6: b280 cmpl %d0,%d1 471e8: 6748 beqs 47232 <_CORE_mutex_Surrender+0x8e> <== NEVER TAKEN if ( holder->resource_count == 0 && holder->real_priority != holder->current_priority ) { _Thread_Change_priority( holder, holder->real_priority, true ); } } the_mutex->holder = NULL; 471ea: 42aa 005a clrl %a2@(90) the_mutex->holder_id = 0; 471ee: 42aa 005e clrl %a2@(94) /* * Now we check if another thread was waiting for this mutex. If so, * transfer the mutex to that thread. */ if ( ( the_thread = _Thread_queue_Dequeue( &the_mutex->Wait_queue ) ) ) { 471f2: 2f0a movel %a2,%sp@- 471f4: 4eb9 0004 8ca0 jsr 48ca0 <_Thread_queue_Dequeue> 471fa: 588f addql #4,%sp 471fc: 2040 moveal %d0,%a0 471fe: 4a80 tstl %d0 47200: 6700 0090 beqw 47292 <_CORE_mutex_Surrender+0xee> #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; 47204: 7201 moveq #1,%d1 } else #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; 47206: 2568 0008 005e movel %a0@(8),%a2@(94) the_mutex->nest_count = 1; switch ( the_mutex->Attributes.discipline ) { 4720c: 202a 0046 movel %a2@(70),%d0 #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; 47210: 2541 0052 movel %d1,%a2@(82) switch ( the_mutex->Attributes.discipline ) { 47214: 123c 0002 moveb #2,%d1 } else #endif { the_mutex->holder = the_thread; 47218: 2548 005a movel %a0,%a2@(90) the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; switch ( the_mutex->Attributes.discipline ) { 4721c: b280 cmpl %d0,%d1 4721e: 6764 beqs 47284 <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN 47220: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 47224: b280 cmpl %d0,%d1 <== NOT EXECUTED 47226: 6734 beqs 4725c <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 47228: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; 4722c: 4280 clrl %d0 <== NOT EXECUTED } 4722e: 4e5e unlk %fp <== NOT EXECUTED 47230: 4e75 rts <== NOT EXECUTED _CORE_mutex_Pop_priority( the_mutex, holder ); if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL ) return pop_status; holder->resource_count--; 47232: 2028 001c movel %a0@(28),%d0 47236: 5380 subql #1,%d0 47238: 2140 001c movel %d0,%a0@(28) /* * Whether or not someone is waiting for the mutex, an * inherited priority must be lowered if this is the last * mutex (i.e. resource) this task has. */ if ( holder->resource_count == 0 && 4723c: 66ac bnes 471ea <_CORE_mutex_Surrender+0x46> holder->real_priority != holder->current_priority ) { 4723e: 2028 0018 movel %a0@(24),%d0 /* * Whether or not someone is waiting for the mutex, an * inherited priority must be lowered if this is the last * mutex (i.e. resource) this task has. */ if ( holder->resource_count == 0 && 47242: b0a8 0014 cmpl %a0@(20),%d0 47246: 67a2 beqs 471ea <_CORE_mutex_Surrender+0x46> holder->real_priority != holder->current_priority ) { _Thread_Change_priority( holder, holder->real_priority, true ); 47248: 4878 0001 pea 1 4724c: 2f00 movel %d0,%sp@- 4724e: 2f08 movel %a0,%sp@- 47250: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> 47256: 4fef 000c lea %sp@(12),%sp 4725a: 608e bras 471ea <_CORE_mutex_Surrender+0x46> the_thread->resource_count++; break; case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; if (the_mutex->Attributes.priority_ceiling < 4725c: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; break; case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; 47260: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED if (the_mutex->Attributes.priority_ceiling < 47264: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 47268: 64be bccs 47228 <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED the_thread->current_priority){ _Thread_Change_priority( 4726a: 42a7 clrl %sp@- <== NOT EXECUTED 4726c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4726e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47270: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 47276: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; if (the_mutex->Attributes.priority_ceiling < the_thread->current_priority){ _Thread_Change_priority( 4727a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; 4727e: 4280 clrl %d0 <== NOT EXECUTED } 47280: 4e5e unlk %fp <== NOT EXECUTED 47282: 4e75 rts <== NOT EXECUTED 47284: 246e fffc moveal %fp@(-4),%a2 } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; 47288: 4280 clrl %d0 case CORE_MUTEX_DISCIPLINES_FIFO: case CORE_MUTEX_DISCIPLINES_PRIORITY: break; case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; 4728a: 52a8 001c addql #1,%a0@(28) } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 4728e: 4e5e unlk %fp 47290: 4e75 rts } break; } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; 47292: 7001 moveq #1,%d0 47294: 2540 004e movel %d0,%a2@(78) return CORE_MUTEX_STATUS_SUCCESSFUL; } 47298: 246e fffc moveal %fp@(-4),%a2 } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; 4729c: 4200 clrb %d0 } 4729e: 4e5e unlk %fp ... =============================================================================== 00050448 <_CORE_semaphore_Seize>: Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 50448: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 5044e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 50452: 2279 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 50458: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 5045c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 50460: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 50464: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 50468: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 5046c: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _ISR_Disable( level ); 50470: 40c1 movew %sr,%d1 <== NOT EXECUTED 50472: 8081 orl %d1,%d0 <== NOT EXECUTED 50474: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 50476: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 5047a: 6642 bnes 504be <_CORE_semaphore_Seize+0x76> <== NOT EXECUTED /* * If the semaphore was not available and the caller was not willing * to block, then return immediately with a status indicating that * the semaphore was not available and the caller never blocked. */ if ( !wait ) { 5047c: 4a02 tstb %d2 <== NOT EXECUTED 5047e: 6610 bnes 50490 <_CORE_semaphore_Seize+0x48> <== NOT EXECUTED _ISR_Enable( level ); 50480: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 50482: 7001 moveq #1,%d0 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); } 50484: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED * to block, then return immediately with a status indicating that * the semaphore was not available and the caller never blocked. */ if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 50488: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); } 5048c: 4e5e unlk %fp <== NOT EXECUTED 5048e: 4e75 rts <== NOT EXECUTED 50490: 7001 moveq #1,%d0 <== NOT EXECUTED 50492: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED /* * If the semaphore is not available and the caller is willing to * block, then we now block the caller with optional timeout. */ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 50496: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 5049a: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED _ISR_Enable( level ); 5049e: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 504a0: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 504a4: 203c 0004 c99c movel #313756,%d0 <== NOT EXECUTED 504aa: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 504ae: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED */ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 504b2: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED } 504b6: 4e5e unlk %fp <== NOT EXECUTED */ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 504b8: 4ef9 0004 c5d8 jmp 4c5d8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; _ISR_Disable( level ); if ( the_semaphore->count != 0 ) { the_semaphore->count -= 1; 504be: 5380 subql #1,%d0 <== NOT EXECUTED 504c0: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED _ISR_Enable( level ); 504c4: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); } 504c6: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 504ca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000472f8 <_CORE_semaphore_Surrender>: CORE_semaphore_Status _CORE_semaphore_Surrender( CORE_semaphore_Control *the_semaphore, Objects_Id id, CORE_semaphore_API_mp_support_callout api_semaphore_mp_support ) { 472f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 472fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 472fe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) { 47302: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47304: 4eb9 0004 8ca0 jsr 48ca0 <_Thread_queue_Dequeue> <== NOT EXECUTED 4730a: 588f addql #4,%sp <== NOT EXECUTED 4730c: 4a80 tstl %d0 <== NOT EXECUTED 4730e: 670a beqs 4731a <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; _ISR_Enable( level ); } return status; } 47310: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED { Thread_Control *the_thread; ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 47314: 4280 clrl %d0 <== NOT EXECUTED status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; _ISR_Enable( level ); } return status; } 47316: 4e5e unlk %fp <== NOT EXECUTED 47318: 4e75 rts <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_semaphore_mp_support) ( the_thread, id ); #endif } else { _ISR_Disable( level ); 4731a: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 4731e: 40c1 movew %sr,%d1 <== NOT EXECUTED 47320: 8081 orl %d1,%d0 <== NOT EXECUTED 47322: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) 47324: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 47328: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 4732c: 6412 bccs 47340 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED the_semaphore->count += 1; 4732e: 5280 addql #1,%d0 <== NOT EXECUTED 47330: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED { Thread_Control *the_thread; ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 47334: 4280 clrl %d0 <== NOT EXECUTED _ISR_Disable( level ); if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) the_semaphore->count += 1; else status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; _ISR_Enable( level ); 47336: 46c1 movew %d1,%sr <== NOT EXECUTED } return status; } 47338: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4733c: 4e5e unlk %fp <== NOT EXECUTED 4733e: 4e75 rts <== NOT EXECUTED } else { _ISR_Disable( level ); if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) the_semaphore->count += 1; else status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; 47340: 7004 moveq #4,%d0 <== NOT EXECUTED _ISR_Enable( level ); 47342: 46c1 movew %d1,%sr <== NOT EXECUTED 47344: 60f2 bras 47338 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED ... =============================================================================== 00047db8 <_CORE_spinlock_Initialize>: void _CORE_spinlock_Initialize( CORE_spinlock_Control *the_spinlock, CORE_spinlock_Attributes *the_spinlock_attributes ) { 47db8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47dbc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47dc0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED the_spinlock->Attributes = *the_spinlock_attributes; the_spinlock->lock = 0; the_spinlock->users = 0; the_spinlock->holder = 0; } 47dc4: 4e5e unlk %fp <== NOT EXECUTED CORE_spinlock_Control *the_spinlock, CORE_spinlock_Attributes *the_spinlock_attributes ) { the_spinlock->Attributes = *the_spinlock_attributes; 47dc6: 2091 movel %a1@,%a0@ <== NOT EXECUTED the_spinlock->lock = 0; 47dc8: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_spinlock->users = 0; 47dcc: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED the_spinlock->holder = 0; 47dd0: 42a8 000c clrl %a0@(12) <== NOT EXECUTED } ... =============================================================================== 00047dd8 <_CORE_spinlock_Release>: CORE_spinlock_Control *the_spinlock ) { ISR_Level level; _ISR_Disable( level ); 47dd8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ CORE_spinlock_Status _CORE_spinlock_Release( CORE_spinlock_Control *the_spinlock ) { 47dde: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47de2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 47de6: 40c1 movew %sr,%d1 <== NOT EXECUTED 47de8: 8081 orl %d1,%d0 <== NOT EXECUTED 47dea: 46c0 movew %d0,%sr <== NOT EXECUTED /* * It must locked before it can be unlocked. */ if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 47dec: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 47df0: 660a bnes 47dfc <_CORE_spinlock_Release+0x24> <== NOT EXECUTED _ISR_Enable( level ); 47df2: 46c1 movew %d1,%sr <== NOT EXECUTED return CORE_SPINLOCK_NOT_LOCKED; 47df4: 103c 0006 moveb #6,%d0 <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_UNLOCKED; the_spinlock->holder = 0; _ISR_Enable( level ); return CORE_SPINLOCK_SUCCESSFUL; } 47df8: 4e5e unlk %fp <== NOT EXECUTED 47dfa: 4e75 rts <== NOT EXECUTED } /* * It must locked by the current thread before it can be unlocked. */ if ( the_spinlock->holder != _Thread_Executing->Object.id ) { 47dfc: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 47e00: 2279 0006 1292 moveal 61292 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 47e06: b0a9 0008 cmpl %a1@(8),%d0 <== NOT EXECUTED 47e0a: 6708 beqs 47e14 <_CORE_spinlock_Release+0x3c> <== NOT EXECUTED _ISR_Enable( level ); 47e0c: 46c1 movew %d1,%sr <== NOT EXECUTED return CORE_SPINLOCK_NOT_HOLDER; 47e0e: 7002 moveq #2,%d0 <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_UNLOCKED; the_spinlock->holder = 0; _ISR_Enable( level ); return CORE_SPINLOCK_SUCCESSFUL; } 47e10: 4e5e unlk %fp <== NOT EXECUTED 47e12: 4e75 rts <== NOT EXECUTED } /* * Let it be unlocked. */ the_spinlock->users -= 1; 47e14: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47e18: 5380 subql #1,%d0 <== NOT EXECUTED 47e1a: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_UNLOCKED; 47e1e: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_spinlock->holder = 0; 47e22: 42a8 000c clrl %a0@(12) <== NOT EXECUTED _ISR_Enable( level ); 47e26: 46c1 movew %d1,%sr <== NOT EXECUTED return CORE_SPINLOCK_SUCCESSFUL; 47e28: 4280 clrl %d0 <== NOT EXECUTED } 47e2a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047e30 <_CORE_spinlock_Wait>: ISR_Level level; #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); 47e30: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED CORE_spinlock_Status _CORE_spinlock_Wait( CORE_spinlock_Control *the_spinlock, bool wait, Watchdog_Interval timeout ) { 47e36: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47e3a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 47e3e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47e42: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED ISR_Level level; #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); 47e46: 40c2 movew %sr,%d2 <== NOT EXECUTED 47e48: 8082 orl %d2,%d0 <== NOT EXECUTED 47e4a: 46c0 movew %d0,%sr <== NOT EXECUTED 47e4c: 2202 movel %d2,%d1 <== NOT EXECUTED if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && 47e4e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e52: 7801 moveq #1,%d4 <== NOT EXECUTED 47e54: b880 cmpl %d0,%d4 <== NOT EXECUTED 47e56: 6762 beqs 47eba <_CORE_spinlock_Wait+0x8a> <== NOT EXECUTED (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; 47e58: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47e5c: 5280 addql #1,%d0 <== NOT EXECUTED 47e5e: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 47e62: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e66: 6730 beqs 47e98 <_CORE_spinlock_Wait+0x68> <== NOT EXECUTED } /* * Spinlock is unavailable. If not willing to wait, return. */ if ( !wait ) { 47e68: 4a03 tstb %d3 <== NOT EXECUTED 47e6a: 676c beqs 47ed8 <_CORE_spinlock_Wait+0xa8> <== NOT EXECUTED 47e6c: 47f9 0004 9466 lea 49466 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED /* Another thread could get dispatched here */ /* Reenter the critical sections so we can attempt the lock again. */ _Thread_Disable_dispatch(); _ISR_Disable( level ); 47e72: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED * * A spinlock cannot be deleted while it is being used so we are * safe from deletion. */ _ISR_Enable( level ); 47e78: 46c1 movew %d1,%sr <== NOT EXECUTED /* An ISR could occur here */ _Thread_Enable_dispatch(); 47e7a: 4e93 jsr %a3@ <== NOT EXECUTED 47e7c: 2039 0006 0e08 movel 60e08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47e82: 5280 addql #1,%d0 <== NOT EXECUTED 47e84: 23c0 0006 0e08 movel %d0,60e08 <_Thread_Dispatch_disable_level><== NOT EXECUTED /* Another thread could get dispatched here */ /* Reenter the critical sections so we can attempt the lock again. */ _Thread_Disable_dispatch(); _ISR_Disable( level ); 47e8a: 2002 movel %d2,%d0 <== NOT EXECUTED 47e8c: 40c1 movew %sr,%d1 <== NOT EXECUTED 47e8e: 8081 orl %d1,%d0 <== NOT EXECUTED 47e90: 46c0 movew %d0,%sr <== NOT EXECUTED _ISR_Enable( level ); return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 47e92: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e96: 66e0 bnes 47e78 <_CORE_spinlock_Wait+0x48> <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_LOCKED; the_spinlock->holder = _Thread_Executing->Object.id; 47e98: 2079 0006 1292 moveal 61292 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { the_spinlock->lock = CORE_SPINLOCK_LOCKED; 47e9e: 7001 moveq #1,%d0 <== NOT EXECUTED 47ea0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED the_spinlock->holder = _Thread_Executing->Object.id; 47ea4: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47ea8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED _ISR_Enable( level ); 47eac: 46c1 movew %d1,%sr <== NOT EXECUTED return CORE_SPINLOCK_SUCCESSFUL; 47eae: 4280 clrl %d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Disable( level ); } } 47eb0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47eb6: 4e5e unlk %fp <== NOT EXECUTED 47eb8: 4e75 rts <== NOT EXECUTED Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && (the_spinlock->holder == _Thread_Executing->Object.id) ) { 47eba: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47ebe: 2079 0006 1292 moveal 61292 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && 47ec4: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 47ec8: 668e bnes 47e58 <_CORE_spinlock_Wait+0x28> <== NOT EXECUTED (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); 47eca: 46c2 movew %d2,%sr <== NOT EXECUTED return CORE_SPINLOCK_HOLDER_RELOCKING; 47ecc: 7001 moveq #1,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Disable( level ); } } 47ece: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47ed4: 4e5e unlk %fp <== NOT EXECUTED 47ed6: 4e75 rts <== NOT EXECUTED /* * Spinlock is unavailable. If not willing to wait, return. */ if ( !wait ) { the_spinlock->users -= 1; 47ed8: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47edc: 5380 subql #1,%d0 <== NOT EXECUTED 47ede: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED _ISR_Enable( level ); 47ee2: 46c2 movew %d2,%sr <== NOT EXECUTED return CORE_SPINLOCK_UNAVAILABLE; 47ee4: 7005 moveq #5,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Disable( level ); } } 47ee6: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47eec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000475d4 <_Chain_Append_with_empty_check>: ) { ISR_Level level; bool was_empty; _ISR_Disable( level ); 475d4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Append_with_empty_check( Chain_Control *chain, Chain_Node *node ) { 475da: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 475de: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 475e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475e4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 475e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); 475ea: 40c2 movew %sr,%d2 <== NOT EXECUTED 475ec: 8082 orl %d2,%d0 <== NOT EXECUTED 475ee: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 475f0: 2209 movel %a1,%d1 <== NOT EXECUTED 475f2: 5881 addql #4,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 475f4: b291 cmpl %a1@,%d1 <== NOT EXECUTED 475f6: 57c0 seq %d0 <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 475f8: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 475fc: 4480 negl %d0 <== NOT EXECUTED { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 475fe: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; 47602: 2081 movel %d1,%a0@ <== NOT EXECUTED tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 47604: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 47608: 2488 movel %a0,%a2@ <== NOT EXECUTED was_empty = _Chain_Append_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 4760a: 46c2 movew %d2,%sr <== NOT EXECUTED return was_empty; } 4760c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4760e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47610: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047674 <_Chain_Get_with_empty_check>: ) { ISR_Level level; bool is_empty_now; _ISR_Disable( level ); 47674: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Get_with_empty_check( Chain_Control *chain, Chain_Node **node ) { 4767a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4767e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47682: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47684: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 47688: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; bool is_empty_now; _ISR_Disable( level ); 4768a: 40c1 movew %sr,%d1 <== NOT EXECUTED 4768c: 8081 orl %d1,%d0 <== NOT EXECUTED 4768e: 46c0 movew %d0,%sr <== NOT EXECUTED Chain_Node **the_node ) { bool is_empty_now = true; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 47690: 2008 movel %a0,%d0 <== NOT EXECUTED 47692: 5880 addql #4,%d0 <== NOT EXECUTED Chain_Node *old_first = head->next; 47694: 2250 moveal %a0@,%a1 <== NOT EXECUTED if ( old_first != tail ) { 47696: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 47698: 671a beqs 476b4 <_Chain_Get_with_empty_check+0x40><== NOT EXECUTED Chain_Node *new_first = old_first->next; 4769a: 2451 moveal %a1@,%a2 <== NOT EXECUTED head->next = new_first; new_first->previous = head; *the_node = old_first; is_empty_now = new_first == tail; 4769c: b5c0 cmpal %d0,%a2 <== NOT EXECUTED 4769e: 57c0 seq %d0 <== NOT EXECUTED Chain_Node *old_first = head->next; if ( old_first != tail ) { Chain_Node *new_first = old_first->next; head->next = new_first; 476a0: 208a movel %a2,%a0@ <== NOT EXECUTED new_first->previous = head; *the_node = old_first; is_empty_now = new_first == tail; 476a2: 4480 negl %d0 <== NOT EXECUTED if ( old_first != tail ) { Chain_Node *new_first = old_first->next; head->next = new_first; new_first->previous = head; 476a4: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED *the_node = old_first; 476a8: 2689 movel %a1,%a3@ <== NOT EXECUTED is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 476aa: 46c1 movew %d1,%sr <== NOT EXECUTED return is_empty_now; } 476ac: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476ae: 265f moveal %sp@+,%a3 <== NOT EXECUTED 476b0: 4e5e unlk %fp <== NOT EXECUTED 476b2: 4e75 rts <== NOT EXECUTED is_empty_now = new_first == tail; } else *the_node = NULL; 476b4: 4293 clrl %a3@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Get_with_empty_check_unprotected( Chain_Control *the_chain, Chain_Node **the_node ) { bool is_empty_now = true; 476b6: 7001 moveq #1,%d0 <== NOT EXECUTED ISR_Level level; bool is_empty_now; _ISR_Disable( level ); is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 476b8: 46c1 movew %d1,%sr <== NOT EXECUTED return is_empty_now; } 476ba: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476bc: 265f moveal %sp@+,%a3 <== NOT EXECUTED 476be: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c3d8 <_Chain_Initialize>: Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) { 4c3d8: 4e56 ffec linkw %fp,#-20 4c3dc: 202e 0010 movel %fp@(16),%d0 4c3e0: 48d7 043c moveml %d2-%d5/%a2,%sp@ 4c3e4: 246e 0008 moveal %fp@(8),%a2 size_t count = number_nodes; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4c3e8: 280a movel %a2,%d4 4c3ea: 5884 addql #4,%d4 Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) { 4c3ec: 262e 000c movel %fp@(12),%d3 4c3f0: 242e 0014 movel %fp@(20),%d2 Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; 4c3f4: 42aa 0004 clrl %a2@(4) while ( count-- ) { 4c3f8: 4a80 tstl %d0 4c3fa: 6740 beqs 4c43c <_Chain_Initialize+0x64> <== NEVER TAKEN { size_t count = number_nodes; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *current = head; Chain_Node *next = starting_address; 4c3fc: 2043 moveal %d3,%a0 ) { size_t count = number_nodes; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *current = head; 4c3fe: 224a moveal %a2,%a1 Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { 4c400: 5380 subql #1,%d0 * node_size - size of node in bytes * * Output parameters: NONE */ void _Chain_Initialize( 4c402: 2208 movel %a0,%d1 Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { 4c404: 2a00 movel %d0,%d5 * node_size - size of node in bytes * * Output parameters: NONE */ void _Chain_Initialize( 4c406: d282 addl %d2,%d1 Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { current->next = next; 4c408: 2288 movel %a0,%a1@ next->previous = current; 4c40a: 2149 0004 movel %a1,%a0@(4) Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { 4c40e: 4a80 tstl %d0 4c410: 6714 beqs 4c426 <_Chain_Initialize+0x4e> 4c412: 2248 moveal %a0,%a1 current->next = next; next->previous = current; current = next; next = (Chain_Node *) 4c414: 2041 moveal %d1,%a0 * node_size - size of node in bytes * * Output parameters: NONE */ void _Chain_Initialize( 4c416: 2208 movel %a0,%d1 4c418: 5380 subql #1,%d0 4c41a: d282 addl %d2,%d1 Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { current->next = next; 4c41c: 2288 movel %a0,%a1@ next->previous = current; 4c41e: 2149 0004 movel %a1,%a0@(4) Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { 4c422: 4a80 tstl %d0 4c424: 66ec bnes 4c412 <_Chain_Initialize+0x3a> * node_size - size of node in bytes * * Output parameters: NONE */ void _Chain_Initialize( 4c426: 4c05 2800 mulsl %d5,%d2 Chain_Node *current = head; Chain_Node *next = starting_address; head->previous = NULL; while ( count-- ) { 4c42a: 2043 moveal %d3,%a0 4c42c: d1c2 addal %d2,%a0 next = (Chain_Node *) _Addresses_Add_offset( (void *) next, node_size ); } current->next = tail; tail->previous = current; 4c42e: 2548 0008 movel %a0,%a2@(8) current = next; next = (Chain_Node *) _Addresses_Add_offset( (void *) next, node_size ); } current->next = tail; 4c432: 2084 movel %d4,%a0@ tail->previous = current; } 4c434: 4cd7 043c moveml %sp@,%d2-%d5/%a2 4c438: 4e5e unlk %fp 4c43a: 4e75 rts ) { size_t count = number_nodes; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *current = head; 4c43c: 204a moveal %a2,%a0 <== NOT EXECUTED next = (Chain_Node *) _Addresses_Add_offset( (void *) next, node_size ); } current->next = tail; tail->previous = current; 4c43e: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED current = next; next = (Chain_Node *) _Addresses_Add_offset( (void *) next, node_size ); } current->next = tail; 4c442: 2084 movel %d4,%a0@ <== NOT EXECUTED tail->previous = current; } 4c444: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 4c448: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047730 <_Chain_Prepend_with_empty_check>: ) { ISR_Level level; bool was_empty; _ISR_Disable( level ); 47730: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Prepend_with_empty_check( Chain_Control *chain, Chain_Node *node ) { 47736: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4773a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4773e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47740: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 47744: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); 47746: 40c1 movew %sr,%d1 <== NOT EXECUTED 47748: 8081 orl %d1,%d0 <== NOT EXECUTED 4774a: 46c0 movew %d0,%sr <== NOT EXECUTED was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); return was_empty; } 4774c: 2453 moveal %a3@,%a2 <== NOT EXECUTED { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; 4774e: 224b moveal %a3,%a1 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 47750: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 47754: 22c8 movel %a0,%a1@+ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 47756: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 4775a: 208a movel %a2,%a0@ <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 4775c: 46c1 movew %d1,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 4775e: b3ca cmpal %a2,%a1 <== NOT EXECUTED 47760: 57c0 seq %d0 <== NOT EXECUTED return was_empty; } 47762: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47764: 4480 negl %d0 <== NOT EXECUTED 47766: 265f moveal %sp@+,%a3 <== NOT EXECUTED 47768: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045e04 <_Event_Seize>: executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; api = executing->API_Extensions[ THREAD_API_RTEMS ]; _ISR_Disable( level ); 45e04: 203c 0000 0700 movel #1792,%d0 rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 45e0a: 4e56 ffec linkw %fp,#-20 45e0e: 222e 0008 movel %fp@(8),%d1 45e12: 48d7 043c moveml %d2-%d5/%a2,%sp@ rtems_event_set pending_events; ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; 45e16: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 45e1c: 242e 000c movel %fp@(12),%d2 45e20: 2a2e 0010 movel %fp@(16),%d5 45e24: 226e 0014 moveal %fp@(20),%a1 ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; 45e28: 42aa 0034 clrl %a2@(52) api = executing->API_Extensions[ THREAD_API_RTEMS ]; 45e2c: 206a 00fe moveal %a2@(254),%a0 _ISR_Disable( level ); 45e30: 40c4 movew %sr,%d4 45e32: 8084 orl %d4,%d0 45e34: 46c0 movew %d0,%sr pending_events = api->pending_events; 45e36: 2610 movel %a0@,%d3 RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get( rtems_event_set the_event_set, rtems_event_set the_event_condition ) { return ( the_event_set & the_event_condition ); 45e38: 2001 movel %d1,%d0 45e3a: c083 andl %d3,%d0 seized_events = _Event_sets_Get( pending_events, event_in ); if ( !_Event_sets_Is_empty( seized_events ) && 45e3c: 670c beqs 45e4a <_Event_Seize+0x46> 45e3e: b081 cmpl %d1,%d0 45e40: 6700 0084 beqw 45ec6 <_Event_Seize+0xc2> (seized_events == event_in || _Options_Is_any( option_set )) ) { 45e44: 0802 0001 btst #1,%d2 <== NOT EXECUTED 45e48: 667c bnes 45ec6 <_Event_Seize+0xc2> <== NOT EXECUTED _ISR_Enable( level ); *event_out = seized_events; return; } if ( _Options_Is_no_wait( option_set ) ) { 45e4a: 0802 0000 btst #0,%d2 45e4e: 6662 bnes 45eb2 <_Event_Seize+0xae> <== NEVER TAKEN * set properly when we are marked as in the event critical section. * * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set; 45e50: 2542 0030 movel %d2,%a2@(48) executing->Wait.count = (uint32_t) event_in; executing->Wait.return_argument = event_out; _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 45e54: 7401 moveq #1,%d2 * * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set; executing->Wait.count = (uint32_t) event_in; 45e56: 2541 0024 movel %d1,%a2@(36) executing->Wait.return_argument = event_out; 45e5a: 2549 0028 movel %a1,%a2@(40) _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 45e5e: 23c2 0006 04d4 movel %d2,604d4 <_Event_Sync_state> _ISR_Enable( level ); 45e64: 46c4 movew %d4,%sr if ( ticks ) { 45e66: 4a85 tstl %d5 45e68: 6672 bnes 45edc <_Event_Seize+0xd8> NULL ); _Watchdog_Insert_ticks( &executing->Timer, ticks ); } _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); 45e6a: 4878 0100 pea 100 45e6e: 2f0a movel %a2,%sp@- 45e70: 4eb9 0004 923c jsr 4923c <_Thread_Set_state> _ISR_Disable( level ); 45e76: 203c 0000 0700 movel #1792,%d0 45e7c: 40c1 movew %sr,%d1 45e7e: 8081 orl %d1,%d0 45e80: 46c0 movew %d0,%sr sync_state = _Event_Sync_state; _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45e82: 7401 moveq #1,%d2 45e84: 508f addql #8,%sp _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); _ISR_Disable( level ); sync_state = _Event_Sync_state; 45e86: 2039 0006 04d4 movel 604d4 <_Event_Sync_state>,%d0 _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 45e8c: 42b9 0006 04d4 clrl 604d4 <_Event_Sync_state> if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45e92: b480 cmpl %d0,%d2 45e94: 6700 00a4 beqw 45f3a <_Event_Seize+0x136> * An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); 45e98: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 45e9c: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED } 45ea0: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED * An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); 45ea6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 45eaa: 4e5e unlk %fp <== NOT EXECUTED * An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); 45eac: 4ef9 0004 83e0 jmp 483e0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED *event_out = seized_events; return; } if ( _Options_Is_no_wait( option_set ) ) { _ISR_Enable( level ); 45eb2: 46c4 movew %d4,%sr <== NOT EXECUTED executing->Wait.return_code = RTEMS_UNSATISFIED; 45eb4: 720d moveq #13,%d1 <== NOT EXECUTED 45eb6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); } 45eba: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED } if ( _Options_Is_no_wait( option_set ) ) { _ISR_Enable( level ); executing->Wait.return_code = RTEMS_UNSATISFIED; *event_out = seized_events; 45ec0: 2280 movel %d0,%a1@ <== NOT EXECUTED * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); } 45ec2: 4e5e unlk %fp <== NOT EXECUTED 45ec4: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear( rtems_event_set the_event_set, rtems_event_set the_mask ) { return ( the_event_set & ~(the_mask) ); 45ec6: 2200 movel %d0,%d1 45ec8: 4681 notl %d1 45eca: c283 andl %d3,%d1 45ecc: 2081 movel %d1,%a0@ if ( !_Event_sets_Is_empty( seized_events ) && (seized_events == event_in || _Options_Is_any( option_set )) ) { api->pending_events = _Event_sets_Clear( pending_events, seized_events ); _ISR_Enable( level ); 45ece: 46c4 movew %d4,%sr *event_out = seized_events; 45ed0: 2280 movel %d0,%a1@ * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); } 45ed2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 45ed8: 4e5e unlk %fp 45eda: 4e75 rts _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; _ISR_Enable( level ); if ( ticks ) { _Watchdog_Initialize( 45edc: 202a 0008 movel %a2@(8),%d0 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45ee0: 223c 0004 60cc movel #286924,%d1 the_watchdog->id = id; 45ee6: 2540 0068 movel %d0,%a2@(104) Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45eea: 2541 0064 movel %d1,%a2@(100) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45eee: 42aa 0050 clrl %a2@(80) the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 45ef2: 42aa 006c clrl %a2@(108) Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45ef6: 2545 0054 movel %d5,%a2@(84) _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45efa: 486a 0048 pea %a2@(72) 45efe: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> 45f04: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert> 45f0a: 508f addql #8,%sp NULL ); _Watchdog_Insert_ticks( &executing->Timer, ticks ); } _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); 45f0c: 4878 0100 pea 100 45f10: 2f0a movel %a2,%sp@- 45f12: 4eb9 0004 923c jsr 4923c <_Thread_Set_state> _ISR_Disable( level ); 45f18: 203c 0000 0700 movel #1792,%d0 45f1e: 40c1 movew %sr,%d1 45f20: 8081 orl %d1,%d0 45f22: 46c0 movew %d0,%sr sync_state = _Event_Sync_state; _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45f24: 7401 moveq #1,%d2 45f26: 508f addql #8,%sp _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); _ISR_Disable( level ); sync_state = _Event_Sync_state; 45f28: 2039 0006 04d4 movel 604d4 <_Event_Sync_state>,%d0 _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 45f2e: 42b9 0006 04d4 clrl 604d4 <_Event_Sync_state> if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45f34: b480 cmpl %d0,%d2 45f36: 6600 ff60 bnew 45e98 <_Event_Seize+0x94> _ISR_Enable( level ); 45f3a: 46c1 movew %d1,%sr * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); } 45f3c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 45f42: 4e5e unlk %fp ... =============================================================================== 00045fa4 <_Event_Surrender>: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); 45fa4: 203c 0000 0700 movel #1792,%d0 */ void _Event_Surrender( Thread_Control *the_thread ) { 45faa: 4e56 ffec linkw %fp,#-20 45fae: 48d7 043c moveml %d2-%d5/%a2,%sp@ 45fb2: 246e 0008 moveal %fp@(8),%a2 rtems_event_set event_condition; rtems_event_set seized_events; rtems_option option_set; RTEMS_API_Control *api; api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 45fb6: 206a 00fe moveal %a2@(254),%a0 option_set = (rtems_option) the_thread->Wait.option; 45fba: 282a 0030 movel %a2@(48),%d4 _ISR_Disable( level ); 45fbe: 40c3 movew %sr,%d3 45fc0: 8083 orl %d3,%d0 45fc2: 46c0 movew %d0,%sr pending_events = api->pending_events; event_condition = (rtems_event_set) the_thread->Wait.count; 45fc4: 222a 0024 movel %a2@(36),%d1 RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get( rtems_event_set the_event_set, rtems_event_set the_event_condition ) { return ( the_event_set & the_event_condition ); 45fc8: 2001 movel %d1,%d0 api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); pending_events = api->pending_events; 45fca: 2410 movel %a0@,%d2 45fcc: c082 andl %d2,%d0 seized_events = _Event_sets_Get( pending_events, event_condition ); /* * No events were seized in this operation */ if ( _Event_sets_Is_empty( seized_events ) ) { 45fce: 6776 beqs 46046 <_Event_Surrender+0xa2> /* * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && 45fd0: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8> 45fd6: 670a beqs 45fe2 <_Event_Surrender+0x3e> <== ALWAYS TAKEN 45fd8: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 45fde: 6700 00a0 beqw 46080 <_Event_Surrender+0xdc> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event ( States_Control the_states ) { return (the_states & STATES_WAITING_FOR_EVENT); 45fe2: 2a2a 0010 movel %a2@(16),%d5 45fe6: 0285 0000 0100 andil #256,%d5 } /* * Otherwise, this is a normal send to another thread */ if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { 45fec: 674c beqs 4603a <_Event_Surrender+0x96> <== NEVER TAKEN if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { 45fee: b081 cmpl %d1,%d0 45ff0: 6706 beqs 45ff8 <_Event_Surrender+0x54> <== ALWAYS TAKEN 45ff2: 0804 0001 btst #1,%d4 <== NOT EXECUTED 45ff6: 6742 beqs 4603a <_Event_Surrender+0x96> <== NOT EXECUTED RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear( rtems_event_set the_event_set, rtems_event_set the_mask ) { return ( the_event_set & ~(the_mask) ); 45ff8: 2200 movel %d0,%d1 45ffa: 4681 notl %d1 45ffc: c282 andl %d2,%d1 45ffe: 2081 movel %d1,%a0@ api->pending_events = _Event_sets_Clear( pending_events, seized_events ); the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 46000: 206a 0028 moveal %a2@(40),%a0 * Otherwise, this is a normal send to another thread */ if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { api->pending_events = _Event_sets_Clear( pending_events, seized_events ); the_thread->Wait.count = 0; 46004: 42aa 0024 clrl %a2@(36) *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 46008: 2080 movel %d0,%a0@ _ISR_Flash( level ); 4600a: 203c 0000 0700 movel #1792,%d0 46010: 46c3 movew %d3,%sr 46012: 8083 orl %d3,%d0 46014: 46c0 movew %d0,%sr if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 46016: 7a02 moveq #2,%d5 46018: baaa 0050 cmpl %a2@(80),%d5 4601c: 6734 beqs 46052 <_Event_Surrender+0xae> _ISR_Enable( level ); 4601e: 46c3 movew %d3,%sr RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 46020: 2f3c 1003 fff8 movel #268697592,%sp@- 46026: 2f0a movel %a2,%sp@- 46028: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> 4602e: 508f addql #8,%sp } return; } } _ISR_Enable( level ); } 46030: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 46036: 4e5e unlk %fp 46038: 4e75 rts _Thread_Unblock( the_thread ); } return; } } _ISR_Enable( level ); 4603a: 46c3 movew %d3,%sr <== NOT EXECUTED } 4603c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 46042: 4e5e unlk %fp <== NOT EXECUTED 46044: 4e75 rts <== NOT EXECUTED /* * No events were seized in this operation */ if ( _Event_sets_Is_empty( seized_events ) ) { _ISR_Enable( level ); 46046: 46c3 movew %d3,%sr } return; } } _ISR_Enable( level ); } 46048: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 4604e: 4e5e unlk %fp 46050: 4e75 rts RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 46052: 7003 moveq #3,%d0 46054: 2540 0050 movel %d0,%a2@(80) if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { _ISR_Enable( level ); _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 46058: 46c3 movew %d3,%sr (void) _Watchdog_Remove( &the_thread->Timer ); 4605a: 486a 0048 pea %a2@(72) 4605e: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> 46064: 2f3c 1003 fff8 movel #268697592,%sp@- 4606a: 2f0a movel %a2,%sp@- 4606c: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> 46072: 4fef 000c lea %sp@(12),%sp } return; } } _ISR_Enable( level ); } 46076: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 4607c: 4e5e unlk %fp 4607e: 4e75 rts * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 46080: 2279 0006 04d4 moveal 604d4 <_Event_Sync_state>,%a1 <== NOT EXECUTED /* * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) && 46086: 7a02 moveq #2,%d5 <== NOT EXECUTED 46088: ba89 cmpl %a1,%d5 <== NOT EXECUTED 4608a: 6710 beqs 4609c <_Event_Surrender+0xf8> <== NOT EXECUTED ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { 4608c: 2279 0006 04d4 moveal 604d4 <_Event_Sync_state>,%a1 <== NOT EXECUTED * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 46092: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED 46096: ba89 cmpl %a1,%d5 <== NOT EXECUTED 46098: 6600 ff48 bnew 45fe2 <_Event_Surrender+0x3e> <== NOT EXECUTED (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { if ( seized_events == event_condition || _Options_Is_any(option_set) ) { 4609c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4609e: 6706 beqs 460a6 <_Event_Surrender+0x102> <== NOT EXECUTED 460a0: 0804 0001 btst #1,%d4 <== NOT EXECUTED 460a4: 671a beqs 460c0 <_Event_Surrender+0x11c> <== NOT EXECUTED 460a6: 2200 movel %d0,%d1 <== NOT EXECUTED 460a8: 4681 notl %d1 <== NOT EXECUTED 460aa: c282 andl %d2,%d1 <== NOT EXECUTED 460ac: 2081 movel %d1,%a0@ <== NOT EXECUTED api->pending_events = _Event_sets_Clear( pending_events,seized_events ); the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 460ae: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { if ( seized_events == event_condition || _Options_Is_any(option_set) ) { api->pending_events = _Event_sets_Clear( pending_events,seized_events ); the_thread->Wait.count = 0; 460b2: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 460b6: 2080 movel %d0,%a0@ <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 460b8: 7003 moveq #3,%d0 <== NOT EXECUTED 460ba: 23c0 0006 04d4 movel %d0,604d4 <_Event_Sync_state> <== NOT EXECUTED } _ISR_Enable( level ); 460c0: 46c3 movew %d3,%sr <== NOT EXECUTED } return; } } _ISR_Enable( level ); } 460c2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 460c8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000460cc <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) { 460cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 460d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 460d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; ISR_Level level; the_thread = _Thread_Get( id, &location ); 460d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 460d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 460dc: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 460e2: 508f addql #8,%sp <== NOT EXECUTED 460e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 460e8: 6642 bnes 4612c <_Event_Timeout+0x60> <== NOT EXECUTED * * If it is not satisfied, then it is "nothing happened" and * this is the "timeout" transition. After a request is satisfied, * a timeout is not allowed to occur. */ _ISR_Disable( level ); 460ea: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 460f0: 40c2 movew %sr,%d2 <== NOT EXECUTED 460f2: 8282 orl %d2,%d1 <== NOT EXECUTED 460f4: 46c1 movew %d1,%sr <== NOT EXECUTED _ISR_Enable( level ); return; } #endif the_thread->Wait.count = 0; 460f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 460f8: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED if ( _Thread_Is_executing( the_thread ) ) { 460fc: b0b9 0006 0102 cmpl 60102 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 46102: 6734 beqs 46138 <_Event_Timeout+0x6c> <== NOT EXECUTED if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; } the_thread->Wait.return_code = RTEMS_TIMEOUT; 46104: 7606 moveq #6,%d3 <== NOT EXECUTED 46106: 2040 moveal %d0,%a0 <== NOT EXECUTED 46108: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED _ISR_Enable( level ); 4610c: 46c2 movew %d2,%sr <== NOT EXECUTED 4610e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 46114: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46116: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED _Thread_Unblock( the_thread ); _Thread_Unnest_dispatch(); break; 4611c: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4611e: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46124: 5380 subql #1,%d0 <== NOT EXECUTED 46126: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 4612c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 46130: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46134: 4e5e unlk %fp <== NOT EXECUTED 46136: 4e75 rts <== NOT EXECUTED } #endif the_thread->Wait.count = 0; if ( _Thread_Is_executing( the_thread ) ) { if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) 46138: 2239 0006 04d4 movel 604d4 <_Event_Sync_state>,%d1 <== NOT EXECUTED 4613e: 7601 moveq #1,%d3 <== NOT EXECUTED 46140: b681 cmpl %d1,%d3 <== NOT EXECUTED 46142: 66c0 bnes 46104 <_Event_Timeout+0x38> <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; } the_thread->Wait.return_code = RTEMS_TIMEOUT; 46144: 7606 moveq #6,%d3 <== NOT EXECUTED 46146: 2040 moveal %d0,%a0 <== NOT EXECUTED #endif the_thread->Wait.count = 0; if ( _Thread_Is_executing( the_thread ) ) { if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 46148: 7202 moveq #2,%d1 <== NOT EXECUTED } the_thread->Wait.return_code = RTEMS_TIMEOUT; 4614a: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED #endif the_thread->Wait.count = 0; if ( _Thread_Is_executing( the_thread ) ) { if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4614e: 23c1 0006 04d4 movel %d1,604d4 <_Event_Sync_state> <== NOT EXECUTED } the_thread->Wait.return_code = RTEMS_TIMEOUT; _ISR_Enable( level ); 46154: 46c2 movew %d2,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 46156: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4615c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4615e: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED _Thread_Unblock( the_thread ); _Thread_Unnest_dispatch(); break; 46164: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 46166: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4616c: 5380 subql #1,%d0 <== NOT EXECUTED 4616e: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED 46174: 60b6 bras 4612c <_Event_Timeout+0x60> <== NOT EXECUTED ... =============================================================================== 0004c5f4 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) { 4c5f4: 4e56 ffcc linkw %fp,#-52 4c5f8: 226e 000c moveal %fp@(12),%a1 4c5fc: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4c600: 246e 0008 moveal %fp@(8),%a2 Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE 4c604: 2e09 movel %a1,%d7 4c606: 5887 addql #4,%d7 - HEAP_ALLOC_BONUS; uintptr_t const page_size = heap->page_size; 4c608: 202a 0010 movel %a2@(16),%d0 Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) { 4c60c: 222e 0010 movel %fp@(16),%d1 4c610: 282e 0014 movel %fp@(20),%d4 Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE - HEAP_ALLOC_BONUS; uintptr_t const page_size = heap->page_size; 4c614: 2d40 fffc movel %d0,%fp@(-4) Heap_Block *block = NULL; uintptr_t alloc_begin = 0; uint32_t search_count = 0; bool search_again = false; if ( block_size_floor < alloc_size ) { 4c618: be89 cmpl %a1,%d7 4c61a: 6500 014e bcsw 4c76a <_Heap_Allocate_aligned_with_boundary+0x176> /* Integer overflow occured */ return NULL; } if ( boundary != 0 ) { 4c61e: 4a84 tstl %d4 4c620: 6600 0144 bnew 4c766 <_Heap_Allocate_aligned_with_boundary+0x172> if ( stats->max_search < search_count ) { stats->max_search = search_count; } return (void *) alloc_begin; } 4c624: 206a 0008 moveal %a2@(8),%a0 do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4c628: b1ca cmpal %a2,%a0 4c62a: 6700 013e beqw 4c76a <_Heap_Allocate_aligned_with_boundary+0x176> uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4c62e: 242e fffc movel %fp@(-4),%d2 + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4c632: 7c04 moveq #4,%d6 uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4c634: 5e82 addql #7,%d2 + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4c636: 9c89 subl %a1,%d6 do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4c638: 7601 moveq #1,%d3 4c63a: 2647 moveal %d7,%a3 uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4c63c: 2d42 fff8 movel %d2,%fp@(-8) + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4c640: 2d46 fff4 movel %d6,%fp@(-12) /* * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag * field. Thus the value is about one unit larger than the real block * size. The greater than operator takes this into account. */ if ( block->size_and_flag > block_size_floor ) { 4c644: 2028 0004 movel %a0@(4),%d0 4c648: b08b cmpl %a3,%d0 4c64a: 630e blss 4c65a <_Heap_Allocate_aligned_with_boundary+0x66> if ( alignment == 0 ) { 4c64c: 4a81 tstl %d1 4c64e: 661c bnes 4c66c <_Heap_Allocate_aligned_with_boundary+0x78> RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 4c650: 2408 movel %a0,%d2 4c652: 5082 addql #8,%d2 } /* Statistics */ ++search_count; if ( alloc_begin != 0 ) { 4c654: 4a82 tstl %d2 4c656: 6600 00de bnew 4c736 <_Heap_Allocate_aligned_with_boundary+0x142> break; } block = block->next; 4c65a: 2003 movel %d3,%d0 4c65c: 5280 addql #1,%d0 4c65e: 2068 0008 moveal %a0@(8),%a0 do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4c662: b1ca cmpal %a2,%a0 4c664: 6700 0110 beqw 4c776 <_Heap_Allocate_aligned_with_boundary+0x182> 4c668: 2600 movel %d0,%d3 <== NOT EXECUTED 4c66a: 60d8 bras 4c644 <_Heap_Allocate_aligned_with_boundary+0x50><== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4c66c: 7efe moveq #-2,%d7 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 4c66e: 4be8 0008 lea %a0@(8),%a5 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4c672: c087 andl %d7,%d0 if ( stats->max_search < search_count ) { stats->max_search = search_count; } return (void *) alloc_begin; } 4c674: 286a 0014 moveal %a2@(20),%a4 uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; 4c678: d088 addl %a0,%d0 uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size + HEAP_BLOCK_HEADER_SIZE + page_size - 1; 4c67a: 2a2e fff8 movel %fp@(-8),%d5 4c67e: 9a8c subl %a4,%d5 uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; uintptr_t alloc_begin = alloc_end - alloc_size; 4c680: 242e fff4 movel %fp@(-12),%d2 4c684: d480 addl %d0,%d2 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4c686: 2c02 movel %d2,%d6 uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4c688: d085 addl %d5,%d0 4c68a: 4c41 6005 remul %d1,%d5,%d6 4c68e: 9485 subl %d5,%d2 uintptr_t alloc_begin = alloc_end - alloc_size; alloc_begin = _Heap_Align_down( alloc_begin, alignment ); /* Ensure that the we have a valid new block at the end */ if ( alloc_begin > alloc_begin_ceiling ) { 4c690: b480 cmpl %d0,%d2 4c692: 630a blss 4c69e <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN 4c694: 2a00 movel %d0,%d5 <== NOT EXECUTED 4c696: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED 4c69a: 9082 subl %d2,%d0 <== NOT EXECUTED 4c69c: 2400 movel %d0,%d2 <== NOT EXECUTED } alloc_end = alloc_begin + alloc_size; /* Ensure boundary constaint */ if ( boundary != 0 ) { 4c69e: 4a84 tstl %d4 4c6a0: 676a beqs 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== ALWAYS TAKEN /* Ensure that the we have a valid new block at the end */ if ( alloc_begin > alloc_begin_ceiling ) { alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); } alloc_end = alloc_begin + alloc_size; 4c6a2: 2002 movel %d2,%d0 <== NOT EXECUTED 4c6a4: d089 addl %a1,%d0 <== NOT EXECUTED 4c6a6: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c6a8: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED 4c6ac: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c6ae: 9c85 subl %d5,%d6 <== NOT EXECUTED 4c6b0: 2a06 movel %d6,%d5 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { 4c6b2: bc82 cmpl %d2,%d6 <== NOT EXECUTED 4c6b4: 6356 blss 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c6b6: bc80 cmpl %d0,%d6 <== NOT EXECUTED 4c6b8: 6452 bccs 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED alloc_end = alloc_begin + alloc_size; /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; 4c6ba: 2c0d movel %a5,%d6 <== NOT EXECUTED 4c6bc: dc89 addl %a1,%d6 <== NOT EXECUTED uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { if ( boundary_line < boundary_floor ) { 4c6be: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c6c0: 6598 bcss 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED return 0; } alloc_begin = boundary_line - alloc_size; 4c6c2: 2405 movel %d5,%d2 <== NOT EXECUTED 4c6c4: 9489 subl %a1,%d2 <== NOT EXECUTED 4c6c6: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c6c8: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c6cc: 9480 subl %d0,%d2 <== NOT EXECUTED alloc_begin = _Heap_Align_down( alloc_begin, alignment ); alloc_end = alloc_begin + alloc_size; 4c6ce: 2002 movel %d2,%d0 <== NOT EXECUTED 4c6d0: d089 addl %a1,%d0 <== NOT EXECUTED 4c6d2: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c6d4: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c6d8: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c6da: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c6dc: 2a07 movel %d7,%d5 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { 4c6de: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c6e0: 632a blss 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c6e2: be80 cmpl %d0,%d7 <== NOT EXECUTED 4c6e4: 6426 bccs 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED if ( boundary_line < boundary_floor ) { 4c6e6: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c6e8: 6500 ff70 bcsw 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED return 0; } alloc_begin = boundary_line - alloc_size; 4c6ec: 2405 movel %d5,%d2 <== NOT EXECUTED 4c6ee: 9489 subl %a1,%d2 <== NOT EXECUTED 4c6f0: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c6f2: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c6f6: 9480 subl %d0,%d2 <== NOT EXECUTED alloc_begin = _Heap_Align_down( alloc_begin, alignment ); alloc_end = alloc_begin + alloc_size; 4c6f8: 2002 movel %d2,%d0 <== NOT EXECUTED 4c6fa: d089 addl %a1,%d0 <== NOT EXECUTED 4c6fc: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c6fe: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c702: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c704: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c706: 2a07 movel %d7,%d5 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { 4c708: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c70a: 62d6 bhis 4c6e2 <_Heap_Allocate_aligned_with_boundary+0xee><== NOT EXECUTED boundary_line = _Heap_Align_down( alloc_end, boundary ); } } /* Ensure that the we have a valid new block at the beginning */ if ( alloc_begin >= alloc_begin_floor ) { 4c70c: b48d cmpl %a5,%d2 4c70e: 6500 ff4a bcsw 4c65a <_Heap_Allocate_aligned_with_boundary+0x66> 4c712: 2e2e fffc movel %fp@(-4),%d7 4c716: 2c02 movel %d2,%d6 4c718: 70f8 moveq #-8,%d0 4c71a: 9088 subl %a0,%d0 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4c71c: d082 addl %d2,%d0 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4c71e: 4c47 6005 remul %d7,%d5,%d6 uintptr_t const alloc_block_begin = (uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size ); uintptr_t const free_size = alloc_block_begin - block_begin; 4c722: 9085 subl %d5,%d0 if ( free_size >= min_block_size || free_size == 0 ) { 4c724: b08c cmpl %a4,%d0 4c726: 6400 ff2c bccw 4c654 <_Heap_Allocate_aligned_with_boundary+0x60> 4c72a: 4a80 tstl %d0 <== NOT EXECUTED 4c72c: 6600 ff2c bnew 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED } /* Statistics */ ++search_count; if ( alloc_begin != 0 ) { 4c730: 4a82 tstl %d2 <== NOT EXECUTED 4c732: 6700 ff26 beqw 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED if ( alloc_begin != 0 ) { /* Statistics */ ++stats->allocs; stats->searches += search_count; block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size ); 4c736: 2f09 movel %a1,%sp@- search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin ); } while ( search_again ); if ( alloc_begin != 0 ) { /* Statistics */ ++stats->allocs; 4c738: 52aa 0048 addql #1,%a2@(72) stats->searches += search_count; 4c73c: d7aa 004c addl %d3,%a2@(76) block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size ); 4c740: 2f02 movel %d2,%sp@- 4c742: 2f08 movel %a0,%sp@- 4c744: 2f0a movel %a2,%sp@- 4c746: 4eb9 0004 76fa jsr 476fa <_Heap_Block_allocate> 4c74c: 4fef 0010 lea %sp@(16),%sp 4c750: 2002 movel %d2,%d0 boundary ); } /* Statistics */ if ( stats->max_search < search_count ) { 4c752: b6aa 0044 cmpl %a2@(68),%d3 4c756: 6304 blss 4c75c <_Heap_Allocate_aligned_with_boundary+0x168> stats->max_search = search_count; 4c758: 2543 0044 movel %d3,%a2@(68) } return (void *) alloc_begin; } 4c75c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 4c762: 4e5e unlk %fp 4c764: 4e75 rts /* Integer overflow occured */ return NULL; } if ( boundary != 0 ) { if ( boundary < alloc_size ) { 4c766: b889 cmpl %a1,%d4 <== NOT EXECUTED 4c768: 6410 bccs 4c77a <_Heap_Allocate_aligned_with_boundary+0x186><== NOT EXECUTED do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4c76a: 4280 clrl %d0 <== NOT EXECUTED if ( stats->max_search < search_count ) { stats->max_search = search_count; } return (void *) alloc_begin; } 4c76c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c772: 4e5e unlk %fp <== NOT EXECUTED 4c774: 4e75 rts <== NOT EXECUTED do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4c776: 4280 clrl %d0 4c778: 60d8 bras 4c752 <_Heap_Allocate_aligned_with_boundary+0x15e> if ( boundary != 0 ) { if ( boundary < alloc_size ) { return NULL; } if ( alignment == 0 ) { 4c77a: 4a81 tstl %d1 <== NOT EXECUTED 4c77c: 6600 fea6 bnew 4c624 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED alignment = page_size; 4c780: 2200 movel %d0,%d1 <== NOT EXECUTED 4c782: 6000 fea0 braw 4c624 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED ... =============================================================================== 000476fa <_Heap_Block_allocate>: - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 476fa: 70fe moveq #-2,%d0 Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) { 476fc: 4e56 ffe0 linkw %fp,#-32 47700: 206e 000c moveal %fp@(12),%a0 47704: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ } _Heap_Protection_block_initialize( heap, block ); return block; } 47708: 2428 0004 movel %a0@(4),%d2 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4770c: 7801 moveq #1,%d4 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4770e: c082 andl %d2,%d0 Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) { 47710: 222e 0010 movel %fp@(16),%d1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 47714: 49f0 0800 lea %a0@(00000000,%d0:l),%a4 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 47718: 2641 moveal %d1,%a3 4771a: 518b subql #8,%a3 Heap_Statistics *const stats = &heap->stats; uintptr_t const alloc_area_begin = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_area_offset = alloc_begin - alloc_area_begin; 4771c: 2a0b movel %a3,%d5 4771e: 9a88 subl %a0,%d5 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 47720: c8ac 0004 andl %a4@(4),%d4 Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) { 47724: 246e 0008 moveal %fp@(8),%a2 47728: 262e 0014 movel %fp@(20),%d3 Heap_Block *free_list_anchor = NULL; _HAssert( alloc_area_begin <= alloc_begin ); if ( _Heap_Is_free( block ) ) { 4772c: 4a84 tstl %d4 4772e: 6600 0090 bnew 477c0 <_Heap_Block_allocate+0xc6> } _Heap_Protection_block_initialize( heap, block ); return block; } 47732: 2828 0008 movel %a0@(8),%d4 { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; next->prev = prev; 47736: 2a44 moveal %d4,%a5 Heap_Block *free_list_anchor = NULL; _HAssert( alloc_area_begin <= alloc_begin ); if ( _Heap_Is_free( block ) ) { free_list_anchor = block->prev; 47738: 2268 000c moveal %a0@(12),%a1 RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 4773c: 2344 0008 movel %d4,%a1@(8) next->prev = prev; 47740: 2b49 000c movel %a1,%a5@(12) _Heap_Free_list_remove( block ); /* Statistics */ --stats->free_blocks; ++stats->used_blocks; stats->free_size -= _Heap_Block_size( block ); 47744: 91aa 0030 subl %d0,%a2@(48) free_list_anchor = block->prev; _Heap_Free_list_remove( block ); /* Statistics */ --stats->free_blocks; 47748: 53aa 0038 subql #1,%a2@(56) ++stats->used_blocks; 4774c: 52aa 0040 addql #1,%a2@(64) stats->free_size -= _Heap_Block_size( block ); } else { free_list_anchor = _Heap_Free_list_head( heap ); } if ( alloc_area_offset < heap->page_size ) { 47750: 202a 0010 movel %a2@(16),%d0 47754: b085 cmpl %d5,%d0 47756: 6272 bhis 477ca <_Heap_Block_allocate+0xd0> RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 47758: 4c40 1004 remul %d0,%d4,%d1 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4775c: 97c4 subal %d4,%a3 _Heap_Block_of_alloc_area( alloc_begin, heap->page_size ); uintptr_t const new_block_begin = (uintptr_t) new_block; uintptr_t const new_block_size = block_end - new_block_begin; block_end = new_block_begin; block_size = block_end - block_begin; 4775e: 200b movel %a3,%d0 47760: 9088 subl %a0,%d0 _HAssert( block_size >= heap->min_block_size ); _HAssert( new_block_size >= heap->min_block_size ); /* Statistics */ stats->free_size += block_size; 47762: d1aa 0030 addl %d0,%a2@(48) uintptr_t block_end = block_begin + block_size; Heap_Block *const new_block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size ); uintptr_t const new_block_begin = (uintptr_t) new_block; uintptr_t const new_block_size = block_end - new_block_begin; 47766: 99cb subal %a3,%a4 _HAssert( new_block_size >= heap->min_block_size ); /* Statistics */ stats->free_size += block_size; if ( _Heap_Is_prev_used( block ) ) { 47768: 0802 0000 btst #0,%d2 4776c: 6774 beqs 477e2 <_Heap_Block_allocate+0xe8> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 4776e: 2a69 0008 moveal %a1@(8),%a5 block = prev_block; block_size += prev_block_size; } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 47772: 7401 moveq #1,%d2 _Heap_Free_list_insert_after( free_list_anchor, block ); free_list_anchor = block; /* Statistics */ ++stats->free_blocks; 47774: 2208 movel %a0,%d1 new_block->next = next; 47776: 214d 0008 movel %a5,%a0@(8) block = prev_block; block_size += prev_block_size; } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4777a: 8480 orl %d0,%d2 new_block->prev = block_before; 4777c: 2149 000c movel %a1,%a0@(12) block_before->next = new_block; 47780: 2348 0008 movel %a0,%a1@(8) next->prev = new_block; 47784: 2b48 000c movel %a0,%a5@(12) _Heap_Free_list_insert_after( free_list_anchor, block ); free_list_anchor = block; /* Statistics */ ++stats->free_blocks; 47788: 52aa 0038 addql #1,%a2@(56) block = prev_block; block_size += prev_block_size; } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4778c: 2142 0004 movel %d2,%a0@(4) new_block->prev_size = block_size; 47790: 2680 movel %d0,%a3@ new_block->size_and_flag = new_block_size; 47792: 274c 0004 movel %a4,%a3@(4) _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size ); 47796: 2f03 movel %d3,%sp@- 47798: 2f01 movel %d1,%sp@- 4779a: 2f0b movel %a3,%sp@- 4779c: 2f0a movel %a2,%sp@- 4779e: 4eba fcb0 jsr %pc@(47450 <_Heap_Block_split>) 477a2: 4fef 0010 lea %sp@(16),%sp alloc_size ); } /* Statistics */ if ( stats->min_free_size > stats->free_size ) { 477a6: 202a 0030 movel %a2@(48),%d0 477aa: b0aa 0034 cmpl %a2@(52),%d0 477ae: 6404 bccs 477b4 <_Heap_Block_allocate+0xba> <== NEVER TAKEN stats->min_free_size = stats->free_size; 477b0: 2540 0034 movel %d0,%a2@(52) } _Heap_Protection_block_initialize( heap, block ); return block; } 477b4: 200b movel %a3,%d0 477b6: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 477bc: 4e5e unlk %fp 477be: 4e75 rts stats->free_size -= _Heap_Block_size( block ); } else { free_list_anchor = _Heap_Free_list_head( heap ); } if ( alloc_area_offset < heap->page_size ) { 477c0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED /* Statistics */ --stats->free_blocks; ++stats->used_blocks; stats->free_size -= _Heap_Block_size( block ); } else { free_list_anchor = _Heap_Free_list_head( heap ); 477c4: 224a moveal %a2,%a1 <== NOT EXECUTED } if ( alloc_area_offset < heap->page_size ) { 477c6: b085 cmpl %d5,%d0 <== NOT EXECUTED 477c8: 638e blss 47758 <_Heap_Block_allocate+0x5e> <== NOT EXECUTED Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { _Heap_Block_split( heap, block, free_list_anchor, alloc_size ); 477ca: 2645 moveal %d5,%a3 477cc: 4873 3800 pea %a3@(00000000,%d3:l) 477d0: 2648 moveal %a0,%a3 477d2: 2f09 movel %a1,%sp@- 477d4: 2f08 movel %a0,%sp@- 477d6: 2f0a movel %a2,%sp@- 477d8: 4eba fc76 jsr %pc@(47450 <_Heap_Block_split>) 477dc: 4fef 0010 lea %sp@(16),%sp 477e0: 60c4 bras 477a6 <_Heap_Block_allocate+0xac> RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Prev_block( const Heap_Block *block ) { return (Heap_Block *) ((uintptr_t) block - block->prev_size); 477e2: 91d0 subal %a0@,%a0 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 477e4: 74fe moveq #-2,%d2 <== NOT EXECUTED } else { Heap_Block *const prev_block = _Heap_Prev_block( block ); uintptr_t const prev_block_size = _Heap_Block_size( prev_block ); block = prev_block; block_size += prev_block_size; 477e6: 2209 movel %a1,%d1 <== NOT EXECUTED 477e8: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED 477ec: d082 addl %d2,%d0 <== NOT EXECUTED } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 477ee: 7401 moveq #1,%d2 <== NOT EXECUTED 477f0: 8480 orl %d0,%d2 <== NOT EXECUTED new_block->prev_size = block_size; 477f2: 2680 movel %d0,%a3@ <== NOT EXECUTED block = prev_block; block_size += prev_block_size; } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 477f4: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED new_block->prev_size = block_size; new_block->size_and_flag = new_block_size; 477f8: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size ); 477fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 477fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47800: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47802: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47804: 4eba fc4a jsr %pc@(47450 <_Heap_Block_split>) <== NOT EXECUTED 47808: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4780c: 6098 bras 477a6 <_Heap_Block_allocate+0xac> <== NOT EXECUTED ... =============================================================================== 00047450 <_Heap_Block_split>: Heap_Control *heap, Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { 47450: 4e56 ffe4 linkw %fp,#-28 47454: 226e 0008 moveal %fp@(8),%a1 47458: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 4745c: 246e 000c moveal %fp@(12),%a2 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 47460: 76fe moveq #-2,%d3 } _Heap_Protection_block_initialize( heap, block ); return block; } 47462: 282a 0004 movel %a2@(4),%d4 ) { Heap_Statistics *const stats = &heap->stats; uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; 47466: 2669 0014 moveal %a1@(20),%a3 uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE; 4746a: 220b movel %a3,%d1 4746c: 5181 subql #8,%d1 Heap_Control *heap, Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { 4746e: 286e 0010 moveal %fp@(16),%a4 Heap_Statistics *const stats = &heap->stats; uintptr_t const page_size = heap->page_size; 47472: 2429 0010 movel %a1@(16),%d2 return heap->stats.size; } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b ) { return a > b ? a : b; 47476: 202e 0014 movel %fp@(20),%d0 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4747a: c684 andl %d4,%d3 return heap->stats.size; } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b ) { return a > b ? a : b; 4747c: b280 cmpl %d0,%d1 4747e: 6302 blss 47482 <_Heap_Block_split+0x32> 47480: 2001 movel %d1,%d0 uintptr_t const min_block_size = heap->min_block_size; uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const used_size = 47482: 5080 addql #8,%d0 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 47484: 2a00 movel %d0,%d5 47486: 4c42 5001 remul %d2,%d1,%d5 if ( remainder != 0 ) { 4748a: 4a81 tstl %d1 4748c: 6766 beqs 474f4 <_Heap_Block_split+0xa4> return value - remainder + alignment; 4748e: d480 addl %d0,%d2 47490: 9481 subl %d1,%d2 _Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE; uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size ); uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size; 47492: 2203 movel %d3,%d1 47494: 5881 addql #4,%d1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 47496: 41f2 3800 lea %a2@(00000000,%d3:l),%a0 4749a: 9280 subl %d0,%d1 uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS; 4749c: 588b addql #4,%a3 Heap_Block *next_block = _Heap_Block_at( block, block_size ); _HAssert( used_size <= block_size + HEAP_ALLOC_BONUS ); _HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS ); if ( free_size >= free_size_limit ) { 4749e: b7c1 cmpal %d1,%a3 474a0: 6264 bhis 47506 <_Heap_Block_split+0xb6> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 474a2: 7001 moveq #1,%d0 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 474a4: 47f2 2800 lea %a2@(00000000,%d2:l),%a3 Heap_Block *const free_block = _Heap_Block_at( block, used_block_size ); uintptr_t free_block_size = block_size - used_block_size; 474a8: 9682 subl %d2,%d3 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 474aa: 7201 moveq #1,%d1 RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 474ac: c880 andl %d0,%d4 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 474ae: 70fe moveq #-2,%d0 uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; block->size_and_flag = size | flag; 474b0: 8484 orl %d4,%d2 474b2: 2542 0004 movel %d2,%a2@(4) _HAssert( used_block_size + free_block_size == block_size ); _Heap_Block_set_size( block, used_block_size ); /* Statistics */ stats->free_size += free_block_size; 474b6: d7a9 0030 addl %d3,%a1@(48) - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 474ba: c0a8 0004 andl %a0@(4),%d0 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 474be: c2b0 0804 andl %a0@(00000004,%d0:l),%d1 if ( _Heap_Is_used( next_block ) ) { 474c2: 6750 beqs 47514 <_Heap_Block_split+0xc4> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 474c4: 246c 0008 moveal %a4@(8),%a2 free_block_size += next_block_size; next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 474c8: 7001 moveq #1,%d0 new_block->next = next; new_block->prev = block_before; 474ca: 274c 000c movel %a4,%a3@(12) 474ce: 8083 orl %d3,%d0 Heap_Block *new_block ) { Heap_Block *next = block_before->next; new_block->next = next; 474d0: 274a 0008 movel %a2,%a3@(8) new_block->prev = block_before; block_before->next = new_block; next->prev = new_block; 474d4: 254b 000c movel %a3,%a2@(12) { Heap_Block *next = block_before->next; new_block->next = next; new_block->prev = block_before; block_before->next = new_block; 474d8: 294b 0008 movel %a3,%a4@(8) if ( _Heap_Is_used( next_block ) ) { _Heap_Free_list_insert_after( free_list_anchor, free_block ); /* Statistics */ ++stats->free_blocks; 474dc: 52a9 0038 addql #1,%a1@(56) free_block_size += next_block_size; next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 474e0: 2740 0004 movel %d0,%a3@(4) next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 474e4: 70fe moveq #-2,%d0 474e6: c1a8 0004 andl %d0,%a0@(4) next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; next_block->prev_size = free_block_size; 474ea: 2083 movel %d3,%a0@ _Heap_Protection_block_initialize( heap, free_block ); } else { next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; } } 474ec: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 474f0: 4e5e unlk %fp 474f2: 4e75 rts uintptr_t const used_size = _Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE; uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size ); uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size; 474f4: 2203 movel %d3,%d1 474f6: 5881 addql #4,%d1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 474f8: 41f2 3800 lea %a2@(00000000,%d3:l),%a0 uintptr_t remainder = value % alignment; if ( remainder != 0 ) { return value - remainder + alignment; } else { return value; 474fc: 2400 movel %d0,%d2 474fe: 9280 subl %d0,%d1 uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS; 47500: 588b addql #4,%a3 Heap_Block *next_block = _Heap_Block_at( block, block_size ); _HAssert( used_size <= block_size + HEAP_ALLOC_BONUS ); _HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS ); if ( free_size >= free_size_limit ) { 47502: b7c1 cmpal %d1,%a3 47504: 639c blss 474a2 <_Heap_Block_split+0x52> next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; _Heap_Protection_block_initialize( heap, free_block ); } else { next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 47506: 7001 moveq #1,%d0 } } 47508: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; _Heap_Protection_block_initialize( heap, free_block ); } else { next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 4750c: 81a8 0004 orl %d0,%a0@(4) } } 47510: 4e5e unlk %fp 47512: 4e75 rts } else { uintptr_t const next_block_size = _Heap_Block_size( next_block ); _Heap_Free_list_replace( next_block, free_block ); free_block_size += next_block_size; 47514: d680 addl %d0,%d3 <== NOT EXECUTED next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 47516: 7001 moveq #1,%d0 <== NOT EXECUTED } _Heap_Protection_block_initialize( heap, block ); return block; } 47518: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED 4751c: 2468 000c moveal %a0@(12),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 47520: 41f3 3800 lea %a3@(00000000,%d3:l),%a0 <== NOT EXECUTED free_block_size += next_block_size; next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 47524: 8083 orl %d3,%d0 <== NOT EXECUTED ) { Heap_Block *next = old_block->next; Heap_Block *prev = old_block->prev; new_block->next = next; 47526: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED new_block->prev = prev; 4752a: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED 4752e: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 47532: 70fe moveq #-2,%d0 <== NOT EXECUTED next->prev = new_block; prev->next = new_block; 47534: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED 47538: c1a8 0004 andl %d0,%a0@(4) <== NOT EXECUTED Heap_Block *prev = old_block->prev; new_block->next = next; new_block->prev = prev; next->prev = new_block; 4753c: 234b 000c movel %a3,%a1@(12) <== NOT EXECUTED next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; next_block->prev_size = free_block_size; 47540: 2083 movel %d3,%a0@ <== NOT EXECUTED 47542: 60a8 bras 474ec <_Heap_Block_split+0x9c> <== NOT EXECUTED =============================================================================== 0004cab0 <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) { 4cab0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4cab4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4cab8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4cabc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4cac0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size; 4cac4: 2602 movel %d2,%d3 <== NOT EXECUTED 4cac6: d680 addl %d0,%d3 <== NOT EXECUTED uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) { Heap_Statistics *const stats = &heap->stats; Heap_Block *const first_block = heap->first_block; 4cac8: 2a2a 0020 movel %a2@(32),%d5 <== NOT EXECUTED Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size; 4cacc: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; 4cad0: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size; uintptr_t const free_size = stats->free_size; 4cad4: 2c2a 0030 movel %a2@(48),%d6 <== NOT EXECUTED Heap_Block *start_block = first_block; Heap_Block *merge_below_block = NULL; Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL; 4cad8: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED Heap_Block *extend_last_block = NULL; 4cadc: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED uintptr_t const free_size = stats->free_size; uintptr_t extend_first_block_size = 0; uintptr_t extended_size = 0; bool extend_area_ok = false; if ( extend_area_end < extend_area_begin ) { 4cae0: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cae2: 640c bccs 4caf0 <_Heap_Extend+0x40> <== NOT EXECUTED if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; } 4cae4: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED _Heap_Block_of_alloc_area( sub_area_end, page_size ); if ( sub_area_end > extend_area_begin && extend_area_end > sub_area_begin ) { return false; 4caea: 4200 clrb %d0 <== NOT EXECUTED if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; } 4caec: 4e5e unlk %fp <== NOT EXECUTED 4caee: 4e75 rts <== NOT EXECUTED if ( extend_area_end < extend_area_begin ) { return false; } extend_area_ok = _Heap_Get_first_and_last_block( 4caf0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4caf4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4caf8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4cafa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cafc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cafe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb00: 4eb9 0004 7890 jsr 47890 <_Heap_Get_first_and_last_block> <== NOT EXECUTED page_size, min_block_size, &extend_first_block, &extend_last_block ); if (!extend_area_ok ) { 4cb06: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4cb0a: 4a00 tstb %d0 <== NOT EXECUTED 4cb0c: 67d6 beqs 4cae4 <_Heap_Extend+0x34> <== NOT EXECUTED 4cb0e: 2045 moveal %d5,%a0 <== NOT EXECUTED 4cb10: 9bcd subal %a5,%a5 <== NOT EXECUTED 4cb12: 97cb subal %a3,%a3 <== NOT EXECUTED 4cb14: 99cc subal %a4,%a4 <== NOT EXECUTED 4cb16: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED return false; } do { uintptr_t const sub_area_begin = (start_block != first_block) ? (uintptr_t) start_block : heap->area_begin; 4cb1a: ba88 cmpl %a0,%d5 <== NOT EXECUTED 4cb1c: 6700 014a beqw 4cc68 <_Heap_Extend+0x1b8> <== NOT EXECUTED 4cb20: 2208 movel %a0,%d1 <== NOT EXECUTED uintptr_t const sub_area_end = start_block->prev_size; 4cb22: 2010 movel %a0@,%d0 <== NOT EXECUTED Heap_Block *const end_block = _Heap_Block_of_alloc_area( sub_area_end, page_size ); if ( 4cb24: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cb26: 6304 blss 4cb2c <_Heap_Extend+0x7c> <== NOT EXECUTED sub_area_end > extend_area_begin && extend_area_end > sub_area_begin 4cb28: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cb2a: 62b8 bhis 4cae4 <_Heap_Extend+0x34> <== NOT EXECUTED ) { return false; } if ( extend_area_end == sub_area_begin ) { 4cb2c: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cb2e: 6700 0132 beqw 4cc62 <_Heap_Extend+0x1b2> <== NOT EXECUTED merge_below_block = start_block; } else if ( extend_area_end < sub_area_end ) { 4cb32: b083 cmpl %d3,%d0 <== NOT EXECUTED 4cb34: 6304 blss 4cb3a <_Heap_Extend+0x8a> <== NOT EXECUTED 4cb36: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED 4cb3a: 2e00 movel %d0,%d7 <== NOT EXECUTED 4cb3c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cb3e: 5189 subql #8,%a1 <== NOT EXECUTED 4cb40: 4c44 7001 remul %d4,%d1,%d7 <== NOT EXECUTED uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4cb44: 93c1 subal %d1,%a1 <== NOT EXECUTED link_below_block = start_block; } if ( sub_area_end == extend_area_begin ) { 4cb46: b480 cmpl %d0,%d2 <== NOT EXECUTED 4cb48: 6700 0100 beqw 4cc4a <_Heap_Extend+0x19a> <== NOT EXECUTED start_block->prev_size = extend_area_end; merge_above_block = end_block; } else if ( sub_area_end < extend_area_begin ) { 4cb4c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cb4e: 6402 bccs 4cb52 <_Heap_Extend+0xa2> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area( uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) 4cb50: 2a49 moveal %a1,%a5 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4cb52: 70fe moveq #-2,%d0 <== NOT EXECUTED 4cb54: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4cb58: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED link_above_block = end_block; } start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) ); } while ( start_block != first_block ); 4cb5c: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4cb5e: 66ba bnes 4cb1a <_Heap_Extend+0x6a> <== NOT EXECUTED if ( extend_area_begin < heap->area_begin ) { 4cb60: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED 4cb64: 6500 010a bcsw 4cc70 <_Heap_Extend+0x1c0> <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { 4cb68: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED 4cb6c: 6304 blss 4cb72 <_Heap_Extend+0xc2> <== NOT EXECUTED heap->area_end = extend_area_end; 4cb6e: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4cb72: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4cb76: 2009 movel %a1,%d0 <== NOT EXECUTED (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cb78: 7201 moveq #1,%d1 <== NOT EXECUTED } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4cb7a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4cb7e: 9088 subl %a0,%d0 <== NOT EXECUTED (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cb80: 8280 orl %d0,%d1 <== NOT EXECUTED } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; 4cb82: 2083 movel %d3,%a0@ <== NOT EXECUTED extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cb84: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_first_block ); extend_last_block->prev_size = extend_first_block_size; 4cb88: 2280 movel %d0,%a1@ <== NOT EXECUTED extend_last_block->size_and_flag = 0; 4cb8a: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_last_block ); if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) { 4cb8e: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cb92: 6400 0104 bccw 4cc98 <_Heap_Extend+0x1e8> <== NOT EXECUTED heap->first_block = extend_first_block; 4cb96: 2548 0020 movel %a0,%a2@(32) <== NOT EXECUTED } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) { heap->last_block = extend_last_block; } if ( merge_below_block != NULL ) { 4cb9a: 4a8c tstl %a4 <== NOT EXECUTED 4cb9c: 6700 0148 beqw 4cce6 <_Heap_Extend+0x236> <== NOT EXECUTED Heap_Control *heap, uintptr_t extend_area_begin, Heap_Block *first_block ) { uintptr_t const page_size = heap->page_size; 4cba0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED uintptr_t const new_first_block_alloc_begin = _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); 4cba4: 5082 addql #8,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 4cba6: 2802 movel %d2,%d4 <== NOT EXECUTED 4cba8: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED if ( remainder != 0 ) { 4cbac: 4a81 tstl %d1 <== NOT EXECUTED 4cbae: 6704 beqs 4cbb4 <_Heap_Extend+0x104> <== NOT EXECUTED return value - remainder + alignment; 4cbb0: d480 addl %d0,%d2 <== NOT EXECUTED 4cbb2: 9481 subl %d1,%d2 <== NOT EXECUTED uintptr_t const new_first_block_begin = 4cbb4: 2042 moveal %d2,%a0 <== NOT EXECUTED 4cbb6: 5188 subql #8,%a0 <== NOT EXECUTED new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const first_block_begin = (uintptr_t) first_block; uintptr_t const new_first_block_size = 4cbb8: 200c movel %a4,%d0 <== NOT EXECUTED 4cbba: 9088 subl %a0,%d0 <== NOT EXECUTED first_block_begin - new_first_block_begin; Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin; new_first_block->prev_size = first_block->prev_size; new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED; 4cbbc: 7201 moveq #1,%d1 <== NOT EXECUTED 4cbbe: 8280 orl %d0,%d1 <== NOT EXECUTED uintptr_t const first_block_begin = (uintptr_t) first_block; uintptr_t const new_first_block_size = first_block_begin - new_first_block_begin; Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin; new_first_block->prev_size = first_block->prev_size; 4cbc0: 2094 movel %a4@,%a0@ <== NOT EXECUTED new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED; 4cbc2: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Free_block( heap, new_first_block ); 4cbc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cbc8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cbca: 4eba fec8 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED 4cbce: 508f addql #8,%sp <== NOT EXECUTED link_below_block, extend_last_block ); } if ( merge_above_block != NULL ) { 4cbd0: 4a8b tstl %a3 <== NOT EXECUTED 4cbd2: 6700 00d4 beqw 4cca8 <_Heap_Extend+0x1f8> <== NOT EXECUTED ) { uintptr_t const page_size = heap->page_size; uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const last_block_new_size = _Heap_Align_down( extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE, 4cbd6: 5183 subql #8,%d3 <== NOT EXECUTED uintptr_t extend_area_end ) { uintptr_t const page_size = heap->page_size; uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const last_block_new_size = _Heap_Align_down( 4cbd8: 968b subl %a3,%d3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4cbda: 2203 movel %d3,%d1 <== NOT EXECUTED 4cbdc: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED Heap_Block *const new_last_block = _Heap_Block_at( last_block, last_block_new_size ); new_last_block->size_and_flag = (last_block->size_and_flag - last_block_new_size) | HEAP_PREV_BLOCK_USED; 4cbe2: 7201 moveq #1,%d1 <== NOT EXECUTED 4cbe4: 9680 subl %d0,%d3 <== NOT EXECUTED ); Heap_Block *const new_last_block = _Heap_Block_at( last_block, last_block_new_size ); new_last_block->size_and_flag = (last_block->size_and_flag - last_block_new_size) 4cbe6: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED 4cbea: 9083 subl %d3,%d0 <== NOT EXECUTED | HEAP_PREV_BLOCK_USED; 4cbec: 8280 orl %d0,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4cbee: 7001 moveq #1,%d0 <== NOT EXECUTED 4cbf0: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED 4cbf4: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; 4cbf8: 8680 orl %d0,%d3 <== NOT EXECUTED 4cbfa: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED _Heap_Block_set_size( last_block, last_block_new_size ); _Heap_Free_block( heap, last_block ); 4cbfe: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cc00: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cc02: 4eba fe90 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED 4cc06: 508f addql #8,%sp <== NOT EXECUTED extend_first_block, extend_last_block ); } if ( merge_below_block == NULL && merge_above_block == NULL ) { 4cc08: 4a8c tstl %a4 <== NOT EXECUTED 4cc0a: 6700 00c4 beqw 4ccd0 <_Heap_Extend+0x220> <== NOT EXECUTED _Heap_Free_block( heap, extend_first_block ); } _Heap_Set_last_block_size( heap ); extended_size = stats->free_size - free_size; 4cc0e: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 4cc12: 9086 subl %d6,%d0 <== NOT EXECUTED 4cc14: 2c00 movel %d0,%d6 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4cc16: 7001 moveq #1,%d0 <== NOT EXECUTED if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; } 4cc18: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED * This feature will be used to terminate the scattered heap area list. See * also _Heap_Extend(). */ RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap ) { _Heap_Block_set_size( 4cc1c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 4cc20: 9288 subl %a0,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4cc22: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; 4cc26: 8280 orl %d0,%d1 <== NOT EXECUTED 4cc28: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Set_last_block_size( heap ); extended_size = stats->free_size - free_size; /* Statistics */ stats->size += extended_size; 4cc2c: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED if ( extended_size_ptr != NULL ) 4cc30: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 4cc34: 6700 00ca beqw 4cd00 <_Heap_Extend+0x250> <== NOT EXECUTED *extended_size_ptr = extended_size; 4cc38: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4cc3c: 2086 movel %d6,%a0@ <== NOT EXECUTED return true; } 4cc3e: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED stats->size += extended_size; if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; 4cc44: 7001 moveq #1,%d0 <== NOT EXECUTED } 4cc46: 4e5e unlk %fp <== NOT EXECUTED 4cc48: 4e75 rts <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4cc4a: 70fe moveq #-2,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area( uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) 4cc4c: 2649 moveal %a1,%a3 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4cc4e: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED } else if ( extend_area_end < sub_area_end ) { link_below_block = start_block; } if ( sub_area_end == extend_area_begin ) { start_block->prev_size = extend_area_end; 4cc52: 2083 movel %d3,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4cc54: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED } else if ( sub_area_end < extend_area_begin ) { link_above_block = end_block; } start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) ); } while ( start_block != first_block ); 4cc58: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4cc5a: 6600 febe bnew 4cb1a <_Heap_Extend+0x6a> <== NOT EXECUTED 4cc5e: 6000 ff00 braw 4cb60 <_Heap_Extend+0xb0> <== NOT EXECUTED sub_area_end > extend_area_begin && extend_area_end > sub_area_begin ) { return false; } if ( extend_area_end == sub_area_begin ) { 4cc62: 2848 moveal %a0,%a4 <== NOT EXECUTED 4cc64: 6000 fed4 braw 4cb3a <_Heap_Extend+0x8a> <== NOT EXECUTED return false; } do { uintptr_t const sub_area_begin = (start_block != first_block) ? (uintptr_t) start_block : heap->area_begin; 4cc68: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED 4cc6c: 6000 feb4 braw 4cb22 <_Heap_Extend+0x72> <== NOT EXECUTED } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4cc70: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4cc74: 2009 movel %a1,%d0 <== NOT EXECUTED (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cc76: 7201 moveq #1,%d1 <== NOT EXECUTED } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4cc78: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4cc7c: 9088 subl %a0,%d0 <== NOT EXECUTED start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) ); } while ( start_block != first_block ); if ( extend_area_begin < heap->area_begin ) { heap->area_begin = extend_area_begin; 4cc7e: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cc82: 8280 orl %d0,%d1 <== NOT EXECUTED } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; 4cc84: 2083 movel %d3,%a0@ <== NOT EXECUTED extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4cc86: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_first_block ); extend_last_block->prev_size = extend_first_block_size; 4cc8a: 2280 movel %d0,%a1@ <== NOT EXECUTED extend_last_block->size_and_flag = 0; 4cc8c: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_last_block ); if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) { 4cc90: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cc94: 6500 ff00 bcsw 4cb96 <_Heap_Extend+0xe6> <== NOT EXECUTED heap->first_block = extend_first_block; } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) { 4cc98: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED 4cc9c: 6300 fefc blsw 4cb9a <_Heap_Extend+0xea> <== NOT EXECUTED heap->last_block = extend_last_block; 4cca0: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED 4cca4: 6000 fef4 braw 4cb9a <_Heap_Extend+0xea> <== NOT EXECUTED ); } if ( merge_above_block != NULL ) { _Heap_Merge_above( heap, merge_above_block, extend_area_end ); } else if ( link_above_block != NULL ) { 4cca8: 4a8d tstl %a5 <== NOT EXECUTED 4ccaa: 6700 ff5c beqw 4cc08 <_Heap_Extend+0x158> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4ccae: 7001 moveq #1,%d0 <== NOT EXECUTED ) { uintptr_t const link_begin = (uintptr_t) link; uintptr_t const first_block_begin = (uintptr_t) first_block; _Heap_Block_set_size( link, first_block_begin - link_begin ); 4ccb0: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4ccb4: 928d subl %a5,%d1 <== NOT EXECUTED 4ccb6: c0ad 0004 andl %a5@(4),%d0 <== NOT EXECUTED } if ( merge_above_block != NULL ) { _Heap_Merge_above( heap, merge_above_block, extend_area_end ); } else if ( link_above_block != NULL ) { _Heap_Link_above( 4ccba: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED block->size_and_flag = size | flag; 4ccbe: 8280 orl %d0,%d1 <== NOT EXECUTED uintptr_t const link_begin = (uintptr_t) link; uintptr_t const first_block_begin = (uintptr_t) first_block; _Heap_Block_set_size( link, first_block_begin - link_begin ); last_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 4ccc0: 7001 moveq #1,%d0 <== NOT EXECUTED 4ccc2: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED 4ccc6: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED extend_first_block, extend_last_block ); } if ( merge_below_block == NULL && merge_above_block == NULL ) { 4ccca: 4a8c tstl %a4 <== NOT EXECUTED 4cccc: 6600 ff40 bnew 4cc0e <_Heap_Extend+0x15e> <== NOT EXECUTED 4ccd0: 4a8b tstl %a3 <== NOT EXECUTED 4ccd2: 6600 ff3a bnew 4cc0e <_Heap_Extend+0x15e> <== NOT EXECUTED _Heap_Free_block( heap, extend_first_block ); 4ccd6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4ccda: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ccdc: 4eba fdb6 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED 4cce0: 508f addql #8,%sp <== NOT EXECUTED 4cce2: 6000 ff2a braw 4cc0e <_Heap_Extend+0x15e> <== NOT EXECUTED heap->last_block = extend_last_block; } if ( merge_below_block != NULL ) { _Heap_Merge_below( heap, extend_area_begin, merge_below_block ); } else if ( link_below_block != NULL ) { 4cce6: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED 4ccea: 6700 fee4 beqw 4cbd0 <_Heap_Extend+0x120> <== NOT EXECUTED { uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const link_begin = (uintptr_t) link; last_block->size_and_flag = (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED; 4ccee: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4ccf2: 7201 moveq #1,%d1 <== NOT EXECUTED 4ccf4: 9089 subl %a1,%d0 <== NOT EXECUTED 4ccf6: 8280 orl %d0,%d1 <== NOT EXECUTED 4ccf8: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 4ccfc: 6000 fed2 braw 4cbd0 <_Heap_Extend+0x120> <== NOT EXECUTED if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; } 4cd00: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED stats->size += extended_size; if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; 4cd06: 7001 moveq #1,%d0 <== NOT EXECUTED } 4cd08: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c788 <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) { 4c788: 4e56 ffe8 linkw %fp,#-24 4c78c: 202e 000c movel %fp@(12),%d0 4c790: 2040 moveal %d0,%a0 4c792: 5188 subql #8,%a0 4c794: 226e 0008 moveal %fp@(8),%a1 4c798: 4c69 0001 0010 remul %a1@(16),%d1,%d0 4c79e: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap( const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block 4c7a2: 2029 0020 movel %a1@(32),%d0 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4c7a6: 91c1 subal %d1,%a0 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4c7a8: b088 cmpl %a0,%d0 4c7aa: 6200 0098 bhiw 4c844 <_Heap_Free+0xbc> 4c7ae: 2229 0024 movel %a1@(36),%d1 4c7b2: b288 cmpl %a0,%d1 4c7b4: 6500 008e bcsw 4c844 <_Heap_Free+0xbc> --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c7b8: 2628 0004 movel %a0@(4),%d3 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4c7bc: 74fe moveq #-2,%d2 4c7be: c483 andl %d3,%d2 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4c7c0: 45f0 2800 lea %a0@(00000000,%d2:l),%a2 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4c7c4: b5c0 cmpal %d0,%a2 4c7c6: 657c bcss 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN 4c7c8: b5c1 cmpal %d1,%a2 4c7ca: 6278 bhis 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN 4c7cc: 282a 0004 movel %a2@(4),%d4 if ( !_Heap_Is_block_in_heap( heap, next_block ) ) { _HAssert( false ); return false; } if ( !_Heap_Is_prev_used( next_block ) ) { 4c7d0: 0804 0000 btst #0,%d4 4c7d4: 676e beqs 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4c7d6: 7afe moveq #-2,%d5 4c7d8: c885 andl %d5,%d4 return true; } next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); 4c7da: b5c1 cmpal %d1,%a2 4c7dc: 6700 00f6 beqw 4c8d4 <_Heap_Free+0x14c> block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4c7e0: 7a01 moveq #1,%d5 4c7e2: cab2 4804 andl %a2@(00000004,%d4:l),%d5 return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) 4c7e6: 57c5 seq %d5 4c7e8: 4485 negl %d5 next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); if ( !_Heap_Is_prev_used( block ) ) { 4c7ea: 0803 0000 btst #0,%d3 4c7ee: 665e bnes 4c84e <_Heap_Free+0xc6> uintptr_t const prev_size = block->prev_size; 4c7f0: 2610 movel %a0@,%d3 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4c7f2: 91c3 subal %d3,%a0 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4c7f4: b1c0 cmpal %d0,%a0 4c7f6: 654c bcss 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN 4c7f8: b1c1 cmpal %d1,%a0 4c7fa: 6248 bhis 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4c7fc: 7001 moveq #1,%d0 4c7fe: c0a8 0004 andl %a0@(4),%d0 return( false ); } /* As we always coalesce free blocks, the block that preceedes prev_block must have been used. */ if ( !_Heap_Is_prev_used ( prev_block) ) { 4c802: 6740 beqs 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN _HAssert( false ); return( false ); } if ( next_is_free ) { /* coalesce both */ 4c804: 4a05 tstb %d5 4c806: 6700 00d2 beqw 4c8da <_Heap_Free+0x152> --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c80a: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED _HAssert( false ); return( false ); } if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; 4c80e: d882 addl %d2,%d4 <== NOT EXECUTED 4c810: d684 addl %d4,%d3 <== NOT EXECUTED _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c812: 7001 moveq #1,%d0 <== NOT EXECUTED --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c814: 246a 000c moveal %a2@(12),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 4c818: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c81c: 8083 orl %d3,%d0 <== NOT EXECUTED next->prev = prev; 4c81e: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED } if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; 4c822: 53a9 0038 subql #1,%a1@(56) <== NOT EXECUTED prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; 4c826: 2183 3800 movel %d3,%a0@(00000000,%d3:l) <== NOT EXECUTED if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c82a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED stats->max_free_blocks = stats->free_blocks; } } /* Statistics */ --stats->used_blocks; 4c82e: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED ++stats->frees; 4c832: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED stats->free_size += block_size; 4c836: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED return( true ); 4c83a: 7001 moveq #1,%d0 <== NOT EXECUTED } 4c83c: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 4c840: 4e5e unlk %fp 4c842: 4e75 rts 4c844: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 <== NOT EXECUTED /* As we always coalesce free blocks, the block that preceedes prev_block must have been used. */ if ( !_Heap_Is_prev_used ( prev_block) ) { _HAssert( false ); return( false ); 4c848: 4200 clrb %d0 <== NOT EXECUTED --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c84a: 4e5e unlk %fp <== NOT EXECUTED 4c84c: 4e75 rts <== NOT EXECUTED uintptr_t const size = block_size + prev_size; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ 4c84e: 4a05 tstb %d5 4c850: 6736 beqs 4c888 <_Heap_Free+0x100> --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c852: 266a 0008 moveal %a2@(8),%a3 prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ uintptr_t const size = block_size + next_block_size; 4c856: d882 addl %d2,%d4 _Heap_Free_list_replace( next_block, block ); block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c858: 7001 moveq #1,%d0 --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4c85a: 246a 000c moveal %a2@(12),%a2 ) { Heap_Block *next = old_block->next; Heap_Block *prev = old_block->prev; new_block->next = next; 4c85e: 214b 0008 movel %a3,%a0@(8) next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ uintptr_t const size = block_size + next_block_size; _Heap_Free_list_replace( next_block, block ); block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c862: 8084 orl %d4,%d0 new_block->prev = prev; 4c864: 214a 000c movel %a2,%a0@(12) next_block = _Heap_Block_at( block, size ); next_block->prev_size = size; 4c868: 2184 4800 movel %d4,%a0@(00000000,%d4:l) next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ uintptr_t const size = block_size + next_block_size; _Heap_Free_list_replace( next_block, block ); block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c86c: 2140 0004 movel %d0,%a0@(4) /* Statistics */ --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); 4c870: 7001 moveq #1,%d0 next->prev = new_block; prev->next = new_block; 4c872: 2548 0008 movel %a0,%a2@(8) Heap_Block *prev = old_block->prev; new_block->next = next; new_block->prev = prev; next->prev = new_block; 4c876: 2748 000c movel %a0,%a3@(12) stats->max_free_blocks = stats->free_blocks; } } /* Statistics */ --stats->used_blocks; 4c87a: 53a9 0040 subql #1,%a1@(64) ++stats->frees; 4c87e: 52a9 0050 addql #1,%a1@(80) stats->free_size += block_size; 4c882: d5a9 0030 addl %d2,%a1@(48) 4c886: 60b4 bras 4c83c <_Heap_Free+0xb4> block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = block_size; /* Statistics */ ++stats->free_blocks; 4c888: 2029 0038 movel %a1@(56),%d0 next_block->prev_size = size; } else { /* no coalesce */ /* Add 'block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block ); block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4c88c: 7201 moveq #1,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4c88e: 7afe moveq #-2,%d5 next_block->prev_size = block_size; /* Statistics */ ++stats->free_blocks; 4c890: 5280 addql #1,%d0 RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 4c892: 2669 0008 moveal %a1@(8),%a3 new_block->next = next; new_block->prev = block_before; 4c896: 2149 000c movel %a1,%a0@(12) next_block->prev_size = size; } else { /* no coalesce */ /* Add 'block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block ); block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4c89a: 8282 orl %d2,%d1 Heap_Block *new_block ) { Heap_Block *next = block_before->next; new_block->next = next; 4c89c: 214b 0008 movel %a3,%a0@(8) 4c8a0: 2141 0004 movel %d1,%a0@(4) next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4c8a4: cbaa 0004 andl %d5,%a2@(4) new_block->prev = block_before; block_before->next = new_block; next->prev = new_block; 4c8a8: 2748 000c movel %a0,%a3@(12) next_block->prev_size = block_size; 4c8ac: 2482 movel %d2,%a2@ { Heap_Block *next = block_before->next; new_block->next = next; new_block->prev = block_before; block_before->next = new_block; 4c8ae: 2348 0008 movel %a0,%a1@(8) /* Statistics */ ++stats->free_blocks; 4c8b2: 2340 0038 movel %d0,%a1@(56) if ( stats->max_free_blocks < stats->free_blocks ) { 4c8b6: b0a9 003c cmpl %a1@(60),%d0 4c8ba: 6300 ff72 blsw 4c82e <_Heap_Free+0xa6> stats->max_free_blocks = stats->free_blocks; } } /* Statistics */ --stats->used_blocks; 4c8be: 53a9 0040 subql #1,%a1@(64) ++stats->frees; 4c8c2: 52a9 0050 addql #1,%a1@(80) stats->free_size += block_size; 4c8c6: d5a9 0030 addl %d2,%a1@(48) next_block->prev_size = block_size; /* Statistics */ ++stats->free_blocks; if ( stats->max_free_blocks < stats->free_blocks ) { stats->max_free_blocks = stats->free_blocks; 4c8ca: 2340 003c movel %d0,%a1@(60) /* Statistics */ --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); 4c8ce: 7001 moveq #1,%d0 4c8d0: 6000 ff6a braw 4c83c <_Heap_Free+0xb4> return true; } next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); 4c8d4: 4205 clrb %d5 <== NOT EXECUTED 4c8d6: 6000 ff12 braw 4c7ea <_Heap_Free+0x62> <== NOT EXECUTED prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uintptr_t const size = block_size + prev_size; 4c8da: d682 addl %d2,%d3 prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c8dc: 7201 moveq #1,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4c8de: 7afe moveq #-2,%d5 next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uintptr_t const size = block_size + prev_size; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c8e0: 8283 orl %d3,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = size; 4c8e2: 2483 movel %d3,%a2@ /* Statistics */ --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); 4c8e4: 7001 moveq #1,%d0 next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uintptr_t const size = block_size + prev_size; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4c8e6: 2141 0004 movel %d1,%a0@(4) next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4c8ea: cbaa 0004 andl %d5,%a2@(4) stats->max_free_blocks = stats->free_blocks; } } /* Statistics */ --stats->used_blocks; 4c8ee: 53a9 0040 subql #1,%a1@(64) ++stats->frees; 4c8f2: 52a9 0050 addql #1,%a1@(80) stats->free_size += block_size; 4c8f6: d5a9 0030 addl %d2,%a1@(48) 4c8fa: 6000 ff40 braw 4c83c <_Heap_Free+0xb4> ... =============================================================================== 0004ca94 <_Heap_Free_block>: #include #include #include static void _Heap_Free_block( Heap_Control *heap, Heap_Block *block ) { 4ca94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ca98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Heap_Statistics *const stats = &heap->stats; /* Statistics */ ++stats->used_blocks; 4ca9c: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED --stats->frees; 4caa0: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block )); 4caa4: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED } 4caa8: 4e5e unlk %fp <== NOT EXECUTED /* Statistics */ ++stats->used_blocks; --stats->frees; _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block )); 4caaa: 4ef9 0004 cd0c jmp 4cd0c <_Heap_Free> <== NOT EXECUTED =============================================================================== 00047544 <_Heap_Get_first_and_last_block>: uintptr_t page_size, uintptr_t min_block_size, Heap_Block **first_block_ptr, Heap_Block **last_block_ptr ) { 47544: 4e56 fff0 linkw %fp,#-16 47548: 202e 0008 movel %fp@(8),%d0 4754c: 48d7 003c moveml %d2-%d5,%sp@ uintptr_t const heap_area_end = heap_area_begin + heap_area_size; uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); 47550: 2400 movel %d0,%d2 47552: 5082 addql #8,%d2 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 47554: 2a02 movel %d2,%d5 uintptr_t page_size, uintptr_t min_block_size, Heap_Block **first_block_ptr, Heap_Block **last_block_ptr ) { 47556: 222e 0010 movel %fp@(16),%d1 4755a: 262e 000c movel %fp@(12),%d3 uintptr_t const heap_area_end = heap_area_begin + heap_area_size; 4755e: 2043 moveal %d3,%a0 47560: d1c0 addal %d0,%a0 47562: 4c41 5004 remul %d1,%d4,%d5 if ( remainder != 0 ) { 47566: 4a84 tstl %d4 47568: 6704 beqs 4756e <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN return value - remainder + alignment; 4756a: d481 addl %d1,%d2 <== NOT EXECUTED 4756c: 9484 subl %d4,%d2 <== NOT EXECUTED _Heap_Align_down( heap_area_size - overhead, page_size ); Heap_Block *const first_block = (Heap_Block *) first_block_begin; Heap_Block *const last_block = _Heap_Block_at( first_block, first_block_size ); if ( 4756e: b1c0 cmpal %d0,%a0 47570: 6532 bcss 475a4 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin); 47572: 2042 moveal %d2,%a0 47574: 5188 subql #8,%a0 uintptr_t const heap_area_end = heap_area_begin + heap_area_size; uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = 47576: 9480 subl %d0,%d2 Heap_Block *const last_block = _Heap_Block_at( first_block, first_block_size ); if ( heap_area_end < heap_area_begin || heap_area_size <= overhead 47578: b483 cmpl %d3,%d2 4757a: 6428 bccs 475a4 <_Heap_Get_first_and_last_block+0x60> uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin); uintptr_t const first_block_size = _Heap_Align_down( heap_area_size - overhead, page_size ); 4757c: 9682 subl %d2,%d3 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4757e: 2403 movel %d3,%d2 47580: 4c41 2000 remul %d1,%d0,%d2 47584: 9680 subl %d0,%d3 _Heap_Block_at( first_block, first_block_size ); if ( heap_area_end < heap_area_begin || heap_area_size <= overhead || first_block_size < min_block_size 47586: b6ae 0014 cmpl %fp@(20),%d3 4758a: 6518 bcss 475a4 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN ) { /* Invalid area or area too small */ return false; } *first_block_ptr = first_block; 4758c: 226e 0018 moveal %fp@(24),%a1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 47590: d688 addl %a0,%d3 47592: 2288 movel %a0,%a1@ 47594: 226e 001c moveal %fp@(28),%a1 47598: 2283 movel %d3,%a1@ *last_block_ptr = last_block; return true; } 4759a: 4cd7 003c moveml %sp@,%d2-%d5 } *first_block_ptr = first_block; *last_block_ptr = last_block; return true; 4759e: 7001 moveq #1,%d0 } 475a0: 4e5e unlk %fp 475a2: 4e75 rts 475a4: 4cd7 003c moveml %sp@,%d2-%d5 heap_area_end < heap_area_begin || heap_area_size <= overhead || first_block_size < min_block_size ) { /* Invalid area or area too small */ return false; 475a8: 4200 clrb %d0 *first_block_ptr = first_block; *last_block_ptr = last_block; return true; } 475aa: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000518fc <_Heap_Get_free_information>: void _Heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 518fc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 51900: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 51904: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 51908: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } } 5190c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED ) { Heap_Block *the_block; Heap_Block *const tail = _Heap_Free_list_tail(the_heap); info->number = 0; 51910: 4292 clrl %a2@ <== NOT EXECUTED info->largest = 0; 51912: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED info->total = 0; 51916: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED for(the_block = _Heap_Free_list_first(the_heap); 5191a: b1cb cmpal %a3,%a0 <== NOT EXECUTED 5191c: 6734 beqs 51952 <_Heap_Get_free_information+0x56><== NOT EXECUTED 5191e: 7401 moveq #1,%d2 <== NOT EXECUTED 51920: 4283 clrl %d3 <== NOT EXECUTED 51922: 93c9 subal %a1,%a1 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 51924: 70fe moveq #-2,%d0 <== NOT EXECUTED /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); info->number++; info->total += the_size; 51926: 2209 movel %a1,%d1 <== NOT EXECUTED info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); the_block != tail; the_block = the_block->next) 51928: 2802 movel %d2,%d4 <== NOT EXECUTED 5192a: 5284 addql #1,%d4 <== NOT EXECUTED 5192c: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); info->number++; info->total += the_size; 51930: d280 addl %d0,%d1 <== NOT EXECUTED info->number = 0; info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); 51932: 2241 moveal %d1,%a1 <== NOT EXECUTED /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); info->number++; info->total += the_size; if ( info->largest < the_size ) 51934: b680 cmpl %d0,%d3 <== NOT EXECUTED 51936: 6404 bccs 5193c <_Heap_Get_free_information+0x40><== NOT EXECUTED info->largest = the_size; 51938: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); the_block != tail; the_block = the_block->next) 5193c: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED info->number = 0; info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); 51940: b1cb cmpal %a3,%a0 <== NOT EXECUTED 51942: 6708 beqs 5194c <_Heap_Get_free_information+0x50><== NOT EXECUTED 51944: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 51948: 2404 movel %d4,%d2 <== NOT EXECUTED 5194a: 60d8 bras 51924 <_Heap_Get_free_information+0x28><== NOT EXECUTED 5194c: 2482 movel %d2,%a2@ <== NOT EXECUTED 5194e: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } } 51952: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 <== NOT EXECUTED 51956: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d3f8 <_Heap_Get_information>: void _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { 4d3f8: 4e56 fff0 linkw %fp,#-16 4d3fc: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4d400: 246e 0008 moveal %fp@(8),%a2 4d404: 282e 000c movel %fp@(12),%d4 Heap_Block *the_block = the_heap->first_block; Heap_Block *const end = the_heap->last_block; memset(the_info, 0, sizeof(*the_info)); 4d408: 2044 moveal %d4,%a0 void _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { Heap_Block *the_block = the_heap->first_block; 4d40a: 226a 0020 moveal %a2@(32),%a1 Heap_Block *const end = the_heap->last_block; 4d40e: 242a 0024 movel %a2@(36),%d2 memset(the_info, 0, sizeof(*the_info)); 4d412: 4298 clrl %a0@+ 4d414: 4298 clrl %a0@+ 4d416: 4298 clrl %a0@+ 4d418: 4298 clrl %a0@+ 4d41a: 4298 clrl %a0@+ 4d41c: 4290 clrl %a0@ while ( the_block != end ) { 4d41e: b489 cmpl %a1,%d2 4d420: 6734 beqs 4d456 <_Heap_Get_information+0x5e> <== NEVER TAKEN uintptr_t const the_size = _Heap_Block_size(the_block); Heap_Block *const next_block = _Heap_Block_at(the_block, the_size); Heap_Information *info; if ( _Heap_Is_prev_used(next_block) ) info = &the_info->Used; 4d422: 2604 movel %d4,%d3 4d424: 0683 0000 000c addil #12,%d3 Heap_Block *the_block = the_heap->first_block; Heap_Block *const end = the_heap->last_block; memset(the_info, 0, sizeof(*the_info)); while ( the_block != end ) { 4d42a: 2229 0004 movel %a1@(4),%d1 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4d42e: 70fe moveq #-2,%d0 uintptr_t const the_size = _Heap_Block_size(the_block); Heap_Block *const next_block = _Heap_Block_at(the_block, the_size); Heap_Information *info; if ( _Heap_Is_prev_used(next_block) ) info = &the_info->Used; 4d430: 2043 moveal %d3,%a0 4d432: c081 andl %d1,%d0 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4d434: d3c0 addal %d0,%a1 if ( info->largest < the_size ) info->largest = the_size; the_block = next_block; } } 4d436: 2229 0004 movel %a1@(4),%d1 while ( the_block != end ) { uintptr_t const the_size = _Heap_Block_size(the_block); Heap_Block *const next_block = _Heap_Block_at(the_block, the_size); Heap_Information *info; if ( _Heap_Is_prev_used(next_block) ) 4d43a: 0801 0000 btst #0,%d1 4d43e: 6602 bnes 4d442 <_Heap_Get_information+0x4a> info = &the_info->Used; else info = &the_info->Free; 4d440: 2044 moveal %d4,%a0 info->number++; 4d442: 5290 addql #1,%a0@ info->total += the_size; 4d444: d1a8 0008 addl %d0,%a0@(8) if ( info->largest < the_size ) 4d448: b0a8 0004 cmpl %a0@(4),%d0 4d44c: 6304 blss 4d452 <_Heap_Get_information+0x5a> info->largest = the_size; 4d44e: 2140 0004 movel %d0,%a0@(4) Heap_Block *the_block = the_heap->first_block; Heap_Block *const end = the_heap->last_block; memset(the_info, 0, sizeof(*the_info)); while ( the_block != end ) { 4d452: b3c2 cmpal %d2,%a1 4d454: 66d8 bnes 4d42e <_Heap_Get_information+0x36> if ( info->largest < the_size ) info->largest = the_size; the_block = next_block; } } 4d456: 4cd7 041c moveml %sp@,%d2-%d4/%a2 4d45a: 4e5e unlk %fp ... =============================================================================== 000475ae <_Heap_Initialize>: Heap_Control *heap, void *heap_area_begin_ptr, uintptr_t heap_area_size, uintptr_t page_size ) { 475ae: 4e56 ffe0 linkw %fp,#-32 475b2: 48d7 047c moveml %d2-%d6/%a2,%sp@ 475b6: 246e 0008 moveal %fp@(8),%a2 475ba: 282e 000c movel %fp@(12),%d4 475be: 2a2e 0010 movel %fp@(16),%d5 475c2: 242e 0014 movel %fp@(20),%d2 uintptr_t first_block_begin = 0; uintptr_t first_block_size = 0; uintptr_t last_block_begin = 0; uintptr_t min_block_size = 0; bool area_ok = false; Heap_Block *first_block = NULL; 475c6: 42ae fffc clrl %fp@(-4) Heap_Block *last_block = NULL; 475ca: 42ae fff8 clrl %fp@(-8) if ( page_size == 0 ) { 475ce: 4a82 tstl %d2 475d0: 6750 beqs 47622 <_Heap_Initialize+0x74> <== NEVER TAKEN RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 475d2: 7003 moveq #3,%d0 475d4: c082 andl %d2,%d0 if ( remainder != 0 ) { 475d6: 6704 beqs 475dc <_Heap_Initialize+0x2e> <== ALWAYS TAKEN return value - remainder + alignment; 475d8: 5882 addql #4,%d2 <== NOT EXECUTED 475da: 9480 subl %d0,%d2 <== NOT EXECUTED page_size = CPU_ALIGNMENT; } else { page_size = _Heap_Align_up( page_size, CPU_ALIGNMENT ); if ( page_size < CPU_ALIGNMENT ) { 475dc: 7003 moveq #3,%d0 475de: b082 cmpl %d2,%d0 475e0: 6434 bccs 47616 <_Heap_Initialize+0x68> <== NEVER TAKEN RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 475e2: 7210 moveq #16,%d1 475e4: 4c42 1000 remul %d2,%d0,%d1 if ( remainder != 0 ) { 475e8: 4a80 tstl %d0 475ea: 6700 00e8 beqw 476d4 <_Heap_Initialize+0x126> return 0; } } min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size ); area_ok = _Heap_Get_first_and_last_block( 475ee: 486e fff8 pea %fp@(-8) <== NOT EXECUTED return value - remainder + alignment; 475f2: 2602 movel %d2,%d3 <== NOT EXECUTED 475f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 475f8: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 475fe: 9680 subl %d0,%d3 <== NOT EXECUTED 47600: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47602: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47604: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47606: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47608: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED page_size, min_block_size, &first_block, &last_block ); if ( !area_ok ) { 4760e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 47612: 4a00 tstb %d0 <== NOT EXECUTED 47614: 662e bnes 47644 <_Heap_Initialize+0x96> <== NOT EXECUTED return 0; 47616: 4280 clrl %d0 _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; } 47618: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 4761e: 4e5e unlk %fp 47620: 4e75 rts return 0; } } min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size ); area_ok = _Heap_Get_first_and_last_block( 47622: 486e fff8 pea %fp@(-8) <== NOT EXECUTED } else { return value; 47626: 7610 moveq #16,%d3 <== NOT EXECUTED 47628: 486e fffc pea %fp@(-4) <== NOT EXECUTED bool area_ok = false; Heap_Block *first_block = NULL; Heap_Block *last_block = NULL; if ( page_size == 0 ) { page_size = CPU_ALIGNMENT; 4762c: 7404 moveq #4,%d2 <== NOT EXECUTED return 0; } } min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size ); area_ok = _Heap_Get_first_and_last_block( 4762e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47630: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47632: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47634: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47636: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED page_size, min_block_size, &first_block, &last_block ); if ( !area_ok ) { 4763c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 47640: 4a00 tstb %d0 <== NOT EXECUTED 47642: 67d2 beqs 47616 <_Heap_Initialize+0x68> <== NOT EXECUTED return 0; } memset(heap, 0, sizeof(*heap)); 47644: 4878 0058 pea 58 uintptr_t page_size ) { Heap_Statistics *const stats = &heap->stats; uintptr_t const heap_area_begin = (uintptr_t) heap_area_begin_ptr; uintptr_t const heap_area_end = heap_area_begin + heap_area_size; 47648: da84 addl %d4,%d5 ); if ( !area_ok ) { return 0; } memset(heap, 0, sizeof(*heap)); 4764a: 42a7 clrl %sp@- 4764c: 2f0a movel %a2,%sp@- 4764e: 4eb9 0004 f200 jsr 4f200 stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; stats->max_free_blocks = 1; stats->instance = instance++; 47654: 2239 0005 f42c movel 5f42c ,%d1 4765a: 2c01 movel %d1,%d6 4765c: 5286 addql #1,%d6 ); _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; 4765e: 4fef 000c lea %sp@(12),%sp heap->Protection.block_check = _Heap_Protection_block_check_default; heap->Protection.block_error = _Heap_Protection_block_error_default; #endif first_block_begin = (uintptr_t) first_block; last_block_begin = (uintptr_t) last_block; 47662: 226e fff8 moveal %fp@(-8),%a1 first_block_size = last_block_begin - first_block_begin; 47666: 2009 movel %a1,%d0 heap->Protection.block_initialize = _Heap_Protection_block_initialize_default; heap->Protection.block_check = _Heap_Protection_block_check_default; heap->Protection.block_error = _Heap_Protection_block_error_default; #endif first_block_begin = (uintptr_t) first_block; 47668: 206e fffc moveal %fp@(-4),%a0 last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin; 4766c: 9088 subl %a0,%d0 stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; stats->max_free_blocks = 1; stats->instance = instance++; 4766e: 23c6 0005 f42c movel %d6,5f42c last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin; /* First block */ first_block->prev_size = heap_area_end; first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; 47674: 7c01 moveq #1,%d6 47676: 8c80 orl %d0,%d6 first_block_begin = (uintptr_t) first_block; last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin; /* First block */ first_block->prev_size = heap_area_end; 47678: 2085 movel %d5,%a0@ first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; 4767a: 2146 0004 movel %d6,%a0@(4) /* Statistics */ stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; 4767e: 7c01 moveq #1,%d6 first_block_size = last_block_begin - first_block_begin; /* First block */ first_block->prev_size = heap_area_end; first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; first_block->next = _Heap_Free_list_tail( heap ); 47680: 214a 0008 movel %a2,%a0@(8) first_block->prev = _Heap_Free_list_head( heap ); 47684: 214a 000c movel %a2,%a0@(12) _Heap_Protection_block_initialize( heap, first_block ); /* Heap control */ heap->page_size = page_size; 47688: 2542 0010 movel %d2,%a2@(16) * This feature will be used to terminate the scattered heap area list. See * also _Heap_Extend(). */ RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap ) { _Heap_Block_set_size( 4768c: 2408 movel %a0,%d2 4768e: 9489 subl %a1,%d2 heap->min_block_size = min_block_size; 47690: 2543 0014 movel %d3,%a2@(20) heap->area_begin = heap_area_begin; 47694: 2544 0018 movel %d4,%a2@(24) heap->area_end = heap_area_end; 47698: 2545 001c movel %d5,%a2@(28) heap->first_block = first_block; 4769c: 2548 0020 movel %a0,%a2@(32) heap->last_block = last_block; 476a0: 2549 0024 movel %a1,%a2@(36) 476a4: 2342 0004 movel %d2,%a1@(4) _Heap_Free_list_head( heap )->next = first_block; _Heap_Free_list_tail( heap )->prev = first_block; /* Last block */ last_block->prev_size = first_block_size; 476a8: 2280 movel %d0,%a1@ heap->min_block_size = min_block_size; heap->area_begin = heap_area_begin; heap->area_end = heap_area_end; heap->first_block = first_block; heap->last_block = last_block; _Heap_Free_list_head( heap )->next = first_block; 476aa: 2548 0008 movel %a0,%a2@(8) _Heap_Free_list_tail( heap )->prev = first_block; 476ae: 2548 000c movel %a0,%a2@(12) last_block->size_and_flag = 0; _Heap_Set_last_block_size( heap ); _Heap_Protection_block_initialize( heap, last_block ); /* Statistics */ stats->size = first_block_size; 476b2: 2540 002c movel %d0,%a2@(44) stats->free_size = first_block_size; 476b6: 2540 0030 movel %d0,%a2@(48) stats->min_free_size = first_block_size; 476ba: 2540 0034 movel %d0,%a2@(52) stats->free_blocks = 1; 476be: 2546 0038 movel %d6,%a2@(56) stats->max_free_blocks = 1; 476c2: 2546 003c movel %d6,%a2@(60) stats->instance = instance++; 476c6: 2541 0028 movel %d1,%a2@(40) _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; } 476ca: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 476d0: 4e5e unlk %fp 476d2: 4e75 rts return 0; } } min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size ); area_ok = _Heap_Get_first_and_last_block( 476d4: 486e fff8 pea %fp@(-8) uintptr_t remainder = value % alignment; if ( remainder != 0 ) { return value - remainder + alignment; } else { return value; 476d8: 7610 moveq #16,%d3 476da: 486e fffc pea %fp@(-4) 476de: 2f03 movel %d3,%sp@- 476e0: 2f02 movel %d2,%sp@- 476e2: 2f05 movel %d5,%sp@- 476e4: 2f04 movel %d4,%sp@- 476e6: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> page_size, min_block_size, &first_block, &last_block ); if ( !area_ok ) { 476ec: 4fef 0018 lea %sp@(24),%sp 476f0: 4a00 tstb %d0 476f2: 6700 ff22 beqw 47616 <_Heap_Initialize+0x68> 476f6: 6000 ff4c braw 47644 <_Heap_Initialize+0x96> =============================================================================== 0005c68c <_Heap_Resize_block>: void *alloc_begin_ptr, uintptr_t new_alloc_size, uintptr_t *old_size, uintptr_t *new_size ) { 5c68c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5c690: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED 5c694: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 5c698: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 5c69c: 2202 movel %d2,%d1 <== NOT EXECUTED 5c69e: 2042 moveal %d2,%a0 <== NOT EXECUTED 5c6a0: 5188 subql #8,%a0 <== NOT EXECUTED 5c6a2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c6a6: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED 5c6ac: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 5c6b0: 91c0 subal %d0,%a0 <== NOT EXECUTED uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr; Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size ); *old_size = 0; 5c6b2: 4291 clrl %a1@ <== NOT EXECUTED void *alloc_begin_ptr, uintptr_t new_alloc_size, uintptr_t *old_size, uintptr_t *new_size ) { 5c6b4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr; Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size ); *old_size = 0; *new_size = 0; 5c6b8: 4293 clrl %a3@ <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 5c6ba: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 5c6be: 6500 0098 bcsw 5c758 <_Heap_Resize_block+0xcc> <== NOT EXECUTED 5c6c2: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED 5c6c6: 6200 0090 bhiw 5c758 <_Heap_Resize_block+0xcc> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5c6ca: 76fe moveq #-2,%d3 <== NOT EXECUTED 5c6cc: 78fe moveq #-2,%d4 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5c6ce: 7a01 moveq #1,%d5 <== NOT EXECUTED uintptr_t const block_begin = (uintptr_t) block; uintptr_t block_size = _Heap_Block_size( block ); uintptr_t block_end = block_begin + block_size; uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS; 5c6d0: 7204 moveq #4,%d1 <== NOT EXECUTED 5c6d2: 9282 subl %d2,%d1 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5c6d4: c6a8 0004 andl %a0@(4),%d3 <== NOT EXECUTED { Heap_Statistics *const stats = &heap->stats; uintptr_t const block_begin = (uintptr_t) block; uintptr_t block_size = _Heap_Block_size( block ); uintptr_t block_end = block_begin + block_size; 5c6d8: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS; 5c6dc: d28c addl %a4,%d1 <== NOT EXECUTED 5c6de: c8ac 0004 andl %a4@(4),%d4 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5c6e2: cab4 4804 andl %a4@(00000004,%d4:l),%d5 <== NOT EXECUTED bool next_block_is_free = _Heap_Is_free( next_block );; _HAssert( _Heap_Is_block_in_heap( heap, next_block ) ); _HAssert( _Heap_Is_prev_used( next_block ) ); *old_size = alloc_size; 5c6e6: 2281 movel %d1,%a1@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_free( const Heap_Block *block ) { return !_Heap_Is_used( block ); 5c6e8: 4a85 tstl %d5 <== NOT EXECUTED 5c6ea: 57c5 seq %d5 <== NOT EXECUTED 5c6ec: 4485 negl %d5 <== NOT EXECUTED if ( next_block_is_free ) { 5c6ee: 4a05 tstb %d5 <== NOT EXECUTED 5c6f0: 6672 bnes 5c764 <_Heap_Resize_block+0xd8> <== NOT EXECUTED block_size += next_block_size; alloc_size += next_block_size; } if ( new_alloc_size > alloc_size ) { 5c6f2: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c6f4: 6576 bcss 5c76c <_Heap_Resize_block+0xe0> <== NOT EXECUTED return HEAP_RESIZE_UNSATISFIED; } if ( next_block_is_free ) { 5c6f6: 4a05 tstb %d5 <== NOT EXECUTED 5c6f8: 672a beqs 5c724 <_Heap_Resize_block+0x98> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 5c6fa: 7201 moveq #1,%d1 <== NOT EXECUTED 5c6fc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED new_size ); } else { return HEAP_RESIZE_FATAL_ERROR; } } 5c700: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED block->size_and_flag = size | flag; 5c704: 8283 orl %d3,%d1 <== NOT EXECUTED 5c706: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED 5c70a: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Block_set_size( block, block_size ); _Heap_Free_list_remove( next_block ); next_block = _Heap_Block_at( block, block_size ); next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 5c70e: 7201 moveq #1,%d1 <== NOT EXECUTED 5c710: 83b0 3804 orl %d1,%a0@(00000004,%d3:l) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 5c714: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED next->prev = prev; 5c718: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED /* Statistics */ --stats->free_blocks; 5c71c: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED stats->free_size -= next_block_size; 5c720: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED } block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size ); 5c724: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c726: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c728: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5c72a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c72c: 4eb9 0004 76fa jsr 476fa <_Heap_Block_allocate> <== NOT EXECUTED block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS; /* Statistics */ ++stats->resizes; 5c732: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5c736: 72fe moveq #-2,%d1 <== NOT EXECUTED /* Statistics */ --stats->free_blocks; stats->free_size -= next_block_size; } block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size ); 5c738: 2040 moveal %d0,%a0 <== NOT EXECUTED block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS; 5c73a: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c73c: 93c2 subal %d2,%a1 <== NOT EXECUTED /* Statistics */ ++stats->resizes; return HEAP_RESIZE_SUCCESSFUL; 5c73e: 4280 clrl %d0 <== NOT EXECUTED 5c740: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size ); block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS; 5c744: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED 5c748: 2689 movel %a1,%a3@ <== NOT EXECUTED /* Statistics */ ++stats->resizes; 5c74a: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED new_size ); } else { return HEAP_RESIZE_FATAL_ERROR; } } 5c74e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c754: 4e5e unlk %fp <== NOT EXECUTED 5c756: 4e75 rts <== NOT EXECUTED new_alloc_size, old_size, new_size ); } else { return HEAP_RESIZE_FATAL_ERROR; 5c758: 7002 moveq #2,%d0 <== NOT EXECUTED } } 5c75a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c760: 4e5e unlk %fp <== NOT EXECUTED 5c762: 4e75 rts <== NOT EXECUTED _HAssert( _Heap_Is_prev_used( next_block ) ); *old_size = alloc_size; if ( next_block_is_free ) { block_size += next_block_size; 5c764: d684 addl %d4,%d3 <== NOT EXECUTED alloc_size += next_block_size; 5c766: d284 addl %d4,%d1 <== NOT EXECUTED } if ( new_alloc_size > alloc_size ) { 5c768: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c76a: 648a bccs 5c6f6 <_Heap_Resize_block+0x6a> <== NOT EXECUTED return HEAP_RESIZE_UNSATISFIED; 5c76c: 7001 moveq #1,%d0 <== NOT EXECUTED new_size ); } else { return HEAP_RESIZE_FATAL_ERROR; } } 5c76e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c774: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005c778 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) { 5c778: 4e56 0000 linkw %fp,#0 5c77c: 202e 000c movel %fp@(12),%d0 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 5c780: 2040 moveal %d0,%a0 5c782: 5188 subql #8,%a0 5c784: 226e 0008 moveal %fp@(8),%a1 5c788: 2f02 movel %d2,%sp@- 5c78a: 2400 movel %d0,%d2 5c78c: 4c69 2001 0010 remul %a1@(16),%d1,%d2 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 5c792: 91c1 subal %d1,%a0 RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap( const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block 5c794: 2229 0020 movel %a1@(32),%d1 && (uintptr_t) block <= (uintptr_t) heap->last_block; 5c798: b288 cmpl %a0,%d1 5c79a: 6236 bhis 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN 5c79c: 2269 0024 moveal %a1@(36),%a1 5c7a0: b3c8 cmpal %a0,%a1 5c7a2: 652e bcss 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5c7a4: 74fe moveq #-2,%d2 5c7a6: c4a8 0004 andl %a0@(4),%d2 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 5c7aa: d1c2 addal %d2,%a0 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 5c7ac: b1c1 cmpal %d1,%a0 5c7ae: 6522 bcss 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN 5c7b0: b1c9 cmpal %a1,%a0 5c7b2: 621e bhis 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5c7b4: 7201 moveq #1,%d1 5c7b6: c2a8 0004 andl %a0@(4),%d1 block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); if ( !_Heap_Is_block_in_heap( heap, next_block ) || !_Heap_Is_prev_used( next_block ) 5c7ba: 6716 beqs 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN ) { return false; } *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin; 5c7bc: 7204 moveq #4,%d1 5c7be: 9280 subl %d0,%d1 5c7c0: 2001 movel %d1,%d0 5c7c2: d088 addl %a0,%d0 5c7c4: 226e 0010 moveal %fp@(16),%a1 return true; } 5c7c8: 241f movel %sp@+,%d2 5c7ca: 4e5e unlk %fp || !_Heap_Is_prev_used( next_block ) ) { return false; } *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin; 5c7cc: 2280 movel %d0,%a1@ return true; 5c7ce: 7001 moveq #1,%d0 } 5c7d0: 4e75 rts 5c7d2: 241f movel %sp@+,%d2 <== NOT EXECUTED 5c7d4: 4e5e unlk %fp <== NOT EXECUTED if ( !_Heap_Is_block_in_heap( heap, next_block ) || !_Heap_Is_prev_used( next_block ) ) { return false; 5c7d6: 4200 clrb %d0 <== NOT EXECUTED } *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin; return true; } ... =============================================================================== 0004822a <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) { 4822a: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 4822e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 48232: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; Heap_Block *const first_block = heap->first_block; Heap_Block *const last_block = heap->last_block; Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing; 48236: 4bfa ff94 lea %pc@(481cc <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) { 4823a: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED uintptr_t const page_size = heap->page_size; 4823e: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; 48242: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED Heap_Block *const first_block = heap->first_block; 48246: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED Heap_Block *const last_block = heap->last_block; 4824a: 2e2a 0024 movel %a2@(36),%d7 <== NOT EXECUTED Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing; 4824e: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED 48252: 6704 beqs 48258 <_Heap_Walk+0x2e> <== NOT EXECUTED 48254: 4bfa ff7e lea %pc@(481d4 <_Heap_Walk_print>),%a5 <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { 48258: 7003 moveq #3,%d0 <== NOT EXECUTED 4825a: b0b9 0006 22bc cmpl 622bc <_System_state_Current>,%d0 <== NOT EXECUTED 48260: 670c beqs 4826e <_Heap_Walk+0x44> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48262: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED } block = next_block; } while ( block != first_block ); return true; 48268: 7001 moveq #1,%d0 <== NOT EXECUTED } 4826a: 4e5e unlk %fp <== NOT EXECUTED 4826c: 4e75 rts <== NOT EXECUTED Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); Heap_Block *const first_block = heap->first_block; Heap_Block *const last_block = heap->last_block; (*printer)( 4826e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 48272: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 48276: 2f07 movel %d7,%sp@- <== NOT EXECUTED 48278: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4827a: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED 4827e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 48282: 2f06 movel %d6,%sp@- <== NOT EXECUTED 48284: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48286: 4879 0005 e55b pea 5e55b <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED 4828c: 42a7 clrl %sp@- <== NOT EXECUTED 4828e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48290: 4e95 jsr %a5@ <== NOT EXECUTED heap->area_begin, heap->area_end, first_block, last_block, first_free_block, last_free_block ); if ( page_size == 0 ) { 48292: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 48296: 4a83 tstl %d3 <== NOT EXECUTED 48298: 6700 0082 beqw 4831c <_Heap_Walk+0xf2> <== NOT EXECUTED ) { #if (CPU_ALIGNMENT == 0) return true; #else return (((uintptr_t)address % CPU_ALIGNMENT) == 0); 4829c: 7003 moveq #3,%d0 <== NOT EXECUTED 4829e: c083 andl %d3,%d0 <== NOT EXECUTED (*printer)( source, true, "page size is zero\n" ); return false; } if ( !_Addresses_Is_aligned( (void *) page_size ) ) { 482a0: 6600 0090 bnew 48332 <_Heap_Walk+0x108> <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 482a4: 2206 movel %d6,%d1 <== NOT EXECUTED 482a6: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_aligned( min_block_size, page_size ) ) { 482aa: 4a80 tstl %d0 <== NOT EXECUTED 482ac: 6600 00a4 bnew 48352 <_Heap_Walk+0x128> <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 482b0: 2004 movel %d4,%d0 <== NOT EXECUTED 482b2: 5080 addql #8,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 482b4: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED ); return false; } if ( 482b8: 4a81 tstl %d1 <== NOT EXECUTED 482ba: 6600 00ae bnew 4836a <_Heap_Walk+0x140> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 482be: 2044 moveal %d4,%a0 <== NOT EXECUTED 482c0: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 482c4: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED ); return false; } if ( !_Heap_Is_prev_used( first_block ) ) { 482c8: 0801 0000 btst #0,%d1 <== NOT EXECUTED 482cc: 6700 0188 beqw 48456 <_Heap_Walk+0x22c> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 482d0: 2047 moveal %d7,%a0 <== NOT EXECUTED 482d2: 72fe moveq #-2,%d1 <== NOT EXECUTED 482d4: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 482d8: d1c1 addal %d1,%a0 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 482da: 7201 moveq #1,%d1 <== NOT EXECUTED 482dc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED ); return false; } if ( _Heap_Is_free( last_block ) ) { 482e0: 6724 beqs 48306 <_Heap_Walk+0xdc> <== NOT EXECUTED ); return false; } if ( 482e2: b1c4 cmpal %d4,%a0 <== NOT EXECUTED 482e4: 6700 009c beqw 48382 <_Heap_Walk+0x158> <== NOT EXECUTED _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block ) { (*printer)( 482e8: 4879 0005 e6b5 pea 5e6b5 <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED 482ee: 4878 0001 pea 1 <== NOT EXECUTED 482f2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 482f4: 4e95 jsr %a5@ <== NOT EXECUTED 482f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; } if ( !_Heap_Walk_check_control( source, printer, heap ) ) { return false; 482fa: 4200 clrb %d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 482fc: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 48302: 4e5e unlk %fp <== NOT EXECUTED 48304: 4e75 rts <== NOT EXECUTED return false; } if ( _Heap_Is_free( last_block ) ) { (*printer)( 48306: 4879 0005 e6a0 pea 5e6a0 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED } if ( _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block ) { (*printer)( 4830c: 4878 0001 pea 1 <== NOT EXECUTED 48310: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48312: 4e95 jsr %a5@ <== NOT EXECUTED 48314: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; } if ( !_Heap_Walk_check_control( source, printer, heap ) ) { return false; 48318: 4200 clrb %d0 <== NOT EXECUTED 4831a: 60e0 bras 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED first_block, last_block, first_free_block, last_free_block ); if ( page_size == 0 ) { (*printer)( source, true, "page size is zero\n" ); 4831c: 4879 0005 e5ec pea 5e5ec <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED } if ( _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block ) { (*printer)( 48322: 4878 0001 pea 1 <== NOT EXECUTED 48326: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48328: 4e95 jsr %a5@ <== NOT EXECUTED 4832a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; } if ( !_Heap_Walk_check_control( source, printer, heap ) ) { return false; 4832e: 4200 clrb %d0 <== NOT EXECUTED 48330: 60ca bras 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED return false; } if ( !_Addresses_Is_aligned( (void *) page_size ) ) { (*printer)( 48332: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48334: 4879 0005 e5ff pea 5e5ff <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 4833a: 4878 0001 pea 1 <== NOT EXECUTED 4833e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48340: 4e95 jsr %a5@ <== NOT EXECUTED 48342: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48346: 4200 clrb %d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48348: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4834e: 4e5e unlk %fp <== NOT EXECUTED 48350: 4e75 rts <== NOT EXECUTED return false; } if ( !_Heap_Is_aligned( min_block_size, page_size ) ) { (*printer)( 48352: 2f06 movel %d6,%sp@- <== NOT EXECUTED 48354: 4879 0005 e61d pea 5e61d <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 4835a: 4878 0001 pea 1 <== NOT EXECUTED 4835e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48360: 4e95 jsr %a5@ <== NOT EXECUTED 48362: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48366: 4200 clrb %d0 <== NOT EXECUTED 48368: 60de bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED } if ( !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size ) ) { (*printer)( 4836a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4836c: 4879 0005 e641 pea 5e641 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 48372: 4878 0001 pea 1 <== NOT EXECUTED 48376: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48378: 4e95 jsr %a5@ <== NOT EXECUTED 4837a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 4837e: 4200 clrb %d0 <== NOT EXECUTED 48380: 60c6 bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED int source, Heap_Walk_printer printer, Heap_Control *heap ) { uintptr_t const page_size = heap->page_size; 48382: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48386: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED int source, Heap_Walk_printer printer, Heap_Control *heap ) { uintptr_t const page_size = heap->page_size; 4838a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { 4838e: b3ca cmpal %a2,%a1 <== NOT EXECUTED 48390: 6700 034e beqw 486e0 <_Heap_Walk+0x4b6> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48394: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED 48398: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4839c: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4839e: 6500 009a bcsw 4843a <_Heap_Walk+0x210> <== NOT EXECUTED 483a2: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED 483a6: b3cc cmpal %a4,%a1 <== NOT EXECUTED 483a8: 6200 0090 bhiw 4843a <_Heap_Walk+0x210> <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 483ac: 47e9 0008 lea %a1@(8),%a3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 483b0: 200b movel %a3,%d0 <== NOT EXECUTED 483b2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 483b6: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED ); return false; } if ( 483ba: 4a82 tstl %d2 <== NOT EXECUTED 483bc: 6600 00b0 bnew 4846e <_Heap_Walk+0x244> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 483c0: 74fe moveq #-2,%d2 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 483c2: 7001 moveq #1,%d0 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 483c4: c4a9 0004 andl %a1@(4),%d2 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 483c8: c0b1 2804 andl %a1@(00000004,%d2:l),%d0 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 483cc: 6600 0304 bnew 486d2 <_Heap_Walk+0x4a8> <== NOT EXECUTED 483d0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 483d4: 240a movel %a2,%d2 <== NOT EXECUTED 483d6: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 483da: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED 483de: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED ); return false; } if ( free_block->prev != prev_block ) { 483e2: 2069 000c moveal %a1@(12),%a0 <== NOT EXECUTED 483e6: b488 cmpl %a0,%d2 <== NOT EXECUTED 483e8: 6600 02cc bnew 486b6 <_Heap_Walk+0x48c> <== NOT EXECUTED return false; } prev_block = free_block; free_block = free_block->next; 483ec: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { 483f0: b1ca cmpal %a2,%a0 <== NOT EXECUTED 483f2: 6700 0096 beqw 4848a <_Heap_Walk+0x260> <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 483f6: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 483f8: 6542 bcss 4843c <_Heap_Walk+0x212> <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 483fa: 2608 movel %a0,%d3 <== NOT EXECUTED 483fc: 5083 addql #8,%d3 <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 483fe: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 48400: 653a bcss 4843c <_Heap_Walk+0x212> <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 48402: 282e fffc movel %fp@(-4),%d4 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 48406: 2409 movel %a1,%d2 <== NOT EXECUTED 48408: 2248 moveal %a0,%a1 <== NOT EXECUTED 4840a: 4c44 3000 remul %d4,%d0,%d3 <== NOT EXECUTED ); return false; } if ( 4840e: 4a80 tstl %d0 <== NOT EXECUTED 48410: 665e bnes 48470 <_Heap_Walk+0x246> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 48412: 70fe moveq #-2,%d0 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 48414: 7601 moveq #1,%d3 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 48416: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4841a: c6b0 0804 andl %a0@(00000004,%d0:l),%d3 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 4841e: 67c2 beqs 483e2 <_Heap_Walk+0x1b8> <== NOT EXECUTED (*printer)( 48420: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48422: 4879 0005 e734 pea 5e734 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 48428: 4878 0001 pea 1 <== NOT EXECUTED 4842c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4842e: 4e95 jsr %a5@ <== NOT EXECUTED 48430: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48434: 4200 clrb %d0 <== NOT EXECUTED 48436: 6000 ff10 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4843a: 2049 moveal %a1,%a0 <== NOT EXECUTED const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { if ( !_Heap_Is_block_in_heap( heap, free_block ) ) { (*printer)( 4843c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4843e: 4879 0005 e6e4 pea 5e6e4 <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 48444: 4878 0001 pea 1 <== NOT EXECUTED 48448: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4844a: 4e95 jsr %a5@ <== NOT EXECUTED 4844c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48450: 4200 clrb %d0 <== NOT EXECUTED 48452: 6000 fef4 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( first_block ) ) { (*printer)( 48456: 4879 0005 e672 pea 5e672 <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED } if ( _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block ) { (*printer)( 4845c: 4878 0001 pea 1 <== NOT EXECUTED 48460: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48462: 4e95 jsr %a5@ <== NOT EXECUTED 48464: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; } if ( !_Heap_Walk_check_control( source, printer, heap ) ) { return false; 48468: 4200 clrb %d0 <== NOT EXECUTED 4846a: 6000 fe90 braw 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED ); return false; } if ( 4846e: 2049 moveal %a1,%a0 <== NOT EXECUTED !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size ) ) { (*printer)( 48470: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48472: 4879 0005 e704 pea 5e704 <_Status_Object_name_errors_to_status+0x206><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 48478: 4878 0001 pea 1 <== NOT EXECUTED 4847c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4847e: 4e95 jsr %a5@ <== NOT EXECUTED 48480: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48484: 4200 clrb %d0 <== NOT EXECUTED 48486: 6000 fec0 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED 4848a: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4848e: 282e fff0 movel %fp@(-16),%d4 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 48492: 2844 moveal %d4,%a4 <== NOT EXECUTED 48494: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 48498: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4849c: 2d4b ffec movel %a3,%fp@(-20) <== NOT EXECUTED 484a0: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 484a4: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED 484a8: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 484ac: 74fe moveq #-2,%d2 <== NOT EXECUTED 484ae: c483 andl %d3,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 484b0: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 484b4: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 484b6: 657e bcss 48536 <_Heap_Walk+0x30c> <== NOT EXECUTED 484b8: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED 484bc: 6278 bhis 48536 <_Heap_Walk+0x30c> <== NOT EXECUTED uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); bool const prev_used = _Heap_Is_prev_used( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); uintptr_t const next_block_begin = (uintptr_t) next_block; bool const is_not_last_block = block != last_block; 484be: b9ee fff0 cmpal %fp@(-16),%a4 <== NOT EXECUTED 484c2: 56c7 sne %d7 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 484c4: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 484c8: 2002 movel %d2,%d0 <== NOT EXECUTED 484ca: 3247 moveaw %d7,%a1 <== NOT EXECUTED 484cc: 4c41 0007 remul %d1,%d7,%d0 <== NOT EXECUTED 484d0: 2009 movel %a1,%d0 <== NOT EXECUTED 484d2: 4480 negl %d0 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) { 484d4: 4a87 tstl %d7 <== NOT EXECUTED 484d6: 6704 beqs 484dc <_Heap_Walk+0x2b2> <== NOT EXECUTED 484d8: 4a00 tstb %d0 <== NOT EXECUTED 484da: 667c bnes 48558 <_Heap_Walk+0x32e> <== NOT EXECUTED ); return false; } if ( block_size < min_block_size && is_not_last_block ) { 484dc: b486 cmpl %d6,%d2 <== NOT EXECUTED 484de: 6406 bccs 484e6 <_Heap_Walk+0x2bc> <== NOT EXECUTED 484e0: 4a00 tstb %d0 <== NOT EXECUTED 484e2: 6600 008e bnew 48572 <_Heap_Walk+0x348> <== NOT EXECUTED ); return false; } if ( next_block_begin <= block_begin && is_not_last_block ) { 484e6: b7cc cmpal %a4,%a3 <== NOT EXECUTED 484e8: 6206 bhis 484f0 <_Heap_Walk+0x2c6> <== NOT EXECUTED 484ea: 4a00 tstb %d0 <== NOT EXECUTED 484ec: 6600 00a8 bnew 48596 <_Heap_Walk+0x36c> <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 484f0: 7001 moveq #1,%d0 <== NOT EXECUTED 484f2: 7201 moveq #1,%d1 <== NOT EXECUTED 484f4: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED 484f8: c681 andl %d1,%d3 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_prev_used( next_block ) ) { 484fa: 4a80 tstl %d0 <== NOT EXECUTED 484fc: 6700 00cc beqw 485ca <_Heap_Walk+0x3a0> <== NOT EXECUTED if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; } } else if (prev_used) { 48500: 4a83 tstl %d3 <== NOT EXECUTED 48502: 6700 00ac beqw 485b0 <_Heap_Walk+0x386> <== NOT EXECUTED (*printer)( 48506: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48508: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4850a: 4879 0005 e8d9 pea 5e8d9 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED 48510: 42a7 clrl %sp@- <== NOT EXECUTED 48512: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48514: 4e95 jsr %a5@ <== NOT EXECUTED 48516: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED block->prev_size ); } block = next_block; } while ( block != first_block ); 4851a: b7c4 cmpal %d4,%a3 <== NOT EXECUTED 4851c: 6700 fd44 beqw 48262 <_Heap_Walk+0x38> <== NOT EXECUTED 48520: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 48524: 74fe moveq #-2,%d2 <== NOT EXECUTED 48526: 284b moveal %a3,%a4 <== NOT EXECUTED 48528: c483 andl %d3,%d2 <== NOT EXECUTED 4852a: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4852e: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 48532: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 48534: 6482 bccs 484b8 <_Heap_Walk+0x28e> <== NOT EXECUTED Heap_Block *const next_block = _Heap_Block_at( block, block_size ); uintptr_t const next_block_begin = (uintptr_t) next_block; bool const is_not_last_block = block != last_block; if ( !_Heap_Is_block_in_heap( heap, next_block ) ) { (*printer)( 48536: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48538: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4853a: 4879 0005 e782 pea 5e782 <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED return false; } if ( next_block_begin <= block_begin && is_not_last_block ) { (*printer)( 48540: 4878 0001 pea 1 <== NOT EXECUTED 48544: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48546: 4e95 jsr %a5@ <== NOT EXECUTED "block 0x%08x: next block 0x%08x is not a successor\n", block, next_block ); return false; 48548: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4854c: 4200 clrb %d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 4854e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 48554: 4e5e unlk %fp <== NOT EXECUTED 48556: 4e75 rts <== NOT EXECUTED return false; } if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) { (*printer)( 48558: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4855a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4855c: 4879 0005 e7af pea 5e7af <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED return false; } if ( next_block_begin <= block_begin && is_not_last_block ) { (*printer)( 48562: 4878 0001 pea 1 <== NOT EXECUTED 48566: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48568: 4e95 jsr %a5@ <== NOT EXECUTED "block 0x%08x: next block 0x%08x is not a successor\n", block, next_block ); return false; 4856a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4856e: 4200 clrb %d0 <== NOT EXECUTED 48570: 60dc bras 4854e <_Heap_Walk+0x324> <== NOT EXECUTED return false; } if ( block_size < min_block_size && is_not_last_block ) { (*printer)( 48572: 2f06 movel %d6,%sp@- <== NOT EXECUTED 48574: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48576: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48578: 4879 0005 e7dd pea 5e7dd <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED 4857e: 4878 0001 pea 1 <== NOT EXECUTED 48582: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48584: 4e95 jsr %a5@ <== NOT EXECUTED block, block_size, min_block_size ); return false; 48586: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 4858a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED block, block_size, min_block_size ); return false; 48590: 4200 clrb %d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48592: 4e5e unlk %fp <== NOT EXECUTED 48594: 4e75 rts <== NOT EXECUTED return false; } if ( next_block_begin <= block_begin && is_not_last_block ) { (*printer)( 48596: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48598: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4859a: 4879 0005 e808 pea 5e808 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED 485a0: 4878 0001 pea 1 <== NOT EXECUTED 485a4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485a6: 4e95 jsr %a5@ <== NOT EXECUTED "block 0x%08x: next block 0x%08x is not a successor\n", block, next_block ); return false; 485a8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 485ac: 4200 clrb %d0 <== NOT EXECUTED 485ae: 609e bras 4854e <_Heap_Walk+0x324> <== NOT EXECUTED "block 0x%08x: size %u\n", block, block_size ); } else { (*printer)( 485b0: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 485b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485b4: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485b6: 4879 0005 e8f0 pea 5e8f0 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED 485bc: 42a7 clrl %sp@- <== NOT EXECUTED 485be: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485c0: 4e95 jsr %a5@ <== NOT EXECUTED 485c2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 485c6: 6000 ff52 braw 4851a <_Heap_Walk+0x2f0> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 485ca: 2e2a 0008 movel %a2@(8),%d7 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 485ce: 43f9 0005 e528 lea 5e528 <_Status_Object_name_errors_to_status+0x2a>,%a1<== NOT EXECUTED block->prev, block->prev == first_free_block ? " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), block->next, block->next == last_free_block ? 485d4: 222c 0008 movel %a4@(8),%d1 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 485d8: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED 485dc: 670a beqs 485e8 <_Heap_Walk+0x3be> <== NOT EXECUTED " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), block->next, block->next == last_free_block ? " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") 485de: 43f9 0005 e470 lea 5e470 ,%a1<== NOT EXECUTED 485e4: b28a cmpl %a2,%d1 <== NOT EXECUTED 485e6: 6764 beqs 4864c <_Heap_Walk+0x422> <== NOT EXECUTED false, "block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n", block, block_size, block->prev, block->prev == first_free_block ? 485e8: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 485ec: 41f9 0005 e541 lea 5e541 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED 485f2: b087 cmpl %d7,%d0 <== NOT EXECUTED 485f4: 670a beqs 48600 <_Heap_Walk+0x3d6> <== NOT EXECUTED block, block_size, block->prev, block->prev == first_free_block ? " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), 485f6: 41f9 0005 e470 lea 5e470 ,%a0<== NOT EXECUTED 485fc: b08a cmpl %a2,%d0 <== NOT EXECUTED 485fe: 6754 beqs 48654 <_Heap_Walk+0x42a> <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 48600: 2f09 movel %a1,%sp@- <== NOT EXECUTED 48602: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48604: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48606: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48608: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4860a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4860c: 4879 0005 e83c pea 5e83c <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED 48612: 42a7 clrl %sp@- <== NOT EXECUTED 48614: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48616: 4e95 jsr %a5@ <== NOT EXECUTED block->next == last_free_block ? " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") ); if ( block_size != next_block->prev_size ) { 48618: 2213 movel %a3@,%d1 <== NOT EXECUTED 4861a: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 4861e: b282 cmpl %d2,%d1 <== NOT EXECUTED 48620: 663a bnes 4865c <_Heap_Walk+0x432> <== NOT EXECUTED ); return false; } if ( !prev_used ) { 48622: 4a83 tstl %d3 <== NOT EXECUTED 48624: 6776 beqs 4869c <_Heap_Walk+0x472> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48626: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED ) { const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *free_block = _Heap_Free_list_first( heap ); while ( free_block != free_list_tail ) { 4862a: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4862c: 6754 beqs 48682 <_Heap_Walk+0x458> <== NOT EXECUTED if ( free_block == block ) { 4862e: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48630: 6700 fee8 beqw 4851a <_Heap_Walk+0x2f0> <== NOT EXECUTED 48634: 2e2e fff0 movel %fp@(-16),%d7 <== NOT EXECUTED return true; } free_block = free_block->next; 48638: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED ) { const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *free_block = _Heap_Free_list_first( heap ); while ( free_block != free_list_tail ) { 4863c: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4863e: 6742 beqs 48682 <_Heap_Walk+0x458> <== NOT EXECUTED if ( free_block == block ) { 48640: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48642: 66f4 bnes 48638 <_Heap_Walk+0x40e> <== NOT EXECUTED 48644: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED 48648: 6000 fed0 braw 4851a <_Heap_Walk+0x2f0> <== NOT EXECUTED " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), block->next, block->next == last_free_block ? " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") 4864c: 43f9 0005 e537 lea 5e537 <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED 48652: 6094 bras 485e8 <_Heap_Walk+0x3be> <== NOT EXECUTED block, block_size, block->prev, block->prev == first_free_block ? " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), 48654: 41f9 0005 e551 lea 5e551 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED 4865a: 60a4 bras 48600 <_Heap_Walk+0x3d6> <== NOT EXECUTED " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") ); if ( block_size != next_block->prev_size ) { (*printer)( 4865c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4865e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48660: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48662: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48664: 4879 0005 e871 pea 5e871 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED 4866a: 4878 0001 pea 1 <== NOT EXECUTED 4866e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48670: 4e95 jsr %a5@ <== NOT EXECUTED 48672: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 48676: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 4867c: 4200 clrb %d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 4867e: 4e5e unlk %fp <== NOT EXECUTED 48680: 4e75 rts <== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 48682: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48684: 4879 0005 e915 pea 5e915 <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED 4868a: 4878 0001 pea 1 <== NOT EXECUTED 4868e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48690: 4e95 jsr %a5@ <== NOT EXECUTED 48692: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 48696: 4200 clrb %d0 <== NOT EXECUTED 48698: 6000 fcae braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED return false; } if ( !prev_used ) { (*printer)( 4869c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4869e: 4879 0005 e8aa pea 5e8aa <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 486a4: 4878 0001 pea 1 <== NOT EXECUTED 486a8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486aa: 4e95 jsr %a5@ <== NOT EXECUTED 486ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return false; } if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; 486b0: 4200 clrb %d0 <== NOT EXECUTED 486b2: 6000 fc94 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED return false; } if ( free_block->prev != prev_block ) { (*printer)( 486b6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 486b8: 2f09 movel %a1,%sp@- <== NOT EXECUTED 486ba: 4879 0005 e750 pea 5e750 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED return false; } if ( next_block_begin <= block_begin && is_not_last_block ) { (*printer)( 486c0: 4878 0001 pea 1 <== NOT EXECUTED 486c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486c6: 4e95 jsr %a5@ <== NOT EXECUTED "block 0x%08x: next block 0x%08x is not a successor\n", block, next_block ); return false; 486c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 486cc: 4200 clrb %d0 <== NOT EXECUTED 486ce: 6000 fe7e braw 4854e <_Heap_Walk+0x324> <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 486d2: 2049 moveal %a1,%a0 <== NOT EXECUTED (*printer)( 486d4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 486d6: 4879 0005 e734 pea 5e734 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED 486dc: 6000 fd4a braw 48428 <_Heap_Walk+0x1fe> <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { 486e0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 486e4: 2844 moveal %d4,%a4 <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { 486e6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 486ea: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 486ee: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 486f2: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED 486f6: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED 486fa: 6000 fdb0 braw 484ac <_Heap_Walk+0x282> <== NOT EXECUTED ... =============================================================================== 000481d4 <_Heap_Walk_print>: static void _Heap_Walk_print( int source, bool error, const char *fmt, ... ) { 481d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED va_list ap; if ( error ) { 481dc: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED 481e0: 6624 bnes 48206 <_Heap_Walk_print+0x32> <== NOT EXECUTED printk( "FAIL[%d]: ", source ); } else { printk( "PASS[%d]: ", source ); 481e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 481e4: 4879 0005 e51d pea 5e51d <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED 481ea: 4eb9 0004 42a0 jsr 442a0 <== NOT EXECUTED 481f0: 508f addql #8,%sp <== NOT EXECUTED } va_start( ap, fmt ); vprintk( fmt, ap ); 481f2: 486e 0014 pea %fp@(20) <== NOT EXECUTED 481f6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 481fa: 4eb9 0004 60bc jsr 460bc <== NOT EXECUTED va_end( ap ); 48200: 508f addql #8,%sp <== NOT EXECUTED } 48202: 4e5e unlk %fp <== NOT EXECUTED 48204: 4e75 rts <== NOT EXECUTED static void _Heap_Walk_print( int source, bool error, const char *fmt, ... ) { va_list ap; if ( error ) { printk( "FAIL[%d]: ", source ); 48206: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48208: 4879 0005 e512 pea 5e512 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 4820e: 4eb9 0004 42a0 jsr 442a0 <== NOT EXECUTED 48214: 508f addql #8,%sp <== NOT EXECUTED } else { printk( "PASS[%d]: ", source ); } va_start( ap, fmt ); vprintk( fmt, ap ); 48216: 486e 0014 pea %fp@(20) <== NOT EXECUTED 4821a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4821e: 4eb9 0004 60bc jsr 460bc <== NOT EXECUTED va_end( ap ); 48224: 508f addql #8,%sp <== NOT EXECUTED } 48226: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000481cc <_Heap_Walk_print_nothing>: int source, bool error, const char *fmt, ... ) { 481cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* Do nothing */ } 481d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046c5a <_IO_Initialize_all_drivers>: * * Output Parameters: NONE */ void _IO_Initialize_all_drivers( void ) { 46c5a: 4e56 0000 linkw %fp,#0 46c5e: 2f0a movel %a2,%sp@- 46c60: 2f02 movel %d2,%sp@- rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 46c62: 4ab9 0006 0512 tstl 60512 <_IO_Number_of_drivers> 46c68: 671e beqs 46c88 <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN 46c6a: 4282 clrl %d2 46c6c: 45f9 0004 c390 lea 4c390 ,%a2 (void) rtems_io_initialize( major, 0, NULL ); 46c72: 42a7 clrl %sp@- 46c74: 42a7 clrl %sp@- 46c76: 2f02 movel %d2,%sp@- void _IO_Initialize_all_drivers( void ) { rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 46c78: 5282 addql #1,%d2 (void) rtems_io_initialize( major, 0, NULL ); 46c7a: 4e92 jsr %a2@ void _IO_Initialize_all_drivers( void ) { rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 46c7c: 4fef 000c lea %sp@(12),%sp 46c80: b4b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d2 46c86: 65ea bcss 46c72 <_IO_Initialize_all_drivers+0x18> (void) rtems_io_initialize( major, 0, NULL ); } 46c88: 242e fff8 movel %fp@(-8),%d2 46c8c: 246e fffc moveal %fp@(-4),%a2 46c90: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046bc0 <_IO_Manager_initialization>: * workspace. * */ void _IO_Manager_initialization(void) { 46bc0: 4e56 fff0 linkw %fp,#-16 46bc4: 48d7 003c moveml %d2-%d5,%sp@ uint32_t index; rtems_driver_address_table *driver_table; uint32_t drivers_in_table; uint32_t number_of_drivers; driver_table = Configuration.Device_driver_table; 46bc8: 2639 0005 e3fa movel 5e3fa ,%d3 drivers_in_table = Configuration.number_of_device_drivers; 46bce: 2439 0005 e3f6 movel 5e3f6 ,%d2 number_of_drivers = Configuration.maximum_drivers; 46bd4: 2839 0005 e3f2 movel 5e3f2 ,%d4 /* * If the user claims there are less drivers than are actually in * the table, then let's just go with the table's count. */ if ( number_of_drivers <= drivers_in_table ) 46bda: b882 cmpl %d2,%d4 46bdc: 6366 blss 46c44 <_IO_Manager_initialization+0x84> * The application requested extra slots in the driver table, so we * have to allocate a new driver table and copy theirs to it. */ _IO_Driver_address_table = (rtems_driver_address_table *) _Workspace_Allocate_or_fatal_error( 46bde: 2004 movel %d4,%d0 46be0: 2a04 movel %d4,%d5 46be2: e788 lsll #3,%d0 46be4: eb8d lsll #5,%d5 46be6: 9a80 subl %d0,%d5 46be8: 2f05 movel %d5,%sp@- 46bea: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error> sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 46bf0: 2f05 movel %d5,%sp@- 46bf2: 42a7 clrl %sp@- /* * The application requested extra slots in the driver table, so we * have to allocate a new driver table and copy theirs to it. */ _IO_Driver_address_table = (rtems_driver_address_table *) 46bf4: 23c0 0006 0516 movel %d0,60516 <_IO_Driver_address_table> _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 46bfa: 2f00 movel %d0,%sp@- _IO_Driver_address_table = (rtems_driver_address_table *) _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; 46bfc: 23c4 0006 0512 movel %d4,60512 <_IO_Number_of_drivers> memset( 46c02: 4eb9 0004 f200 jsr 4f200 _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) 46c08: 4fef 0010 lea %sp@(16),%sp 46c0c: 4a82 tstl %d2 46c0e: 672a beqs 46c3a <_IO_Manager_initialization+0x7a><== NEVER TAKEN 46c10: 2839 0006 0516 movel 60516 <_IO_Driver_address_table>,%d4 46c16: 4280 clrl %d0 46c18: 4281 clrl %d1 _IO_Driver_address_table[index] = driver_table[index]; 46c1a: 2243 moveal %d3,%a1 46c1c: 2044 moveal %d4,%a0 46c1e: d3c0 addal %d0,%a1 46c20: d1c0 addal %d0,%a0 memset( _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) 46c22: 5281 addql #1,%d1 46c24: 0680 0000 0018 addil #24,%d0 _IO_Driver_address_table[index] = driver_table[index]; 46c2a: 20d9 movel %a1@+,%a0@+ 46c2c: 20d9 movel %a1@+,%a0@+ 46c2e: 20d9 movel %a1@+,%a0@+ 46c30: 20d9 movel %a1@+,%a0@+ 46c32: 20d9 movel %a1@+,%a0@+ 46c34: 2091 movel %a1@,%a0@ memset( _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) 46c36: b282 cmpl %d2,%d1 46c38: 65e0 bcss 46c1a <_IO_Manager_initialization+0x5a> _IO_Driver_address_table[index] = driver_table[index]; } 46c3a: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 46c40: 4e5e unlk %fp 46c42: 4e75 rts * If the maximum number of driver is the same as the number in the * table, then we do not have to copy the driver table. They can't * register any dynamically. */ if ( number_of_drivers == drivers_in_table ) { _IO_Driver_address_table = driver_table; 46c44: 23c3 0006 0516 movel %d3,60516 <_IO_Driver_address_table> _IO_Number_of_drivers = number_of_drivers; 46c4a: 23c2 0006 0512 movel %d2,60512 <_IO_Number_of_drivers> sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) _IO_Driver_address_table[index] = driver_table[index]; } 46c50: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 46c56: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047810 <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 47810: 4e56 fffc linkw %fp,#-4 47814: 206e 0010 moveal %fp@(16),%a0 47818: 2f02 movel %d2,%sp@- 4781a: 222e 000c movel %fp@(12),%d1 _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; _User_extensions_Fatal( the_source, is_internal, the_error ); 4781e: 4282 clrl %d2 47820: 1401 moveb %d1,%d2 47822: 2242 moveal %d2,%a1 47824: 2f08 movel %a0,%sp@- void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 47826: 202e 0008 movel %fp@(8),%d0 _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; _User_extensions_Fatal( the_source, is_internal, the_error ); 4782a: 2f09 movel %a1,%sp@- Internal_errors_t the_error ) { _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; 4782c: 13c1 0005 fd32 moveb %d1,5fd32 <_Internal_errors_What_happened+0x4> _Internal_errors_What_happened.the_error = the_error; _User_extensions_Fatal( the_source, is_internal, the_error ); 47832: 2d48 fffc movel %a0,%fp@(-4) bool is_internal, Internal_errors_t the_error ) { _Internal_errors_What_happened.the_source = the_source; 47836: 23c0 0005 fd2e movel %d0,5fd2e <_Internal_errors_What_happened> _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; 4783c: 23c8 0005 fd34 movel %a0,5fd34 <_Internal_errors_What_happened+0x6> _User_extensions_Fatal( the_source, is_internal, the_error ); 47842: 2f00 movel %d0,%sp@- 47844: 4eb9 0004 9706 jsr 49706 <_User_extensions_Fatal> _System_state_Set( SYSTEM_STATE_FAILED ); _CPU_Fatal_halt( the_error ); 4784a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4784e: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED 47852: 2409 movel %a1,%d2 <== NOT EXECUTED 47854: 40c0 movew %sr,%d0 <== NOT EXECUTED 47856: 8082 orl %d2,%d0 <== NOT EXECUTED 47858: 46c0 movew %d0,%sr <== NOT EXECUTED 4785a: 2008 movel %a0,%d0 <== NOT EXECUTED 4785c: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED 47862: 4ac8 halt <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state ) { _System_state_Current = state; 47864: 7005 moveq #5,%d0 <== NOT EXECUTED 47866: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4786a: 23c0 0005 fde4 movel %d0,5fde4 <_System_state_Current> <== NOT EXECUTED 47870: 60fe bras 47870 <_Internal_error_Occurred+0x60> <== NOT EXECUTED ... =============================================================================== 00055598 <_Message_queue_Allocate>: * Output parameters: * the_message_queue - set if successful, NULL otherwise */ Message_queue_Control *_Message_queue_Allocate(void) { 55598: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (Message_queue_Control *) _Objects_Allocate(&_Message_queue_Information); 5559c: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED 555a2: 4eb9 0005 0dec jsr 50dec <_Objects_Allocate> <== NOT EXECUTED } 555a8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ef94 <_Message_queue_Translate_core_message_queue_return_code>: #if defined(RTEMS_DEBUG) if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ) return RTEMS_INTERNAL_ERROR; #endif return _Message_queue_Translate_core_return_code_[status]; 4ef94: 41f9 0006 844c lea 6844c <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( uint32_t status ) { 4ef9a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ) return RTEMS_INTERNAL_ERROR; #endif return _Message_queue_Translate_core_return_code_[status]; } 4ef9e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4efa2: 4e5e unlk %fp <== NOT EXECUTED 4efa4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004c900 <_Objects_API_maximum_class>: #include unsigned int _Objects_API_maximum_class( uint32_t api ) { 4c900: 7202 moveq #2,%d1 4c902: 4e56 0000 linkw %fp,#0 4c906: 202e 0008 movel %fp@(8),%d0 4c90a: 5380 subql #1,%d0 4c90c: b280 cmpl %d0,%d1 4c90e: 650e bcss 4c91e <_Objects_API_maximum_class+0x1e><== NEVER TAKEN 4c910: 41f9 0005 d994 lea 5d994 ,%a0 case OBJECTS_NO_API: default: break; } return 0; } 4c916: 4e5e unlk %fp #include unsigned int _Objects_API_maximum_class( uint32_t api ) { 4c918: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 case OBJECTS_NO_API: default: break; } return 0; } 4c91c: 4e75 rts #include unsigned int _Objects_API_maximum_class( uint32_t api ) { 4c91e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_NO_API: default: break; } return 0; } 4c920: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000478cc <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) { 478cc: 4e56 fff0 linkw %fp,#-16 478d0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 478d4: 246e 0008 moveal %fp@(8),%a2 * If the application is using the optional manager stubs and * still attempts to create the object, the information block * should be all zeroed out because it is in the BSS. So let's * check that code for this manager is even present. */ if ( information->size == 0 ) 478d8: 4aaa 0014 tstl %a2@(20) 478dc: 660c bnes 478ea <_Objects_Allocate+0x1e> <== ALWAYS TAKEN return NULL; 478de: 4280 clrl %d0 <== NOT EXECUTED ); } #endif return the_object; } 478e0: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 478e6: 4e5e unlk %fp 478e8: 4e75 rts /* * OK. The manager should be initialized and configured to have objects. * With any luck, it is safe to attempt to allocate an object. */ the_object = (Objects_Control *) _Chain_Get( &information->Inactive ); 478ea: 240a movel %a2,%d2 478ec: 0682 0000 001c addil #28,%d2 478f2: 47f9 0004 6f30 lea 46f30 <_Chain_Get>,%a3 478f8: 2f02 movel %d2,%sp@- 478fa: 4e93 jsr %a3@ if ( information->auto_extend ) { 478fc: 588f addql #4,%sp 478fe: 4a2a 0010 tstb %a2@(16) 47902: 67dc beqs 478e0 <_Objects_Allocate+0x14> /* * If the list is empty then we are out of objects and need to * extend information base. */ if ( !the_object ) { 47904: 4a80 tstl %d0 47906: 6738 beqs 47940 <_Objects_Allocate+0x74> <== NEVER TAKEN } if ( the_object ) { uint32_t block; block = (uint32_t) _Objects_Get_index( the_object->id ) - 47908: 2040 moveal %d0,%a0 4790a: 4281 clrl %d1 4790c: 4283 clrl %d3 _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; 4790e: 4282 clrl %d2 } if ( the_object ) { uint32_t block; block = (uint32_t) _Objects_Get_index( the_object->id ) - 47910: 362a 0008 movew %a2@(8),%d3 47914: 3228 000a movew %a0@(10),%d1 _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; 47918: 342a 0012 movew %a2@(18),%d2 information->inactive_per_block[ block ]--; 4791c: 206a 002a moveal %a2@(42),%a0 } if ( the_object ) { uint32_t block; block = (uint32_t) _Objects_Get_index( the_object->id ) - 47920: 9283 subl %d3,%d1 _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; 47922: 4c42 1001 remul %d2,%d1,%d1 information->inactive_per_block[ block ]--; information->inactive--; 47926: 326a 0028 moveaw %a2@(40),%a1 block = (uint32_t) _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 4792a: e589 lsll #2,%d1 information->inactive--; 4792c: 5389 subql #1,%a1 block = (uint32_t) _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 4792e: d1c1 addal %d1,%a0 47930: 5390 subql #1,%a0@ information->inactive--; 47932: 3549 0028 movew %a1,%a2@(40) ); } #endif return the_object; } 47936: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4793c: 4e5e unlk %fp 4793e: 4e75 rts * If the list is empty then we are out of objects and need to * extend information base. */ if ( !the_object ) { _Objects_Extend_information( information ); 47940: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47942: 4eb9 0004 7988 jsr 47988 <_Objects_Extend_information> <== NOT EXECUTED the_object = (Objects_Control *) _Chain_Get( &information->Inactive ); 47948: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4794a: 4e93 jsr %a3@ <== NOT EXECUTED } if ( the_object ) { 4794c: 508f addql #8,%sp <== NOT EXECUTED 4794e: 4a80 tstl %d0 <== NOT EXECUTED 47950: 66b6 bnes 47908 <_Objects_Allocate+0x3c> <== NOT EXECUTED ); } #endif return the_object; } 47952: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47958: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004795c <_Objects_Close>: RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 4795c: 4280 clrl %d0 void _Objects_Close( Objects_Information *information, Objects_Control *the_object ) { 4795e: 4e56 0000 linkw %fp,#0 47962: 226e 000c moveal %fp@(12),%a1 47966: 206e 0008 moveal %fp@(8),%a0 4796a: 2f0a movel %a2,%sp@- #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4796c: 2468 0018 moveal %a0@(24),%a2 RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 47970: 3029 000a movew %a1@(10),%d0 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 47974: 42b2 0c00 clrl %a2@(00000000,%d0:l:4) _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); } 47978: 245f moveal %sp@+,%a2 Objects_Control *the_object ) { _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 4797a: 2d49 000c movel %a1,%fp@(12) } 4797e: 4e5e unlk %fp Objects_Control *the_object ) { _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 47980: 4ef9 0004 7f0c jmp 47f0c <_Objects_Namespace_remove> ... =============================================================================== 00047988 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) { 47988: 4e56 ffcc linkw %fp,#-52 4798c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 47990: 246e 0008 moveal %fp@(8),%a2 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 47994: 4285 clrl %d5 index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 47996: 206a 002e moveal %a2@(46),%a0 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 4799a: 3a2a 0008 movew %a2@(8),%d5 index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 4799e: 4a88 tstl %a0 479a0: 6700 0232 beqw 47bd4 <_Objects_Extend_information+0x24c> block_count = 0; else { block_count = information->maximum / information->allocation_size; 479a4: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 479a8: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED 479ac: 3801 movew %d1,%d4 <== NOT EXECUTED 479ae: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED 479b4: 88c0 divuw %d0,%d4 <== NOT EXECUTED 479b6: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED for ( ; block < block_count; block++ ) { 479bc: 6700 022c beqw 47bea <_Objects_Extend_information+0x262><== NOT EXECUTED if ( information->object_blocks[ block ] == NULL ) { 479c0: 4a90 tstl %a0@ <== NOT EXECUTED 479c2: 6700 0236 beqw 47bfa <_Objects_Extend_information+0x272><== NOT EXECUTED * information - object information table * * Output parameters: NONE */ void _Objects_Extend_information( 479c6: 5888 addql #4,%a0 <== NOT EXECUTED /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 479c8: 2605 movel %d5,%d3 <== NOT EXECUTED index_base = minimum_index; block = 0; 479ca: 4282 clrl %d2 <== NOT EXECUTED block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { if ( information->object_blocks[ block ] == NULL ) { 479cc: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED do_extend = false; break; } else index_base += information->allocation_size; 479d2: d680 addl %d0,%d3 <== NOT EXECUTED if ( information->object_blocks == NULL ) block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { 479d4: 5282 addql #1,%d2 <== NOT EXECUTED 479d6: b484 cmpl %d4,%d2 <== NOT EXECUTED 479d8: 6400 01a6 bccw 47b80 <_Objects_Extend_information+0x1f8><== NOT EXECUTED if ( information->object_blocks[ block ] == NULL ) { 479dc: 4a98 tstl %a0@+ <== NOT EXECUTED 479de: 66f2 bnes 479d2 <_Objects_Extend_information+0x4a><== NOT EXECUTED do_extend = false; 479e0: 4207 clrb %d7 <== NOT EXECUTED } else index_base += information->allocation_size; } } maximum = (uint32_t) information->maximum + information->allocation_size; 479e2: 0281 0000 ffff andil #65535,%d1 479e8: 2641 moveal %d1,%a3 479ea: d7c0 addal %d0,%a3 /* * We need to limit the number of objects to the maximum number * representable in the index portion of the object Id. In the * case of 16-bit Ids, this is only 256 object instances. */ if ( maximum > OBJECTS_ID_FINAL_INDEX ) { 479ec: b7fc 0000 ffff cmpal #65535,%a3 479f2: 6200 0182 bhiw 47b76 <_Objects_Extend_information+0x1ee> /* * Allocate the name table, and the objects and if it fails either return or * generate a fatal error depending on auto-extending being active. */ block_size = information->allocation_size * information->size; 479f6: 41ea 0014 lea %a2@(20),%a0 479fa: 4c10 0800 mulsl %a0@,%d0 if ( information->auto_extend ) { 479fe: 4a2a 0010 tstb %a2@(16) 47a02: 6700 0182 beqw 47b86 <_Objects_Extend_information+0x1fe> new_object_block = _Workspace_Allocate( block_size ); 47a06: 2f00 movel %d0,%sp@- 47a08: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !new_object_block ) 47a0e: 588f addql #4,%sp * Allocate the name table, and the objects and if it fails either return or * generate a fatal error depending on auto-extending being active. */ block_size = information->allocation_size * information->size; if ( information->auto_extend ) { new_object_block = _Workspace_Allocate( block_size ); 47a10: 2c00 movel %d0,%d6 if ( !new_object_block ) 47a12: 6700 0162 beqw 47b76 <_Objects_Extend_information+0x1ee> } /* * Do we need to grow the tables? */ if ( do_extend ) { 47a16: 4a07 tstb %d7 47a18: 6700 00c4 beqw 47ade <_Objects_Extend_information+0x156> */ /* * Up the block count and maximum */ block_count++; 47a1c: 2a44 moveal %d4,%a5 47a1e: 528d addql #1,%a5 /* * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); 47a20: 200b movel %a3,%d0 /* * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + 47a22: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0 ((maximum + minimum_index) * sizeof(Objects_Control *)); 47a26: d088 addl %a0,%d0 /* * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + 47a28: d085 addl %d5,%d0 block_count++; /* * Allocate the tables and break it up. */ block_size = block_count * 47a2a: e588 lsll #2,%d0 (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); 47a2c: 2f00 movel %d0,%sp@- 47a2e: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !object_blocks ) { 47a34: 588f addql #4,%sp * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); 47a36: 2840 moveal %d0,%a4 if ( !object_blocks ) { 47a38: 4a80 tstl %d0 47a3a: 6700 01ce beqw 47c0a <_Objects_Extend_information+0x282> } /* * Break the block into the various sections. */ inactive_per_block = (uint32_t *) _Addresses_Add_offset( 47a3e: 2e0d movel %a5,%d7 * Take the block count down. Saves all the (block_count - 1) * in the copies. */ block_count--; if ( information->maximum > minimum_index ) { 47a40: 4280 clrl %d0 } /* * Break the block into the various sections. */ inactive_per_block = (uint32_t *) _Addresses_Add_offset( 47a42: e58f lsll #2,%d7 * Take the block count down. Saves all the (block_count - 1) * in the copies. */ block_count--; if ( information->maximum > minimum_index ) { 47a44: 302a 000e movew %a2@(14),%d0 RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 47a48: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5 47a4c: de8d addl %a5,%d7 47a4e: b085 cmpl %d5,%d0 47a50: 6200 0144 bhiw 47b96 <_Objects_Extend_information+0x20e> } else { /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { 47a54: 4a85 tstl %d5 47a56: 670c beqs 47a64 <_Objects_Extend_information+0xdc><== NEVER TAKEN 47a58: 2047 moveal %d7,%a0 47a5a: 4280 clrl %d0 local_table[ index ] = NULL; 47a5c: 4298 clrl %a0@+ } else { /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { 47a5e: 5280 addql #1,%d0 47a60: b085 cmpl %d5,%d0 47a62: 65f8 bcss 47a5c <_Objects_Extend_information+0xd4><== NEVER TAKEN 47a64: e58c lsll #2,%d4 */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 47a66: 4281 clrl %d1 } /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; 47a68: 42b4 4800 clrl %a4@(00000000,%d4:l) inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 47a6c: 322a 0012 movew %a2@(18),%d1 /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; 47a70: 42b5 4800 clrl %a5@(00000000,%d4:l) for ( index=index_base ; index < ( information->allocation_size + index_base ); 47a74: d283 addl %d3,%d1 * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; 47a76: b283 cmpl %d3,%d1 47a78: 6310 blss 47a8a <_Objects_Extend_information+0x102><== NEVER TAKEN 47a7a: 2247 moveal %d7,%a1 * information - object information table * * Output parameters: NONE */ void _Objects_Extend_information( 47a7c: 2003 movel %d3,%d0 * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; 47a7e: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0 index < ( information->allocation_size + index_base ); index++ ) { local_table[ index ] = NULL; 47a82: 4298 clrl %a0@+ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); index++ ) { 47a84: 5280 addql #1,%d0 * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; 47a86: b280 cmpl %d0,%d1 47a88: 62f8 bhis 47a82 <_Objects_Extend_information+0xfa> index < ( information->allocation_size + index_base ); index++ ) { local_table[ index ] = NULL; } _ISR_Disable( level ); 47a8a: 203c 0000 0700 movel #1792,%d0 47a90: 40c4 movew %sr,%d4 47a92: 8084 orl %d4,%d0 47a94: 46c0 movew %d0,%sr uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47a96: 2012 movel %a2@,%d0 47a98: 7a18 moveq #24,%d5 information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = (Objects_Maximum) maximum; information->maximum_id = _Objects_Build_id( 47a9a: 4281 clrl %d1 47a9c: eba8 lsll %d5,%d0 47a9e: 4285 clrl %d5 47aa0: 3a0b movew %a3,%d5 47aa2: 322a 0004 movew %a2@(4),%d1 47aa6: 08c0 0010 bset #16,%d0 47aaa: 2245 moveal %d5,%a1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 47aac: 7a1b moveq #27,%d5 47aae: eba9 lsll %d5,%d1 local_table[ index ] = NULL; } _ISR_Disable( level ); old_tables = information->object_blocks; 47ab0: 206a 002e moveal %a2@(46),%a0 47ab4: 8081 orl %d1,%d0 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47ab6: 2209 movel %a1,%d1 47ab8: 8280 orl %d0,%d1 information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = (Objects_Maximum) maximum; 47aba: 354b 000e movew %a3,%a2@(14) _ISR_Disable( level ); old_tables = information->object_blocks; information->object_blocks = object_blocks; 47abe: 254c 002e movel %a4,%a2@(46) information->inactive_per_block = inactive_per_block; 47ac2: 254d 002a movel %a5,%a2@(42) 47ac6: 2541 000a movel %d1,%a2@(10) information->local_table = local_table; 47aca: 2547 0018 movel %d7,%a2@(24) information->the_class, _Objects_Local_node, information->maximum ); _ISR_Enable( level ); 47ace: 46c4 movew %d4,%sr if ( old_tables ) 47ad0: 4a88 tstl %a0 47ad2: 670a beqs 47ade <_Objects_Extend_information+0x156><== ALWAYS TAKEN _Workspace_Free( old_tables ); 47ad4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47ad6: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 47adc: 588f addql #4,%sp <== NOT EXECUTED } /* * Assign the new object block to the object block table. */ information->object_blocks[ block ] = new_object_block; 47ade: 206a 002e moveal %a2@(46),%a0 /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 47ae2: 4280 clrl %d0 47ae4: 280e movel %fp,%d4 47ae6: 0684 ffff fff4 addil #-12,%d4 47aec: 47f9 0004 6f30 lea 46f30 <_Chain_Get>,%a3 information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 47af2: 2a0a movel %a2,%d5 47af4: 0685 0000 001c addil #28,%d5 47afa: 49f9 0004 6ed0 lea 46ed0 <_Chain_Append>,%a4 } /* * Assign the new object block to the object block table. */ information->object_blocks[ block ] = new_object_block; 47b00: e58a lsll #2,%d2 /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 47b02: 302a 0012 movew %a2@(18),%d0 } /* * Assign the new object block to the object block table. */ information->object_blocks[ block ] = new_object_block; 47b06: 2186 2800 movel %d6,%a0@(00000000,%d2:l) /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 47b0a: 2f2a 0014 movel %a2@(20),%sp@- 47b0e: 2f00 movel %d0,%sp@- 47b10: 2f06 movel %d6,%sp@- 47b12: 2f04 movel %d4,%sp@- 47b14: 4eb9 0004 c3d8 jsr 4c3d8 <_Chain_Initialize> /* * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) { 47b1a: 4fef 0010 lea %sp@(16),%sp 47b1e: 2f04 movel %d4,%sp@- 47b20: 4e93 jsr %a3@ 47b22: 588f addql #4,%sp 47b24: 4a80 tstl %d0 47b26: 6734 beqs 47b5c <_Objects_Extend_information+0x1d4><== NEVER TAKEN 47b28: 2212 movel %a2@,%d1 47b2a: 7e18 moveq #24,%d7 the_object->id = _Objects_Build_id( 47b2c: 4286 clrl %d6 47b2e: 2040 moveal %d0,%a0 47b30: 3c2a 0004 movew %a2@(4),%d6 47b34: efa9 lsll %d7,%d1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 47b36: 1e3c 001b moveb #27,%d7 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47b3a: 08c1 0010 bset #16,%d1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 47b3e: efae lsll %d7,%d6 47b40: 8286 orl %d6,%d1 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47b42: 8283 orl %d3,%d1 index ); _Chain_Append( &information->Inactive, &the_object->Node ); index++; 47b44: 5283 addql #1,%d3 47b46: 2141 0008 movel %d1,%a0@(8) information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 47b4a: 2f00 movel %d0,%sp@- 47b4c: 2f05 movel %d5,%sp@- 47b4e: 4e94 jsr %a4@ index++; 47b50: 508f addql #8,%sp /* * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) { 47b52: 2f04 movel %d4,%sp@- 47b54: 4e93 jsr %a3@ 47b56: 588f addql #4,%sp 47b58: 4a80 tstl %d0 47b5a: 66cc bnes 47b28 <_Objects_Extend_information+0x1a0> _Chain_Append( &information->Inactive, &the_object->Node ); index++; } information->inactive_per_block[ block ] = information->allocation_size; 47b5c: 4281 clrl %d1 47b5e: 302a 0012 movew %a2@(18),%d0 information->inactive = (Objects_Maximum)(information->inactive + information->allocation_size); 47b62: 326a 0028 moveaw %a2@(40),%a1 _Chain_Append( &information->Inactive, &the_object->Node ); index++; } information->inactive_per_block[ block ] = information->allocation_size; 47b66: 206a 002a moveal %a2@(42),%a0 47b6a: 3200 movew %d0,%d1 information->inactive = (Objects_Maximum)(information->inactive + information->allocation_size); 47b6c: d089 addl %a1,%d0 _Chain_Append( &information->Inactive, &the_object->Node ); index++; } information->inactive_per_block[ block ] = information->allocation_size; 47b6e: 2181 2800 movel %d1,%a0@(00000000,%d2:l) information->inactive = 47b72: 3540 0028 movew %d0,%a2@(40) (Objects_Maximum)(information->inactive + information->allocation_size); } 47b76: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 47b7c: 4e5e unlk %fp 47b7e: 4e75 rts /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; 47b80: 7e01 moveq #1,%d7 <== NOT EXECUTED 47b82: 6000 fe5e braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED if ( information->auto_extend ) { new_object_block = _Workspace_Allocate( block_size ); if ( !new_object_block ) return; } else { new_object_block = _Workspace_Allocate_or_fatal_error( block_size ); 47b86: 2f00 movel %d0,%sp@- 47b88: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error> 47b8e: 588f addql #4,%sp 47b90: 2c00 movel %d0,%d6 47b92: 6000 fe82 braw 47a16 <_Objects_Extend_information+0x8e> /* * Copy each section of the table over. This has to be performed as * separate parts as size of each block has changed. */ memcpy( object_blocks, 47b96: e58c lsll #2,%d4 <== NOT EXECUTED 47b98: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47b9a: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED 47b9e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47ba0: 4eb9 0004 f190 jsr 4f190 <== NOT EXECUTED information->object_blocks, block_count * sizeof(void*) ); memcpy( inactive_per_block, 47ba6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47ba8: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED 47bac: 2f0d movel %a5,%sp@- <== NOT EXECUTED 47bae: 4eb9 0004 f190 jsr 4f190 <== NOT EXECUTED information->inactive_per_block, block_count * sizeof(uint32_t) ); memcpy( local_table, information->local_table, (information->maximum + minimum_index) * sizeof(Objects_Control *) ); 47bb4: 4280 clrl %d0 <== NOT EXECUTED 47bb6: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 47bba: da80 addl %d0,%d5 <== NOT EXECUTED information->object_blocks, block_count * sizeof(void*) ); memcpy( inactive_per_block, information->inactive_per_block, block_count * sizeof(uint32_t) ); memcpy( local_table, 47bbc: e58d lsll #2,%d5 <== NOT EXECUTED 47bbe: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47bc0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 47bc4: 2f07 movel %d7,%sp@- <== NOT EXECUTED 47bc6: 4eb9 0004 f190 jsr 4f190 <== NOT EXECUTED 47bcc: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 47bd0: 6000 fe94 braw 47a66 <_Objects_Extend_information+0xde><== NOT EXECUTED minimum_index = _Objects_Get_index( information->minimum_id ); index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 47bd4: 4280 clrl %d0 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 47bd6: 2605 movel %d5,%d3 index_base = minimum_index; block = 0; 47bd8: 4282 clrl %d2 /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) block_count = 0; 47bda: 4284 clrl %d4 minimum_index = _Objects_Get_index( information->minimum_id ); index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 47bdc: 322a 000e movew %a2@(14),%d1 47be0: 302a 0012 movew %a2@(18),%d0 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; 47be4: 7e01 moveq #1,%d7 47be6: 6000 fdfa braw 479e2 <_Objects_Extend_information+0x5a> minimum_index = _Objects_Get_index( information->minimum_id ); 47bea: 2605 movel %d5,%d3 <== NOT EXECUTED index_base = minimum_index; block = 0; 47bec: 4282 clrl %d2 <== NOT EXECUTED if ( information->object_blocks == NULL ) block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { 47bee: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; 47bf4: 7e01 moveq #1,%d7 <== NOT EXECUTED 47bf6: 6000 fdea braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED minimum_index = _Objects_Get_index( information->minimum_id ); 47bfa: 2605 movel %d5,%d3 <== NOT EXECUTED index_base = minimum_index; block = 0; 47bfc: 4282 clrl %d2 <== NOT EXECUTED block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { if ( information->object_blocks[ block ] == NULL ) { 47bfe: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED do_extend = false; 47c04: 4207 clrb %d7 <== NOT EXECUTED 47c06: 6000 fdda braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); if ( !object_blocks ) { _Workspace_Free( new_object_block ); 47c0a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 47c0c: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED return; 47c12: 588f addql #4,%sp <== NOT EXECUTED } information->inactive_per_block[ block ] = information->allocation_size; information->inactive = (Objects_Maximum)(information->inactive + information->allocation_size); } 47c14: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47c1a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047c20 <_Objects_Free>: void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { 47c20: 4e56 fff0 linkw %fp,#-16 47c24: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 47c28: 266e 000c moveal %fp@(12),%a3 47c2c: 246e 0008 moveal %fp@(8),%a2 uint32_t allocation_size = information->allocation_size; _Chain_Append( &information->Inactive, &the_object->Node ); 47c30: 2f0b movel %a3,%sp@- 47c32: 486a 001c pea %a2@(28) void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { uint32_t allocation_size = information->allocation_size; 47c36: 342a 0012 movew %a2@(18),%d2 _Chain_Append( &information->Inactive, &the_object->Node ); 47c3a: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> if ( information->auto_extend ) { 47c40: 508f addql #8,%sp 47c42: 4a2a 0010 tstb %a2@(16) 47c46: 6740 beqs 47c88 <_Objects_Free+0x68> <== ALWAYS TAKEN uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 47c48: 4280 clrl %d0 <== NOT EXECUTED 47c4a: 4283 clrl %d3 <== NOT EXECUTED _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; 47c4c: 4281 clrl %d1 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); if ( information->auto_extend ) { uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 47c4e: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 47c52: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; 47c56: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED information->inactive_per_block[ block ]++; 47c5a: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); if ( information->auto_extend ) { uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 47c5e: 9083 subl %d3,%d0 <== NOT EXECUTED _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; 47c60: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED information->inactive_per_block[ block ]++; information->inactive++; 47c64: 322a 0028 movew %a2@(40),%d1 <== NOT EXECUTED void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { uint32_t allocation_size = information->allocation_size; 47c68: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED block = (uint32_t) (_Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; information->inactive_per_block[ block ]++; 47c6e: e588 lsll #2,%d0 <== NOT EXECUTED information->inactive++; 47c70: 5281 addql #1,%d1 <== NOT EXECUTED /* * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { 47c72: 2602 movel %d2,%d3 <== NOT EXECUTED block = (uint32_t) (_Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; information->inactive_per_block[ block ]++; 47c74: d1c0 addal %d0,%a0 <== NOT EXECUTED 47c76: 5290 addql #1,%a0@ <== NOT EXECUTED /* * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { 47c78: 4280 clrl %d0 <== NOT EXECUTED 47c7a: e28b lsrl #1,%d3 <== NOT EXECUTED 47c7c: d483 addl %d3,%d2 <== NOT EXECUTED 47c7e: 3001 movew %d1,%d0 <== NOT EXECUTED block = (uint32_t) (_Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; information->inactive_per_block[ block ]++; information->inactive++; 47c80: 3541 0028 movew %d1,%a2@(40) <== NOT EXECUTED /* * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { 47c84: b480 cmpl %d0,%d2 <== NOT EXECUTED 47c86: 650a bcss 47c92 <_Objects_Free+0x72> <== NOT EXECUTED _Objects_Shrink_information( information ); } } } 47c88: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47c8e: 4e5e unlk %fp 47c90: 4e75 rts * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { _Objects_Shrink_information( information ); 47c92: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } } 47c96: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47c9c: 4e5e unlk %fp <== NOT EXECUTED * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { _Objects_Shrink_information( information ); 47c9e: 4ef9 0004 7fbc jmp 47fbc <_Objects_Shrink_information> <== NOT EXECUTED =============================================================================== 00047d8c <_Objects_Get>: * always NULL. * * If the Id is valid but the object has not been created yet, then * the local_table entry will be NULL. */ index = id - information->minimum_id + 1; 47d8c: 7001 moveq #1,%d0 /* * If the index is less than maximum, then it is OK to use it to * index into the local_table array. */ if ( index <= information->maximum ) { 47d8e: 4281 clrl %d1 Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 47d90: 4e56 fffc linkw %fp,#-4 47d94: 206e 0008 moveal %fp@(8),%a0 * always NULL. * * If the Id is valid but the object has not been created yet, then * the local_table entry will be NULL. */ index = id - information->minimum_id + 1; 47d98: 90a8 0006 subl %a0@(6),%d0 47d9c: d0ae 000c addl %fp@(12),%d0 Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 47da0: 2f0a movel %a2,%sp@- 47da2: 246e 0010 moveal %fp@(16),%a2 /* * If the index is less than maximum, then it is OK to use it to * index into the local_table array. */ if ( index <= information->maximum ) { 47da6: 3228 000e movew %a0@(14),%d1 47daa: b280 cmpl %d0,%d1 47dac: 6522 bcss 47dd0 <_Objects_Get+0x44> <== NEVER TAKEN 47dae: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1 47db4: 5281 addql #1,%d1 47db6: 23c1 0005 fc78 movel %d1,5fc78 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); if ( (the_object = information->local_table[ index ]) != NULL ) { 47dbc: 2068 0018 moveal %a0@(24),%a0 47dc0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 47dc4: 6718 beqs 47dde <_Objects_Get+0x52> <== NEVER TAKEN *location = OBJECTS_LOCAL; 47dc6: 4292 clrl %a2@ _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47dc8: 246e fff8 moveal %fp@(-8),%a2 47dcc: 4e5e unlk %fp 47dce: 4e75 rts /* * Object Id is not within this API and Class on this node. So * it may be global in a multiprocessing system. But it is clearly * invalid on a single processor system. */ *location = OBJECTS_ERROR; 47dd0: 7001 moveq #1,%d0 <== NOT EXECUTED 47dd2: 2480 movel %d0,%a2@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47dd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; 47dd8: 4280 clrl %d0 <== NOT EXECUTED #endif } 47dda: 4e5e unlk %fp <== NOT EXECUTED 47ddc: 4e75 rts <== NOT EXECUTED /* * Valid Id for this API, Class and Node but the object has not * been allocated yet. */ _Thread_Enable_dispatch(); 47dde: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47de2: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED *location = OBJECTS_ERROR; return NULL; 47de8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED /* * Valid Id for this API, Class and Node but the object has not * been allocated yet. */ _Thread_Enable_dispatch(); *location = OBJECTS_ERROR; 47dec: 7201 moveq #1,%d1 <== NOT EXECUTED 47dee: 2481 movel %d1,%a2@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47df0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47df4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047cd0 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) { 47cd0: 4e56 0000 linkw %fp,#0 47cd4: 2f02 movel %d2,%sp@- 47cd6: 342e 000e movew %fp@(14),%d2 Objects_Information *info; int the_class_api_maximum; if ( !the_class ) 47cda: 660a bnes 47ce6 <_Objects_Get_information+0x16> <== ALWAYS TAKEN if ( the_class > (uint32_t) the_class_api_maximum ) return NULL; if ( !_Objects_Information_table[ the_api ] ) return NULL; 47cdc: 4280 clrl %d0 <== NOT EXECUTED if ( info->maximum == 0 ) return NULL; #endif return info; } 47cde: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 47ce2: 4e5e unlk %fp <== NOT EXECUTED 47ce4: 4e75 rts <== NOT EXECUTED /* * This call implicitly validates the_api so we do not call * _Objects_Is_api_valid above here. */ the_class_api_maximum = _Objects_API_maximum_class( the_api ); 47ce6: 2f2e 0008 movel %fp@(8),%sp@- 47cea: 4eb9 0004 c900 jsr 4c900 <_Objects_API_maximum_class> if ( the_class_api_maximum == 0 ) 47cf0: 588f addql #4,%sp 47cf2: 4a80 tstl %d0 47cf4: 67e6 beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN return NULL; if ( the_class > (uint32_t) the_class_api_maximum ) 47cf6: 0282 0000 ffff andil #65535,%d2 47cfc: b480 cmpl %d0,%d2 47cfe: 62dc bhis 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN return NULL; if ( !_Objects_Information_table[ the_api ] ) 47d00: 202e 0008 movel %fp@(8),%d0 47d04: 41f9 0005 fc34 lea 5fc34 <_Objects_Information_table>,%a0 47d0a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 47d0e: 4a88 tstl %a0 47d10: 67ca beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN return NULL; info = _Objects_Information_table[ the_api ][ the_class ]; 47d12: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 if ( !info ) 47d16: 67c6 beqs 47cde <_Objects_Get_information+0xe> <== NEVER TAKEN * Thus we may have 0 local instances and still have a valid object * pointer. */ #if !defined(RTEMS_MULTIPROCESSING) if ( info->maximum == 0 ) return NULL; 47d18: 2040 moveal %d0,%a0 47d1a: 4a68 000e tstw %a0@(14) 47d1e: 56c1 sne %d1 #endif return info; } 47d20: 242e fffc movel %fp@(-4),%d2 * Thus we may have 0 local instances and still have a valid object * pointer. */ #if !defined(RTEMS_MULTIPROCESSING) if ( info->maximum == 0 ) return NULL; 47d24: 49c1 extbl %d1 #endif return info; } 47d26: 4e5e unlk %fp * Thus we may have 0 local instances and still have a valid object * pointer. */ #if !defined(RTEMS_MULTIPROCESSING) if ( info->maximum == 0 ) return NULL; 47d28: c081 andl %d1,%d0 <== NOT EXECUTED #endif return info; } =============================================================================== 00047d2c <_Objects_Get_isr_disable>: { Objects_Control *the_object; uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; 47d2c: 7001 moveq #1,%d0 _ISR_Disable( level ); 47d2e: 223c 0000 0700 movel #1792,%d1 Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_Level *level_p ) { 47d34: 4e56 0000 linkw %fp,#0 47d38: 206e 0008 moveal %fp@(8),%a0 Objects_Control *the_object; uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; 47d3c: 90a8 0006 subl %a0@(6),%d0 47d40: d0ae 000c addl %fp@(12),%d0 Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_Level *level_p ) { 47d44: 2f02 movel %d2,%sp@- 47d46: 226e 0010 moveal %fp@(16),%a1 uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; _ISR_Disable( level ); 47d4a: 40c2 movew %sr,%d2 47d4c: 8282 orl %d2,%d1 47d4e: 46c1 movew %d1,%sr if ( information->maximum >= index ) { 47d50: 4281 clrl %d1 47d52: 3228 000e movew %a0@(14),%d1 47d56: b280 cmpl %d0,%d1 47d58: 6518 bcss 47d72 <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN if ( (the_object = information->local_table[ index ]) != NULL ) { 47d5a: 2068 0018 moveal %a0@(24),%a0 47d5e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 47d62: 671c beqs 47d80 <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN *location = OBJECTS_LOCAL; *level_p = level; 47d64: 206e 0014 moveal %fp@(20),%a0 index = id - information->minimum_id + 1; _ISR_Disable( level ); if ( information->maximum >= index ) { if ( (the_object = information->local_table[ index ]) != NULL ) { *location = OBJECTS_LOCAL; 47d68: 4291 clrl %a1@ *level_p = level; 47d6a: 2082 movel %d2,%a0@ _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47d6c: 241f movel %sp@+,%d2 47d6e: 4e5e unlk %fp 47d70: 4e75 rts } _ISR_Enable( level ); *location = OBJECTS_ERROR; return NULL; } _ISR_Enable( level ); 47d72: 46c2 movew %d2,%sr <== NOT EXECUTED *location = OBJECTS_ERROR; 47d74: 7201 moveq #1,%d1 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; 47d76: 4280 clrl %d0 <== NOT EXECUTED #endif } 47d78: 241f movel %sp@+,%d2 <== NOT EXECUTED 47d7a: 4e5e unlk %fp <== NOT EXECUTED _ISR_Enable( level ); *location = OBJECTS_ERROR; return NULL; } _ISR_Enable( level ); *location = OBJECTS_ERROR; 47d7c: 2281 movel %d1,%a1@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47d7e: 4e75 rts <== NOT EXECUTED if ( (the_object = information->local_table[ index ]) != NULL ) { *location = OBJECTS_LOCAL; *level_p = level; return the_object; } _ISR_Enable( level ); 47d80: 46c2 movew %d2,%sr <== NOT EXECUTED *location = OBJECTS_ERROR; 47d82: 7401 moveq #1,%d2 <== NOT EXECUTED 47d84: 2282 movel %d2,%a1@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 47d86: 241f movel %sp@+,%d2 <== NOT EXECUTED 47d88: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004978c <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) { 4978c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 49790: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 49794: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 49798: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED char lname[5]; Objects_Control *the_object; Objects_Locations location; Objects_Id tmpId; if ( length == 0 ) 4979c: 4a83 tstl %d3 <== NOT EXECUTED 4979e: 660e bnes 497ae <_Objects_Get_name_as_string+0x22><== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* not supported */ #endif case OBJECTS_ERROR: return NULL; 497a0: 4282 clrl %d2 <== NOT EXECUTED _Thread_Enable_dispatch(); return name; } return NULL; /* unreachable path */ } 497a2: 2002 movel %d2,%d0 <== NOT EXECUTED 497a4: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 497aa: 4e5e unlk %fp <== NOT EXECUTED 497ac: 4e75 rts <== NOT EXECUTED Objects_Id tmpId; if ( length == 0 ) return NULL; if ( name == NULL ) 497ae: 4a82 tstl %d2 <== NOT EXECUTED 497b0: 67f0 beqs 497a2 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED return NULL; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 497b2: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED 497b6: 6600 009a bnew 49852 <_Objects_Get_name_as_string+0xc6><== NOT EXECUTED 497ba: 2079 0006 a6dc moveal 6a6dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 497c0: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 497c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 497c6: 4eb9 0004 96a4 jsr 496a4 <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 497cc: 588f addql #4,%sp <== NOT EXECUTED if ( name == NULL ) return NULL; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; information = _Objects_Get_information_id( tmpId ); 497ce: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !information ) 497d0: 4a80 tstl %d0 <== NOT EXECUTED 497d2: 67cc beqs 497a0 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED return NULL; the_object = _Objects_Get( information, tmpId, &location ); 497d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 497d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 497da: 2f00 movel %d0,%sp@- <== NOT EXECUTED 497dc: 4eb9 0004 9890 jsr 49890 <_Objects_Get> <== NOT EXECUTED switch ( location ) { 497e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 497e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 497ea: 66b4 bnes 497a0 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED return NULL; case OBJECTS_LOCAL: #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 497ec: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED 497f0: 6768 beqs 4985a <_Objects_Get_name_as_string+0xce><== NOT EXECUTED s = the_object->name.name_p; 497f2: 2040 moveal %d0,%a0 <== NOT EXECUTED 497f4: 2668 000c moveal %a0@(12),%a3 <== NOT EXECUTED lname[ 4 ] = '\0'; s = lname; } d = name; if ( s ) { 497f8: 4a8b tstl %a3 <== NOT EXECUTED 497fa: 674a beqs 49846 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 497fc: 5383 subql #1,%d3 <== NOT EXECUTED 497fe: 6746 beqs 49846 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED 49800: 1013 moveb %a3@,%d0 <== NOT EXECUTED 49802: 6742 beqs 49846 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED * This method objects the name of an object and returns its name * in the form of a C string. It attempts to be careful about * overflowing the user's string and about returning unprintable characters. */ char *_Objects_Get_name_as_string( 49804: 528b addql #1,%a3 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 49806: 2242 moveal %d2,%a1 <== NOT EXECUTED * This method objects the name of an object and returns its name * in the form of a C string. It attempts to be careful about * overflowing the user's string and about returning unprintable characters. */ char *_Objects_Get_name_as_string( 49808: 91c8 subal %a0,%a0 <== NOT EXECUTED } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { *d = (isprint((unsigned char)*s)) ? *s : '*'; 4980a: 4281 clrl %d1 <== NOT EXECUTED 4980c: 1200 moveb %d0,%d1 <== NOT EXECUTED 4980e: 2479 0006 0df4 moveal 60df4 <__ctype_ptr__>,%a2 <== NOT EXECUTED 49814: 1232 1801 moveb %a2@(00000001,%d1:l),%d1 <== NOT EXECUTED 49818: 49c1 extbl %d1 <== NOT EXECUTED 4981a: 0281 0000 0097 andil #151,%d1 <== NOT EXECUTED 49820: 6602 bnes 49824 <_Objects_Get_name_as_string+0x98><== NOT EXECUTED 49822: 702a moveq #42,%d0 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 49824: 5288 addql #1,%a0 <== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; 49826: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 49828: 2449 moveal %a1,%a2 <== NOT EXECUTED 4982a: b688 cmpl %a0,%d3 <== NOT EXECUTED 4982c: 6304 blss 49832 <_Objects_Get_name_as_string+0xa6><== NOT EXECUTED 4982e: 101b moveb %a3@+,%d0 <== NOT EXECUTED 49830: 66d8 bnes 4980a <_Objects_Get_name_as_string+0x7e><== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; } } *d = '\0'; 49832: 4212 clrb %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 49834: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED return name; } return NULL; /* unreachable path */ } 4983a: 2002 movel %d2,%d0 <== NOT EXECUTED 4983c: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49842: 4e5e unlk %fp <== NOT EXECUTED 49844: 4e75 rts <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 49846: 2442 moveal %d2,%a2 <== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; } } *d = '\0'; 49848: 4212 clrb %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4984a: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED 49850: 60e8 bras 4983a <_Objects_Get_name_as_string+0xae><== NOT EXECUTED return NULL; if ( name == NULL ) return NULL; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 49852: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 49856: 6000 ff6c braw 497c4 <_Objects_Get_name_as_string+0x38><== NOT EXECUTED if ( information->is_string ) { s = the_object->name.name_p; } else #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; 4985a: 2040 moveal %d0,%a0 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; 4985c: 7218 moveq #24,%d1 <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; lname[ 2 ] = (u32_name >> 8) & 0xff; lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; s = lname; 4985e: 47ee fff7 lea %fp@(-9),%a3 <== NOT EXECUTED if ( information->is_string ) { s = the_object->name.name_p; } else #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; 49862: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; 49866: 2a00 movel %d0,%d5 <== NOT EXECUTED 49868: e2ad lsrl %d1,%d5 <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; lname[ 2 ] = (u32_name >> 8) & 0xff; 4986a: 2200 movel %d0,%d1 <== NOT EXECUTED #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; 4986c: 2800 movel %d0,%d4 <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 4986e: e089 lsrl #8,%d1 <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; 49870: 1d40 fffa moveb %d0,%fp@(-6) <== NOT EXECUTED #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; 49874: 4244 clrw %d4 <== NOT EXECUTED 49876: 4844 swap %d4 <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 49878: 4200 clrb %d0 <== NOT EXECUTED } else #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; 4987a: 1d45 fff7 moveb %d5,%fp@(-9) <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; 4987e: 1d44 fff8 moveb %d4,%fp@(-8) <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 49882: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 49886: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED 4988a: 6000 ff70 braw 497fc <_Objects_Get_name_as_string+0x70><== NOT EXECUTED ... =============================================================================== 00047f94 <_Objects_Get_next>: Objects_Information *information, Objects_Id id, Objects_Locations *location_p, Objects_Id *next_id_p ) { 47f94: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47f98: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 47f9c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47fa0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED Objects_Control *object; Objects_Id next_id; if ( !information ) 47fa4: 4a8a tstl %a2 <== NOT EXECUTED 47fa6: 660c bnes 47fb4 <_Objects_Get_next+0x20> <== NOT EXECUTED if ( !location_p ) return NULL; if ( !next_id_p ) return NULL; 47fa8: 4280 clrl %d0 <== NOT EXECUTED return object; final: *next_id_p = OBJECTS_ID_FINAL; return 0; } 47faa: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 47fb0: 4e5e unlk %fp <== NOT EXECUTED 47fb2: 4e75 rts <== NOT EXECUTED Objects_Id next_id; if ( !information ) return NULL; if ( !location_p ) 47fb4: 4a8b tstl %a3 <== NOT EXECUTED 47fb6: 67f0 beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED return NULL; if ( !next_id_p ) 47fb8: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 47fbc: 67ea beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED return NULL; if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX) 47fbe: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 47fc2: 663a bnes 47ffe <_Objects_Get_next+0x6a> <== NOT EXECUTED next_id = information->minimum_id; 47fc4: 242a 0006 movel %a2@(6),%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 47fc8: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED else next_id = id; do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) 47fce: 4281 clrl %d1 <== NOT EXECUTED 47fd0: 4280 clrl %d0 <== NOT EXECUTED 47fd2: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 47fd6: 3002 movew %d2,%d0 <== NOT EXECUTED 47fd8: b081 cmpl %d1,%d0 <== NOT EXECUTED 47fda: 622e bhis 4800a <_Objects_Get_next+0x76> <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 47fdc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47fde: 2f02 movel %d2,%sp@- <== NOT EXECUTED next_id++; 47fe0: 5282 addql #1,%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 47fe2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47fe4: 4e94 jsr %a4@ <== NOT EXECUTED next_id++; } while (*location_p != OBJECTS_LOCAL); 47fe6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47fea: 4a93 tstl %a3@ <== NOT EXECUTED 47fec: 66e0 bnes 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED *next_id_p = next_id; 47fee: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 47ff2: 2082 movel %d2,%a0@ <== NOT EXECUTED return object; final: *next_id_p = OBJECTS_ID_FINAL; return 0; } 47ff4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 47ffa: 4e5e unlk %fp <== NOT EXECUTED 47ffc: 4e75 rts <== NOT EXECUTED return NULL; if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX) next_id = information->minimum_id; else next_id = id; 47ffe: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 48002: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED 48008: 60c4 bras 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) { *location_p = OBJECTS_ERROR; 4800a: 7401 moveq #1,%d2 <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 4800c: 72ff moveq #-1,%d1 <== NOT EXECUTED return 0; 4800e: 4280 clrl %d0 <== NOT EXECUTED do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) { *location_p = OBJECTS_ERROR; 48010: 2682 movel %d2,%a3@ <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 48012: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED return 0; } 48016: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 4801c: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 4801e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005b8ac <_Objects_Get_no_protection>: /* * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1; 5b8ac: 7001 moveq #1,%d0 <== NOT EXECUTED if ( information->maximum >= index ) { 5b8ae: 4281 clrl %d1 <== NOT EXECUTED Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 5b8b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5b8b4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED /* * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1; 5b8b8: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED 5b8bc: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED if ( information->maximum >= index ) { 5b8c0: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 5b8c4: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1; if ( information->maximum >= index ) { 5b8c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 5b8ca: 6510 bcss 5b8dc <_Objects_Get_no_protection+0x30><== NOT EXECUTED if ( (the_object = information->local_table[ index ]) != NULL ) { 5b8cc: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 5b8d0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 5b8d4: 6706 beqs 5b8dc <_Objects_Get_no_protection+0x30><== NOT EXECUTED *location = OBJECTS_LOCAL; 5b8d6: 4291 clrl %a1@ <== NOT EXECUTED * This isn't supported or required yet for Global objects so * if it isn't local, we don't find it. */ *location = OBJECTS_ERROR; return NULL; } 5b8d8: 4e5e unlk %fp <== NOT EXECUTED 5b8da: 4e75 rts <== NOT EXECUTED /* * This isn't supported or required yet for Global objects so * if it isn't local, we don't find it. */ *location = OBJECTS_ERROR; 5b8dc: 7001 moveq #1,%d0 <== NOT EXECUTED return NULL; } 5b8de: 4e5e unlk %fp <== NOT EXECUTED /* * This isn't supported or required yet for Global objects so * if it isn't local, we don't find it. */ *location = OBJECTS_ERROR; 5b8e0: 2280 movel %d0,%a1@ <== NOT EXECUTED return NULL; 5b8e2: 4280 clrl %d0 <== NOT EXECUTED } ... =============================================================================== 000494e8 <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) { 494e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 494ec: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 494f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Caller is trusted for name != NULL. */ tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 494f2: 4a81 tstl %d1 <== NOT EXECUTED 494f4: 660a bnes 49500 <_Objects_Id_to_name+0x18> <== NOT EXECUTED 494f6: 2079 0006 1dea moveal 61dea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 494fc: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 49500: 7418 moveq #24,%d2 <== NOT EXECUTED 49502: 2001 movel %d1,%d0 <== NOT EXECUTED 49504: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 49506: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 4950a: c082 andl %d2,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 4950c: 143c 0002 moveb #2,%d2 <== NOT EXECUTED 49510: 2040 moveal %d0,%a0 <== NOT EXECUTED 49512: 5388 subql #1,%a0 <== NOT EXECUTED 49514: b488 cmpl %a0,%d2 <== NOT EXECUTED 49516: 6522 bcss 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED the_api = _Objects_Get_API( tmpId ); if ( !_Objects_Is_api_valid( the_api ) ) return OBJECTS_INVALID_ID; if ( !_Objects_Information_table[ the_api ] ) 49518: 41f9 0006 191c lea 6191c <_Objects_Information_table>,%a0 <== NOT EXECUTED 4951e: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED 49522: 4a88 tstl %a0 <== NOT EXECUTED 49524: 6714 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class( Objects_Id id ) { return (uint32_t) 49526: 2001 movel %d1,%d0 <== NOT EXECUTED 49528: 741b moveq #27,%d2 <== NOT EXECUTED 4952a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED return OBJECTS_INVALID_ID; the_class = _Objects_Get_class( tmpId ); information = _Objects_Information_table[ the_api ][ the_class ]; 4952c: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED if ( !information ) 49530: 4a88 tstl %a0 <== NOT EXECUTED 49532: 6706 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED return OBJECTS_INVALID_ID; #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) 49534: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED 49538: 670a beqs 49544 <_Objects_Id_to_name+0x5c> <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; _Thread_Enable_dispatch(); return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } 4953a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED the_api = _Objects_Get_API( tmpId ); if ( !_Objects_Is_api_valid( the_api ) ) return OBJECTS_INVALID_ID; if ( !_Objects_Information_table[ the_api ] ) return OBJECTS_INVALID_ID; 4953e: 7003 moveq #3,%d0 <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; _Thread_Enable_dispatch(); return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } 49540: 4e5e unlk %fp <== NOT EXECUTED 49542: 4e75 rts <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) return OBJECTS_INVALID_ID; #endif the_object = _Objects_Get( information, tmpId, &ignored_location ); 49544: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49548: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4954a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4954c: 4eb9 0004 947c jsr 4947c <_Objects_Get> <== NOT EXECUTED if ( !the_object ) 49552: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49556: 4a80 tstl %d0 <== NOT EXECUTED 49558: 67e0 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; 4955a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4955e: 2240 moveal %d0,%a1 <== NOT EXECUTED 49560: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 49564: 4eb9 0004 a0ba jsr 4a0ba <_Thread_Enable_dispatch> <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } 4956a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED if ( !the_object ) return OBJECTS_INVALID_ID; *name = the_object->name; _Thread_Enable_dispatch(); return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 4956e: 4280 clrl %d0 <== NOT EXECUTED } 49570: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000547e8 <_Objects_Name_to_id_string>: Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string( Objects_Information *information, const char *name, Objects_Id *id ) { 547e8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 547ec: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 547f0: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 547f4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 547f8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED Objects_Control *the_object; uint32_t index; /* ASSERT: information->is_string == true */ if ( !id ) 547fc: 6762 beqs 54860 <_Objects_Name_to_id_string+0x78><== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( !name ) 547fe: 4a84 tstl %d4 <== NOT EXECUTED 54800: 6742 beqs 54844 <_Objects_Name_to_id_string+0x5c><== NOT EXECUTED return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { 54802: 362c 000e movew %a4@(14),%d3 <== NOT EXECUTED 54806: 673c beqs 54844 <_Objects_Name_to_id_string+0x5c><== NOT EXECUTED * id - object id * OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful * error code - if unsuccessful */ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string( 54808: 266c 0018 moveal %a4@(24),%a3 <== NOT EXECUTED 5480c: 7401 moveq #1,%d2 <== NOT EXECUTED 5480e: 588b addql #4,%a3 <== NOT EXECUTED continue; if ( !the_object->name.name_p ) continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { 54810: 4bf9 0005 8510 lea 58510 ,%a5 <== NOT EXECUTED if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { for ( index = 1; index <= information->maximum; index++ ) { 54816: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED the_object = information->local_table[ index ]; 5481c: 245b moveal %a3@+,%a2 <== NOT EXECUTED if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { for ( index = 1; index <= information->maximum; index++ ) { 5481e: 5282 addql #1,%d2 <== NOT EXECUTED the_object = information->local_table[ index ]; if ( !the_object ) 54820: 4a8a tstl %a2 <== NOT EXECUTED 54822: 671c beqs 54840 <_Objects_Name_to_id_string+0x58><== NOT EXECUTED continue; if ( !the_object->name.name_p ) 54824: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 54828: 6716 beqs 54840 <_Objects_Name_to_id_string+0x58><== NOT EXECUTED continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { 5482a: 4281 clrl %d1 <== NOT EXECUTED 5482c: 322c 0034 movew %a4@(52),%d1 <== NOT EXECUTED 54830: 2f01 movel %d1,%sp@- <== NOT EXECUTED 54832: 2f00 movel %d0,%sp@- <== NOT EXECUTED 54834: 2f04 movel %d4,%sp@- <== NOT EXECUTED 54836: 4e95 jsr %a5@ <== NOT EXECUTED 54838: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5483c: 4a80 tstl %d0 <== NOT EXECUTED 5483e: 6710 beqs 54850 <_Objects_Name_to_id_string+0x68><== NOT EXECUTED if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { for ( index = 1; index <= information->maximum; index++ ) { 54840: b682 cmpl %d2,%d3 <== NOT EXECUTED 54842: 64d8 bccs 5481c <_Objects_Name_to_id_string+0x34><== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } } } return OBJECTS_INVALID_NAME; 54844: 7001 moveq #1,%d0 <== NOT EXECUTED } 54846: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 5484c: 4e5e unlk %fp <== NOT EXECUTED 5484e: 4e75 rts <== NOT EXECUTED if ( !the_object->name.name_p ) continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { *id = the_object->id; 54850: 2045 moveal %d5,%a0 <== NOT EXECUTED 54852: 20aa 0008 movel %a2@(8),%a0@ <== NOT EXECUTED } } } return OBJECTS_INVALID_NAME; } 54856: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 5485c: 4e5e unlk %fp <== NOT EXECUTED 5485e: 4e75 rts <== NOT EXECUTED uint32_t index; /* ASSERT: information->is_string == true */ if ( !id ) return OBJECTS_INVALID_ADDRESS; 54860: 7002 moveq #2,%d0 <== NOT EXECUTED } } } return OBJECTS_INVALID_NAME; } 54862: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 54868: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047f3c <_Objects_Name_to_id_u32>: Objects_Information *information, uint32_t name, uint32_t node, Objects_Id *id ) { 47f3c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47f40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47f44: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 47f48: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 47f4c: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 47f50: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED Objects_Name name_for_mp; #endif /* ASSERT: information->is_string == false */ if ( !id ) 47f54: 4a8a tstl %a2 <== NOT EXECUTED 47f56: 6758 beqs 47fb0 <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( name == 0 ) 47f58: 4a81 tstl %d1 <== NOT EXECUTED 47f5a: 6718 beqs 47f74 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED return OBJECTS_INVALID_NAME; search_local_node = false; if ( information->maximum != 0 && 47f5c: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED 47f60: 6712 beqs 47f74 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED 47f62: 4a80 tstl %d0 <== NOT EXECUTED 47f64: 6718 beqs 47f7e <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED (node == OBJECTS_SEARCH_ALL_NODES || 47f66: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 47f6c: 6710 beqs 47f7e <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED node == OBJECTS_SEARCH_LOCAL_NODE || 47f6e: 7601 moveq #1,%d3 <== NOT EXECUTED 47f70: b680 cmpl %d0,%d3 <== NOT EXECUTED 47f72: 670a beqs 47f7e <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED return OBJECTS_INVALID_NAME; name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; 47f74: 7001 moveq #1,%d0 <== NOT EXECUTED #endif } 47f76: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47f7a: 4e5e unlk %fp <== NOT EXECUTED 47f7c: 4e75 rts <== NOT EXECUTED * id - object id * OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful * error code - if unsuccessful */ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32( 47f7e: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED 47f82: 7001 moveq #1,%d0 <== NOT EXECUTED 47f84: 5889 addql #4,%a1 <== NOT EXECUTED _Objects_Is_local_node( node ) )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { 47f86: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED the_object = information->local_table[ index ]; 47f8c: 2059 moveal %a1@+,%a0 <== NOT EXECUTED _Objects_Is_local_node( node ) )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { 47f8e: 5280 addql #1,%d0 <== NOT EXECUTED the_object = information->local_table[ index ]; if ( !the_object ) 47f90: 4a88 tstl %a0 <== NOT EXECUTED 47f92: 6706 beqs 47f9a <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED continue; if ( name == the_object->name.name_u32 ) { 47f94: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED 47f98: 6708 beqs 47fa2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED _Objects_Is_local_node( node ) )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { 47f9a: b082 cmpl %d2,%d0 <== NOT EXECUTED 47f9c: 63ee blss 47f8c <_Objects_Name_to_id_u32+0x50> <== NOT EXECUTED return OBJECTS_INVALID_NAME; name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; 47f9e: 7001 moveq #1,%d0 <== NOT EXECUTED 47fa0: 60d4 bras 47f76 <_Objects_Name_to_id_u32+0x3a> <== NOT EXECUTED the_object = information->local_table[ index ]; if ( !the_object ) continue; if ( name == the_object->name.name_u32 ) { *id = the_object->id; 47fa2: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 47fa6: 4280 clrl %d0 <== NOT EXECUTED name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; #endif } 47fa8: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47fac: 4e5e unlk %fp <== NOT EXECUTED 47fae: 4e75 rts <== NOT EXECUTED #endif /* ASSERT: information->is_string == false */ if ( !id ) return OBJECTS_INVALID_ADDRESS; 47fb0: 7002 moveq #2,%d0 <== NOT EXECUTED name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; #endif } 47fb2: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47fb6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047f0c <_Objects_Namespace_remove>: void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 47f0c: 4e56 0000 linkw %fp,#0 #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 47f10: 206e 0008 moveal %fp@(8),%a0 void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 47f14: 2f0a movel %a2,%sp@- 47f16: 246e 000c moveal %fp@(12),%a2 #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 47f1a: 4a28 0032 tstb %a0@(50) 47f1e: 6710 beqs 47f30 <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN 47f20: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47f24: 670a beqs 47f30 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 47f26: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47f28: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 47f2e: 588f addql #4,%sp <== NOT EXECUTED * Clear out either format. */ #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) the_object->name.name_p = NULL; #endif the_object->name.name_u32 = 0; 47f30: 42aa 000c clrl %a2@(12) } 47f34: 246e fffc moveal %fp@(-4),%a2 47f38: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048344 <_Objects_Set_name>: { size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 48344: 4280 clrl %d0 <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 48346: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4834a: 48d7 3c00 moveml %a2-%a5,%sp@ <== NOT EXECUTED 4834e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 48352: 302c 0034 movew %a4@(52),%d0 <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 48356: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 4835a: 2f00 movel %d0,%sp@- <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 4835c: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 48360: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48362: 4eb9 0005 0634 jsr 50634 <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 48368: 508f addql #8,%sp <== NOT EXECUTED { size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 4836a: 2640 moveal %d0,%a3 <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 4836c: 4a2c 0032 tstb %a4@(50) <== NOT EXECUTED 48370: 6662 bnes 483d4 <_Objects_Set_name+0x90> <== NOT EXECUTED d[length] = '\0'; the_object->name.name_p = d; } else #endif { the_object->name.name_u32 = _Objects_Build_name( 48372: 7018 moveq #24,%d0 <== NOT EXECUTED 48374: 1212 moveb %a2@,%d1 <== NOT EXECUTED 48376: 49c1 extbl %d1 <== NOT EXECUTED 48378: e1a9 lsll %d0,%d1 <== NOT EXECUTED 4837a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 4837e: b08b cmpl %a3,%d0 <== NOT EXECUTED 48380: 643c bccs 483be <_Objects_Set_name+0x7a> <== NOT EXECUTED 48382: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED 48386: 49c0 extbl %d0 <== NOT EXECUTED 48388: 4840 swap %d0 <== NOT EXECUTED 4838a: 4240 clrw %d0 <== NOT EXECUTED 4838c: 8081 orl %d1,%d0 <== NOT EXECUTED 4838e: 7202 moveq #2,%d1 <== NOT EXECUTED 48390: b28b cmpl %a3,%d1 <== NOT EXECUTED 48392: 6730 beqs 483c4 <_Objects_Set_name+0x80> <== NOT EXECUTED 48394: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED 48398: 49c1 extbl %d1 <== NOT EXECUTED 4839a: e189 lsll #8,%d1 <== NOT EXECUTED 4839c: 8081 orl %d1,%d0 <== NOT EXECUTED 4839e: 7203 moveq #3,%d1 <== NOT EXECUTED 483a0: b28b cmpl %a3,%d1 <== NOT EXECUTED 483a2: 6700 0088 beqw 4842c <_Objects_Set_name+0xe8> <== NOT EXECUTED 483a6: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED 483aa: 49c1 extbl %d1 <== NOT EXECUTED 483ac: 8081 orl %d1,%d0 <== NOT EXECUTED 483ae: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED ((3 < length) ? s[ 3 ] : ' ') ); } return true; 483b2: 7001 moveq #1,%d0 <== NOT EXECUTED } 483b4: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 483ba: 4e5e unlk %fp <== NOT EXECUTED 483bc: 4e75 rts <== NOT EXECUTED d[length] = '\0'; the_object->name.name_p = d; } else #endif { the_object->name.name_u32 = _Objects_Build_name( 483be: 2001 movel %d1,%d0 <== NOT EXECUTED 483c0: 08c0 0015 bset #21,%d0 <== NOT EXECUTED 483c4: 7220 moveq #32,%d1 <== NOT EXECUTED 483c6: 08c0 000d bset #13,%d0 <== NOT EXECUTED 483ca: 8081 orl %d1,%d0 <== NOT EXECUTED 483cc: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED ((3 < length) ? s[ 3 ] : ' ') ); } return true; 483d0: 7001 moveq #1,%d0 <== NOT EXECUTED 483d2: 60e0 bras 483b4 <_Objects_Set_name+0x70> <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { char *d; d = _Workspace_Allocate( length + 1 ); 483d4: 486b 0001 pea %a3@(1) <== NOT EXECUTED 483d8: 4eb9 0004 9fd2 jsr 49fd2 <_Workspace_Allocate> <== NOT EXECUTED if ( !d ) 483de: 588f addql #4,%sp <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { char *d; d = _Workspace_Allocate( length + 1 ); 483e0: 2840 moveal %d0,%a4 <== NOT EXECUTED if ( !d ) 483e2: 4a80 tstl %d0 <== NOT EXECUTED 483e4: 673a beqs 48420 <_Objects_Set_name+0xdc> <== NOT EXECUTED return false; if ( the_object->name.name_p ) { 483e6: 202d 000c movel %a5@(12),%d0 <== NOT EXECUTED 483ea: 670e beqs 483fa <_Objects_Set_name+0xb6> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 483ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 483ee: 4eb9 0004 9fee jsr 49fee <_Workspace_Free> <== NOT EXECUTED the_object->name.name_p = NULL; 483f4: 588f addql #4,%sp <== NOT EXECUTED 483f6: 42ad 000c clrl %a5@(12) <== NOT EXECUTED } strncpy( d, name, length ); 483fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED 483fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483fe: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48400: 4eb9 0005 05b0 jsr 505b0 <== NOT EXECUTED d[length] = '\0'; the_object->name.name_p = d; 48406: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); the_object->name.name_p = NULL; } strncpy( d, name, length ); d[length] = '\0'; 4840a: 4200 clrb %d0 <== NOT EXECUTED 4840c: 1980 b800 moveb %d0,%a4@(00000000,%a3:l) <== NOT EXECUTED ((3 < length) ? s[ 3 ] : ' ') ); } return true; 48410: 7001 moveq #1,%d0 <== NOT EXECUTED the_object->name.name_p = NULL; } strncpy( d, name, length ); d[length] = '\0'; the_object->name.name_p = d; 48412: 2b4c 000c movel %a4,%a5@(12) <== NOT EXECUTED ); } return true; } 48416: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 4841c: 4e5e unlk %fp <== NOT EXECUTED 4841e: 4e75 rts <== NOT EXECUTED 48420: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED if ( information->is_string ) { char *d; d = _Workspace_Allocate( length + 1 ); if ( !d ) return false; 48426: 4200 clrb %d0 <== NOT EXECUTED ); } return true; } 48428: 4e5e unlk %fp <== NOT EXECUTED 4842a: 4e75 rts <== NOT EXECUTED d[length] = '\0'; the_object->name.name_p = d; } else #endif { the_object->name.name_u32 = _Objects_Build_name( 4842c: 7220 moveq #32,%d1 <== NOT EXECUTED 4842e: 8081 orl %d1,%d0 <== NOT EXECUTED 48430: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED ((3 < length) ? s[ 3 ] : ' ') ); } return true; 48434: 7001 moveq #1,%d0 <== NOT EXECUTED 48436: 6000 ff7c braw 483b4 <_Objects_Set_name+0x70> <== NOT EXECUTED ... =============================================================================== 00047fbc <_Objects_Shrink_information>: /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / 47fbc: 4281 clrl %d1 <== NOT EXECUTED */ void _Objects_Shrink_information( Objects_Information *information ) { 47fbe: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47fc2: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 47fc6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); 47fca: 4283 clrl %d3 <== NOT EXECUTED block_count = (information->maximum - index_base) / 47fcc: 4284 clrl %d4 <== NOT EXECUTED /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); 47fce: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED block_count = (information->maximum - index_base) / 47fd2: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED 47fd6: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 47fda: 9883 subl %d3,%d4 <== NOT EXECUTED 47fdc: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED information->allocation_size; for ( block = 0; block < block_count; block++ ) { 47fe0: 6774 beqs 48056 <_Objects_Shrink_information+0x9a><== NOT EXECUTED if ( information->inactive_per_block[ block ] == 47fe2: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED 47fe6: b290 cmpl %a0@,%d1 <== NOT EXECUTED 47fe8: 677e beqs 48068 <_Objects_Shrink_information+0xac><== NOT EXECUTED * the_block - the block to remove * * Output parameters: NONE */ void _Objects_Shrink_information( 47fea: 5888 addql #4,%a0 <== NOT EXECUTED index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / information->allocation_size; for ( block = 0; block < block_count; block++ ) { 47fec: 4280 clrl %d0 <== NOT EXECUTED 47fee: 5280 addql #1,%d0 <== NOT EXECUTED information->inactive -= information->allocation_size; return; } index_base += information->allocation_size; 47ff0: d681 addl %d1,%d3 <== NOT EXECUTED index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / information->allocation_size; for ( block = 0; block < block_count; block++ ) { 47ff2: b084 cmpl %d4,%d0 <== NOT EXECUTED 47ff4: 6460 bccs 48056 <_Objects_Shrink_information+0x9a><== NOT EXECUTED information->inactive -= information->allocation_size; return; } index_base += information->allocation_size; 47ff6: 2400 movel %d0,%d2 <== NOT EXECUTED 47ff8: e58a lsll #2,%d2 <== NOT EXECUTED index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / information->allocation_size; for ( block = 0; block < block_count; block++ ) { if ( information->inactive_per_block[ block ] == 47ffa: b298 cmpl %a0@+,%d1 <== NOT EXECUTED 47ffc: 66f0 bnes 47fee <_Objects_Shrink_information+0x32><== NOT EXECUTED information->allocation_size ) { /* * Assume the Inactive chain is never empty at this point */ the_object = (Objects_Control *) _Chain_First( &information->Inactive ); 47ffe: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); 48002: 47f9 0004 6f08 lea 46f08 <_Chain_Extract>,%a3 <== NOT EXECUTED * Assume the Inactive chain is never empty at this point */ the_object = (Objects_Control *) _Chain_First( &information->Inactive ); do { index = _Objects_Get_index( the_object->id ); 48008: 4280 clrl %d0 <== NOT EXECUTED 4800a: 3028 000a movew %a0@(10),%d0 <== NOT EXECUTED /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; 4800e: 2810 movel %a0@,%d4 <== NOT EXECUTED if ((index >= index_base) && 48010: b680 cmpl %d0,%d3 <== NOT EXECUTED 48012: 620c bhis 48020 <_Objects_Shrink_information+0x64><== NOT EXECUTED (index < (index_base + information->allocation_size))) { 48014: 4281 clrl %d1 <== NOT EXECUTED 48016: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 4801a: d283 addl %d3,%d1 <== NOT EXECUTED /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && 4801c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4801e: 6240 bhis 48060 <_Objects_Shrink_information+0xa4><== NOT EXECUTED (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); } } while ( the_object ); 48020: 4a84 tstl %d4 <== NOT EXECUTED 48022: 6704 beqs 48028 <_Objects_Shrink_information+0x6c><== NOT EXECUTED index = _Objects_Get_index( the_object->id ); /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; 48024: 2044 moveal %d4,%a0 <== NOT EXECUTED 48026: 60e0 bras 48008 <_Objects_Shrink_information+0x4c><== NOT EXECUTED while ( the_object ); /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); 48028: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED 4802c: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED 48030: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED information->object_blocks[ block ] = NULL; 48036: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED information->inactive_per_block[ block ] = 0; information->inactive -= information->allocation_size; return; 4803a: 588f addql #4,%sp <== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; 4803c: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED information->inactive_per_block[ block ] = 0; 48040: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED information->inactive -= information->allocation_size; 48044: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED 48048: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; information->inactive_per_block[ block ] = 0; 4804c: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED information->inactive -= information->allocation_size; 48050: 9081 subl %d1,%d0 <== NOT EXECUTED 48052: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED return; } index_base += information->allocation_size; } } 48056: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4805c: 4e5e unlk %fp <== NOT EXECUTED 4805e: 4e75 rts <== NOT EXECUTED */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); 48060: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48062: 4e93 jsr %a3@ <== NOT EXECUTED 48064: 588f addql #4,%sp <== NOT EXECUTED 48066: 60b8 bras 48020 <_Objects_Shrink_information+0x64><== NOT EXECUTED information->allocation_size ) { /* * Assume the Inactive chain is never empty at this point */ the_object = (Objects_Control *) _Chain_First( &information->Inactive ); 48068: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / information->allocation_size; for ( block = 0; block < block_count; block++ ) { if ( information->inactive_per_block[ block ] == 4806c: 4282 clrl %d2 <== NOT EXECUTED */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); 4806e: 47f9 0004 6f08 lea 46f08 <_Chain_Extract>,%a3 <== NOT EXECUTED 48074: 6092 bras 48008 <_Objects_Shrink_information+0x4c><== NOT EXECUTED ... =============================================================================== 00048774 <_POSIX_Absolute_timeout_to_ticks>: */ POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks( const struct timespec *abstime, Watchdog_Interval *ticks_out ) { 48774: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 48778: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4877c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48780: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED *ticks_out = 0; /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) 48784: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Make sure there is always a value returned. */ *ticks_out = 0; 48786: 4292 clrl %a2@ <== NOT EXECUTED /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) 48788: 4eb9 0004 c99c jsr 4c99c <_Timespec_Is_valid> <== NOT EXECUTED 4878e: 588f addql #4,%sp <== NOT EXECUTED 48790: 4a00 tstb %d0 <== NOT EXECUTED 48792: 660c bnes 487a0 <_POSIX_Absolute_timeout_to_ticks+0x2c><== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_INVALID; 48794: 4280 clrl %d0 <== NOT EXECUTED /* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; } 48796: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 4879c: 4e5e unlk %fp <== NOT EXECUTED 4879e: 4e75 rts <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_INVALID; /* * Is the absolute time in the past? */ _TOD_Get( ¤t_time ); 487a0: 260e movel %fp,%d3 <== NOT EXECUTED 487a2: 5183 subql #8,%d3 <== NOT EXECUTED 487a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487a6: 4eb9 0004 a758 jsr 4a758 <_TOD_Get> <== NOT EXECUTED if ( _Timespec_Less_than( abstime, ¤t_time ) ) 487ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 487b0: 4eb9 0004 c9c8 jsr 4c9c8 <_Timespec_Less_than> <== NOT EXECUTED 487b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 487ba: 4a00 tstb %d0 <== NOT EXECUTED 487bc: 670c beqs 487ca <_POSIX_Absolute_timeout_to_ticks+0x56><== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST; 487be: 7001 moveq #1,%d0 <== NOT EXECUTED /* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; } 487c0: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 487c6: 4e5e unlk %fp <== NOT EXECUTED 487c8: 4e75 rts <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST; /* * How long until the requested absolute time? */ _Timespec_Subtract( ¤t_time, abstime, &difference ); 487ca: 280e movel %fp,%d4 <== NOT EXECUTED 487cc: 0684 ffff fff0 addil #-16,%d4 <== NOT EXECUTED 487d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 487d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 487d6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487d8: 4eb9 0004 c9fc jsr 4c9fc <_Timespec_Subtract> <== NOT EXECUTED /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 487de: 2f04 movel %d4,%sp@- <== NOT EXECUTED 487e0: 4eb9 0004 ca4c jsr 4ca4c <_Timespec_To_ticks> <== NOT EXECUTED /* * If the difference was 0, then the future is now. It is so bright * we better wear shades. */ if ( !*ticks_out ) 487e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_NOW; 487ea: 4a80 tstl %d0 <== NOT EXECUTED 487ec: 56c1 sne %d1 <== NOT EXECUTED _Timespec_Subtract( ¤t_time, abstime, &difference ); /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 487ee: 2480 movel %d0,%a2@ <== NOT EXECUTED /* * If the difference was 0, then the future is now. It is so bright * we better wear shades. */ if ( !*ticks_out ) return POSIX_ABSOLUTE_TIMEOUT_IS_NOW; 487f0: 1001 moveb %d1,%d0 <== NOT EXECUTED 487f2: 7202 moveq #2,%d1 <== NOT EXECUTED 487f4: 49c0 extbl %d0 <== NOT EXECUTED 487f6: 9280 subl %d0,%d1 <== NOT EXECUTED 487f8: 2001 movel %d1,%d0 <== NOT EXECUTED /* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; } 487fa: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 48800: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004cbe4 <_POSIX_Barrier_Translate_core_barrier_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return EINVAL; #endif return _POSIX_Barrier_Return_codes[the_barrier_status]; 4cbe4: 41f9 0005 f0a0 lea 5f0a0 <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_Barrier_Translate_core_barrier_return_code( CORE_barrier_Status the_barrier_status ) { 4cbea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return EINVAL; #endif return _POSIX_Barrier_Return_codes[the_barrier_status]; } 4cbee: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4cbf2: 4e5e unlk %fp <== NOT EXECUTED 4cbf4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 000470ec <_POSIX_Condition_variables_Get>: POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get ( pthread_cond_t *cond, Objects_Locations *location ) { 470ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 470f0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 470f2: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 470f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int status; if ( !cond ) { 470fc: 4a8a tstl %a2 <== NOT EXECUTED 470fe: 6750 beqs 47150 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED *location = OBJECTS_ERROR; return (POSIX_Condition_variables_Control *) 0; } if ( *cond == PTHREAD_COND_INITIALIZER ) { 47100: 2012 movel %a2@,%d0 <== NOT EXECUTED 47102: 72ff moveq #-1,%d1 <== NOT EXECUTED 47104: b280 cmpl %d0,%d1 <== NOT EXECUTED 47106: 6720 beqs 47128 <_POSIX_Condition_variables_Get+0x3c><== NOT EXECUTED } /* * Now call Objects_Get() */ return (POSIX_Condition_variables_Control *)_Objects_Get( 47108: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4710a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4710c: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED 47112: 4eb9 0004 9fd0 jsr 49fd0 <_Objects_Get> <== NOT EXECUTED 47118: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED &_POSIX_Condition_variables_Information, (Objects_Id) *cond, location ); } 4711c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47120: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 47124: 4e5e unlk %fp <== NOT EXECUTED 47126: 4e75 rts <== NOT EXECUTED if ( *cond == PTHREAD_COND_INITIALIZER ) { /* * Do an "auto-create" here. */ status = pthread_cond_init( cond, 0 ); 47128: 42a7 clrl %sp@- <== NOT EXECUTED 4712a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4712c: 4eb9 0004 7164 jsr 47164 <== NOT EXECUTED if ( status ) { 47132: 508f addql #8,%sp <== NOT EXECUTED 47134: 4a80 tstl %d0 <== NOT EXECUTED 47136: 6618 bnes 47150 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED 47138: 2012 movel %a2@,%d0 <== NOT EXECUTED } /* * Now call Objects_Get() */ return (POSIX_Condition_variables_Control *)_Objects_Get( 4713a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4713c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4713e: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED 47144: 4eb9 0004 9fd0 jsr 49fd0 <_Objects_Get> <== NOT EXECUTED 4714a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4714e: 60cc bras 4711c <_POSIX_Condition_variables_Get+0x30><== NOT EXECUTED * Do an "auto-create" here. */ status = pthread_cond_init( cond, 0 ); if ( status ) { *location = OBJECTS_ERROR; 47150: 7001 moveq #1,%d0 <== NOT EXECUTED 47152: 2680 movel %d0,%a3@ <== NOT EXECUTED return (POSIX_Condition_variables_Control *)_Objects_Get( &_POSIX_Condition_variables_Information, (Objects_Id) *cond, location ); } 47154: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED */ status = pthread_cond_init( cond, 0 ); if ( status ) { *location = OBJECTS_ERROR; return (POSIX_Condition_variables_Control *) 0; 47158: 4280 clrl %d0 <== NOT EXECUTED return (POSIX_Condition_variables_Control *)_Objects_Get( &_POSIX_Condition_variables_Information, (Objects_Id) *cond, location ); } 4715a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4715e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047238 <_POSIX_Condition_variables_Signal_support>: int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 47238: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4723c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; Thread_Control *the_thread; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 47240: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47244: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 47248: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; Thread_Control *the_thread; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 4724c: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 47252: 508f addql #8,%sp <== NOT EXECUTED { register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; Thread_Control *the_thread; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 47254: 2640 moveal %d0,%a3 <== NOT EXECUTED switch ( location ) { 47256: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4725a: 670c beqs 47268 <_POSIX_Condition_variables_Signal_support+0x30><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4725c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4725e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47264: 4e5e unlk %fp <== NOT EXECUTED 47266: 4e75 rts <== NOT EXECUTED 47268: 2600 movel %d0,%d3 <== NOT EXECUTED 4726a: 0683 0000 0018 addil #24,%d3 <== NOT EXECUTED 47270: 45f9 0004 ae64 lea 4ae64 <_Thread_queue_Dequeue>,%a2 <== NOT EXECUTED the_cond = _POSIX_Condition_variables_Get( cond, &location ); switch ( location ) { case OBJECTS_LOCAL: do { the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue ); 47276: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47278: 4e92 jsr %a2@ <== NOT EXECUTED if ( !the_thread ) 4727a: 588f addql #4,%sp <== NOT EXECUTED 4727c: 4a80 tstl %d0 <== NOT EXECUTED 4727e: 671a beqs 4729a <_POSIX_Condition_variables_Signal_support+0x62><== NOT EXECUTED the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; } while ( is_broadcast && the_thread ); 47280: 4a02 tstb %d2 <== NOT EXECUTED 47282: 6704 beqs 47288 <_POSIX_Condition_variables_Signal_support+0x50><== NOT EXECUTED 47284: 4a80 tstl %d0 <== NOT EXECUTED 47286: 66ee bnes 47276 <_POSIX_Condition_variables_Signal_support+0x3e><== NOT EXECUTED _Thread_Enable_dispatch(); 47288: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4728e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47290: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47296: 4e5e unlk %fp <== NOT EXECUTED 47298: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: do { the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue ); if ( !the_thread ) the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 4729a: 42ab 0014 clrl %a3@(20) <== NOT EXECUTED 4729e: 60e0 bras 47280 <_POSIX_Condition_variables_Signal_support+0x48><== NOT EXECUTED =============================================================================== 00047304 <_POSIX_Condition_variables_Wait_support>: pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 47304: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 47308: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 4730c: 240e movel %fp,%d2 <== NOT EXECUTED 4730e: 5982 subql #4,%d2 <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 47310: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 47314: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 47316: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 4731a: 2f0a movel %a2,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 4731c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 47320: 4eb9 0004 7484 jsr 47484 <_POSIX_Mutex_Get> <== NOT EXECUTED 47326: 508f addql #8,%sp <== NOT EXECUTED 47328: 4a80 tstl %d0 <== NOT EXECUTED 4732a: 6764 beqs 47390 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4732c: 2039 0006 26d8 movel 626d8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47332: 5380 subql #1,%d0 <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 47334: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47336: 23c0 0006 26d8 movel %d0,626d8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 4733c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4733e: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 47344: 508f addql #8,%sp <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 47346: 2840 moveal %d0,%a4 <== NOT EXECUTED switch ( location ) { 47348: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4734c: 6642 bnes 47390 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED case OBJECTS_LOCAL: if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) { 4734e: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED 47352: 6718 beqs 4736c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED 47354: b092 cmpl %a2@,%d0 <== NOT EXECUTED 47356: 6714 beqs 4736c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED _Thread_Enable_dispatch(); 47358: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED return EINVAL; 4735e: 7416 moveq #22,%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47360: 2002 movel %d2,%d0 <== NOT EXECUTED 47362: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 47368: 4e5e unlk %fp <== NOT EXECUTED 4736a: 4e75 rts <== NOT EXECUTED if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) { _Thread_Enable_dispatch(); return EINVAL; } (void) pthread_mutex_unlock( mutex ); 4736c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4736e: 4eb9 0004 7754 jsr 47754 <== NOT EXECUTED _Thread_Enable_dispatch(); return EINVAL; } */ if ( !already_timedout ) { 47374: 588f addql #4,%sp <== NOT EXECUTED 47376: 4a03 tstb %d3 <== NOT EXECUTED 47378: 6724 beqs 4739e <_POSIX_Condition_variables_Wait_support+0x9a><== NOT EXECUTED status = _Thread_Executing->Wait.return_code; if ( status == EINTR ) status = 0; } else { _Thread_Enable_dispatch(); 4737a: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED status = ETIMEDOUT; 47380: 7474 moveq #116,%d2 <== NOT EXECUTED /* * When we get here the dispatch disable level is 0. */ mutex_status = pthread_mutex_lock( mutex ); 47382: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47384: 4eb9 0004 76b8 jsr 476b8 <== NOT EXECUTED if ( mutex_status ) 4738a: 588f addql #4,%sp <== NOT EXECUTED 4738c: 4a80 tstl %d0 <== NOT EXECUTED 4738e: 67d0 beqs 47360 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47390: 7416 moveq #22,%d2 <== NOT EXECUTED } 47392: 2002 movel %d2,%d0 <== NOT EXECUTED 47394: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4739a: 4e5e unlk %fp <== NOT EXECUTED 4739c: 4e75 rts <== NOT EXECUTED return EINVAL; } */ if ( !already_timedout ) { the_cond->Mutex = *mutex; 4739e: 2952 0014 movel %a2@,%a4@(20) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 473a2: 7201 moveq #1,%d1 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; _Thread_Executing->Wait.queue = &the_cond->Wait_queue; 473a4: 200c movel %a4,%d0 <== NOT EXECUTED 473a6: 0680 0000 0018 addil #24,%d0 <== NOT EXECUTED 473ac: 2941 0048 movel %d1,%a4@(72) <== NOT EXECUTED if ( !already_timedout ) { the_cond->Mutex = *mutex; _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; 473b0: 2079 0006 2b62 moveal 62b62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 473b6: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED _Thread_Executing->Wait.queue = &the_cond->Wait_queue; _Thread_Executing->Wait.id = *cond; 473ba: 2153 0020 movel %a3@,%a0@(32) <== NOT EXECUTED if ( !already_timedout ) { the_cond->Mutex = *mutex; _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; _Thread_Executing->Wait.queue = &the_cond->Wait_queue; 473be: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED _Thread_Executing->Wait.id = *cond; _Thread_queue_Enqueue( &the_cond->Wait_queue, timeout ); 473c2: 4879 0004 b408 pea 4b408 <_Thread_queue_Timeout> <== NOT EXECUTED 473c8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 473cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 473ce: 4eb9 0004 afdc jsr 4afdc <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 473d4: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED * a POSIX signal, then pthread_cond_wait returns spuriously, * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; 473da: 2079 0006 2b62 moveal 62b62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED if ( status == EINTR ) status = 0; 473e0: 7004 moveq #4,%d0 <== NOT EXECUTED * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; if ( status == EINTR ) 473e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED * a POSIX signal, then pthread_cond_wait returns spuriously, * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; 473e6: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED if ( status == EINTR ) status = 0; 473ea: b082 cmpl %d2,%d0 <== NOT EXECUTED 473ec: 56c0 sne %d0 <== NOT EXECUTED /* * When we get here the dispatch disable level is 0. */ mutex_status = pthread_mutex_lock( mutex ); 473ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; if ( status == EINTR ) status = 0; 473f0: 49c0 extbl %d0 <== NOT EXECUTED 473f2: c480 andl %d0,%d2 <== NOT EXECUTED /* * When we get here the dispatch disable level is 0. */ mutex_status = pthread_mutex_lock( mutex ); 473f4: 4eb9 0004 76b8 jsr 476b8 <== NOT EXECUTED if ( mutex_status ) 473fa: 588f addql #4,%sp <== NOT EXECUTED 473fc: 4a80 tstl %d0 <== NOT EXECUTED 473fe: 6700 ff60 beqw 47360 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED 47402: 608c bras 47390 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED =============================================================================== 000464fc <_POSIX_Keys_Free_memory>: #include void _POSIX_Keys_Free_memory( POSIX_Keys_Control *the_key ) { 464fc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46500: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED #include #include #include #include void _POSIX_Keys_Free_memory( 46504: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46508: 7403 moveq #3,%d2 <== NOT EXECUTED 4650a: 45ea 0018 lea %a2@(24),%a2 <== NOT EXECUTED { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) _Workspace_Free( the_key->Values[ the_api ] ); 4650e: 47f9 0004 ac96 lea 4ac96 <_Workspace_Free>,%a3 <== NOT EXECUTED ) { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 46514: 201a movel %a2@+,%d0 <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 46516: 5382 subql #1,%d2 <== NOT EXECUTED ) { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 46518: 4a80 tstl %d0 <== NOT EXECUTED 4651a: 6706 beqs 46522 <_POSIX_Keys_Free_memory+0x26> <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 4651c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4651e: 4e93 jsr %a3@ <== NOT EXECUTED 46520: 588f addql #4,%sp <== NOT EXECUTED POSIX_Keys_Control *the_key ) { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) 46522: 4a82 tstl %d2 <== NOT EXECUTED 46524: 66ee bnes 46514 <_POSIX_Keys_Free_memory+0x18> <== NOT EXECUTED if ( the_key->Values[ the_api ] ) _Workspace_Free( the_key->Values[ the_api ] ); } 46526: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4652c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004dfa8 <_POSIX_Keys_Run_destructors>: 4dfa8: 7218 moveq #24,%d1 */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) { 4dfaa: 4e56 ffec linkw %fp,#-20 4dfae: 206e 0008 moveal %fp@(8),%a0 4dfb2: 48d7 007c moveml %d2-%d6,%sp@ Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id ); 4dfb6: 2628 0008 movel %a0@(8),%d3 4dfba: 2003 movel %d3,%d0 4dfbc: e2a8 lsrl %d1,%d0 4dfbe: 123c 0007 moveb #7,%d1 4dfc2: c081 andl %d1,%d0 for ( index = 1 ; index <= max ; ++index ) { POSIX_Keys_Control *key = (POSIX_Keys_Control *) _POSIX_Keys_Information.local_table [ index ]; if ( key != NULL && key->destructor != NULL ) { void *value = key->Values [ thread_api ][ thread_index ]; 4dfc4: 0283 0000 ffff andil #65535,%d3 4dfca: 2c00 movel %d0,%d6 4dfcc: 5a86 addql #5,%d6 * * Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99. */ while ( !done ) { Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; 4dfce: 3039 0005 fff6 movew 5fff6 <_POSIX_Keys_Information+0xe>,%d0 for ( index = 1 ; index <= max ; ++index ) { POSIX_Keys_Control *key = (POSIX_Keys_Control *) _POSIX_Keys_Information.local_table [ index ]; if ( key != NULL && key->destructor != NULL ) { void *value = key->Values [ thread_api ][ thread_index ]; 4dfd4: e58b lsll #2,%d3 Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4dfd6: 4a40 tstw %d0 4dfd8: 660a bnes 4dfe4 <_POSIX_Keys_Run_destructors+0x3c><== NEVER TAKEN done = false; } } } } } 4dfda: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 4dfe0: 4e5e unlk %fp 4dfe2: 4e75 rts 4dfe4: 4285 clrl %d5 <== NOT EXECUTED 4dfe6: 7201 moveq #1,%d1 <== NOT EXECUTED Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4dfe8: 7401 moveq #1,%d2 <== NOT EXECUTED 4dfea: 7801 moveq #1,%d4 <== NOT EXECUTED 4dfec: 3a00 movew %d0,%d5 <== NOT EXECUTED POSIX_Keys_Control *key = (POSIX_Keys_Control *) 4dfee: 2079 0006 0000 moveal 60000 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4dff4: 5282 addql #1,%d2 <== NOT EXECUTED POSIX_Keys_Control *key = (POSIX_Keys_Control *) 4dff6: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED _POSIX_Keys_Information.local_table [ index ]; if ( key != NULL && key->destructor != NULL ) { 4dffa: 4a88 tstl %a0 <== NOT EXECUTED 4dffc: 671c beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED 4dffe: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4e002: 4a89 tstl %a1 <== NOT EXECUTED 4e004: 6714 beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED void *value = key->Values [ thread_api ][ thread_index ]; 4e006: 2070 6c00 moveal %a0@(00000000,%d6:l:4),%a0 <== NOT EXECUTED 4e00a: d1c3 addal %d3,%a0 <== NOT EXECUTED 4e00c: 2210 movel %a0@,%d1 <== NOT EXECUTED if ( value != NULL ) { 4e00e: 670a beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED key->Values [ thread_api ][ thread_index ] = NULL; 4e010: 4290 clrl %a0@ <== NOT EXECUTED (*key->destructor)( value ); done = false; 4e012: 4204 clrb %d4 <== NOT EXECUTED if ( key != NULL && key->destructor != NULL ) { void *value = key->Values [ thread_api ][ thread_index ]; if ( value != NULL ) { key->Values [ thread_api ][ thread_index ] = NULL; (*key->destructor)( value ); 4e014: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4e016: 4e91 jsr %a1@ <== NOT EXECUTED 4e018: 588f addql #4,%sp <== NOT EXECUTED Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4e01a: 4281 clrl %d1 <== NOT EXECUTED 4e01c: 3202 movew %d2,%d1 <== NOT EXECUTED 4e01e: b285 cmpl %d5,%d1 <== NOT EXECUTED 4e020: 63cc blss 4dfee <_POSIX_Keys_Run_destructors+0x46><== NOT EXECUTED * number of iterations. An infinite loop may happen if destructors set * thread specific data. This can be considered dubious. * * Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99. */ while ( !done ) { 4e022: 4a04 tstb %d4 <== NOT EXECUTED 4e024: 66b4 bnes 4dfda <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; 4e026: 3039 0005 fff6 movew 5fff6 <_POSIX_Keys_Information+0xe>,%d0<== NOT EXECUTED done = true; for ( index = 1 ; index <= max ; ++index ) { 4e02c: 67ac beqs 4dfda <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED 4e02e: 60b4 bras 4dfe4 <_POSIX_Keys_Run_destructors+0x3c><== NOT EXECUTED =============================================================================== 00053164 <_POSIX_Message_queue_Create_support>: const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 53164: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 53168: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED CORE_message_queue_Attributes *the_mq_attr; struct mq_attr attr; char *name; size_t n; n = strnlen( name_arg, NAME_MAX ); 5316c: 4878 00ff pea ff <== NOT EXECUTED const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 53170: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 53174: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED CORE_message_queue_Attributes *the_mq_attr; struct mq_attr attr; char *name; size_t n; n = strnlen( name_arg, NAME_MAX ); 53178: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5317a: 4eb9 0005 8684 jsr 58684 <== NOT EXECUTED 53180: 2800 movel %d0,%d4 <== NOT EXECUTED 53182: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 53188: 5280 addql #1,%d0 <== NOT EXECUTED 5318a: 23c0 0006 9a24 movel %d0,69a24 <_Thread_Dispatch_disable_level><== NOT EXECUTED * There is no real basis for the default values. They will work * but were not compared against any existing implementation for * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { 53190: 508f addql #8,%sp <== NOT EXECUTED 53192: 4a8a tstl %a2 <== NOT EXECUTED 53194: 6700 00a4 beqw 5323a <_POSIX_Message_queue_Create_support+0xd6><== NOT EXECUTED attr.mq_maxmsg = 10; attr.mq_msgsize = 16; } else { if ( attr_ptr->mq_maxmsg <= 0 ){ 53198: 2a2a 0004 movel %a2@(4),%d5 <== NOT EXECUTED 5319c: 6f00 00a4 blew 53242 <_POSIX_Message_queue_Create_support+0xde><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } if ( attr_ptr->mq_msgsize <= 0 ){ 531a0: 2c2a 0008 movel %a2@(8),%d6 <== NOT EXECUTED 531a4: 6f00 009c blew 53242 <_POSIX_Message_queue_Create_support+0xde><== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void ) { return (POSIX_Message_queue_Control *) _Objects_Allocate( &_POSIX_Message_queue_Information ); 531a8: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 531ae: 4eb9 0004 f1a4 jsr 4f1a4 <_Objects_Allocate> <== NOT EXECUTED attr = *attr_ptr; } the_mq = _POSIX_Message_queue_Allocate(); if ( !the_mq ) { 531b4: 588f addql #4,%sp <== NOT EXECUTED 531b6: 2440 moveal %d0,%a2 <== NOT EXECUTED 531b8: 4a80 tstl %d0 <== NOT EXECUTED 531ba: 6700 010a beqw 532c6 <_POSIX_Message_queue_Create_support+0x162><== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq->process_shared = pshared; the_mq->named = true; the_mq->open_count = 1; 531be: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 531c0: 5284 addql #1,%d4 <== NOT EXECUTED if ( !the_mq ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq->process_shared = pshared; 531c2: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED the_mq->named = true; 531c8: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_mq->open_count = 1; 531cc: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED the_mq->linked = true; 531d0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 531d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 531d6: 4eb9 0005 1536 jsr 51536 <_Workspace_Allocate> <== NOT EXECUTED if (!name) { 531dc: 588f addql #4,%sp <== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 531de: 2400 movel %d0,%d2 <== NOT EXECUTED if (!name) { 531e0: 6700 00b6 beqw 53298 <_POSIX_Message_queue_Create_support+0x134><== NOT EXECUTED _POSIX_Message_queue_Free( the_mq ); _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOMEM ); } strncpy( name, name_arg, n+1 ); 531e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 531e6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 531e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 531ea: 4eb9 0005 8600 jsr 58600 <== NOT EXECUTED * * Joel: Cite POSIX or OpenGroup on above statement so we can determine * if it is a real requirement. */ the_mq_attr = &the_mq->Message_queue.Attributes; the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; 531f0: 42aa 005a clrl %a2@(90) <== NOT EXECUTED if ( !_CORE_message_queue_Initialize( 531f4: 2f06 movel %d6,%sp@- <== NOT EXECUTED 531f6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 531f8: 486a 005a pea %a2@(90) <== NOT EXECUTED 531fc: 486a 001a pea %a2@(26) <== NOT EXECUTED 53200: 4eb9 0005 4170 jsr 54170 <_CORE_message_queue_Initialize> <== NOT EXECUTED 53206: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5320a: 4a00 tstb %d0 <== NOT EXECUTED 5320c: 6752 beqs 53260 <_POSIX_Message_queue_Create_support+0xfc><== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 5320e: 4280 clrl %d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 53210: 2079 0006 9ce6 moveal 69ce6 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 53216: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 5321a: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_POSIX_Message_queue_Information, &the_mq->Object, name ); *message_queue = the_mq; 5321e: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 53222: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 53226: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 53228: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 5322e: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED ); *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; 53234: 4280 clrl %d0 <== NOT EXECUTED } 53236: 4e5e unlk %fp <== NOT EXECUTED 53238: 4e75 rts <== NOT EXECUTED * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { attr.mq_maxmsg = 10; attr.mq_msgsize = 16; 5323a: 7c10 moveq #16,%d6 <== NOT EXECUTED * but were not compared against any existing implementation for * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { attr.mq_maxmsg = 10; 5323c: 7a0a moveq #10,%d5 <== NOT EXECUTED 5323e: 6000 ff68 braw 531a8 <_POSIX_Message_queue_Create_support+0x44><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } if ( attr_ptr->mq_msgsize <= 0 ){ _Thread_Enable_dispatch(); 53242: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 53248: 7816 moveq #22,%d4 <== NOT EXECUTED 5324a: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 53250: 2040 moveal %d0,%a0 <== NOT EXECUTED 53252: 70ff moveq #-1,%d0 <== NOT EXECUTED 53254: 2084 movel %d4,%a0@ <== NOT EXECUTED *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; } 53256: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 5325c: 4e5e unlk %fp <== NOT EXECUTED 5325e: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free ( POSIX_Message_queue_Control *the_mq ) { _Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object ); 53260: 2f0a movel %a2,%sp@- <== NOT EXECUTED 53262: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 53268: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED attr.mq_maxmsg, attr.mq_msgsize ) ) { _POSIX_Message_queue_Free( the_mq ); _Workspace_Free(name); 5326e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 53270: 4eb9 0005 1552 jsr 51552 <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 53276: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 5327c: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 53282: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 53286: 721c moveq #28,%d1 <== NOT EXECUTED 53288: 2040 moveal %d0,%a0 <== NOT EXECUTED 5328a: 70ff moveq #-1,%d0 <== NOT EXECUTED *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; } 5328c: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED ) ) { _POSIX_Message_queue_Free( the_mq ); _Workspace_Free(name); _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOSPC ); 53292: 2081 movel %d1,%a0@ <== NOT EXECUTED *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; } 53294: 4e5e unlk %fp <== NOT EXECUTED 53296: 4e75 rts <== NOT EXECUTED 53298: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5329a: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED */ name = _Workspace_Allocate(n+1); if (!name) { _POSIX_Message_queue_Free( the_mq ); _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOMEM ); 532a0: 740c moveq #12,%d2 <== NOT EXECUTED 532a2: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED * dynamically constructed. */ name = _Workspace_Allocate(n+1); if (!name) { _POSIX_Message_queue_Free( the_mq ); _Thread_Enable_dispatch(); 532a8: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 532ae: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 532b4: 508f addql #8,%sp <== NOT EXECUTED 532b6: 2040 moveal %d0,%a0 <== NOT EXECUTED 532b8: 70ff moveq #-1,%d0 <== NOT EXECUTED 532ba: 2082 movel %d2,%a0@ <== NOT EXECUTED *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; } 532bc: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 532c2: 4e5e unlk %fp <== NOT EXECUTED 532c4: 4e75 rts <== NOT EXECUTED attr = *attr_ptr; } the_mq = _POSIX_Message_queue_Allocate(); if ( !the_mq ) { _Thread_Enable_dispatch(); 532c6: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 532cc: 7617 moveq #23,%d3 <== NOT EXECUTED 532ce: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 532d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 532d6: 70ff moveq #-1,%d0 <== NOT EXECUTED 532d8: 2083 movel %d3,%a0@ <== NOT EXECUTED *message_queue = the_mq; _Thread_Enable_dispatch(); return 0; } 532da: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 532e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004bde8 <_POSIX_Message_queue_Delete>: */ void _POSIX_Message_queue_Delete( POSIX_Message_queue_Control *the_mq ) { 4bde8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bdec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bdee: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_mq->linked && !the_mq->open_count ) { 4bdf2: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4bdf6: 6606 bnes 4bdfe <_POSIX_Message_queue_Delete+0x16><== NOT EXECUTED 4bdf8: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4bdfc: 6708 beqs 4be06 <_POSIX_Message_queue_Delete+0x1e><== NOT EXECUTED ); _POSIX_Message_queue_Free( the_mq ); } } 4bdfe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4be02: 4e5e unlk %fp <== NOT EXECUTED 4be04: 4e75 rts <== NOT EXECUTED ); _Workspace_Free( (void *)the_object->name.name_p ); } #endif _Objects_Close( &_POSIX_Message_queue_Information, the_object ); 4be06: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be08: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 4be0e: 4eb9 0004 f234 jsr 4f234 <_Objects_Close> <== NOT EXECUTED _CORE_message_queue_Close( 4be14: 4878 0005 pea 5 <== NOT EXECUTED 4be18: 42a7 clrl %sp@- <== NOT EXECUTED 4be1a: 486a 001a pea %a2@(26) <== NOT EXECUTED 4be1e: 4eb9 0004 e4f4 jsr 4e4f4 <_CORE_message_queue_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free ( POSIX_Message_queue_Control *the_mq ) { _Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object ); 4be24: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be26: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 4be2c: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED ); _POSIX_Message_queue_Free( the_mq ); } } 4be32: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4be36: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4be3a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000532e4 <_POSIX_Message_queue_Name_to_id>: */ int _POSIX_Message_queue_Name_to_id( const char *name, Objects_Id *id ) { 532e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 532e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 532ea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Id the_id; if ( !name ) 532ee: 4a8a tstl %a2 <== NOT EXECUTED 532f0: 6704 beqs 532f6 <_POSIX_Message_queue_Name_to_id+0x12><== NOT EXECUTED return EINVAL; if ( !name[0] ) 532f2: 4a12 tstb %a2@ <== NOT EXECUTED 532f4: 660a bnes 53300 <_POSIX_Message_queue_Name_to_id+0x1c><== NOT EXECUTED return EINVAL; 532f6: 7016 moveq #22,%d0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; } 532f8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 532fc: 4e5e unlk %fp <== NOT EXECUTED 532fe: 4e75 rts <== NOT EXECUTED return EINVAL; if ( !name[0] ) return EINVAL; if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) 53300: 4878 00ff pea ff <== NOT EXECUTED 53304: 2f0a movel %a2,%sp@- <== NOT EXECUTED 53306: 4eb9 0005 8684 jsr 58684 <== NOT EXECUTED 5330c: 508f addql #8,%sp <== NOT EXECUTED 5330e: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 53314: 630a blss 53320 <_POSIX_Message_queue_Name_to_id+0x3c><== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; } 53316: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED if ( !name[0] ) return EINVAL; if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) return ENAMETOOLONG; 5331a: 705b moveq #91,%d0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; } 5331c: 4e5e unlk %fp <== NOT EXECUTED 5331e: 4e75 rts <== NOT EXECUTED return EINVAL; if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) return ENAMETOOLONG; status = _Objects_Name_to_id_string( 53320: 486e fffc pea %fp@(-4) <== NOT EXECUTED 53324: 2f0a movel %a2,%sp@- <== NOT EXECUTED 53326: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 5332c: 4eb9 0005 47e8 jsr 547e8 <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Message_queue_Information, name, &the_id ); *id = the_id; 53332: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 53336: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED status = _Objects_Name_to_id_string( &_POSIX_Message_queue_Information, name, &the_id ); *id = the_id; 5333a: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 5333e: 4a80 tstl %d0 <== NOT EXECUTED 53340: 67b6 beqs 532f8 <_POSIX_Message_queue_Name_to_id+0x14><== NOT EXECUTED return 0; return ENOENT; } 53342: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED *id = the_id; if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; 53346: 7002 moveq #2,%d0 <== NOT EXECUTED } 53348: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004bec4 <_POSIX_Message_queue_Notify_handler>: */ void _POSIX_Message_queue_Notify_handler( void *user_data ) { 4bec4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bec8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4beca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4bece: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; the_mq = user_data; kill( getpid(), the_mq->notification.sigev_signo ); 4bed0: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED 4bed4: 4eb9 0005 29f8 jsr 529f8 <== NOT EXECUTED 4beda: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bedc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bede: 4eb9 0005 314c jsr 5314c <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } 4bee4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; the_message_queue->notify_argument = the_argument; 4bee8: 508f addql #8,%sp <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 4beea: 42aa 007a clrl %a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4beee: 42aa 007e clrl %a2@(126) <== NOT EXECUTED 4bef2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4bef6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c1a0 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) { 4c1a0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4c1a4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 4c1a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c1ac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4c1b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c1b2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c1b8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED 4c1bc: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED Objects_Locations location; size_t length_out; bool do_wait; the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4c1c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c1c6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c1ca: 671a beqs 4c1e6 <_POSIX_Message_queue_Receive_support+0x46><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c1cc: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c1d2: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c1d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c1d6: 7009 moveq #9,%d0 <== NOT EXECUTED } 4c1d8: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c1de: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4c1e0: 2001 movel %d1,%d0 <== NOT EXECUTED 4c1e2: 4e5e unlk %fp <== NOT EXECUTED 4c1e4: 4e75 rts <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { 4c1e6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c1e8: 7803 moveq #3,%d4 <== NOT EXECUTED 4c1ea: 7a01 moveq #1,%d5 <== NOT EXECUTED 4c1ec: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 4c1f0: c881 andl %d1,%d4 <== NOT EXECUTED 4c1f2: ba84 cmpl %d4,%d5 <== NOT EXECUTED 4c1f4: 6700 00f0 beqw 4c2e6 <_POSIX_Message_queue_Receive_support+0x146><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); } the_mq = the_mq_fd->Queue; 4c1f8: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( msg_len < the_mq->Message_queue.maximum_message_size ) { 4c1fa: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); } the_mq = the_mq_fd->Queue; 4c1fe: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED if ( msg_len < the_mq->Message_queue.maximum_message_size ) { 4c202: b0a8 0066 cmpl %a0@(102),%d0 <== NOT EXECUTED 4c206: 6500 0094 bcsw 4c29c <_POSIX_Message_queue_Receive_support+0xfc><== NOT EXECUTED /* * Now if something goes wrong, we return a "length" of -1 * to indicate an error. */ length_out = -1; 4c20a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c20c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c210: 4a03 tstb %d3 <== NOT EXECUTED 4c212: 6756 beqs 4c26a <_POSIX_Message_queue_Receive_support+0xca><== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 4c214: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED length_out = -1; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c218: 0801 000e btst #14,%d1 <== NOT EXECUTED 4c21c: 57c0 seq %d0 <== NOT EXECUTED 4c21e: 49c0 extbl %d0 <== NOT EXECUTED 4c220: 4480 negl %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 4c222: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c224: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c228: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c22c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c22e: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c232: 4eb9 0004 e5a4 jsr 4e5a4 <_CORE_message_queue_Seize> <== NOT EXECUTED &length_out, do_wait, timeout ); _Thread_Enable_dispatch(); 4c238: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED *msg_prio = _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); 4c23e: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core( CORE_message_queue_Submit_types priority ) { /* absolute value without a library dependency */ return ((priority >= 0) ? priority : -priority); 4c244: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 4c248: 6d4e blts 4c298 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED do_wait, timeout ); _Thread_Enable_dispatch(); *msg_prio = 4c24a: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) 4c24e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED do_wait, timeout ); _Thread_Enable_dispatch(); *msg_prio = 4c252: 2280 movel %d0,%a1@ <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) 4c254: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4c258: 6662 bnes 4c2bc <_POSIX_Message_queue_Receive_support+0x11c><== NOT EXECUTED return length_out; 4c25a: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c25e: 2001 movel %d1,%d0 <== NOT EXECUTED 4c260: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c266: 4e5e unlk %fp <== NOT EXECUTED 4c268: 4e75 rts <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 4c26a: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED length_out = -1; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c26e: 4280 clrl %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 4c270: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c272: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c276: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c27a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c27c: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c280: 4eb9 0004 e5a4 jsr 4e5a4 <_CORE_message_queue_Seize> <== NOT EXECUTED &length_out, do_wait, timeout ); _Thread_Enable_dispatch(); 4c286: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED *msg_prio = _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); 4c28c: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c292: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 4c296: 6cb2 bges 4c24a <_POSIX_Message_queue_Receive_support+0xaa><== NOT EXECUTED 4c298: 4480 negl %d0 <== NOT EXECUTED 4c29a: 60ae bras 4c24a <_POSIX_Message_queue_Receive_support+0xaa><== NOT EXECUTED } the_mq = the_mq_fd->Queue; if ( msg_len < the_mq->Message_queue.maximum_message_size ) { _Thread_Enable_dispatch(); 4c29c: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMSGSIZE ); 4c2a2: 747a moveq #122,%d2 <== NOT EXECUTED 4c2a4: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c2aa: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c2ac: 2040 moveal %d0,%a0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c2ae: 2001 movel %d1,%d0 <== NOT EXECUTED the_mq = the_mq_fd->Queue; if ( msg_len < the_mq->Message_queue.maximum_message_size ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EMSGSIZE ); 4c2b0: 2082 movel %d2,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c2b2: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c2b8: 4e5e unlk %fp <== NOT EXECUTED 4c2ba: 4e75 rts <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) return length_out; rtems_set_errno_and_return_minus_one( 4c2bc: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c2c2: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c2c8: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c2ca: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4c2ce: 4eb9 0004 c59c jsr 4c59c <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4c2d4: 588f addql #4,%sp <== NOT EXECUTED 4c2d6: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c2d8: 2480 movel %d0,%a2@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c2da: 2001 movel %d1,%d0 <== NOT EXECUTED 4c2dc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c2e2: 4e5e unlk %fp <== NOT EXECUTED 4c2e4: 4e75 rts <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { _Thread_Enable_dispatch(); 4c2e6: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); 4c2ec: 7609 moveq #9,%d3 <== NOT EXECUTED 4c2ee: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c2f4: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c2f6: 2040 moveal %d0,%a0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c2f8: 2001 movel %d1,%d0 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); 4c2fa: 2083 movel %d3,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c2fc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c302: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c32c <_POSIX_Message_queue_Send_support>: /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) 4c32c: 7020 moveq #32,%d0 <== NOT EXECUTED size_t msg_len, uint32_t msg_prio, bool wait, Watchdog_Interval timeout ) { 4c32e: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4c332: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 4c336: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4c33a: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 4c33e: 182e 001b moveb %fp@(27),%d4 <== NOT EXECUTED /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) 4c342: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c344: 6500 00e2 bcsw 4c428 <_POSIX_Message_queue_Send_support+0xfc><== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 4c348: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c34c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c34e: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c354: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4c35a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c35e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c362: 6600 00aa bnew 4c40e <_POSIX_Message_queue_Send_support+0xe2><== NOT EXECUTED case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) { 4c366: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c368: 7a03 moveq #3,%d5 <== NOT EXECUTED 4c36a: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED 4c36e: ca81 andl %d1,%d5 <== NOT EXECUTED 4c370: 6700 00d0 beqw 4c442 <_POSIX_Message_queue_Send_support+0x116><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); } the_mq = the_mq_fd->Queue; 4c374: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c376: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c37a: 4a04 tstb %d4 <== NOT EXECUTED 4c37c: 6750 beqs 4c3ce <_POSIX_Message_queue_Send_support+0xa2><== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c37e: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 4c382: 4482 negl %d2 <== NOT EXECUTED the_mq = the_mq_fd->Queue; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c384: 0801 000e btst #14,%d1 <== NOT EXECUTED 4c388: 57c0 seq %d0 <== NOT EXECUTED 4c38a: 49c0 extbl %d0 <== NOT EXECUTED 4c38c: 4480 negl %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c38e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c390: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c392: 42a7 clrl %sp@- <== NOT EXECUTED 4c394: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c396: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c39a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c39e: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c3a2: 4eb9 0004 e6dc jsr 4e6dc <_CORE_message_queue_Submit> <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 4c3a8: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c3ac: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 4c3ae: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED * after it wakes up. The returned status is correct for * non-blocking operations but if we blocked, then we need * to look at the status in our TCB. */ if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) 4c3b4: 7007 moveq #7,%d0 <== NOT EXECUTED 4c3b6: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c3b8: 6748 beqs 4c402 <_POSIX_Message_queue_Send_support+0xd6><== NOT EXECUTED msg_status = _Thread_Executing->Wait.return_code; if ( !msg_status ) 4c3ba: 4a82 tstl %d2 <== NOT EXECUTED 4c3bc: 6600 00a4 bnew 4c462 <_POSIX_Message_queue_Send_support+0x136><== NOT EXECUTED return msg_status; 4c3c0: 4281 clrl %d1 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c3c2: 2001 movel %d1,%d0 <== NOT EXECUTED 4c3c4: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c3ca: 4e5e unlk %fp <== NOT EXECUTED 4c3cc: 4e75 rts <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c3ce: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED the_mq = the_mq_fd->Queue; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 4c3d2: 4280 clrl %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c3d4: 4482 negl %d2 <== NOT EXECUTED 4c3d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c3d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c3da: 42a7 clrl %sp@- <== NOT EXECUTED 4c3dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c3de: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c3e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c3e6: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c3ea: 4eb9 0004 e6dc jsr 4e6dc <_CORE_message_queue_Submit> <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 4c3f0: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 4c3f4: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 4c3f6: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED * after it wakes up. The returned status is correct for * non-blocking operations but if we blocked, then we need * to look at the status in our TCB. */ if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) 4c3fc: 7007 moveq #7,%d0 <== NOT EXECUTED 4c3fe: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c400: 66b8 bnes 4c3ba <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED msg_status = _Thread_Executing->Wait.return_code; 4c402: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c408: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED 4c40c: 60ac bras 4c3ba <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c40e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c414: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c416: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c418: 7009 moveq #9,%d0 <== NOT EXECUTED } 4c41a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c420: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4c422: 2001 movel %d1,%d0 <== NOT EXECUTED 4c424: 4e5e unlk %fp <== NOT EXECUTED 4c426: 4e75 rts <== NOT EXECUTED * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c428: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c42e: 7616 moveq #22,%d3 <== NOT EXECUTED 4c430: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c432: 2040 moveal %d0,%a0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c434: 2001 movel %d1,%d0 <== NOT EXECUTED * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c436: 2083 movel %d3,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c438: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c43e: 4e5e unlk %fp <== NOT EXECUTED 4c440: 4e75 rts <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) { _Thread_Enable_dispatch(); 4c442: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); 4c448: 7409 moveq #9,%d2 <== NOT EXECUTED 4c44a: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c450: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c452: 2040 moveal %d0,%a0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c454: 2001 movel %d1,%d0 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); 4c456: 2082 movel %d2,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c458: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c45e: 4e5e unlk %fp <== NOT EXECUTED 4c460: 4e75 rts <== NOT EXECUTED msg_status = _Thread_Executing->Wait.return_code; if ( !msg_status ) return msg_status; rtems_set_errno_and_return_minus_one( 4c462: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c468: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c46a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c46c: 4eb9 0004 c59c jsr 4c59c <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4c472: 588f addql #4,%sp <== NOT EXECUTED 4c474: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c476: 2480 movel %d0,%a2@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c478: 2001 movel %d1,%d0 <== NOT EXECUTED 4c47a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c480: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c59c <_POSIX_Message_queue_Translate_core_message_queue_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Message_queue_Return_codes[the_message_queue_status]; 4c59c: 41f9 0006 6be8 lea 66be8 <_POSIX_Message_queue_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Message_queue_Translate_core_message_queue_return_code( uint32_t the_message_queue_status ) { 4c5a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Message_queue_Return_codes[the_message_queue_status]; } 4c5a6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c5aa: 4e5e unlk %fp <== NOT EXECUTED 4c5ac: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 000482c0 <_POSIX_Mutex_Get>: POSIX_Mutex_Control *_POSIX_Mutex_Get ( pthread_mutex_t *mutex, Objects_Locations *location ) { 482c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 482c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 482c6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 482ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 482cc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ___POSIX_Mutex_Get_support_error_check( mutex, location ); 482d0: 4a8a tstl %a2 <== NOT EXECUTED 482d2: 6750 beqs 48324 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 482d4: 2012 movel %a2@,%d0 <== NOT EXECUTED 482d6: 72ff moveq #-1,%d1 <== NOT EXECUTED 482d8: b280 cmpl %d0,%d1 <== NOT EXECUTED 482da: 6720 beqs 482fc <_POSIX_Mutex_Get+0x3c> <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); 482dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 482de: 2f00 movel %d0,%sp@- <== NOT EXECUTED 482e0: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 482e6: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); return (POSIX_Mutex_Control *) 482ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); } 482f0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 482f4: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 482f8: 4e5e unlk %fp <== NOT EXECUTED 482fa: 4e75 rts <== NOT EXECUTED Objects_Locations *location ) { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 482fc: 42a7 clrl %sp@- <== NOT EXECUTED 482fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48300: 4eb9 0004 8404 jsr 48404 <== NOT EXECUTED 48306: 508f addql #8,%sp <== NOT EXECUTED 48308: 4a80 tstl %d0 <== NOT EXECUTED 4830a: 6618 bnes 48324 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED 4830c: 2012 movel %a2@,%d0 <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); 4830e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48310: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48312: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 48318: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); return (POSIX_Mutex_Control *) 4831e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48322: 60cc bras 482f0 <_POSIX_Mutex_Get+0x30> <== NOT EXECUTED Objects_Locations *location ) { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 48324: 7001 moveq #1,%d0 <== NOT EXECUTED 48326: 2680 movel %d0,%a3@ <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); } 48328: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED Objects_Locations *location ) { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 4832c: 4280 clrl %d0 <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); } 4832e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 48332: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048336 <_POSIX_Mutex_Get_interrupt_disable>: POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( pthread_mutex_t *mutex, Objects_Locations *location, ISR_Level *level ) { 48336: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4833a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4833c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 48340: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48342: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ___POSIX_Mutex_Get_support_error_check( mutex, location ); 48346: 4a8a tstl %a2 <== NOT EXECUTED 48348: 6758 beqs 483a2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 4834a: 2012 movel %a2@,%d0 <== NOT EXECUTED 4834c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4834e: b280 cmpl %d0,%d1 <== NOT EXECUTED 48350: 6724 beqs 48376 <_POSIX_Mutex_Get_interrupt_disable+0x40><== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get_isr_disable( 48352: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48356: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48358: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4835a: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 48360: 4eb9 0004 b1d4 jsr 4b1d4 <_Objects_Get_isr_disable> <== NOT EXECUTED 48366: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED &_POSIX_Mutex_Information, (Objects_Id) *mutex, location, level ); } 4836a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4836e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 48372: 4e5e unlk %fp <== NOT EXECUTED 48374: 4e75 rts <== NOT EXECUTED ISR_Level *level ) { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 48376: 42a7 clrl %sp@- <== NOT EXECUTED 48378: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4837a: 4eb9 0004 8404 jsr 48404 <== NOT EXECUTED 48380: 508f addql #8,%sp <== NOT EXECUTED 48382: 4a80 tstl %d0 <== NOT EXECUTED 48384: 661c bnes 483a2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED 48386: 2012 movel %a2@,%d0 <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get_isr_disable( 48388: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4838c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4838e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48390: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 48396: 4eb9 0004 b1d4 jsr 4b1d4 <_Objects_Get_isr_disable> <== NOT EXECUTED 4839c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 483a0: 60c8 bras 4836a <_POSIX_Mutex_Get_interrupt_disable+0x34><== NOT EXECUTED ISR_Level *level ) { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 483a2: 7201 moveq #1,%d1 <== NOT EXECUTED 483a4: 4280 clrl %d0 <== NOT EXECUTED 483a6: 2681 movel %d1,%a3@ <== NOT EXECUTED &_POSIX_Mutex_Information, (Objects_Id) *mutex, location, level ); } 483a8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 483ac: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 483b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004855c <_POSIX_Mutex_Lock_support>: int _POSIX_Mutex_Lock_support( pthread_mutex_t *mutex, bool blocking, Watchdog_Interval timeout ) { 4855c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 48560: 2f02 movel %d2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; ISR_Level level; the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level ); 48562: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48566: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4856a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED int _POSIX_Mutex_Lock_support( pthread_mutex_t *mutex, bool blocking, Watchdog_Interval timeout ) { 4856e: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; ISR_Level level; the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level ); 48572: 4eb9 0004 8336 jsr 48336 <_POSIX_Mutex_Get_interrupt_disable><== NOT EXECUTED switch ( location ) { 48578: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4857c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48580: 663c bnes 485be <_POSIX_Mutex_Lock_support+0x62> <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_mutex_Seize( 48582: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 48586: 2040 moveal %d0,%a0 <== NOT EXECUTED 48588: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4858c: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 48592: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48594: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48598: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4859c: 4eb9 0004 a504 jsr 4a504 <_CORE_mutex_Seize> <== NOT EXECUTED blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( (CORE_mutex_Status) _Thread_Executing->Wait.return_code 485a2: 2079 0006 5452 moveal 65452 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED the_mutex->Object.id, blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( 485a8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 485ac: 4eb9 0004 86f0 jsr 486f0 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 485b2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED the_mutex->Object.id, blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( 485b6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 485ba: 4e5e unlk %fp <== NOT EXECUTED 485bc: 4e75 rts <== NOT EXECUTED 485be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 485c2: 7016 moveq #22,%d0 <== NOT EXECUTED } 485c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000486f0 <_POSIX_Mutex_Translate_core_mutex_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_mutex_status > CORE_MUTEX_STATUS_LAST ) return EINVAL; #endif return _POSIX_Mutex_Return_codes[the_mutex_status]; 486f0: 41f9 0006 2678 lea 62678 <_POSIX_Mutex_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_Mutex_Translate_core_mutex_return_code( CORE_mutex_Status the_mutex_status ) { 486f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_mutex_status > CORE_MUTEX_STATUS_LAST ) return EINVAL; #endif return _POSIX_Mutex_Return_codes[the_mutex_status]; } 486fa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 486fe: 4e5e unlk %fp <== NOT EXECUTED 48700: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004d0c8 <_POSIX_Priority_Is_valid>: #include bool _POSIX_Priority_Is_valid( int priority ) { 4d0c8: 4e56 0000 linkw %fp,#0 4d0cc: 202e 0008 movel %fp@(8),%d0 return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) && 4d0d0: 6f12 bles 4d0e4 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN (priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY)); 4d0d2: 4281 clrl %d1 4d0d4: 1239 0005 f846 moveb 5f846 ,%d1 } 4d0da: 4e5e unlk %fp #endif #include #include bool _POSIX_Priority_Is_valid( 4d0dc: b280 cmpl %d0,%d1 4d0de: 5ec0 sgt %d0 4d0e0: 4480 negl %d0 ) { return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) && (priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY)); } 4d0e2: 4e75 rts 4d0e4: 4e5e unlk %fp <== NOT EXECUTED bool _POSIX_Priority_Is_valid( int priority ) { return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) && 4d0e6: 4200 clrb %d0 <== NOT EXECUTED (priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY)); } ... =============================================================================== 000477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_RWLock_Return_codes[the_rwlock_status]; 477e4: 41f9 0006 05a8 lea 605a8 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_RWLock_Translate_core_RWLock_return_code( CORE_RWLock_Status the_rwlock_status ) { 477ea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_RWLock_Return_codes[the_rwlock_status]; } 477ee: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 477f2: 4e5e unlk %fp <== NOT EXECUTED 477f4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004fafc <_POSIX_Semaphore_Create_support>: const char *name, int pshared, unsigned int value, POSIX_Semaphore_Control **the_sem ) { 4fafc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fb00: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fb02: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb04: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; CORE_semaphore_Attributes *the_sem_attr; char *name_p = (char *)name; /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) 4fb08: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4fb0c: 6600 0112 bnew 4fc20 <_POSIX_Semaphore_Create_support+0x124><== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); if ( name ) { 4fb10: 4a82 tstl %d2 <== NOT EXECUTED 4fb12: 6718 beqs 4fb2c <_POSIX_Semaphore_Create_support+0x30><== NOT EXECUTED if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) 4fb14: 4878 00ff pea ff <== NOT EXECUTED 4fb18: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb1a: 4eb9 0005 413c jsr 5413c <== NOT EXECUTED 4fb20: 508f addql #8,%sp <== NOT EXECUTED 4fb22: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 4fb28: 6200 00dc bhiw 4fc06 <_POSIX_Semaphore_Create_support+0x10a><== NOT EXECUTED 4fb2c: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4fb32: 5280 addql #1,%d0 <== NOT EXECUTED 4fb34: 23c0 0006 4f74 movel %d0,64f74 <_Thread_Dispatch_disable_level><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void ) { return (POSIX_Semaphore_Control *) _Objects_Allocate( &_POSIX_Semaphore_Information ); 4fb3a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fb40: 4eb9 0004 b084 jsr 4b084 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { 4fb46: 588f addql #4,%sp <== NOT EXECUTED 4fb48: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fb4a: 4a80 tstl %d0 <== NOT EXECUTED 4fb4c: 6700 00ec beqw 4fc3a <_POSIX_Semaphore_Create_support+0x13e><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOSPC ); } the_semaphore->process_shared = pshared; 4fb50: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED if ( name ) { 4fb54: 4a82 tstl %d2 <== NOT EXECUTED 4fb56: 675c beqs 4fbb4 <_POSIX_Semaphore_Create_support+0xb8><== NOT EXECUTED the_semaphore->named = true; the_semaphore->open_count = 1; 4fb58: 7001 moveq #1,%d0 <== NOT EXECUTED 4fb5a: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED } the_semaphore->process_shared = pshared; if ( name ) { the_semaphore->named = true; 4fb5e: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_semaphore->open_count = 1; the_semaphore->linked = true; 4fb62: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; /* * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; 4fb66: 70ff moveq #-1,%d0 <== NOT EXECUTED * blocking tasks on this semaphore should be. It could somehow * be derived from the current scheduling policy. One * thing is certain, no matter what we decide, it won't be * the same as all other POSIX implementations. :) */ the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; 4fb68: 42aa 005e clrl %a2@(94) <== NOT EXECUTED /* * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; 4fb6c: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value ); 4fb70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fb74: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fb78: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fb7c: 4eb9 0004 aa68 jsr 4aa68 <_CORE_semaphore_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fb82: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4fb88: 4280 clrl %d0 <== NOT EXECUTED 4fb8a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fb8e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_POSIX_Semaphore_Information, &the_semaphore->Object, name_p ); *the_sem = the_semaphore; 4fb92: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4fb96: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fb9a: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4fb9c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4fba2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fba6: 4280 clrl %d0 <== NOT EXECUTED } 4fba8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fbac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fbb0: 4e5e unlk %fp <== NOT EXECUTED 4fbb2: 4e75 rts <== NOT EXECUTED the_semaphore->named = true; the_semaphore->open_count = 1; the_semaphore->linked = true; } else { the_semaphore->named = false; the_semaphore->open_count = 0; 4fbb4: 42aa 0016 clrl %a2@(22) <== NOT EXECUTED if ( name ) { the_semaphore->named = true; the_semaphore->open_count = 1; the_semaphore->linked = true; } else { the_semaphore->named = false; 4fbb8: 4200 clrb %d0 <== NOT EXECUTED * blocking tasks on this semaphore should be. It could somehow * be derived from the current scheduling policy. One * thing is certain, no matter what we decide, it won't be * the same as all other POSIX implementations. :) */ the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; 4fbba: 42aa 005e clrl %a2@(94) <== NOT EXECUTED if ( name ) { the_semaphore->named = true; the_semaphore->open_count = 1; the_semaphore->linked = true; } else { the_semaphore->named = false; 4fbbe: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_semaphore->open_count = 0; the_semaphore->linked = false; 4fbc2: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; /* * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; 4fbc6: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fbc8: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value ); 4fbcc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fbd0: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fbd4: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fbd8: 4eb9 0004 aa68 jsr 4aa68 <_CORE_semaphore_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fbde: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4fbe4: 4280 clrl %d0 <== NOT EXECUTED 4fbe6: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fbea: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_POSIX_Semaphore_Information, &the_semaphore->Object, name_p ); *the_sem = the_semaphore; 4fbee: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4fbf2: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fbf6: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4fbf8: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4fbfe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fc02: 4280 clrl %d0 <== NOT EXECUTED 4fc04: 60a2 bras 4fba8 <_POSIX_Semaphore_Create_support+0xac><== NOT EXECUTED if (pshared != 0) rtems_set_errno_and_return_minus_one( ENOSYS ); if ( name ) { if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4fc06: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 4fc0c: 745b moveq #91,%d2 <== NOT EXECUTED 4fc0e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc10: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fc12: 2082 movel %d2,%a0@ <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc14: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fc18: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc1c: 4e5e unlk %fp <== NOT EXECUTED 4fc1e: 4e75 rts <== NOT EXECUTED CORE_semaphore_Attributes *the_sem_attr; char *name_p = (char *)name; /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) rtems_set_errno_and_return_minus_one( ENOSYS ); 4fc20: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc26: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED CORE_semaphore_Attributes *the_sem_attr; char *name_p = (char *)name; /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) rtems_set_errno_and_return_minus_one( ENOSYS ); 4fc2a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc2c: 7258 moveq #88,%d1 <== NOT EXECUTED 4fc2e: 70ff moveq #-1,%d0 <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc30: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc34: 4e5e unlk %fp <== NOT EXECUTED CORE_semaphore_Attributes *the_sem_attr; char *name_p = (char *)name; /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) rtems_set_errno_and_return_minus_one( ENOSYS ); 4fc36: 2081 movel %d1,%a0@ <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc38: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { _Thread_Enable_dispatch(); 4fc3a: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4fc40: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc46: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOSPC ); 4fc4a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc4c: 721c moveq #28,%d1 <== NOT EXECUTED 4fc4e: 70ff moveq #-1,%d0 <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } 4fc50: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc54: 4e5e unlk %fp <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOSPC ); 4fc56: 2081 movel %d1,%a0@ <== NOT EXECUTED *the_sem = the_semaphore; _Thread_Enable_dispatch(); return 0; } ... =============================================================================== 0004fc5c <_POSIX_Semaphore_Delete>: */ void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore ) { 4fc5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fc60: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fc62: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_semaphore->linked && !the_semaphore->open_count ) { 4fc66: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4fc6a: 6606 bnes 4fc72 <_POSIX_Semaphore_Delete+0x16> <== NOT EXECUTED 4fc6c: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4fc70: 6708 beqs 4fc7a <_POSIX_Semaphore_Delete+0x1e> <== NOT EXECUTED -1 ); _POSIX_Semaphore_Free( the_semaphore ); } } 4fc72: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc76: 4e5e unlk %fp <== NOT EXECUTED 4fc78: 4e75 rts <== NOT EXECUTED void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore ) { if ( !the_semaphore->linked && !the_semaphore->open_count ) { _Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object ); 4fc7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fc7c: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fc82: 4eb9 0004 b114 jsr 4b114 <_Objects_Close> <== NOT EXECUTED _CORE_semaphore_Flush( 4fc88: 4878 ffff pea ffffffff <== NOT EXECUTED 4fc8c: 42a7 clrl %sp@- <== NOT EXECUTED 4fc8e: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fc92: 4eb9 0004 aa5c jsr 4aa5c <_CORE_semaphore_Flush> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free ( POSIX_Semaphore_Control *the_semaphore ) { _Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object ); 4fc98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fc9a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fca0: 4eb9 0004 b3d8 jsr 4b3d8 <_Objects_Free> <== NOT EXECUTED -1 ); _POSIX_Semaphore_Free( the_semaphore ); } } 4fca6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fcaa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4fcae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004fcb4 <_POSIX_Semaphore_Name_to_id>: int _POSIX_Semaphore_Name_to_id( const char *name, sem_t *id ) { 4fcb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fcb8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Id the_id; if ( !name ) 4fcbc: 4a88 tstl %a0 <== NOT EXECUTED 4fcbe: 6704 beqs 4fcc4 <_POSIX_Semaphore_Name_to_id+0x10><== NOT EXECUTED return EINVAL; if ( !name[0] ) 4fcc0: 4a10 tstb %a0@ <== NOT EXECUTED 4fcc2: 6606 bnes 4fcca <_POSIX_Semaphore_Name_to_id+0x16><== NOT EXECUTED return EINVAL; 4fcc4: 7016 moveq #22,%d0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; } 4fcc6: 4e5e unlk %fp <== NOT EXECUTED 4fcc8: 4e75 rts <== NOT EXECUTED return EINVAL; if ( !name[0] ) return EINVAL; status = _Objects_Name_to_id_string( 4fcca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fcce: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4fcd0: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fcd6: 4eb9 0005 092c jsr 5092c <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Semaphore_Information, name, &the_id ); *id = the_id; 4fcdc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4fce0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED status = _Objects_Name_to_id_string( &_POSIX_Semaphore_Information, name, &the_id ); *id = the_id; 4fce4: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4fce8: 4a80 tstl %d0 <== NOT EXECUTED 4fcea: 67da beqs 4fcc6 <_POSIX_Semaphore_Name_to_id+0x12><== NOT EXECUTED return 0; return ENOENT; 4fcec: 7002 moveq #2,%d0 <== NOT EXECUTED } 4fcee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00052570 <_POSIX_Semaphore_Translate_core_semaphore_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Semaphore_Return_codes[the_semaphore_status]; 52570: 41f9 0006 2a9c lea 62a9c <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Semaphore_Translate_core_semaphore_return_code( CORE_semaphore_Status the_semaphore_status ) { 52576: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Semaphore_Return_codes[the_semaphore_status]; } 5257a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5257e: 4e5e unlk %fp <== NOT EXECUTED 52580: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004fd28 <_POSIX_Semaphore_Wait_support>: int _POSIX_Semaphore_Wait_support( sem_t *sem, bool blocking, Watchdog_Interval timeout ) { 4fd28: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd2c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4fd30: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fd32: 2f02 movel %d2,%sp@- <== NOT EXECUTED sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location ); 4fd34: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fd38: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4fd3a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fd40: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED 4fd44: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 4fd4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fd4e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fd52: 671c beqs 4fd70 <_POSIX_Semaphore_Wait_support+0x48><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4fd54: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED } 4fd5a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4fd5e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fd60: 7016 moveq #22,%d0 <== NOT EXECUTED 4fd62: 72ff moveq #-1,%d1 <== NOT EXECUTED } 4fd64: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fd68: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4fd6a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4fd6c: 2001 movel %d1,%d0 <== NOT EXECUTED 4fd6e: 4e75 rts <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { case OBJECTS_LOCAL: _CORE_semaphore_Seize( 4fd70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fd74: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fd76: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 4fd7c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fd7e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4fd82: 4868 001a pea %a0@(26) <== NOT EXECUTED 4fd86: 4eb9 0005 0448 jsr 50448 <_CORE_semaphore_Seize> <== NOT EXECUTED &the_semaphore->Semaphore, the_semaphore->Object.id, blocking, timeout ); _Thread_Enable_dispatch(); 4fd8c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !_Thread_Executing->Wait.return_code ) 4fd92: 2079 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fd98: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4fd9c: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4fda0: 6610 bnes 4fdb2 <_POSIX_Semaphore_Wait_support+0x8a><== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4fda2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED timeout ); _Thread_Enable_dispatch(); if ( !_Thread_Executing->Wait.return_code ) return 0; 4fda6: 4281 clrl %d1 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4fda8: 2001 movel %d1,%d0 <== NOT EXECUTED 4fdaa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fdae: 4e5e unlk %fp <== NOT EXECUTED 4fdb0: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !_Thread_Executing->Wait.return_code ) return 0; rtems_set_errno_and_return_minus_one( 4fdb2: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 4fdb8: 2079 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fdbe: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fdc0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4fdc4: 4eb9 0005 2570 jsr 52570 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4fdca: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !_Thread_Executing->Wait.return_code ) return 0; rtems_set_errno_and_return_minus_one( 4fdce: 588f addql #4,%sp <== NOT EXECUTED 4fdd0: 72ff moveq #-1,%d1 <== NOT EXECUTED 4fdd2: 2480 movel %d0,%a2@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4fdd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fdd8: 2001 movel %d1,%d0 <== NOT EXECUTED 4fdda: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046708 <_POSIX_Spinlock_Translate_core_spinlock_return_code>: */ #if defined(RTEMS_DEBUG) if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_Spinlock_Return_codes[the_spinlock_status]; 46708: 41f9 0005 e5c8 lea 5e5c8 <_POSIX_Spinlock_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Spinlock_Translate_core_spinlock_return_code( CORE_spinlock_Status the_spinlock_status ) { 4670e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_Spinlock_Return_codes[the_spinlock_status]; } 46712: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46716: 4e5e unlk %fp <== NOT EXECUTED 46718: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: #include void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( Thread_Control *the_thread ) { 4b95c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b960: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED POSIX_API_Control *thread_support; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4b964: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 4b968: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 4b96c: 6608 bnes 4b976 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED 4b96e: 7001 moveq #1,%d0 <== NOT EXECUTED 4b970: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED 4b974: 6708 beqs 4b97e <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x22><== NOT EXECUTED _Thread_Unnest_dispatch(); _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); } else _Thread_Enable_dispatch(); } 4b976: 4e5e unlk %fp <== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && thread_support->cancelation_requested ) { _Thread_Unnest_dispatch(); _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); } else _Thread_Enable_dispatch(); 4b978: 4ef9 0004 8ca2 jmp 48ca2 <_Thread_Enable_dispatch> <== NOT EXECUTED POSIX_API_Control *thread_support; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && 4b97e: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 4b982: 67f2 beqs 4b976 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED thread_support->cancelation_requested ) { _Thread_Unnest_dispatch(); _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); 4b984: 4878 ffff pea ffffffff <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4b988: 2039 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4b98e: 5380 subql #1,%d0 <== NOT EXECUTED 4b990: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4b992: 23c0 0006 046c movel %d0,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED 4b998: 4eb9 0004 c2ac jsr 4c2ac <_POSIX_Thread_Exit> <== NOT EXECUTED 4b99e: 508f addql #8,%sp <== NOT EXECUTED } else _Thread_Enable_dispatch(); } 4b9a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e2fc <_POSIX_Thread_Exit>: void _POSIX_Thread_Exit( Thread_Control *the_thread, void *value_ptr ) { 4e2fc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e300: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4e304: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4e308: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED void _POSIX_Thread_Exit( Thread_Control *the_thread, void *value_ptr ) { 4e30c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4e310: 4eb9 0004 7ca4 jsr 47ca4 <_Objects_Get_information_id> <== NOT EXECUTED * are ready to be switched out. Otherwise, an ISR could * occur and preempt us out while we still hold the * allocator mutex. */ _RTEMS_Lock_allocator(); 4e316: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED void *value_ptr ) { Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4e31c: 2600 movel %d0,%d3 <== NOT EXECUTED * are ready to be switched out. Otherwise, an ISR could * occur and preempt us out while we still hold the * allocator mutex. */ _RTEMS_Lock_allocator(); 4e31e: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4e324: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4e32a: 5280 addql #1,%d0 <== NOT EXECUTED 4e32c: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.return_argument = value_ptr; _Thread_Close( the_information, the_thread ); 4e332: 2f0a movel %a2,%sp@- <== NOT EXECUTED */ _RTEMS_Lock_allocator(); _Thread_Disable_dispatch(); the_thread->Wait.return_argument = value_ptr; 4e334: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED _Thread_Close( the_information, the_thread ); 4e338: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e33a: 4eb9 0004 85e8 jsr 485e8 <_Thread_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 4e340: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e342: 4879 0005 fe3a pea 5fe3a <_POSIX_Threads_Information> <== NOT EXECUTED 4e348: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> <== NOT EXECUTED _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 4e34e: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e354: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED _Thread_Enable_dispatch(); 4e35a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED } 4e35e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4e364: 4e5e unlk %fp <== NOT EXECUTED _Thread_Close( the_information, the_thread ); _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); _Thread_Enable_dispatch(); 4e366: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 0004d0ec <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) { 4d0ec: 4e56 ffe8 linkw %fp,#-24 4d0f0: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 4d0f4: 246e 000c moveal %fp@(12),%a2 if ( !_POSIX_Priority_Is_valid( param->sched_priority ) ) 4d0f8: 47f9 0004 d0c8 lea 4d0c8 <_POSIX_Priority_Is_valid>,%a3 4d0fe: 2f12 movel %a2@,%sp@- int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) { 4d100: 242e 0008 movel %fp@(8),%d2 4d104: 286e 0010 moveal %fp@(16),%a4 4d108: 2a6e 0014 moveal %fp@(20),%a5 if ( !_POSIX_Priority_Is_valid( param->sched_priority ) ) 4d10c: 4e93 jsr %a3@ 4d10e: 588f addql #4,%sp 4d110: 4a00 tstb %d0 4d112: 6720 beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NEVER TAKEN return EINVAL; *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 4d114: 4294 clrl %a4@ *budget_callout = NULL; 4d116: 4295 clrl %a5@ if ( policy == SCHED_OTHER ) { 4d118: 4a82 tstl %d2 4d11a: 6724 beqs 4d140 <_POSIX_Thread_Translate_sched_param+0x54><== NEVER TAKEN *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; return 0; } if ( policy == SCHED_FIFO ) { 4d11c: 7001 moveq #1,%d0 4d11e: b082 cmpl %d2,%d0 4d120: 6700 0086 beqw 4d1a8 <_POSIX_Thread_Translate_sched_param+0xbc> *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; return 0; } if ( policy == SCHED_RR ) { 4d124: 103c 0002 moveb #2,%d0 <== NOT EXECUTED 4d128: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d12a: 6700 0088 beqw 4d1b4 <_POSIX_Thread_Translate_sched_param+0xc8><== NOT EXECUTED *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; return 0; } if ( policy == SCHED_SPORADIC ) { 4d12e: 7004 moveq #4,%d0 <== NOT EXECUTED 4d130: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d132: 671c beqs 4d150 <_POSIX_Thread_Translate_sched_param+0x64><== NOT EXECUTED if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) ) return EINVAL; 4d134: 7016 moveq #22,%d0 <== NOT EXECUTED *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; } return EINVAL; } 4d136: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d13c: 4e5e unlk %fp <== NOT EXECUTED 4d13e: 4e75 rts <== NOT EXECUTED *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; *budget_callout = NULL; if ( policy == SCHED_OTHER ) { *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; 4d140: 7201 moveq #1,%d1 <== NOT EXECUTED return 0; 4d142: 4280 clrl %d0 <== NOT EXECUTED *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; *budget_callout = NULL; if ( policy == SCHED_OTHER ) { *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; 4d144: 2881 movel %d1,%a4@ <== NOT EXECUTED *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; } return EINVAL; } 4d146: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d14c: 4e5e unlk %fp <== NOT EXECUTED 4d14e: 4e75 rts <== NOT EXECUTED *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; return 0; } if ( policy == SCHED_SPORADIC ) { if ( (param->sched_ss_repl_period.tv_sec == 0) && 4d150: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4d154: 6606 bnes 4d15c <_POSIX_Thread_Translate_sched_param+0x70><== NOT EXECUTED 4d156: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED 4d15a: 67d8 beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED (param->sched_ss_repl_period.tv_nsec == 0) ) return EINVAL; if ( (param->sched_ss_init_budget.tv_sec == 0) && 4d15c: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d160: 6606 bnes 4d168 <_POSIX_Thread_Translate_sched_param+0x7c><== NOT EXECUTED 4d162: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d166: 67cc beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4d168: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4d16c: 243c 0004 a9ac movel #305580,%d2 <== NOT EXECUTED 4d172: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d174: 4e90 jsr %a0@ <== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) 4d176: 486a 0010 pea %a2@(16) <== NOT EXECUTED if ( (param->sched_ss_init_budget.tv_sec == 0) && (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4d17a: 2600 movel %d0,%d3 <== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) 4d17c: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d17e: 4e90 jsr %a0@ <== NOT EXECUTED if ( (param->sched_ss_init_budget.tv_sec == 0) && (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4d180: 508f addql #8,%sp <== NOT EXECUTED 4d182: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d184: 62ae bhis 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) ) 4d186: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 4d18a: 4e93 jsr %a3@ <== NOT EXECUTED 4d18c: 588f addql #4,%sp <== NOT EXECUTED 4d18e: 4a00 tstb %d0 <== NOT EXECUTED 4d190: 67a2 beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED return EINVAL; *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; 4d192: 7003 moveq #3,%d0 <== NOT EXECUTED 4d194: 2880 movel %d0,%a4@ <== NOT EXECUTED *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; 4d196: 4280 clrl %d0 <== NOT EXECUTED if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) ) return EINVAL; *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; *budget_callout = _POSIX_Threads_Sporadic_budget_callout; 4d198: 2abc 0004 6e54 movel #290388,%a5@ <== NOT EXECUTED return 0; } return EINVAL; } 4d19e: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d1a4: 4e5e unlk %fp <== NOT EXECUTED 4d1a6: 4e75 rts <== NOT EXECUTED return 0; } if ( policy == SCHED_FIFO ) { *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; return 0; 4d1a8: 4280 clrl %d0 *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; } return EINVAL; } 4d1aa: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 4d1b0: 4e5e unlk %fp 4d1b2: 4e75 rts *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; return 0; } if ( policy == SCHED_RR ) { *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; 4d1b4: 2880 movel %d0,%a4@ <== NOT EXECUTED return 0; 4d1b6: 4200 clrb %d0 <== NOT EXECUTED *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; } return EINVAL; } 4d1b8: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d1be: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004bc1c <_POSIX_Threads_Create_extension>: bool _POSIX_Threads_Create_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *created ) { 4bc1c: 4e56 0000 linkw %fp,#0 4bc20: 2f0b movel %a3,%sp@- 4bc22: 266e 000c moveal %fp@(12),%a3 4bc26: 2f0a movel %a2,%sp@- POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 4bc28: 4878 00f0 pea f0 4bc2c: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !api ) 4bc32: 588f addql #4,%sp ) { POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 4bc34: 2440 moveal %d0,%a2 if ( !api ) 4bc36: 4a80 tstl %d0 4bc38: 6700 013c beqw 4bd76 <_POSIX_Threads_Create_extension+0x15a> return false; created->API_Extensions[ THREAD_API_POSIX ] = api; /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 4bc3c: 4878 0040 pea 40 4bc40: 42a7 clrl %sp@- api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); if ( !api ) return false; created->API_Extensions[ THREAD_API_POSIX ] = api; 4bc42: 2740 0102 movel %d0,%a3@(258) /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 4bc46: 2f00 movel %d0,%sp@- 4bc48: 4eb9 0004 f200 jsr 4f200 * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4bc4e: 4fef 000c lea %sp@(12),%sp /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; api->detachstate = _POSIX_Threads_Default_attributes.detachstate; api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy; api->schedparam = _POSIX_Threads_Default_attributes.schedparam; 4bc52: 41ea 008c lea %a2@(140),%a0 RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4bc56: 4281 clrl %d1 4bc58: 1239 0005 e3c2 moveb 5e3c2 ,%d1 4bc5e: 4280 clrl %d0 4bc60: 102b 0008 moveb %a3@(8),%d0 4bc64: 92ab 0014 subl %a3@(20),%d1 4bc68: 20f9 0005 d970 movel 5d970 <_POSIX_Threads_Default_attributes+0x1c>,%a0@+ 4bc6e: 20f9 0005 d974 movel 5d974 <_POSIX_Threads_Default_attributes+0x20>,%a0@+ 4bc74: 20f9 0005 d978 movel 5d978 <_POSIX_Threads_Default_attributes+0x24>,%a0@+ 4bc7a: 20f9 0005 d97c movel 5d97c <_POSIX_Threads_Default_attributes+0x28>,%a0@+ 4bc80: 20f9 0005 d980 movel 5d980 <_POSIX_Threads_Default_attributes+0x2c>,%a0@+ 4bc86: 20b9 0005 d984 movel 5d984 <_POSIX_Threads_Default_attributes+0x30>,%a0@ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4bc8c: 41ea 00e8 lea %a2@(232),%a0 4bc90: 2541 0088 movel %d1,%a2@(136) 4bc94: 7207 moveq #7,%d1 4bc96: c081 andl %d1,%d0 return false; created->API_Extensions[ THREAD_API_POSIX ] = api; /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 4bc98: 123c 0001 moveb #1,%d1 4bc9c: 2541 0010 movel %d1,%a2@(16) 4bca0: 2541 0014 movel %d1,%a2@(20) 4bca4: 123c 0002 moveb #2,%d1 4bca8: 2541 0018 movel %d1,%a2@(24) 4bcac: 123c 0001 moveb #1,%d1 4bcb0: 2548 00e4 movel %a0,%a2@(228) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4bcb4: 41ea 00e4 lea %a2@(228),%a0 4bcb8: 2541 0038 movel %d1,%a2@(56) 4bcbc: 2541 003c movel %d1,%a2@(60) api->detachstate = _POSIX_Threads_Default_attributes.detachstate; 4bcc0: 2541 0040 movel %d1,%a2@(64) api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy; 4bcc4: 2541 0084 movel %d1,%a2@(132) * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4bcc8: 123c 0003 moveb #3,%d1 return false; created->API_Extensions[ THREAD_API_POSIX ] = api; /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 4bccc: 24bc 0000 0001 movel #1,%a2@ 4bcd2: 2548 00ec movel %a0,%a2@(236) _POSIX_Priority_From_core( created->current_priority ); /* * POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; 4bcd6: 42aa 00e0 clrl %a2@(224) api->cancelability_state = PTHREAD_CANCEL_ENABLE; 4bcda: 42aa 00d8 clrl %a2@(216) api->cancelability_type = PTHREAD_CANCEL_DEFERRED; 4bcde: 42aa 00dc clrl %a2@(220) Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4bce2: 42aa 00e8 clrl %a2@(232) * * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; 4bce6: 42aa 00d4 clrl %a2@(212) if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4bcea: b280 cmpl %d0,%d1 4bcec: 6744 beqs 4bd32 <_POSIX_Threads_Create_extension+0x116> #endif ) { executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; api->signals_blocked = executing_api->signals_blocked; } else { api->signals_blocked = 0xffffffff; 4bcee: 70ff moveq #-1,%d0 4bcf0: 2540 00d0 movel %d0,%a2@(208) } _Thread_queue_Initialize( 4bcf4: 42a7 clrl %sp@- 4bcf6: 4878 1000 pea 1000 4bcfa: 42a7 clrl %sp@- 4bcfc: 486a 0044 pea %a2@(68) 4bd00: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_JOIN_AT_EXIT, 0 ); _Watchdog_Initialize( 4bd06: 222b 0008 movel %a3@(8),%d1 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4bd0a: 41f9 0004 bd84 lea 4bd84 <_POSIX_Threads_Sporadic_budget_TSR>,%a0 _POSIX_Threads_Sporadic_budget_TSR, created->Object.id, created ); return true; 4bd10: 4fef 0010 lea %sp@(16),%sp 4bd14: 7001 moveq #1,%d0 4bd16: 2548 00c4 movel %a0,%a2@(196) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4bd1a: 42aa 00b0 clrl %a2@(176) the_watchdog->routine = routine; the_watchdog->id = id; 4bd1e: 2541 00c8 movel %d1,%a2@(200) the_watchdog->user_data = user_data; 4bd22: 254b 00cc movel %a3,%a2@(204) } 4bd26: 246e fff8 moveal %fp@(-8),%a2 4bd2a: 266e fffc moveal %fp@(-4),%a3 4bd2e: 4e5e unlk %fp 4bd30: 4e75 rts if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API #if defined(RTEMS_DEBUG) && _Objects_Get_class( created->Object.id ) == 1 #endif ) { executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4bd32: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 api->signals_blocked = executing_api->signals_blocked; 4bd38: 2068 0102 moveal %a0@(258),%a0 4bd3c: 2568 00d0 00d0 movel %a0@(208),%a2@(208) } else { api->signals_blocked = 0xffffffff; } _Thread_queue_Initialize( 4bd42: 42a7 clrl %sp@- 4bd44: 4878 1000 pea 1000 4bd48: 42a7 clrl %sp@- 4bd4a: 486a 0044 pea %a2@(68) 4bd4e: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_JOIN_AT_EXIT, 0 ); _Watchdog_Initialize( 4bd54: 222b 0008 movel %a3@(8),%d1 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4bd58: 41f9 0004 bd84 lea 4bd84 <_POSIX_Threads_Sporadic_budget_TSR>,%a0 _POSIX_Threads_Sporadic_budget_TSR, created->Object.id, created ); return true; 4bd5e: 4fef 0010 lea %sp@(16),%sp 4bd62: 2548 00c4 movel %a0,%a2@(196) 4bd66: 7001 moveq #1,%d0 Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4bd68: 42aa 00b0 clrl %a2@(176) the_watchdog->routine = routine; the_watchdog->id = id; 4bd6c: 2541 00c8 movel %d1,%a2@(200) the_watchdog->user_data = user_data; 4bd70: 254b 00cc movel %a3,%a2@(204) 4bd74: 60b0 bras 4bd26 <_POSIX_Threads_Create_extension+0x10a> } 4bd76: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bd7a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4bd7e: 4e5e unlk %fp <== NOT EXECUTED POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); if ( !api ) return false; 4bd80: 4200 clrb %d0 <== NOT EXECUTED created->Object.id, created ); return true; } =============================================================================== 0004bb8a <_POSIX_Threads_Delete_extension>: */ void _POSIX_Threads_Delete_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *deleted ) { 4bb8a: 4e56 ffec linkw %fp,#-20 4bb8e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 4bb92: 266e 000c moveal %fp@(12),%a3 4bb96: 45f9 0004 8ca0 lea 48ca0 <_Thread_queue_Dequeue>,%a2 api = deleted->API_Extensions[ THREAD_API_POSIX ]; /* * Run the POSIX cancellation handlers */ _POSIX_Threads_cancel_run( deleted ); 4bb9c: 2f0b movel %a3,%sp@- { Thread_Control *the_thread; POSIX_API_Control *api; void **value_ptr; api = deleted->API_Extensions[ THREAD_API_POSIX ]; 4bb9e: 286b 0102 moveal %a3@(258),%a4 4bba2: 240c movel %a4,%d2 4bba4: 0682 0000 0044 addil #68,%d2 /* * Run the POSIX cancellation handlers */ _POSIX_Threads_cancel_run( deleted ); 4bbaa: 4eb9 0004 df3c jsr 4df3c <_POSIX_Threads_cancel_run> /* * Run all the key destructors */ _POSIX_Keys_Run_destructors( deleted ); 4bbb0: 2f0b movel %a3,%sp@- 4bbb2: 4eb9 0004 dfa8 jsr 4dfa8 <_POSIX_Keys_Run_destructors> /* * Wakeup all the tasks which joined with this one */ value_ptr = (void **) deleted->Wait.return_argument; 4bbb8: 262b 0028 movel %a3@(40),%d3 while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) 4bbbc: 508f addql #8,%sp 4bbbe: 2f02 movel %d2,%sp@- 4bbc0: 4e92 jsr %a2@ 4bbc2: 588f addql #4,%sp 4bbc4: 4a80 tstl %d0 4bbc6: 6712 beqs 4bbda <_POSIX_Threads_Delete_extension+0x50><== ALWAYS TAKEN *(void **)the_thread->Wait.return_argument = value_ptr; 4bbc8: 2240 moveal %d0,%a1 <== NOT EXECUTED 4bbca: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED 4bbce: 2083 movel %d3,%a0@ <== NOT EXECUTED /* * Wakeup all the tasks which joined with this one */ value_ptr = (void **) deleted->Wait.return_argument; while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) 4bbd0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bbd2: 4e92 jsr %a2@ <== NOT EXECUTED 4bbd4: 588f addql #4,%sp <== NOT EXECUTED 4bbd6: 4a80 tstl %d0 <== NOT EXECUTED 4bbd8: 66ee bnes 4bbc8 <_POSIX_Threads_Delete_extension+0x3e><== NOT EXECUTED *(void **)the_thread->Wait.return_argument = value_ptr; if ( api->schedpolicy == SCHED_SPORADIC ) 4bbda: 103c 0004 moveb #4,%d0 4bbde: b0ac 0084 cmpl %a4@(132),%d0 4bbe2: 6716 beqs 4bbfa <_POSIX_Threads_Delete_extension+0x70><== NEVER TAKEN (void) _Watchdog_Remove( &api->Sporadic_timer ); deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 4bbe4: 42ab 0102 clrl %a3@(258) (void) _Workspace_Free( api ); 4bbe8: 2d4c 0008 movel %a4,%fp@(8) } 4bbec: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4bbf2: 4e5e unlk %fp if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; (void) _Workspace_Free( api ); 4bbf4: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) *(void **)the_thread->Wait.return_argument = value_ptr; if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); 4bbfa: 486c 00a8 pea %a4@(168) <== NOT EXECUTED 4bbfe: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 4bc04: 588f addql #4,%sp <== NOT EXECUTED deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 4bc06: 42ab 0102 clrl %a3@(258) <== NOT EXECUTED (void) _Workspace_Free( api ); 4bc0a: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED } 4bc0e: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4bc14: 4e5e unlk %fp <== NOT EXECUTED if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; (void) _Workspace_Free( api ); 4bc16: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> <== NOT EXECUTED =============================================================================== 0004bb5e <_POSIX_Threads_Exitted_extension>: */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 4bb5e: 4280 clrl %d0 4bb60: 7207 moveq #7,%d1 * This method is invoked each time a thread exits. */ void _POSIX_Threads_Exitted_extension( Thread_Control *executing ) { 4bb62: 4e56 0000 linkw %fp,#0 4bb66: 206e 0008 moveal %fp@(8),%a0 4bb6a: 1028 0008 moveb %a0@(8),%d0 4bb6e: c081 andl %d1,%d0 /* * If the executing thread was not created with the POSIX API, then this * API do not get to define its exit behavior. */ if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API ) 4bb70: 123c 0003 moveb #3,%d1 4bb74: b280 cmpl %d0,%d1 4bb76: 6704 beqs 4bb7c <_POSIX_Threads_Exitted_extension+0x1e><== NEVER TAKEN pthread_exit( executing->Wait.return_argument ); } 4bb78: 4e5e unlk %fp 4bb7a: 4e75 rts /* * If the executing thread was not created with the POSIX API, then this * API do not get to define its exit behavior. */ if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API ) pthread_exit( executing->Wait.return_argument ); 4bb7c: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED } 4bb82: 4e5e unlk %fp <== NOT EXECUTED /* * If the executing thread was not created with the POSIX API, then this * API do not get to define its exit behavior. */ if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API ) pthread_exit( executing->Wait.return_argument ); 4bb84: 4ef9 0004 e36c jmp 4e36c <== NOT EXECUTED =============================================================================== 00046ae4 <_POSIX_Threads_Initialize_user_threads_body>: * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads_body(void) { 46ae4: 4e56 ff98 linkw %fp,#-104 46ae8: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ uint32_t maximum; posix_initialization_threads_table *user_threads; pthread_t thread_id; pthread_attr_t attr; user_threads = Configuration_POSIX_API.User_initialization_threads_table; 46aec: 2479 0005 f83e moveal 5f83e ,%a2 maximum = Configuration_POSIX_API.number_of_initialization_threads; 46af2: 2839 0005 f83a movel 5f83a ,%d4 if ( !user_threads || maximum == 0 ) 46af8: 4a8a tstl %a2 46afa: 675a beqs 46b56 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN 46afc: 4a84 tstl %d4 46afe: 6756 beqs 46b56 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN 46b00: 240e movel %fp,%d2 46b02: 2a0e movel %fp,%d5 46b04: 4283 clrl %d3 46b06: 0682 ffff ffbc addil #-68,%d2 46b0c: 2c3c 0004 d1c4 movel #315844,%d6 46b12: 4bf9 0004 d1f0 lea 4d1f0 ,%a5 46b18: 49f9 0004 d230 lea 4d230 ,%a4 46b1e: 5985 subql #4,%d5 46b20: 47f9 0004 6730 lea 46730 ,%a3 for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 46b26: 2f02 movel %d2,%sp@- 46b28: 2046 moveal %d6,%a0 46b2a: 4e90 jsr %a0@ (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); 46b2c: 4878 0002 pea 2 46b30: 2f02 movel %d2,%sp@- 46b32: 4e95 jsr %a5@ (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); 46b34: 2f2a 0004 movel %a2@(4),%sp@- 46b38: 2f02 movel %d2,%sp@- 46b3a: 4e94 jsr %a4@ status = pthread_create( 46b3c: 42a7 clrl %sp@- 46b3e: 2f12 movel %a2@,%sp@- 46b40: 2f02 movel %d2,%sp@- 46b42: 2f05 movel %d5,%sp@- 46b44: 4e93 jsr %a3@ &thread_id, &attr, user_threads[ index ].thread_entry, NULL ); if ( status ) 46b46: 4fef 0024 lea %sp@(36),%sp 46b4a: 4a80 tstl %d0 46b4c: 6612 bnes 46b60 <_POSIX_Threads_Initialize_user_threads_body+0x7c> * * Setting the attributes explicitly is critical, since we don't want * to inherit the idle tasks attributes. */ for ( index=0 ; index < maximum ; index++ ) { 46b4e: 5283 addql #1,%d3 46b50: 508a addql #8,%a2 46b52: b684 cmpl %d4,%d3 46b54: 65d0 bcss 46b26 <_POSIX_Threads_Initialize_user_threads_body+0x42><== NEVER TAKEN NULL ); if ( status ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status ); } } 46b56: 4cee 3c7c ff98 moveml %fp@(-104),%d2-%d6/%a2-%a5 46b5c: 4e5e unlk %fp 46b5e: 4e75 rts &attr, user_threads[ index ].thread_entry, NULL ); if ( status ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status ); 46b60: 2f00 movel %d0,%sp@- 46b62: 4878 0001 pea 1 46b66: 4878 0002 pea 2 46b6a: 4eb9 0004 8c3c jsr 48c3c <_Internal_error_Occurred> =============================================================================== 0004bd84 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) { 4bd84: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4bd88: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 4bd8c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED the_thread = argument; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); 4bd90: 49f9 0004 cd24 lea 4cd24 <_Timespec_To_ticks>,%a4 <== NOT EXECUTED Thread_Control *the_thread; POSIX_API_Control *api; the_thread = argument; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4bd96: 246b 0102 moveal %a3@(258),%a2 <== NOT EXECUTED /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); 4bd9a: 486a 0098 pea %a2@(152) <== NOT EXECUTED 4bd9e: 4e94 jsr %a4@ <== NOT EXECUTED */ #if 0 printk( "TSR %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4bda0: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4bda2: 4281 clrl %d1 <== NOT EXECUTED 4bda4: 1239 0005 e3c2 moveb 5e3c2 ,%d1 <== NOT EXECUTED 4bdaa: 92aa 0088 subl %a2@(136),%d1 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); the_thread->cpu_time_budget = ticks; 4bdae: 2740 0076 movel %d0,%a3@(118) <== NOT EXECUTED new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority ); the_thread->real_priority = new_priority; 4bdb2: 2741 0018 movel %d1,%a3@(24) <== NOT EXECUTED */ #if 0 printk( "TSR %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4bdb6: 4aab 001c tstl %a3@(28) <== NOT EXECUTED 4bdba: 6606 bnes 4bdc2 <_POSIX_Threads_Sporadic_budget_TSR+0x3e><== NOT EXECUTED /* * If this would make them less important, then do not change it. */ if ( the_thread->current_priority > new_priority ) { 4bdbc: b2ab 0014 cmpl %a3@(20),%d1 <== NOT EXECUTED 4bdc0: 652c bcss 4bdee <_POSIX_Threads_Sporadic_budget_TSR+0x6a><== NOT EXECUTED #endif } } /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period ); 4bdc2: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4bdc6: 4e94 jsr %a4@ <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4bdc8: 588f addql #4,%sp <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4bdca: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks ); 4bdce: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4bdd2: 203c 0005 fd58 movel #392536,%d0 <== NOT EXECUTED 4bdd8: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED } 4bddc: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4bde2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4bde6: 4e5e unlk %fp <== NOT EXECUTED 4bde8: 4ef9 0004 987c jmp 4987c <_Watchdog_Insert> <== NOT EXECUTED if ( the_thread->resource_count == 0 ) { /* * If this would make them less important, then do not change it. */ if ( the_thread->current_priority > new_priority ) { _Thread_Change_priority( the_thread, new_priority, true ); 4bdee: 4878 0001 pea 1 <== NOT EXECUTED 4bdf2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4bdf4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4bdf6: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED 4bdfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #endif } } /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period ); 4be00: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4be04: 4e94 jsr %a4@ <== NOT EXECUTED 4be06: 588f addql #4,%sp <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4be08: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks ); 4be0c: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4be10: 203c 0005 fd58 movel #392536,%d0 <== NOT EXECUTED 4be16: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED } 4be1a: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4be20: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4be24: 4e5e unlk %fp <== NOT EXECUTED 4be26: 4ef9 0004 987c jmp 4987c <_Watchdog_Insert> <== NOT EXECUTED =============================================================================== 0004be2c <_POSIX_Threads_Sporadic_budget_callout>: 4be2c: 4280 clrl %d0 <== NOT EXECUTED /* * This will prevent the thread from consuming its entire "budget" * while at low priority. */ the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */ 4be2e: 72ff moveq #-1,%d1 <== NOT EXECUTED * _POSIX_Threads_Sporadic_budget_callout */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) { 4be30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4be34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4be38: 1039 0005 e3c2 moveb 5e3c2 ,%d0 <== NOT EXECUTED POSIX_API_Control *api; uint32_t new_priority; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4be3e: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED 4be42: 90a9 008c subl %a1@(140),%d0 <== NOT EXECUTED /* * This will prevent the thread from consuming its entire "budget" * while at low priority. */ the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */ 4be46: 2141 0076 movel %d1,%a0@(118) <== NOT EXECUTED new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority); the_thread->real_priority = new_priority; 4be4a: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED */ #if 0 printk( "callout %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4be4e: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 4be52: 6606 bnes 4be5a <_POSIX_Threads_Sporadic_budget_callout+0x2e><== NOT EXECUTED /* * Make sure we are actually lowering it. If they have lowered it * to logically lower than sched_ss_low_priority, then we do not want to * change it. */ if ( the_thread->current_priority < new_priority ) { 4be54: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4be58: 6204 bhis 4be5e <_POSIX_Threads_Sporadic_budget_callout+0x32><== NOT EXECUTED #if 0 printk( "lower priority\n" ); #endif } } } 4be5a: 4e5e unlk %fp <== NOT EXECUTED 4be5c: 4e75 rts <== NOT EXECUTED * Make sure we are actually lowering it. If they have lowered it * to logically lower than sched_ss_low_priority, then we do not want to * change it. */ if ( the_thread->current_priority < new_priority ) { _Thread_Change_priority( the_thread, new_priority, true ); 4be5e: 4878 0001 pea 1 <== NOT EXECUTED 4be62: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4be64: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4be66: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED 4be6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #if 0 printk( "lower priority\n" ); #endif } } } 4be70: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004df3c <_POSIX_Threads_cancel_run>: thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; 4df3c: 7001 moveq #1,%d0 #include void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) { 4df3e: 4e56 ffec linkw %fp,#-20 4df42: 206e 0008 moveal %fp@(8),%a0 4df46: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ POSIX_Cancel_Handler_control *handler; Chain_Control *handler_stack; POSIX_API_Control *thread_support; ISR_Level level; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4df4a: 2468 0102 moveal %a0@(258),%a2 RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4df4e: 240a movel %a2,%d2 4df50: 0682 0000 00e8 addil #232,%d2 handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; 4df56: 2540 00d8 movel %d0,%a2@(216) while ( !_Chain_Is_empty( handler_stack ) ) { 4df5a: b4aa 00e4 cmpl %a2@(228),%d2 4df5e: 673c beqs 4df9c <_POSIX_Threads_cancel_run+0x60> <== ALWAYS TAKEN 4df60: 47f9 0004 9b6e lea 49b6e <_Workspace_Free>,%a3 <== NOT EXECUTED _ISR_Disable( level ); 4df66: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED 4df6c: 2003 movel %d3,%d0 <== NOT EXECUTED 4df6e: 40c1 movew %sr,%d1 <== NOT EXECUTED 4df70: 8081 orl %d1,%d0 <== NOT EXECUTED 4df72: 46c0 movew %d0,%sr <== NOT EXECUTED handler = (POSIX_Cancel_Handler_control *) 4df74: 286a 00ec moveal %a2@(236),%a4 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4df78: 2254 moveal %a4@,%a1 <== NOT EXECUTED previous = the_node->previous; 4df7a: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED next->previous = previous; 4df7e: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED previous->next = next; 4df82: 2089 movel %a1,%a0@ <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 4df84: 46c1 movew %d1,%sr <== NOT EXECUTED (*handler->routine)( handler->arg ); 4df86: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED 4df8a: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED 4df8e: 4e90 jsr %a0@ <== NOT EXECUTED _Workspace_Free( handler ); 4df90: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4df92: 4e93 jsr %a3@ <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; while ( !_Chain_Is_empty( handler_stack ) ) { 4df94: 508f addql #8,%sp <== NOT EXECUTED 4df96: b4aa 00e4 cmpl %a2@(228),%d2 <== NOT EXECUTED 4df9a: 66d0 bnes 4df6c <_POSIX_Threads_cancel_run+0x30> <== NOT EXECUTED (*handler->routine)( handler->arg ); _Workspace_Free( handler ); } } 4df9c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4dfa2: 4e5e unlk %fp ... =============================================================================== 0004c91c <_POSIX_Timer_Insert_helper>: Watchdog_Interval ticks, Objects_Id id, Watchdog_Service_routine_entry TSR, void *arg ) { 4c91c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c920: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c922: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4c926: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; (void) _Watchdog_Remove( timer ); 4c928: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c92a: 4eb9 0004 a2c4 jsr 4a2c4 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 4c930: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4c936: 40c2 movew %sr,%d2 <== NOT EXECUTED 4c938: 8082 orl %d2,%d0 <== NOT EXECUTED 4c93a: 46c0 movew %d0,%sr <== NOT EXECUTED /* * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( timer->state != WATCHDOG_INACTIVE ) { 4c93c: 588f addql #4,%sp <== NOT EXECUTED 4c93e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4c942: 6710 beqs 4c954 <_POSIX_Timer_Insert_helper+0x38><== NOT EXECUTED _ISR_Enable( level ); 4c944: 46c2 movew %d2,%sr <== NOT EXECUTED */ _Watchdog_Initialize( timer, TSR, id, arg ); _Watchdog_Insert_ticks( timer, ticks ); _ISR_Enable( level ); return true; } 4c946: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c94a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c94e: 4e5e unlk %fp <== NOT EXECUTED * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( timer->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return false; 4c950: 4200 clrb %d0 <== NOT EXECUTED */ _Watchdog_Initialize( timer, TSR, id, arg ); _Watchdog_Insert_ticks( timer, ticks ); _ISR_Enable( level ); return true; } 4c952: 4e75 rts <== NOT EXECUTED 4c954: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c956: 4879 0006 0aa8 pea 60aa8 <_Watchdog_Ticks_chain> <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4c95c: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED the_watchdog->id = id; 4c962: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED the_watchdog->user_data = user_data; 4c968: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4c96e: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4c974: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4c978: 4eb9 0004 a170 jsr 4a170 <_Watchdog_Insert> <== NOT EXECUTED * OK. Now we now the timer was not rescheduled by an interrupt * so we can atomically initialize it as in use. */ _Watchdog_Initialize( timer, TSR, id, arg ); _Watchdog_Insert_ticks( timer, ticks ); _ISR_Enable( level ); 4c97e: 46c2 movew %d2,%sr <== NOT EXECUTED return true; 4c980: 508f addql #8,%sp <== NOT EXECUTED } 4c982: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c986: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c98a: 4e5e unlk %fp <== NOT EXECUTED * so we can atomically initialize it as in use. */ _Watchdog_Initialize( timer, TSR, id, arg ); _Watchdog_Insert_ticks( timer, ticks ); _ISR_Enable( level ); return true; 4c98c: 7001 moveq #1,%d0 <== NOT EXECUTED } =============================================================================== 00046400 <_POSIX_Timer_TSR>: * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR( Objects_Id timer __attribute__((unused)), void *data) { 46400: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46404: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46406: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED bool activated; ptimer = (POSIX_Timer_Control *)data; /* Increment the number of expirations. */ ptimer->overrun = ptimer->overrun + 1; 4640a: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED /* The timer must be reprogrammed */ if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) || 4640e: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED 46412: 6606 bnes 4641a <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED 46414: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED 46418: 672a beqs 46444 <_POSIX_Timer_TSR+0x44> <== NOT EXECUTED ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) { activated = _POSIX_Timer_Insert_helper( 4641a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4641c: 4879 0004 6400 pea 46400 <_POSIX_Timer_TSR> <== NOT EXECUTED 46422: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 46426: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED 4642a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4642e: 4eb9 0004 c91c jsr 4c91c <_POSIX_Timer_Insert_helper> <== NOT EXECUTED ptimer->ticks, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) 46434: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46438: 4a00 tstb %d0 <== NOT EXECUTED 4643a: 662a bnes 46466 <_POSIX_Timer_TSR+0x66> <== NOT EXECUTED /* After the signal handler returns, the count of expirations of the * timer must be set to 0. */ ptimer->overrun = 0; } 4643c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46440: 4e5e unlk %fp <== NOT EXECUTED 46442: 4e75 rts <== NOT EXECUTED /* The state really did not change but just to be safe */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; } else { /* Indicates that the timer is stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 46444: 7004 moveq #4,%d0 <== NOT EXECUTED 46446: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED /* * The sending of the signal to the process running the handling function * specified for that signal is simulated */ if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) { 4644a: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4644e: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 46452: 4eb9 0004 c43c jsr 4c43c <== NOT EXECUTED } /* After the signal handler returns, the count of expirations of the * timer must be set to 0. */ ptimer->overrun = 0; 46458: 508f addql #8,%sp <== NOT EXECUTED 4645a: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED } 4645e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46462: 4e5e unlk %fp <== NOT EXECUTED 46464: 4e75 rts <== NOT EXECUTED ); if ( !activated ) return; /* Store the time when the timer was started again */ _TOD_Get( &ptimer->time ); 46466: 486a 006a pea %a2@(106) <== NOT EXECUTED 4646a: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED /* The state really did not change but just to be safe */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 46470: 588f addql #4,%sp <== NOT EXECUTED 46472: 7003 moveq #3,%d0 <== NOT EXECUTED 46474: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED /* * The sending of the signal to the process running the handling function * specified for that signal is simulated */ if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) { 46478: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4647c: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 46480: 4eb9 0004 c43c jsr 4c43c <== NOT EXECUTED } /* After the signal handler returns, the count of expirations of the * timer must be set to 0. */ ptimer->overrun = 0; 46486: 508f addql #8,%sp <== NOT EXECUTED 46488: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED 4648c: 60d0 bras 4645e <_POSIX_Timer_TSR+0x5e> <== NOT EXECUTED ... =============================================================================== 0004b788 <_POSIX_signals_Abnormal_termination_handler>: sigset_t _POSIX_signals_Pending; void _POSIX_signals_Abnormal_termination_handler( int signo __attribute__((unused)) ) { 4b788: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED exit( 1 ); 4b78c: 4878 0001 pea 1 <== NOT EXECUTED 4b790: 4eb9 0004 e8f4 jsr 4e8f4 <== NOT EXECUTED =============================================================================== 000483f0 <_POSIX_signals_Alarm_TSR>: void _POSIX_signals_Alarm_TSR( Objects_Id id __attribute__((unused)), void *argument __attribute__((unused)) ) { 483f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED int status; status = kill( getpid(), SIGALRM ); 483f4: 4eb9 0004 544c jsr 4544c <== NOT EXECUTED 483fa: 720e moveq #14,%d1 <== NOT EXECUTED 483fc: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 48400: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED /* XXX can't print from an ISR, should this be fatal? */ } 48404: 4e5e unlk %fp <== NOT EXECUTED void *argument __attribute__((unused)) ) { int status; status = kill( getpid(), SIGALRM ); 48406: 4ef9 0004 852c jmp 4852c <== NOT EXECUTED =============================================================================== 0004e030 <_POSIX_signals_Check_signal>: { siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4e030: 4280 clrl %d0 <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4e032: 4e56 ff98 linkw %fp,#-104 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4e036: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4e03a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4e03e: 4878 0001 pea 1 <== NOT EXECUTED 4e042: 260e movel %fp,%d3 <== NOT EXECUTED 4e044: 0683 ffff fff4 addil #-12,%d3 <== NOT EXECUTED 4e04a: 2f00 movel %d0,%sp@- <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4e04c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4e050: 2f03 movel %d3,%sp@- <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4e052: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4e056: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e058: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e05a: 4eb9 0004 e1d4 jsr 4e1d4 <_POSIX_signals_Clear_signals> <== NOT EXECUTED 4e060: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4e064: 4a00 tstb %d0 <== NOT EXECUTED 4e066: 6700 015e beqw 4e1c6 <_POSIX_signals_Check_signal+0x196><== NOT EXECUTED #endif /* * Just to prevent sending a signal which is currently being ignored. */ if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) 4e06a: 2202 movel %d2,%d1 <== NOT EXECUTED 4e06c: 2002 movel %d2,%d0 <== NOT EXECUTED 4e06e: e589 lsll #2,%d1 <== NOT EXECUTED 4e070: e988 lsll #4,%d0 <== NOT EXECUTED 4e072: 9081 subl %d1,%d0 <== NOT EXECUTED 4e074: 2240 moveal %d0,%a1 <== NOT EXECUTED 4e076: d3fc 0006 0134 addal #393524,%a1 <== NOT EXECUTED 4e07c: 7201 moveq #1,%d1 <== NOT EXECUTED 4e07e: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED 4e082: 2d48 ffc8 movel %a0,%fp@(-56) <== NOT EXECUTED 4e086: b288 cmpl %a0,%d1 <== NOT EXECUTED 4e088: 6700 013c beqw 4e1c6 <_POSIX_signals_Check_signal+0x196><== NOT EXECUTED /* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait, 4e08c: 2e0e movel %fp,%d7 <== NOT EXECUTED 4e08e: 0687 ffff ffd0 addil #-48,%d7 <== NOT EXECUTED 4e094: 2647 moveal %d7,%a3 <== NOT EXECUTED 4e096: 2c0e movel %fp,%d6 <== NOT EXECUTED 4e098: 0686 ffff ffd4 addil #-44,%d6 <== NOT EXECUTED 4e09e: 2a0e movel %fp,%d5 <== NOT EXECUTED 4e0a0: 0685 ffff ffd8 addil #-40,%d5 <== NOT EXECUTED 4e0a6: 280e movel %fp,%d4 <== NOT EXECUTED 4e0a8: 0684 ffff ffdc addil #-36,%d4 <== NOT EXECUTED 4e0ae: 4bee ffe0 lea %fp@(-32),%a5 <== NOT EXECUTED 4e0b2: 49ee ffe4 lea %fp@(-28),%a4 <== NOT EXECUTED 4e0b6: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e0bc: 26a8 0024 movel %a0@(36),%a3@ <== NOT EXECUTED 4e0c0: 2646 moveal %d6,%a3 <== NOT EXECUTED 4e0c2: 26a8 0028 movel %a0@(40),%a3@ <== NOT EXECUTED 4e0c6: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e0c8: 26a8 002c movel %a0@(44),%a3@ <== NOT EXECUTED 4e0cc: 2644 moveal %d4,%a3 <== NOT EXECUTED return false; /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; 4e0ce: 222a 00d0 movel %a2@(208),%d1 <== NOT EXECUTED /* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait, 4e0d2: 2d68 0020 ffcc movel %a0@(32),%fp@(-52) <== NOT EXECUTED 4e0d8: 26a8 0030 movel %a0@(48),%a3@ <== NOT EXECUTED 4e0dc: 2aa8 0034 movel %a0@(52),%a5@ <== NOT EXECUTED 4e0e0: 28a8 0038 movel %a0@(56),%a4@ <== NOT EXECUTED 4e0e4: 2d68 003c ffe8 movel %a0@(60),%fp@(-24) <== NOT EXECUTED 4e0ea: 2d68 0040 ffec movel %a0@(64),%fp@(-20) <== NOT EXECUTED 4e0f0: 2d68 0044 fff0 movel %a0@(68),%fp@(-16) <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { 4e0f6: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED return false; /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; 4e0fc: 2d41 ffc4 movel %d1,%fp@(-60) <== NOT EXECUTED api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4e100: 82a9 0004 orl %a1@(4),%d1 <== NOT EXECUTED 4e104: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { 4e108: 7202 moveq #2,%d1 <== NOT EXECUTED 4e10a: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e10e: 675c beqs 4e16c <_POSIX_signals_Check_signal+0x13c><== NOT EXECUTED &siginfo_struct, NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; default: (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); 4e110: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e112: 226e ffc8 moveal %fp@(-56),%a1 <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e116: 2647 moveal %d7,%a3 <== NOT EXECUTED &siginfo_struct, NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; default: (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); 4e118: 4e91 jsr %a1@ <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e11a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e120: 2246 moveal %d6,%a1 <== NOT EXECUTED NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; default: (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); break; 4e122: 588f addql #4,%sp <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e124: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e12a: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e12e: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e130: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e134: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e136: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e13a: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e13e: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e142: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e146: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e14c: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e152: 216e fff0 0044 movel %fp@(-16),%a0@(68) <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; 4e158: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED return true; 4e15c: 7001 moveq #1,%d0 <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; 4e15e: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED return true; } 4e162: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4e168: 4e5e unlk %fp <== NOT EXECUTED 4e16a: 4e75 rts <== NOT EXECUTED /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { case SA_SIGINFO: (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( 4e16c: 42a7 clrl %sp@- <== NOT EXECUTED 4e16e: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e172: 2647 moveal %d7,%a3 <== NOT EXECUTED /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { case SA_SIGINFO: (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( 4e174: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e176: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e178: 4e90 jsr %a0@ <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e17a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e180: 2246 moveal %d6,%a1 <== NOT EXECUTED (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( signo, &siginfo_struct, NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; 4e182: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4e186: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e18c: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e190: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e192: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e196: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e198: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e19c: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e1a0: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e1a4: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e1a8: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e1ae: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e1b4: 216e fff0 0044 movel %fp@(-16),%a0@(68) <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; 4e1ba: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED 4e1be: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED return true; 4e1c2: 7001 moveq #1,%d0 <== NOT EXECUTED 4e1c4: 609c bras 4e162 <_POSIX_signals_Check_signal+0x132><== NOT EXECUTED } 4e1c6: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED /* * Just to prevent sending a signal which is currently being ignored. */ if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) return false; 4e1cc: 4200 clrb %d0 <== NOT EXECUTED * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; return true; } 4e1ce: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e84c <_POSIX_signals_Clear_process_signals>: clear_signal = true; mask = signo_to_mask( signo ); ISR_Level level; _ISR_Disable( level ); 4e84c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _POSIX_signals_Clear_process_signals( int signo ) { 4e852: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e856: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4e85a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e85c: 2f02 movel %d2,%sp@- <== NOT EXECUTED clear_signal = true; mask = signo_to_mask( signo ); ISR_Level level; _ISR_Disable( level ); 4e85e: 40c2 movew %sr,%d2 <== NOT EXECUTED 4e860: 8082 orl %d2,%d0 <== NOT EXECUTED 4e862: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4e864: 2601 movel %d1,%d3 <== NOT EXECUTED 4e866: 2001 movel %d1,%d0 <== NOT EXECUTED 4e868: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e86e: e58b lsll #2,%d3 <== NOT EXECUTED 4e870: e988 lsll #4,%d0 <== NOT EXECUTED 4e872: 9083 subl %d3,%d0 <== NOT EXECUTED 4e874: 7602 moveq #2,%d3 <== NOT EXECUTED 4e876: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED 4e87a: 6718 beqs 4e894 <_POSIX_signals_Clear_process_signals+0x48><== NOT EXECUTED 4e87c: 5381 subql #1,%d1 <== NOT EXECUTED 4e87e: 7001 moveq #1,%d0 <== NOT EXECUTED 4e880: e3a8 lsll %d1,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) clear_signal = false; } if ( clear_signal ) { _POSIX_signals_Pending &= ~mask; 4e882: 4680 notl %d0 <== NOT EXECUTED 4e884: c1b9 0006 0328 andl %d0,60328 <_POSIX_signals_Pending> <== NOT EXECUTED } _ISR_Enable( level ); 4e88a: 46c2 movew %d2,%sr <== NOT EXECUTED } 4e88c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e88e: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e890: 4e5e unlk %fp <== NOT EXECUTED 4e892: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4e894: 2040 moveal %d0,%a0 <== NOT EXECUTED 4e896: d1fc 0006 0330 addal #394032,%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) 4e89c: 43f9 0006 032c lea 6032c <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED 4e8a2: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED 4e8a6: 67d4 beqs 4e87c <_POSIX_signals_Clear_process_signals+0x30><== NOT EXECUTED clear_signal = false; } if ( clear_signal ) { _POSIX_signals_Pending &= ~mask; } _ISR_Enable( level ); 4e8a8: 46c2 movew %d2,%sr <== NOT EXECUTED } 4e8aa: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e8ac: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e8ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e1d4 <_POSIX_signals_Clear_signals>: static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 4e1d4: 7001 moveq #1,%d0 <== NOT EXECUTED int signo, siginfo_t *info, bool is_global, bool check_blocked ) { 4e1d6: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e1da: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e1de: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4e1e2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4e1e6: 2202 movel %d2,%d1 <== NOT EXECUTED 4e1e8: 5381 subql #1,%d1 <== NOT EXECUTED 4e1ea: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED 4e1ee: e3a8 lsll %d1,%d0 <== NOT EXECUTED /* set blocked signals based on if checking for them, SIGNAL_ALL_MASK * insures that no signals are blocked and all are checked. */ if ( check_blocked ) 4e1f0: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED 4e1f4: 6752 beqs 4e248 <_POSIX_signals_Clear_signals+0x74><== NOT EXECUTED signals_blocked = ~api->signals_blocked; 4e1f6: 2828 00d0 movel %a0@(208),%d4 <== NOT EXECUTED signals_blocked = SIGNAL_ALL_MASK; /* XXX is this right for siginfo type signals? */ /* XXX are we sure they can be cleared the same way? */ _ISR_Disable( level ); 4e1fa: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED /* set blocked signals based on if checking for them, SIGNAL_ALL_MASK * insures that no signals are blocked and all are checked. */ if ( check_blocked ) signals_blocked = ~api->signals_blocked; 4e200: 4684 notl %d4 <== NOT EXECUTED signals_blocked = SIGNAL_ALL_MASK; /* XXX is this right for siginfo type signals? */ /* XXX are we sure they can be cleared the same way? */ _ISR_Disable( level ); 4e202: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e204: 8283 orl %d3,%d1 <== NOT EXECUTED 4e206: 46c1 movew %d1,%sr <== NOT EXECUTED if ( is_global ) { 4e208: 4a05 tstb %d5 <== NOT EXECUTED 4e20a: 674e beqs 4e25a <_POSIX_signals_Clear_signals+0x86><== NOT EXECUTED if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { 4e20c: c0b9 0006 0328 andl 60328 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4e212: c084 andl %d4,%d0 <== NOT EXECUTED 4e214: 6768 beqs 4e27e <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4e216: 2202 movel %d2,%d1 <== NOT EXECUTED 4e218: 2002 movel %d2,%d0 <== NOT EXECUTED 4e21a: 47f9 0004 e84c lea 4e84c <_POSIX_signals_Clear_process_signals>,%a3<== NOT EXECUTED 4e220: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e226: e589 lsll #2,%d1 <== NOT EXECUTED 4e228: e988 lsll #4,%d0 <== NOT EXECUTED 4e22a: 9081 subl %d1,%d0 <== NOT EXECUTED 4e22c: 7202 moveq #2,%d1 <== NOT EXECUTED 4e22e: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e232: 6758 beqs 4e28c <_POSIX_signals_Clear_signals+0xb8><== NOT EXECUTED &psiginfo->Node ); } else do_callout = false; } _POSIX_signals_Clear_process_signals( signo ); 4e234: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e236: 4e93 jsr %a3@ <== NOT EXECUTED 4e238: 588f addql #4,%sp <== NOT EXECUTED do_callout = true; 4e23a: 7001 moveq #1,%d0 <== NOT EXECUTED if ( mask & (api->signals_pending & signals_blocked) ) { api->signals_pending &= ~mask; do_callout = true; } } _ISR_Enable( level ); 4e23c: 46c3 movew %d3,%sr <== NOT EXECUTED return do_callout; } 4e23e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e244: 4e5e unlk %fp <== NOT EXECUTED 4e246: 4e75 rts <== NOT EXECUTED */ if ( check_blocked ) signals_blocked = ~api->signals_blocked; else signals_blocked = SIGNAL_ALL_MASK; 4e248: 78ff moveq #-1,%d4 <== NOT EXECUTED /* XXX is this right for siginfo type signals? */ /* XXX are we sure they can be cleared the same way? */ _ISR_Disable( level ); 4e24a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4e250: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e252: 8283 orl %d3,%d1 <== NOT EXECUTED 4e254: 46c1 movew %d1,%sr <== NOT EXECUTED if ( is_global ) { 4e256: 4a05 tstb %d5 <== NOT EXECUTED 4e258: 66b2 bnes 4e20c <_POSIX_signals_Clear_signals+0x38><== NOT EXECUTED } _POSIX_signals_Clear_process_signals( signo ); do_callout = true; } } else { if ( mask & (api->signals_pending & signals_blocked) ) { 4e25a: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED 4e25e: 2200 movel %d0,%d1 <== NOT EXECUTED 4e260: c282 andl %d2,%d1 <== NOT EXECUTED 4e262: c284 andl %d4,%d1 <== NOT EXECUTED 4e264: 6718 beqs 4e27e <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED api->signals_pending &= ~mask; 4e266: 2200 movel %d0,%d1 <== NOT EXECUTED 4e268: 4681 notl %d1 <== NOT EXECUTED 4e26a: c282 andl %d2,%d1 <== NOT EXECUTED do_callout = true; 4e26c: 7001 moveq #1,%d0 <== NOT EXECUTED _POSIX_signals_Clear_process_signals( signo ); do_callout = true; } } else { if ( mask & (api->signals_pending & signals_blocked) ) { api->signals_pending &= ~mask; 4e26e: 2141 00d4 movel %d1,%a0@(212) <== NOT EXECUTED do_callout = true; } } _ISR_Enable( level ); 4e272: 46c3 movew %d3,%sr <== NOT EXECUTED return do_callout; } 4e274: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e27a: 4e5e unlk %fp <== NOT EXECUTED 4e27c: 4e75 rts <== NOT EXECUTED bool do_callout; POSIX_signals_Siginfo_node *psiginfo; mask = signo_to_mask( signo ); do_callout = false; 4e27e: 4200 clrb %d0 <== NOT EXECUTED if ( mask & (api->signals_pending & signals_blocked) ) { api->signals_pending &= ~mask; do_callout = true; } } _ISR_Enable( level ); 4e280: 46c3 movew %d3,%sr <== NOT EXECUTED return do_callout; } 4e282: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e288: 4e5e unlk %fp <== NOT EXECUTED 4e28a: 4e75 rts <== NOT EXECUTED 4e28c: 41f9 0006 032c lea 6032c <_POSIX_signals_Siginfo>,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4e292: 2200 movel %d0,%d1 <== NOT EXECUTED 4e294: 0681 0006 0330 addil #394032,%d1 <== NOT EXECUTED 4e29a: 2470 0800 moveal %a0@(00000000,%d0:l),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4e29e: b28a cmpl %a2,%d1 <== NOT EXECUTED 4e2a0: 6748 beqs 4e2ea <_POSIX_signals_Clear_signals+0x116><== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 4e2a2: 2252 moveal %a2@,%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4e2a4: 2200 movel %d0,%d1 <== NOT EXECUTED 4e2a6: d288 addl %a0,%d1 <== NOT EXECUTED Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; head->next = new_first; 4e2a8: 2189 0800 movel %a1,%a0@(00000000,%d0:l) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4e2ac: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED if ( is_global ) { if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); _POSIX_signals_Clear_process_signals( signo ); 4e2b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2b2: 4e93 jsr %a3@ <== NOT EXECUTED * It may be impossible to get here with an empty chain * BUT until that is proven we need to be defensive and * protect against it. */ if ( psiginfo ) { *info = psiginfo->Info; 4e2b4: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 4e2b8: 588f addql #4,%sp <== NOT EXECUTED 4e2ba: 20ea 0008 movel %a2@(8),%a0@+ <== NOT EXECUTED 4e2be: 20ea 000c movel %a2@(12),%a0@+ <== NOT EXECUTED 4e2c2: 20aa 0010 movel %a2@(16),%a0@ <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 4e2c6: 2079 0006 02bc moveal 602bc <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED the_node->next = tail; 4e2cc: 24bc 0006 02b8 movel #393912,%a2@ <== NOT EXECUTED tail->previous = the_node; 4e2d2: 23ca 0006 02bc movel %a2,602bc <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED old_last->next = the_node; 4e2d8: 208a movel %a2,%a0@ <== NOT EXECUTED the_node->previous = old_last; 4e2da: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED &psiginfo->Node ); } else do_callout = false; } _POSIX_signals_Clear_process_signals( signo ); 4e2de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2e0: 4e93 jsr %a3@ <== NOT EXECUTED 4e2e2: 588f addql #4,%sp <== NOT EXECUTED do_callout = true; 4e2e4: 7001 moveq #1,%d0 <== NOT EXECUTED 4e2e6: 6000 ff54 braw 4e23c <_POSIX_signals_Clear_signals+0x68><== NOT EXECUTED if ( is_global ) { if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); _POSIX_signals_Clear_process_signals( signo ); 4e2ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2ec: 4e93 jsr %a3@ <== NOT EXECUTED 4e2ee: 588f addql #4,%sp <== NOT EXECUTED &psiginfo->Node ); } else do_callout = false; } _POSIX_signals_Clear_process_signals( signo ); 4e2f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2f2: 4e93 jsr %a3@ <== NOT EXECUTED 4e2f4: 588f addql #4,%sp <== NOT EXECUTED do_callout = true; 4e2f6: 7001 moveq #1,%d0 <== NOT EXECUTED 4e2f8: 6000 ff42 braw 4e23c <_POSIX_signals_Clear_signals+0x68><== NOT EXECUTED =============================================================================== 000471d8 <_POSIX_signals_Get_lowest>: sigset_t set ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 471d8: 701b moveq #27,%d0 <== NOT EXECUTED #include int _POSIX_signals_Get_lowest( sigset_t set ) { 471da: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 471de: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 471e2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 471e6: 7601 moveq #1,%d3 <== NOT EXECUTED #include #include #include #include int _POSIX_signals_Get_lowest( 471e8: 2200 movel %d0,%d1 <== NOT EXECUTED 471ea: 5381 subql #1,%d1 <== NOT EXECUTED 471ec: 2803 movel %d3,%d4 <== NOT EXECUTED 471ee: e3ac lsll %d1,%d4 <== NOT EXECUTED 471f0: 2204 movel %d4,%d1 <== NOT EXECUTED ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { if ( set & signo_to_mask( signo ) ) { 471f2: c282 andl %d2,%d1 <== NOT EXECUTED 471f4: 6626 bnes 4721c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED sigset_t set ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 471f6: 5280 addql #1,%d0 <== NOT EXECUTED 471f8: 123c 0020 moveb #32,%d1 <== NOT EXECUTED 471fc: b280 cmpl %d0,%d1 <== NOT EXECUTED 471fe: 66e8 bnes 471e8 <_POSIX_signals_Get_lowest+0x10> <== NOT EXECUTED 47200: 7001 moveq #1,%d0 <== NOT EXECUTED 47202: 7601 moveq #1,%d3 <== NOT EXECUTED #include #include #include #include int _POSIX_signals_Get_lowest( 47204: 2200 movel %d0,%d1 <== NOT EXECUTED 47206: 5381 subql #1,%d1 <== NOT EXECUTED 47208: 2803 movel %d3,%d4 <== NOT EXECUTED 4720a: e3ac lsll %d1,%d4 <== NOT EXECUTED 4720c: 2204 movel %d4,%d1 <== NOT EXECUTED #if (SIGHUP != 1) #error "Assumption that SIGHUP==1 violated!!" #endif for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { if ( set & signo_to_mask( signo ) ) { 4720e: c282 andl %d2,%d1 <== NOT EXECUTED 47210: 660a bnes 4721c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED */ #if (SIGHUP != 1) #error "Assumption that SIGHUP==1 violated!!" #endif for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 47212: 5280 addql #1,%d0 <== NOT EXECUTED 47214: 123c 001b moveb #27,%d1 <== NOT EXECUTED 47218: b280 cmpl %d0,%d1 <== NOT EXECUTED 4721a: 66e8 bnes 47204 <_POSIX_signals_Get_lowest+0x2c> <== NOT EXECUTED * a return 0. This routine will NOT be called unless a signal * is pending in the set passed in. */ found_it: return signo; } 4721c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 47220: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b796 <_POSIX_signals_Post_switch_extension>: */ void _POSIX_signals_Post_switch_extension( Thread_Control *the_thread ) { 4b796: 4e56 fff0 linkw %fp,#-16 4b79a: 206e 0008 moveal %fp@(8),%a0 4b79e: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ POSIX_API_Control *api; int signo; ISR_Level level; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4b7a2: 2468 0102 moveal %a0@(258),%a2 /* * api may be NULL in case of a thread close in progress */ if ( !api ) 4b7a6: 4a8a tstl %a2 4b7a8: 6700 008e beqw 4b838 <_POSIX_signals_Post_switch_extension+0xa2> * * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); 4b7ac: 263c 0000 0700 movel #1792,%d3 4b7b2: 47f9 0004 e030 lea 4e030 <_POSIX_signals_Check_signal>,%a3 4b7b8: 2003 movel %d3,%d0 4b7ba: 40c1 movew %sr,%d1 4b7bc: 8081 orl %d1,%d0 4b7be: 46c0 movew %d0,%sr if ( !(~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending)) ) { 4b7c0: 2039 0006 0328 movel 60328 <_POSIX_signals_Pending>,%d0 * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); if ( !(~api->signals_blocked & 4b7c6: 242a 00d0 movel %a2@(208),%d2 4b7ca: 4682 notl %d2 (api->signals_pending | _POSIX_signals_Pending)) ) { 4b7cc: 80aa 00d4 orl %a2@(212),%d0 * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); if ( !(~api->signals_blocked & 4b7d0: c082 andl %d2,%d0 4b7d2: 6762 beqs 4b836 <_POSIX_signals_Post_switch_extension+0xa0><== ALWAYS TAKEN (api->signals_pending | _POSIX_signals_Pending)) ) { _ISR_Enable( level ); break; } _ISR_Enable( level ); 4b7d4: 46c1 movew %d1,%sr <== NOT EXECUTED for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4b7d6: 741b moveq #27,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); 4b7d8: 42a7 clrl %sp@- <== NOT EXECUTED 4b7da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b7dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b7de: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); 4b7e0: 4878 0001 pea 1 <== NOT EXECUTED 4b7e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4b7e6: 5282 addql #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); 4b7e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b7ea: 4e93 jsr %a3@ <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4b7ec: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b7f0: 7020 moveq #32,%d0 <== NOT EXECUTED 4b7f2: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b7f4: 66e2 bnes 4b7d8 <_POSIX_signals_Post_switch_extension+0x42><== NOT EXECUTED 4b7f6: 7401 moveq #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { _POSIX_signals_Check_signal( api, signo, false ); 4b7f8: 42a7 clrl %sp@- <== NOT EXECUTED 4b7fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b7fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b7fe: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); 4b800: 4878 0001 pea 1 <== NOT EXECUTED 4b804: 2f02 movel %d2,%sp@- <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4b806: 5282 addql #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); 4b808: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b80a: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4b80c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b810: 701b moveq #27,%d0 <== NOT EXECUTED 4b812: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b814: 67a2 beqs 4b7b8 <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); 4b816: 42a7 clrl %sp@- <== NOT EXECUTED 4b818: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b81a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b81c: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); 4b81e: 4878 0001 pea 1 <== NOT EXECUTED 4b822: 2f02 movel %d2,%sp@- <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4b824: 5282 addql #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); 4b826: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b828: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4b82a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b82e: 701b moveq #27,%d0 <== NOT EXECUTED 4b830: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b832: 66c4 bnes 4b7f8 <_POSIX_signals_Post_switch_extension+0x62><== NOT EXECUTED 4b834: 6082 bras 4b7b8 <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED */ while (1) { _ISR_Disable( level ); if ( !(~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending)) ) { _ISR_Enable( level ); 4b836: 46c1 movew %d1,%sr for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } } } 4b838: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4b83e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005c3bc <_POSIX_signals_Set_process_signals>: sigset_t mask ) { ISR_Level level; _ISR_Disable( level ); 5c3bc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _POSIX_signals_Set_process_signals( sigset_t mask ) { 5c3c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 5c3c6: 40c1 movew %sr,%d1 <== NOT EXECUTED 5c3c8: 8081 orl %d1,%d0 <== NOT EXECUTED 5c3ca: 46c0 movew %d0,%sr <== NOT EXECUTED _POSIX_signals_Pending |= mask; 5c3cc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5c3d0: 81b9 0006 0328 orl %d0,60328 <_POSIX_signals_Pending> <== NOT EXECUTED _ISR_Enable( level ); 5c3d6: 46c1 movew %d1,%sr <== NOT EXECUTED } 5c3d8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461c4 <_POSIX_signals_Ualarm_TSR>: void _POSIX_signals_Ualarm_TSR( Objects_Id id __attribute__((unused)), void *argument __attribute__((unused)) ) { 461c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * Send a SIGALRM but if there is a problem, ignore it. * It's OK, there isn't a way this should fail. */ (void) kill( getpid(), SIGALRM ); 461c8: 4eb9 0004 2fa4 jsr 42fa4 <== NOT EXECUTED 461ce: 4878 000e pea e <== NOT EXECUTED 461d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461d4: 4eb9 0004 5fbc jsr 45fbc <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Reset( Watchdog_Control *the_watchdog ) { (void) _Watchdog_Remove( the_watchdog ); 461da: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 461e0: 4eb9 0004 a038 jsr 4a038 <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 461e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 461ea: 203c 0006 1ebc movel #401084,%d0 <== NOT EXECUTED 461f0: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 461f4: 203c 0006 1768 movel #399208,%d0 <== NOT EXECUTED 461fa: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED /* * If the reset interval is non-zero, reschedule ourselves. */ _Watchdog_Reset( &_POSIX_signals_Ualarm_timer ); } 461fe: 4e5e unlk %fp <== NOT EXECUTED 46200: 4ef9 0004 9ee4 jmp 49ee4 <_Watchdog_Insert> <== NOT EXECUTED =============================================================================== 0005c3dc <_POSIX_signals_Unblock_thread>: 5c3dc: 7001 moveq #1,%d0 <== NOT EXECUTED bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 5c3de: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5c3e2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5c3e6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 5c3ea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c3ee: 2608 movel %a0,%d3 <== NOT EXECUTED 5c3f0: 5383 subql #1,%d3 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 5c3f2: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED 5c3f6: 2401 movel %d1,%d2 <== NOT EXECUTED 5c3f8: 0282 1000 8000 andil #268468224,%d2 <== NOT EXECUTED bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 5c3fe: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED POSIX_API_Control *api; sigset_t mask; siginfo_t *the_info = NULL; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5c402: 226a 0102 moveal %a2@(258),%a1 <== NOT EXECUTED 5c406: e7a8 lsll %d3,%d0 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 5c408: 0c82 1000 8000 cmpil #268468224,%d2 <== NOT EXECUTED 5c40e: 6770 beqs 5c480 <_POSIX_signals_Unblock_thread+0xa4><== NOT EXECUTED } /* * Thread is not waiting due to a sigwait. */ if ( ~api->signals_blocked & mask ) { 5c410: 2429 00d0 movel %a1@(208),%d2 <== NOT EXECUTED 5c414: 4682 notl %d2 <== NOT EXECUTED 5c416: c082 andl %d2,%d0 <== NOT EXECUTED 5c418: 675a beqs 5c474 <_POSIX_signals_Unblock_thread+0x98><== 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 ) ) { 5c41a: 0801 001c btst #28,%d1 <== NOT EXECUTED 5c41e: 673e beqs 5c45e <_POSIX_signals_Unblock_thread+0x82><== NOT EXECUTED the_thread->Wait.return_code = EINTR; 5c420: 7004 moveq #4,%d0 <== NOT EXECUTED 5c422: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 5c426: 2001 movel %d1,%d0 <== NOT EXECUTED 5c428: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED /* * In pthread_cond_wait, a thread will be blocking on a thread * queue, but is also interruptible by a POSIX signal. */ if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) ) 5c42e: 6600 00a0 bnew 5c4d0 <_POSIX_signals_Unblock_thread+0xf4><== NOT EXECUTED _Thread_queue_Extract_with_proxy( the_thread ); else if ( _States_Is_delaying(the_thread->current_state) ) { 5c432: 44c1 movew %d1,%ccr <== NOT EXECUTED 5c434: 6a3e bpls 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 5c436: 486a 0048 pea %a2@(72) <== NOT EXECUTED 5c43a: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 5c440: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 5c446: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c448: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED 5c44e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; } 5c452: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; 5c458: 4200 clrb %d0 <== NOT EXECUTED } 5c45a: 4e5e unlk %fp <== NOT EXECUTED 5c45c: 4e75 rts <== NOT EXECUTED else if ( _States_Is_delaying(the_thread->current_state) ) { (void) _Watchdog_Remove( &the_thread->Timer ); _Thread_Unblock( the_thread ); } } else if ( the_thread->current_state == STATES_READY ) { 5c45e: 4a81 tstl %d1 <== NOT EXECUTED 5c460: 6612 bnes 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 5c462: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c468: 670a beqs 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED 5c46a: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c470: 6700 0090 beqw 5c502 <_POSIX_signals_Unblock_thread+0x126><== NOT EXECUTED _Thread_Dispatch_necessary = true; } } return false; } 5c474: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; 5c47a: 4200 clrb %d0 <== NOT EXECUTED } 5c47c: 4e5e unlk %fp <== NOT EXECUTED 5c47e: 4e75 rts <== NOT EXECUTED * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { 5c480: 2200 movel %d0,%d1 <== NOT EXECUTED 5c482: c2aa 0030 andl %a2@(48),%d1 <== NOT EXECUTED 5c486: 672e beqs 5c4b6 <_POSIX_signals_Unblock_thread+0xda><== NOT EXECUTED the_thread->Wait.return_code = EINTR; 5c488: 7004 moveq #4,%d0 <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; 5c48a: 266a 0028 moveal %a2@(40),%a3 <== NOT EXECUTED */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { the_thread->Wait.return_code = EINTR; 5c48e: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { 5c492: 4a84 tstl %d4 <== NOT EXECUTED 5c494: 6750 beqs 5c4e6 <_POSIX_signals_Unblock_thread+0x10a><== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; } else { *the_info = *info; 5c496: 2244 moveal %d4,%a1 <== NOT EXECUTED 5c498: 204b moveal %a3,%a0 <== NOT EXECUTED 5c49a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c49c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c49e: 2091 movel %a1@,%a0@ <== NOT EXECUTED } _Thread_queue_Extract_with_proxy( the_thread ); 5c4a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4a2: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED return true; 5c4a8: 588f addql #4,%sp <== NOT EXECUTED 5c4aa: 7001 moveq #1,%d0 <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; } 5c4ac: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c4b2: 4e5e unlk %fp <== NOT EXECUTED 5c4b4: 4e75 rts <== NOT EXECUTED * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { 5c4b6: 2229 00d0 movel %a1@(208),%d1 <== NOT EXECUTED 5c4ba: 4681 notl %d1 <== NOT EXECUTED 5c4bc: c081 andl %d1,%d0 <== NOT EXECUTED 5c4be: 67b4 beqs 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED the_thread->Wait.return_code = EINTR; 5c4c0: 7004 moveq #4,%d0 <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; 5c4c2: 266a 0028 moveal %a2@(40),%a3 <== NOT EXECUTED */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { the_thread->Wait.return_code = EINTR; 5c4c6: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { 5c4ca: 4a84 tstl %d4 <== NOT EXECUTED 5c4cc: 66c8 bnes 5c496 <_POSIX_signals_Unblock_thread+0xba><== NOT EXECUTED 5c4ce: 6016 bras 5c4e6 <_POSIX_signals_Unblock_thread+0x10a><== NOT EXECUTED /* * In pthread_cond_wait, a thread will be blocking on a thread * queue, but is also interruptible by a POSIX signal. */ if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) ) _Thread_queue_Extract_with_proxy( the_thread ); 5c4d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4d2: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 5c4d8: 588f addql #4,%sp <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; } 5c4da: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } } return false; 5c4e0: 4200 clrb %d0 <== NOT EXECUTED } 5c4e2: 4e5e unlk %fp <== NOT EXECUTED 5c4e4: 4e75 rts <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { the_info->si_signo = signo; the_info->si_code = SI_USER; 5c4e6: 103c 0001 moveb #1,%d0 <== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { the_info->si_signo = signo; 5c4ea: 2688 movel %a0,%a3@ <== NOT EXECUTED the_info->si_code = SI_USER; 5c4ec: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED the_info->si_value.sival_int = 0; 5c4f0: 42ab 0008 clrl %a3@(8) <== NOT EXECUTED } else { *the_info = *info; } _Thread_queue_Extract_with_proxy( the_thread ); 5c4f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4f6: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED return true; 5c4fc: 588f addql #4,%sp <== NOT EXECUTED 5c4fe: 7001 moveq #1,%d0 <== NOT EXECUTED 5c500: 60aa bras 5c4ac <_POSIX_signals_Unblock_thread+0xd0><== NOT EXECUTED _Thread_Unblock( the_thread ); } } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; 5c502: 7001 moveq #1,%d0 <== NOT EXECUTED } } return false; } 5c504: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c50a: 4e5e unlk %fp <== NOT EXECUTED _Thread_Unblock( the_thread ); } } else if ( the_thread->current_state == STATES_READY ) { if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; 5c50c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED } } return false; 5c512: 4200 clrb %d0 <== NOT EXECUTED } ... =============================================================================== 00048384 <_Protected_heap_Extend>: bool _Protected_heap_Extend( Heap_Control *the_heap, void *starting_address, uintptr_t size ) { 48384: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED bool extend_ok; uintptr_t amount_extended; _RTEMS_Lock_allocator(); 48388: 2f39 0006 0404 movel 60404 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4838e: 4eb9 0004 7188 jsr 47188 <_API_Mutex_Lock> <== NOT EXECUTED extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended); 48394: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48398: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4839c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 483a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 483a4: 4eb9 0004 cab0 jsr 4cab0 <_Heap_Extend> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 483aa: 2f39 0006 0404 movel 60404 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 483b0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 483b4: 4eb9 0004 71e8 jsr 471e8 <_API_Mutex_Unlock> <== NOT EXECUTED return extend_ok; } 483ba: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 483be: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004cf98 <_Protected_heap_Get_free_information>: bool _Protected_heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 4cf98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * TBD: _Heap_Get_free_information does not error check or return status. */ _RTEMS_Lock_allocator(); 4cf9c: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cfa2: 4eb9 0004 b2a4 jsr 4b2a4 <_API_Mutex_Lock> <== NOT EXECUTED _Heap_Get_free_information( the_heap, info ); 4cfa8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4cfac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cfb0: 4eb9 0005 18fc jsr 518fc <_Heap_Get_free_information> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4cfb6: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cfbc: 4eb9 0004 b304 jsr 4b304 <_API_Mutex_Unlock> <== NOT EXECUTED return true; } 4cfc2: 7001 moveq #1,%d0 <== NOT EXECUTED 4cfc4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004886c <_Protected_heap_Get_information>: bool _Protected_heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { 4886c: 4e56 0000 linkw %fp,#0 48870: 2f03 movel %d3,%sp@- 48872: 262e 000c movel %fp@(12),%d3 48876: 2f02 movel %d2,%sp@- 48878: 242e 0008 movel %fp@(8),%d2 if ( !the_heap ) 4887c: 6738 beqs 488b6 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN return false; if ( !the_info ) 4887e: 4a83 tstl %d3 48880: 6734 beqs 488b6 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN return false; _RTEMS_Lock_allocator(); 48882: 2f39 0006 07c8 movel 607c8 <_RTEMS_Allocator_Mutex>,%sp@- 48888: 4eb9 0004 7638 jsr 47638 <_API_Mutex_Lock> _Heap_Get_information( the_heap, the_info ); 4888e: 2f03 movel %d3,%sp@- 48890: 2f02 movel %d2,%sp@- 48892: 4eb9 0004 d3f8 jsr 4d3f8 <_Heap_Get_information> _RTEMS_Unlock_allocator(); 48898: 2f39 0006 07c8 movel 607c8 <_RTEMS_Allocator_Mutex>,%sp@- 4889e: 4eb9 0004 7698 jsr 47698 <_API_Mutex_Unlock> return true; } 488a4: 242e fff8 movel %fp@(-8),%d2 _RTEMS_Lock_allocator(); _Heap_Get_information( the_heap, the_info ); _RTEMS_Unlock_allocator(); return true; 488a8: 4fef 0010 lea %sp@(16),%sp } 488ac: 262e fffc movel %fp@(-4),%d3 488b0: 4e5e unlk %fp _RTEMS_Lock_allocator(); _Heap_Get_information( the_heap, the_info ); _RTEMS_Unlock_allocator(); return true; 488b2: 7001 moveq #1,%d0 } 488b4: 4e75 rts 488b6: 242e fff8 movel %fp@(-8),%d2 488ba: 262e fffc movel %fp@(-4),%d3 488be: 4e5e unlk %fp { if ( !the_heap ) return false; if ( !the_info ) return false; 488c0: 4200 clrb %d0 <== NOT EXECUTED _RTEMS_Lock_allocator(); _Heap_Get_information( the_heap, the_info ); _RTEMS_Unlock_allocator(); return true; } =============================================================================== 0005c640 <_Protected_heap_Resize_block>: bool _Protected_heap_Resize_block( Heap_Control *the_heap, void *starting_address, uintptr_t size ) { 5c640: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 5c644: 2f02 movel %d2,%sp@- <== NOT EXECUTED Heap_Resize_status status; uintptr_t old_mem_size; uintptr_t avail_mem_size; _RTEMS_Lock_allocator(); 5c646: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5c64c: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Resize_block( 5c652: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5c656: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c65a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5c65e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5c662: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c666: 4eb9 0005 c68c jsr 5c68c <_Heap_Resize_block> <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5c66c: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED Heap_Resize_status status; uintptr_t old_mem_size; uintptr_t avail_mem_size; _RTEMS_Lock_allocator(); status = _Heap_Resize_block( 5c672: 2400 movel %d0,%d2 <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5c674: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED return (status == HEAP_RESIZE_SUCCESSFUL); 5c67a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5c67e: 4a82 tstl %d2 <== NOT EXECUTED 5c680: 57c0 seq %d0 <== NOT EXECUTED } 5c682: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5c686: 4480 negl %d0 <== NOT EXECUTED 5c688: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d07c <_Protected_heap_Walk>: bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 4d07c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED * then it is forbidden to lock a mutex. But since we are inside * a critical section, it should be safe to walk it unlocked. * * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { 4d080: 2039 0006 60b4 movel 660b4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 4d086: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4d08a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d08e: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4d092: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED * then it is forbidden to lock a mutex. But since we are inside * a critical section, it should be safe to walk it unlocked. * * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { 4d096: 4a80 tstl %d0 <== NOT EXECUTED 4d098: 6720 beqs 4d0ba <_Protected_heap_Walk+0x3e> <== NOT EXECUTED _RTEMS_Lock_allocator(); status = _Heap_Walk( the_heap, source, do_dump ); _RTEMS_Unlock_allocator(); } else { status = _Heap_Walk( the_heap, source, do_dump ); 4d09a: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 4d09e: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 4d0a4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED 4d0a8: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED } return status; } 4d0ac: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d0b2: 4e5e unlk %fp <== NOT EXECUTED if ( !_Thread_Dispatch_disable_level ) { _RTEMS_Lock_allocator(); status = _Heap_Walk( the_heap, source, do_dump ); _RTEMS_Unlock_allocator(); } else { status = _Heap_Walk( the_heap, source, do_dump ); 4d0b4: 4ef9 0004 c166 jmp 4c166 <_Heap_Walk> <== NOT EXECUTED * a critical section, it should be safe to walk it unlocked. * * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { _RTEMS_Lock_allocator(); 4d0ba: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED status = _Heap_Walk( the_heap, source, do_dump ); 4d0c0: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED * a critical section, it should be safe to walk it unlocked. * * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { _RTEMS_Lock_allocator(); 4d0c6: 4eb9 0004 b2a4 jsr 4b2a4 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Walk( the_heap, source, do_dump ); 4d0cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d0ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d0d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d0d2: 4eb9 0004 c166 jsr 4c166 <_Heap_Walk> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4d0d8: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4d0de: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4d0e2: 4eb9 0004 b304 jsr 4b304 <_API_Mutex_Unlock> <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 4d0e8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { _RTEMS_Lock_allocator(); status = _Heap_Walk( the_heap, source, do_dump ); _RTEMS_Unlock_allocator(); 4d0ec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 4d0f0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d0f6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c300 <_RTEMS_Tasks_Invoke_task_variable_dtor>: void _RTEMS_Tasks_Invoke_task_variable_dtor( Thread_Control *the_thread, rtems_task_variable_t *tvp ) { 4c300: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; if (_Thread_Is_executing(the_thread)) { 4c304: 2039 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED void _RTEMS_Tasks_Invoke_task_variable_dtor( Thread_Control *the_thread, rtems_task_variable_t *tvp ) { 4c30a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c30c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; 4c310: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED if (_Thread_Is_executing(the_thread)) { 4c314: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4c318: 671e beqs 4c338 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED value = *tvp->ptr; *tvp->ptr = tvp->gval; } else { value = tvp->tval; 4c31a: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED } if ( dtor ) 4c31e: 4a88 tstl %a0 <== NOT EXECUTED 4c320: 6706 beqs 4c328 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED (*dtor)(value); 4c322: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c324: 4e90 jsr %a0@ <== NOT EXECUTED 4c326: 588f addql #4,%sp <== NOT EXECUTED _Workspace_Free(tvp); 4c328: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4c32c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c330: 4e5e unlk %fp <== NOT EXECUTED } if ( dtor ) (*dtor)(value); _Workspace_Free(tvp); 4c332: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; if (_Thread_Is_executing(the_thread)) { value = *tvp->ptr; 4c338: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED 4c33c: 2011 movel %a1@,%d0 <== NOT EXECUTED *tvp->ptr = tvp->gval; 4c33e: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED 4c342: 60da bras 4c31e <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED =============================================================================== 0004c22e <_RTEMS_tasks_Create_extension>: bool _RTEMS_tasks_Create_extension( Thread_Control *executing, Thread_Control *created ) { 4c22e: 4e56 0000 linkw %fp,#0 4c232: 2f0a movel %a2,%sp@- 4c234: 246e 000c moveal %fp@(12),%a2 /* * Notepads must be the last entry in the structure and they * can be left off if disabled in the configuration. */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) 4c238: 4a39 0005 e394 tstb 5e394 4c23e: 6758 beqs 4c298 <_RTEMS_tasks_Create_extension+0x6a> /* * Notepads must be the last entry in the structure and they * can be left off if disabled in the configuration. */ to_allocate = sizeof( RTEMS_API_Control ); 4c240: 705e moveq #94,%d0 if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); 4c242: 2f00 movel %d0,%sp@- 4c244: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !api ) 4c24a: 588f addql #4,%sp */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); 4c24c: 2040 moveal %d0,%a0 if ( !api ) 4c24e: 4a80 tstl %d0 4c250: 6758 beqs 4c2aa <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN return false; created->API_Extensions[ THREAD_API_RTEMS ] = api; 4c252: 2540 00fe movel %d0,%a2@(254) */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 4c256: 4200 clrb %d0 api->pending_events = EVENT_SETS_NONE_PENDING; 4c258: 4290 clrl %a0@ 4c25a: 1140 0008 moveb %d0,%a0@(8) api->event_condition = 0; 4c25e: 42a8 0004 clrl %a0@(4) information->handler = NULL; 4c262: 42a8 000a clrl %a0@(10) information->mode_set = RTEMS_DEFAULT_MODES; 4c266: 42a8 000e clrl %a0@(14) information->signals_posted = 0; 4c26a: 42a8 0012 clrl %a0@(18) information->signals_pending = 0; 4c26e: 42a8 0016 clrl %a0@(22) information->nest_level = 0; 4c272: 42a8 001a clrl %a0@(26) _ASR_Initialize( &api->Signal ); created->task_variables = NULL; 4c276: 42aa 010a clrl %a2@(266) if ( rtems_configuration_get_notepads_enabled() ) { 4c27a: 4a39 0005 e394 tstb 5e394 4c280: 670c beqs 4c28e <_RTEMS_tasks_Create_extension+0x60> * task is created via another API, then this routine is invoked * and this API given the opportunity to initialize its extension * area. */ bool _RTEMS_tasks_Create_extension( 4c282: 41e8 001e lea %a0@(30),%a0 4c286: 7010 moveq #16,%d0 _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; 4c288: 4298 clrl %a0@+ 4c28a: 5380 subql #1,%d0 api->event_condition = 0; _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) 4c28c: 66fa bnes 4c288 <_RTEMS_tasks_Create_extension+0x5a> api->Notepads[i] = 0; } return true; } 4c28e: 246e fffc moveal %fp@(-4),%a2 4c292: 4e5e unlk %fp if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; } return true; 4c294: 7001 moveq #1,%d0 } 4c296: 4e75 rts * Notepads must be the last entry in the structure and they * can be left off if disabled in the configuration. */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); 4c298: 701e moveq #30,%d0 api = _Workspace_Allocate( to_allocate ); 4c29a: 2f00 movel %d0,%sp@- 4c29c: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !api ) 4c2a2: 588f addql #4,%sp */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); 4c2a4: 2040 moveal %d0,%a0 if ( !api ) 4c2a6: 4a80 tstl %d0 4c2a8: 66a8 bnes 4c252 <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; } return true; } 4c2aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c2ae: 4e5e unlk %fp <== NOT EXECUTED to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); if ( !api ) return false; 4c2b0: 4200 clrb %d0 <== NOT EXECUTED for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; } return true; } =============================================================================== 0004c1d8 <_RTEMS_tasks_Delete_extension>: void _RTEMS_tasks_Delete_extension( Thread_Control *executing, Thread_Control *deleted ) { 4c1d8: 4e56 fff4 linkw %fp,#-12 4c1dc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 4c1e0: 246e 000c moveal %fp@(12),%a2 4c1e4: 47f9 0004 c300 lea 4c300 <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3 /* * Free per task variable memory */ tvp = deleted->task_variables; 4c1ea: 206a 010a moveal %a2@(266),%a0 deleted->task_variables = NULL; 4c1ee: 42aa 010a clrl %a2@(266) while (tvp) { 4c1f2: 4a88 tstl %a0 4c1f4: 671e beqs 4c214 <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN next = (rtems_task_variable_t *)tvp->next; 4c1f6: 2410 movel %a0@,%d2 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4c1f8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c1fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1fc: 4e93 jsr %a3@ <== NOT EXECUTED * Free per task variable memory */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { 4c1fe: 508f addql #8,%sp <== NOT EXECUTED 4c200: 4a82 tstl %d2 <== NOT EXECUTED 4c202: 6710 beqs 4c214 <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED next = (rtems_task_variable_t *)tvp->next; _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); tvp = next; 4c204: 2042 moveal %d2,%a0 <== NOT EXECUTED */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { next = (rtems_task_variable_t *)tvp->next; 4c206: 2410 movel %a0@,%d2 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4c208: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c20a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c20c: 4e93 jsr %a3@ <== NOT EXECUTED * Free per task variable memory */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { 4c20e: 508f addql #8,%sp <== NOT EXECUTED 4c210: 4a82 tstl %d2 <== NOT EXECUTED 4c212: 66f0 bnes 4c204 <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED /* * Free API specific memory */ (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); 4c214: 2f2a 00fe movel %a2@(254),%sp@- 4c218: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; 4c21e: 588f addql #4,%sp 4c220: 42aa 00fe clrl %a2@(254) } 4c224: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 4c22a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004687c <_RTEMS_tasks_Initialize_user_tasks_body>: * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) { 4687c: 4e56 ffe4 linkw %fp,#-28 46880: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ rtems_initialization_tasks_table *user_tasks; /* * Move information into local variables */ user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table; 46884: 2479 0005 e3ba moveal 5e3ba ,%a2 maximum = Configuration_RTEMS_API.number_of_initialization_tasks; 4688a: 2639 0005 e3b6 movel 5e3b6 ,%d3 /* * Verify that we have a set of user tasks to iterate */ if ( !user_tasks ) 46890: 4a8a tstl %a2 46892: 6754 beqs 468e8 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c> return; /* * Now iterate over the initialization tasks and create/start them. */ for ( index=0 ; index < maximum ; index++ ) { 46894: 4a83 tstl %d3 46896: 6750 beqs 468e8 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c><== NEVER TAKEN 46898: 280e movel %fp,%d4 4689a: 4282 clrl %d2 4689c: 5984 subql #4,%d4 4689e: 47f9 0004 6654 lea 46654 ,%a3 &id ); if ( !rtems_is_status_successful( return_value ) ) _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value ); return_value = rtems_task_start( 468a4: 49f9 0004 6904 lea 46904 ,%a4 /* * Now iterate over the initialization tasks and create/start them. */ for ( index=0 ; index < maximum ; index++ ) { return_value = rtems_task_create( 468aa: 2f04 movel %d4,%sp@- 468ac: 2f2a 000c movel %a2@(12),%sp@- 468b0: 2f2a 0014 movel %a2@(20),%sp@- 468b4: 2f2a 0004 movel %a2@(4),%sp@- 468b8: 2f2a 0008 movel %a2@(8),%sp@- 468bc: 2f12 movel %a2@,%sp@- 468be: 4e93 jsr %a3@ user_tasks[ index ].stack_size, user_tasks[ index ].mode_set, user_tasks[ index ].attribute_set, &id ); if ( !rtems_is_status_successful( return_value ) ) 468c0: 4fef 0018 lea %sp@(24),%sp 468c4: 4a80 tstl %d0 468c6: 662a bnes 468f2 <_RTEMS_tasks_Initialize_user_tasks_body+0x76> _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value ); return_value = rtems_task_start( 468c8: 2f2a 0018 movel %a2@(24),%sp@- 468cc: 2f2a 0010 movel %a2@(16),%sp@- 468d0: 2f2e fffc movel %fp@(-4),%sp@- 468d4: 4e94 jsr %a4@ id, user_tasks[ index ].entry_point, user_tasks[ index ].argument ); if ( !rtems_is_status_successful( return_value ) ) 468d6: 4fef 000c lea %sp@(12),%sp 468da: 4a80 tstl %d0 468dc: 6614 bnes 468f2 <_RTEMS_tasks_Initialize_user_tasks_body+0x76> return; /* * Now iterate over the initialization tasks and create/start them. */ for ( index=0 ; index < maximum ; index++ ) { 468de: 5282 addql #1,%d2 468e0: 45ea 001c lea %a2@(28),%a2 468e4: b483 cmpl %d3,%d2 468e6: 65c2 bcss 468aa <_RTEMS_tasks_Initialize_user_tasks_body+0x2e><== NEVER TAKEN user_tasks[ index ].argument ); if ( !rtems_is_status_successful( return_value ) ) _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value ); } } 468e8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 468ee: 4e5e unlk %fp 468f0: 4e75 rts id, user_tasks[ index ].entry_point, user_tasks[ index ].argument ); if ( !rtems_is_status_successful( return_value ) ) _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value ); 468f2: 2f00 movel %d0,%sp@- 468f4: 4878 0001 pea 1 468f8: 4878 0001 pea 1 468fc: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> ... =============================================================================== 0004c15c <_RTEMS_tasks_Post_switch_extension>: */ void _RTEMS_tasks_Post_switch_extension( Thread_Control *executing ) { 4c15c: 4e56 ffec linkw %fp,#-20 4c160: 206e 0008 moveal %fp@(8),%a0 4c164: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ RTEMS_API_Control *api; ASR_Information *asr; rtems_signal_set signal_set; Modes_Control prev_mode; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4c168: 2468 00fe moveal %a0@(254),%a2 if ( !api ) 4c16c: 4a8a tstl %a2 4c16e: 671a beqs 4c18a <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN * Signal Processing */ asr = &api->Signal; _ISR_Disable( level ); 4c170: 203c 0000 0700 movel #1792,%d0 4c176: 40c1 movew %sr,%d1 4c178: 8081 orl %d1,%d0 4c17a: 46c0 movew %d0,%sr signal_set = asr->signals_posted; 4c17c: 242a 0012 movel %a2@(18),%d2 asr->signals_posted = 0; 4c180: 42aa 0012 clrl %a2@(18) _ISR_Enable( level ); 4c184: 46c1 movew %d1,%sr if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 4c186: 4a82 tstl %d2 4c188: 660a bnes 4c194 <_RTEMS_tasks_Post_switch_extension+0x38><== NEVER TAKEN (*asr->handler)( signal_set ); asr->nest_level -= 1; rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); } 4c18a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 4c190: 4e5e unlk %fp 4c192: 4e75 rts if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ return; asr->nest_level += 1; 4c194: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 4c198: 260e movel %fp,%d3 <== NOT EXECUTED 4c19a: 5983 subql #4,%d3 <== NOT EXECUTED 4c19c: 47f9 0004 e388 lea 4e388 ,%a3 <== NOT EXECUTED 4c1a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c1a4: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c1aa: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED 4c1ae: 4e93 jsr %a3@ <== NOT EXECUTED (*asr->handler)( signal_set ); 4c1b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c1b2: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED 4c1b6: 4e90 jsr %a0@ <== NOT EXECUTED asr->nest_level -= 1; 4c1b8: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); 4c1bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c1be: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c1c4: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c1c8: 4e93 jsr %a3@ <== NOT EXECUTED 4c1ca: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED } 4c1ce: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4c1d4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c102 <_RTEMS_tasks_Switch_extension>: void _RTEMS_tasks_Switch_extension( Thread_Control *executing, Thread_Control *heir ) { 4c102: 4e56 0000 linkw %fp,#0 4c106: 206e 0008 moveal %fp@(8),%a0 /* * Per Task Variables */ tvp = executing->task_variables; 4c10a: 2068 010a moveal %a0@(266),%a0 while (tvp) { 4c10e: 4a88 tstl %a0 4c110: 6712 beqs 4c124 <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN tvp->tval = *tvp->ptr; 4c112: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c116: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED *tvp->ptr = tvp->gval; 4c11a: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 4c11e: 2050 moveal %a0@,%a0 <== NOT EXECUTED /* * Per Task Variables */ tvp = executing->task_variables; while (tvp) { 4c120: 4a88 tstl %a0 <== NOT EXECUTED 4c122: 66ee bnes 4c112 <_RTEMS_tasks_Switch_extension+0x10><== NOT EXECUTED tvp->tval = *tvp->ptr; *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; 4c124: 206e 000c moveal %fp@(12),%a0 4c128: 2068 010a moveal %a0@(266),%a0 while (tvp) { 4c12c: 4a88 tstl %a0 4c12e: 6712 beqs 4c142 <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN tvp->gval = *tvp->ptr; 4c130: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c134: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED *tvp->ptr = tvp->tval; 4c138: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 4c13c: 2050 moveal %a0@,%a0 <== NOT EXECUTED *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; while (tvp) { 4c13e: 4a88 tstl %a0 <== NOT EXECUTED 4c140: 66ee bnes 4c130 <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED tvp->gval = *tvp->ptr; *tvp->ptr = tvp->tval; tvp = (rtems_task_variable_t *)tvp->next; } } 4c142: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000472a0 <_Rate_monotonic_Get_status>: bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, Rate_monotonic_Period_time_t *wall_since_last_period, Thread_CPU_usage_t *cpu_since_last_period ) { 472a0: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 472a4: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED /* * Determine elapsed wall time since period initiated. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _TOD_Get_uptime( &uptime ); 472a8: 280e movel %fp,%d4 <== NOT EXECUTED 472aa: 5184 subql #8,%d4 <== NOT EXECUTED _Timestamp_Subtract( 472ac: 45f9 0004 b1a8 lea 4b1a8 <_Timespec_Subtract>,%a2 <== NOT EXECUTED bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, Rate_monotonic_Period_time_t *wall_since_last_period, Thread_CPU_usage_t *cpu_since_last_period ) { 472b2: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED /* * Determine elapsed wall time since period initiated. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _TOD_Get_uptime( &uptime ); 472b6: 2f04 movel %d4,%sp@- <== NOT EXECUTED ) { #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; #endif Thread_Control *owning_thread = the_period->owner; 472b8: 286b 0040 moveal %a3@(64),%a4 <== NOT EXECUTED /* * Determine elapsed wall time since period initiated. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _TOD_Get_uptime( &uptime ); 472bc: 4eb9 0004 8d80 jsr 48d80 <_TOD_Get_uptime> <== NOT EXECUTED _Timestamp_Subtract( 472c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 472c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 472c8: 486b 004c pea %a3@(76) <== NOT EXECUTED 472cc: 4e92 jsr %a2@ <== NOT EXECUTED * Determine cpu usage since period initiated. */ used = owning_thread->cpu_time_used; #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 472ce: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED #endif /* * Determine cpu usage since period initiated. */ used = owning_thread->cpu_time_used; 472d2: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED 472d6: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED 472da: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 472de: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 472e2: b9f9 0006 226c cmpal 6226c <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 472e8: 670c beqs 472f6 <_Rate_monotonic_Get_status+0x56><== NOT EXECUTED return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; } 472ea: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED if (used < the_period->cpu_usage_period_initiated) return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; 472f0: 7001 moveq #1,%d0 <== NOT EXECUTED } 472f2: 4e5e unlk %fp <== NOT EXECUTED 472f4: 4e75 rts <== NOT EXECUTED if (owning_thread == _Thread_Executing) { Thread_CPU_usage_t ran; /* How much time time since last context switch */ _Timestamp_Subtract( 472f6: 49ee ffe8 lea %fp@(-24),%a4 <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); /* cpu usage += ran */ _Timestamp_Add_to( &used, &ran ); 472fa: 240e movel %fp,%d2 <== NOT EXECUTED 472fc: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) 47302: 260b movel %a3,%d3 <== NOT EXECUTED 47304: 0683 0000 0044 addil #68,%d3 <== NOT EXECUTED if (owning_thread == _Thread_Executing) { Thread_CPU_usage_t ran; /* How much time time since last context switch */ _Timestamp_Subtract( 4730a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4730c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4730e: 4879 0006 1eae pea 61eae <_Thread_Time_of_last_context_switch><== NOT EXECUTED 47314: 4e92 jsr %a2@ <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); /* cpu usage += ran */ _Timestamp_Add_to( &used, &ran ); 47316: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47318: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4731a: 4eb9 0004 b068 jsr 4b068 <_Timespec_Add_to> <== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) 47320: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47322: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47324: 4eb9 0004 b174 jsr 4b174 <_Timespec_Less_than> <== NOT EXECUTED 4732a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4732e: 4a00 tstb %d0 <== NOT EXECUTED 47330: 670c beqs 4733e <_Rate_monotonic_Get_status+0x9e><== NOT EXECUTED return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; } 47332: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) return false; 47338: 4200 clrb %d0 <== NOT EXECUTED return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; } 4733a: 4e5e unlk %fp <== NOT EXECUTED 4733c: 4e75 rts <== NOT EXECUTED */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) return false; /* used = current cpu usage - cpu usage at start of period */ _Timestamp_Subtract( 4733e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47342: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47344: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47346: 4e92 jsr %a2@ <== NOT EXECUTED 47348: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; } 4734c: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED if (used < the_period->cpu_usage_period_initiated) return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; 47352: 7001 moveq #1,%d0 <== NOT EXECUTED } 47354: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047358 <_Rate_monotonic_Initiate_statistics>: void _Rate_monotonic_Initiate_statistics( Rate_monotonic_Control *the_period ) { 47358: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4735c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47360: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * If using nanosecond statistics, we need to obtain the uptime. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; _TOD_Get_uptime( &uptime ); 47364: 240e movel %fp,%d2 <== NOT EXECUTED 47366: 5182 subql #8,%d2 <== NOT EXECUTED void _Rate_monotonic_Initiate_statistics( Rate_monotonic_Control *the_period ) { Thread_Control *owning_thread = the_period->owner; 47368: 266a 0040 moveal %a2@(64),%a3 <== NOT EXECUTED * If using nanosecond statistics, we need to obtain the uptime. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; _TOD_Get_uptime( &uptime ); 4736c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4736e: 4eb9 0004 8d80 jsr 48d80 <_TOD_Get_uptime> <== NOT EXECUTED * routine is invoked from rtems_rate_monotonic_period, the owner will * be the executing thread. When this routine is invoked from * _Rate_monotonic_Timeout, it will not. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 47374: 588f addql #4,%sp <== NOT EXECUTED /* * Set the starting point and the CPU time used for the statistics. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ the_period->time_period_initiated = uptime; 47376: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4737a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4737e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED 47382: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED #else the_period->time_period_initiated = _Watchdog_Ticks_since_boot; #endif the_period->cpu_usage_period_initiated = owning_thread->cpu_time_used; 47386: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED 4738a: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED 4738e: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED 47392: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED * routine is invoked from rtems_rate_monotonic_period, the owner will * be the executing thread. When this routine is invoked from * _Rate_monotonic_Timeout, it will not. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 47396: b7f9 0006 226c cmpal 6226c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED 4739c: 670a beqs 473a8 <_Rate_monotonic_Initiate_statistics+0x50><== NOT EXECUTED ); _Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran ); } #endif } 4739e: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED 473a4: 4e5e unlk %fp <== NOT EXECUTED 473a6: 4e75 rts <== NOT EXECUTED /* * Adjust the CPU time used to account for the time since last * context switch. */ _Timespec_Subtract( &_Thread_Time_of_last_context_switch, &uptime, &ran 473a8: 47ee fff0 lea %fp@(-16),%a3 <== NOT EXECUTED /* * Adjust the CPU time used to account for the time since last * context switch. */ _Timespec_Subtract( 473ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 473ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 473b0: 4879 0006 1eae pea 61eae <_Thread_Time_of_last_context_switch><== NOT EXECUTED 473b6: 4eb9 0004 b1a8 jsr 4b1a8 <_Timespec_Subtract> <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran ); 473bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 473be: 486a 0044 pea %a2@(68) <== NOT EXECUTED 473c2: 4eb9 0004 b068 jsr 4b068 <_Timespec_Add_to> <== NOT EXECUTED 473c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } #endif } 473cc: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED 473d2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047974 <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) { 47974: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47978: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4797a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4797e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47982: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 47988: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED /* * When we get here, the Timer is already off the chain so we do not * have to worry about that -- hence no _Watchdog_Remove(). */ the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4798e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47992: 2440 moveal %d0,%a2 <== NOT EXECUTED 47994: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47998: 6636 bnes 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED case OBJECTS_LOCAL: the_thread = the_period->owner; 4799a: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period ( States_Control the_states ) { return (the_states & STATES_WAITING_FOR_PERIOD); 4799e: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 479a2: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED if ( _States_Is_waiting_for_period( the_thread->current_state ) && 479a8: 670a beqs 479b4 <_Rate_monotonic_Timeout+0x40> <== NOT EXECUTED 479aa: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 479ae: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED 479b2: 675e beqs 47a12 <_Rate_monotonic_Timeout+0x9e> <== NOT EXECUTED _Thread_Unblock( the_thread ); _Rate_monotonic_Initiate_statistics( the_period ); _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { 479b4: 7001 moveq #1,%d0 <== NOT EXECUTED 479b6: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 479ba: 671c beqs 479d8 <_Rate_monotonic_Timeout+0x64> <== NOT EXECUTED _Rate_monotonic_Initiate_statistics( the_period ); _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else the_period->state = RATE_MONOTONIC_EXPIRED; 479bc: 7004 moveq #4,%d0 <== NOT EXECUTED 479be: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 479c2: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 479c8: 5380 subql #1,%d0 <== NOT EXECUTED 479ca: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 479d0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 479d4: 4e5e unlk %fp <== NOT EXECUTED 479d6: 4e75 rts <== NOT EXECUTED _Rate_monotonic_Initiate_statistics( the_period ); _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; 479d8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 479dc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED _Rate_monotonic_Initiate_statistics( the_period ); 479e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 479e2: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 479e8: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 479ee: 486a 0010 pea %a2@(16) <== NOT EXECUTED 479f2: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 479f8: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED 479fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47a02: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a08: 5380 subql #1,%d0 <== NOT EXECUTED 47a0a: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED 47a10: 60be bras 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 47a12: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 47a18: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47a1a: 4eb9 0004 a0c4 jsr 4a0c4 <_Thread_Clear_state> <== NOT EXECUTED the_thread = the_period->owner; if ( _States_Is_waiting_for_period( the_thread->current_state ) && the_thread->Wait.id == the_period->Object.id ) { _Thread_Unblock( the_thread ); _Rate_monotonic_Initiate_statistics( the_period ); 47a20: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a22: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 47a28: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 47a2e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 47a32: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47a38: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); 47a3e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 47a42: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a48: 5380 subql #1,%d0 <== NOT EXECUTED 47a4a: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED 47a50: 6000 ff7e braw 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED =============================================================================== 000473d6 <_Rate_monotonic_Update_statistics>: * Update the counts. */ stats = &the_period->Statistics; stats->count++; if ( the_period->state == RATE_MONOTONIC_EXPIRED ) 473d6: 7004 moveq #4,%d0 <== NOT EXECUTED } void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) { 473d8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 473dc: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 473e0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * Update the counts. */ stats = &the_period->Statistics; stats->count++; 473e4: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_EXPIRED ) 473e8: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 473ec: 6700 00c6 beqw 474b4 <_Rate_monotonic_Update_statistics+0xde><== NOT EXECUTED /* * Grab status for time statistics. */ valid_status = _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); 473f0: 260e movel %fp,%d3 <== NOT EXECUTED 473f2: 5183 subql #8,%d3 <== NOT EXECUTED 473f4: 240e movel %fp,%d2 <== NOT EXECUTED 473f6: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED stats->missed_count++; /* * Grab status for time statistics. */ valid_status = 473fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 473fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47400: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47402: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) 47408: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4740c: 4a00 tstb %d0 <== NOT EXECUTED 4740e: 660a bnes 4741a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED stats->min_wall_time = since_last_period; if ( since_last_period > stats->max_wall_time ) stats->max_wall_time = since_last_period; #endif } 47410: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47416: 4e5e unlk %fp <== NOT EXECUTED 47418: 4e75 rts <== NOT EXECUTED /* * Update CPU time */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_cpu_time, &executed ); 4741a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4741c: 486a 006c pea %a2@(108) <== NOT EXECUTED 47420: 4bf9 0004 b068 lea 4b068 <_Timespec_Add_to>,%a5 <== NOT EXECUTED if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) ) 47426: 49f9 0004 b174 lea 4b174 <_Timespec_Less_than>,%a4 <== NOT EXECUTED /* * Update CPU time */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_cpu_time, &executed ); 4742c: 4e95 jsr %a5@ <== NOT EXECUTED if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) ) 4742e: 486a 005c pea %a2@(92) <== NOT EXECUTED 47432: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47434: 4e94 jsr %a4@ <== NOT EXECUTED 47436: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4743a: 4a00 tstb %d0 <== NOT EXECUTED 4743c: 6710 beqs 4744e <_Rate_monotonic_Update_statistics+0x78><== NOT EXECUTED stats->min_cpu_time = executed; 4743e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47442: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 47446: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 4744a: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 4744e: 486a 0064 pea %a2@(100) <== NOT EXECUTED 47452: 47f9 0004 b140 lea 4b140 <_Timespec_Greater_than>,%a3 <== NOT EXECUTED 47458: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4745a: 4e93 jsr %a3@ <== NOT EXECUTED 4745c: 508f addql #8,%sp <== NOT EXECUTED 4745e: 4a00 tstb %d0 <== NOT EXECUTED 47460: 6710 beqs 47472 <_Rate_monotonic_Update_statistics+0x9c><== NOT EXECUTED stats->max_cpu_time = executed; 47462: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47466: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4746a: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED 4746e: 2541 0068 movel %d1,%a2@(104) <== NOT EXECUTED /* * Update Wall time */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 47472: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47474: 486a 0084 pea %a2@(132) <== NOT EXECUTED 47478: 4e95 jsr %a5@ <== NOT EXECUTED if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) ) 4747a: 486a 0074 pea %a2@(116) <== NOT EXECUTED 4747e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47480: 4e94 jsr %a4@ <== NOT EXECUTED 47482: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47486: 4a00 tstb %d0 <== NOT EXECUTED 47488: 6654 bnes 474de <_Rate_monotonic_Update_statistics+0x108><== NOT EXECUTED stats->min_wall_time = since_last_period; if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) ) 4748a: 486a 007c pea %a2@(124) <== NOT EXECUTED 4748e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47490: 4e93 jsr %a3@ <== NOT EXECUTED 47492: 508f addql #8,%sp <== NOT EXECUTED 47494: 4a00 tstb %d0 <== NOT EXECUTED 47496: 6700 ff78 beqw 47410 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED stats->max_wall_time = since_last_period; 4749a: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 4749e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 474a2: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED 474a6: 2541 0080 movel %d1,%a2@(128) <== NOT EXECUTED stats->min_wall_time = since_last_period; if ( since_last_period > stats->max_wall_time ) stats->max_wall_time = since_last_period; #endif } 474aa: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED 474b0: 4e5e unlk %fp <== NOT EXECUTED 474b2: 4e75 rts <== NOT EXECUTED */ stats = &the_period->Statistics; stats->count++; if ( the_period->state == RATE_MONOTONIC_EXPIRED ) stats->missed_count++; 474b4: 52aa 0058 addql #1,%a2@(88) <== NOT EXECUTED /* * Grab status for time statistics. */ valid_status = _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); 474b8: 260e movel %fp,%d3 <== NOT EXECUTED 474ba: 5183 subql #8,%d3 <== NOT EXECUTED 474bc: 240e movel %fp,%d2 <== NOT EXECUTED 474be: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED stats->missed_count++; /* * Grab status for time statistics. */ valid_status = 474c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 474c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474ca: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) 474d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474d4: 4a00 tstb %d0 <== NOT EXECUTED 474d6: 6700 ff38 beqw 47410 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED 474da: 6000 ff3e braw 4741a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) ) stats->min_wall_time = since_last_period; 474de: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 474e2: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 474e6: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 474ea: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED 474ee: 609a bras 4748a <_Rate_monotonic_Update_statistics+0xb4><== NOT EXECUTED =============================================================================== 0005fe98 <_Region_Process_queue>: */ void _Region_Process_queue( Region_Control *the_region ) { 5fe98: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5fe9c: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5fea2: 5280 addql #1,%d0 <== NOT EXECUTED 5fea4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5fea8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 5feac: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED * NOTE: Be sure to disable dispatching before unlocking the mutex * since we do not want to open a window where a context * switch could occur. */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); 5feb2: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5feb8: 240b movel %a3,%d2 <== NOT EXECUTED 5feba: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment ( Region_Control *the_region, uintptr_t size ) { return _Heap_Allocate( &the_region->Memory, size ); 5fec0: 260b movel %a3,%d3 <== NOT EXECUTED 5fec2: 49f9 0006 07ec lea 607ec <_Thread_queue_First>,%a4 <== NOT EXECUTED 5fec8: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED 5fece: 4bf9 0005 a7d4 lea 5a7d4 <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED 5fed4: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED 5feda: 588f addql #4,%sp <== NOT EXECUTED if ( the_segment == NULL ) break; *(void **)the_thread->Wait.return_argument = the_segment; the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); 5fedc: 283c 0006 06c4 movel #394948,%d4 <== NOT EXECUTED /* * NOTE: The following loop is O(n) where n is the number of * threads whose memory request is satisfied. */ for ( ; ; ) { the_thread = _Thread_queue_First( &the_region->Wait_queue ); 5fee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5fee4: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_thread == NULL ) 5fee6: 588f addql #4,%sp <== NOT EXECUTED /* * NOTE: The following loop is O(n) where n is the number of * threads whose memory request is satisfied. */ for ( ; ; ) { the_thread = _Thread_queue_First( &the_region->Wait_queue ); 5fee8: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( the_thread == NULL ) 5feea: 4a80 tstl %d0 <== NOT EXECUTED 5feec: 6738 beqs 5ff26 <_Region_Process_queue+0x8e> <== NOT EXECUTED 5feee: 42a7 clrl %sp@- <== NOT EXECUTED 5fef0: 42a7 clrl %sp@- <== NOT EXECUTED 5fef2: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 5fef6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5fef8: 4e95 jsr %a5@ <== NOT EXECUTED the_segment = (void **) _Region_Allocate_segment( the_region, the_thread->Wait.count ); if ( the_segment == NULL ) 5fefa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5fefe: 4a80 tstl %d0 <== NOT EXECUTED 5ff00: 6724 beqs 5ff26 <_Region_Process_queue+0x8e> <== NOT EXECUTED break; *(void **)the_thread->Wait.return_argument = the_segment; 5ff02: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 5ff06: 2080 movel %d0,%a0@ <== NOT EXECUTED the_region->number_of_used_blocks += 1; 5ff08: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); 5ff0c: 2044 moveal %d4,%a0 <== NOT EXECUTED 5ff0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5ff10: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ff12: 4e90 jsr %a0@ <== NOT EXECUTED the_thread->Wait.return_code = RTEMS_SUCCESSFUL; } 5ff14: 508f addql #8,%sp <== NOT EXECUTED break; *(void **)the_thread->Wait.return_argument = the_segment; the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); the_thread->Wait.return_code = RTEMS_SUCCESSFUL; 5ff16: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED /* * NOTE: The following loop is O(n) where n is the number of * threads whose memory request is satisfied. */ for ( ; ; ) { the_thread = _Thread_queue_First( &the_region->Wait_queue ); 5ff1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ff1c: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_thread == NULL ) 5ff1e: 588f addql #4,%sp <== NOT EXECUTED /* * NOTE: The following loop is O(n) where n is the number of * threads whose memory request is satisfied. */ for ( ; ; ) { the_thread = _Thread_queue_First( &the_region->Wait_queue ); 5ff20: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( the_thread == NULL ) 5ff22: 4a80 tstl %d0 <== NOT EXECUTED 5ff24: 66c8 bnes 5feee <_Region_Process_queue+0x56> <== NOT EXECUTED the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); the_thread->Wait.return_code = RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); } 5ff26: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 5ff2c: 4e5e unlk %fp <== NOT EXECUTED *(void **)the_thread->Wait.return_argument = the_segment; the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); the_thread->Wait.return_code = RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 5ff2e: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 0004c924 <_Scheduler_priority_Block>: void _Scheduler_priority_Block( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { 4c924: 4e56 0000 linkw %fp,#0 4c928: 206e 000c moveal %fp@(12),%a0 4c92c: 2f0a movel %a2,%sp@- RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread ) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain; 4c92e: 2268 008a moveal %a0@(138),%a1 4c932: 2251 moveal %a1@,%a1 if ( _Chain_Has_only_one_node( ready ) ) { 4c934: 2029 0008 movel %a1@(8),%d0 4c938: b091 cmpl %a1@,%d0 4c93a: 677e beqs 4c9ba <_Scheduler_priority_Block+0x96> ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4c93c: 2450 moveal %a0@,%a2 previous = the_node->previous; 4c93e: 2268 0004 moveal %a0@(4),%a1 next->previous = previous; 4c942: 2549 0004 movel %a1,%a2@(4) previous->next = next; 4c946: 228a movel %a2,%a1@ { _Scheduler_priority_Ready_queue_extract(the_thread); /* TODO: flash critical section */ if ( _Thread_Is_heir( the_thread ) ) 4c948: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 4c94e: 671c beqs 4c96c <_Scheduler_priority_Block+0x48> _Scheduler_priority_Schedule_body(the_scheduler); if ( _Thread_Is_executing( the_thread ) ) 4c950: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0 4c956: 6706 beqs 4c95e <_Scheduler_priority_Block+0x3a> _Scheduler_priority_Block_body(the_scheduler, the_thread); } 4c958: 245f moveal %sp@+,%a2 4c95a: 4e5e unlk %fp 4c95c: 4e75 rts 4c95e: 245f moveal %sp@+,%a2 4c960: 4e5e unlk %fp _Thread_Dispatch_necessary = true; 4c962: 7001 moveq #1,%d0 4c964: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> 4c96a: 4e75 rts RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 4c96c: 3039 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d0 4c972: 4840 swap %d0 4c974: 04c0 ff1 %d0 _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 4c976: 43f9 0006 0114 lea 60114 <_Priority_Bit_map>,%a1 4c97c: 0280 0000 ffff andil #65535,%d0 4c982: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1 4c986: 4841 swap %d1 4c988: 04c1 ff1 %d1 4c98a: 226e 0008 moveal %fp@(8),%a1 return (_Priority_Bits_index( major ) << 4) + 4c98e: 0281 0000 ffff andil #65535,%d1 4c994: e988 lsll #4,%d0 4c996: 2251 moveal %a1@,%a1 4c998: d081 addl %d1,%d0 Chain_Control *the_ready_queue ) { Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) 4c99a: 2200 movel %d0,%d1 4c99c: e988 lsll #4,%d0 4c99e: e589 lsll #2,%d1 4c9a0: 9081 subl %d1,%d0 4c9a2: d3c0 addal %d0,%a1 4c9a4: 2019 movel %a1@+,%d0 4c9a6: b3c0 cmpal %d0,%a1 4c9a8: 6754 beqs 4c9fe <_Scheduler_priority_Block+0xda> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 4c9aa: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> /* TODO: flash critical section */ if ( _Thread_Is_heir( the_thread ) ) _Scheduler_priority_Schedule_body(the_scheduler); if ( _Thread_Is_executing( the_thread ) ) 4c9b0: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0 4c9b6: 66a0 bnes 4c958 <_Scheduler_priority_Block+0x34> <== NEVER TAKEN 4c9b8: 60a4 bras 4c95e <_Scheduler_priority_Block+0x3a> RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4c9ba: 2009 movel %a1,%d0 4c9bc: 5880 addql #4,%d0 head->next = tail; head->previous = NULL; 4c9be: 42a9 0004 clrl %a1@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4c9c2: 2280 movel %d0,%a1@ head->next = tail; head->previous = NULL; tail->previous = head; 4c9c4: 2349 0008 movel %a1,%a1@(8) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain; if ( _Chain_Has_only_one_node( ready ) ) { _Chain_Initialize_empty( ready ); _Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map ); 4c9c8: 2268 008a moveal %a0@(138),%a1 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 4c9cc: 2469 0004 moveal %a1@(4),%a2 4c9d0: 3029 000e movew %a1@(14),%d0 4c9d4: 3212 movew %a2@,%d1 4c9d6: c081 andl %d1,%d0 4c9d8: 3480 movew %d0,%a2@ if ( *the_priority_map->minor == 0 ) 4c9da: 6600 ff6c bnew 4c948 <_Scheduler_priority_Block+0x24> _Priority_Major_bit_map &= the_priority_map->block_major; 4c9de: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1 4c9e4: 3029 000c movew %a1@(12),%d0 4c9e8: c081 andl %d1,%d0 4c9ea: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map> { _Scheduler_priority_Ready_queue_extract(the_thread); /* TODO: flash critical section */ if ( _Thread_Is_heir( the_thread ) ) 4c9f0: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 4c9f6: 6600 ff58 bnew 4c950 <_Scheduler_priority_Block+0x2c> 4c9fa: 6000 ff70 braw 4c96c <_Scheduler_priority_Block+0x48> Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] ); return NULL; 4c9fe: 4280 clrl %d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 4ca00: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> <== NOT EXECUTED 4ca06: 60a8 bras 4c9b0 <_Scheduler_priority_Block+0x8c> <== NOT EXECUTED =============================================================================== 000481d8 <_Scheduler_priority_Schedule>: */ void _Scheduler_priority_Schedule( Scheduler_Control *the_scheduler ) { 481d8: 4e56 0000 linkw %fp,#0 RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 481dc: 3039 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d0 481e2: 4840 swap %d0 481e4: 04c0 ff1 %d0 _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 481e6: 41f9 0006 0114 lea 60114 <_Priority_Bit_map>,%a0 481ec: 0280 0000 ffff andil #65535,%d0 481f2: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 481f6: 4841 swap %d1 481f8: 04c1 ff1 %d1 _Scheduler_priority_Schedule_body( the_scheduler ); } 481fa: 206e 0008 moveal %fp@(8),%a0 return (_Priority_Bits_index( major ) << 4) + 481fe: 0281 0000 ffff andil #65535,%d1 48204: e988 lsll #4,%d0 48206: 2050 moveal %a0@,%a0 48208: d081 addl %d1,%d0 Chain_Control *the_ready_queue ) { Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) 4820a: 2200 movel %d0,%d1 4820c: e988 lsll #4,%d0 4820e: e589 lsll #2,%d1 48210: 9081 subl %d1,%d0 48212: d1c0 addal %d0,%a0 48214: 2018 movel %a0@+,%d0 48216: b1c0 cmpal %d0,%a0 48218: 670a beqs 48224 <_Scheduler_priority_Schedule+0x4c><== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 4821a: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> 48220: 4e5e unlk %fp 48222: 4e75 rts Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] ); return NULL; 48224: 4280 clrl %d0 48226: 4e5e unlk %fp RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 48228: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> <== NOT EXECUTED =============================================================================== 0004824c <_Scheduler_priority_Thread_scheduler_free>: void _Scheduler_priority_Thread_scheduler_free ( Scheduler_Control *the_scheduler __attribute__((unused)), Thread_Control *the_thread ) { 4824c: 4e56 0000 linkw %fp,#0 48250: 206e 000c moveal %fp@(12),%a0 _Workspace_Free( the_thread->scheduler.priority ); 48254: 2d68 008a 0008 movel %a0@(138),%fp@(8) } 4825a: 4e5e unlk %fp void _Scheduler_priority_Thread_scheduler_free ( Scheduler_Control *the_scheduler __attribute__((unused)), Thread_Control *the_thread ) { _Workspace_Free( the_thread->scheduler.priority ); 4825c: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> ... =============================================================================== 000482d0 <_Scheduler_priority_Unblock>: void _Scheduler_priority_Unblock ( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { 482d0: 4e56 0000 linkw %fp,#0 482d4: 206e 000c moveal %fp@(12),%a0 482d8: 2f0b movel %a3,%sp@- 482da: 2f0a movel %a2,%sp@- RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue( Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); 482dc: 2268 008a moveal %a0@(138),%a1 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 482e0: 2669 0004 moveal %a1@(4),%a3 482e4: 3029 000a movew %a1@(10),%d0 482e8: 3213 movew %a3@,%d1 _Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain, 482ea: 2451 moveal %a1@,%a2 482ec: 8081 orl %d1,%d0 482ee: 3680 movew %d0,%a3@ _Priority_Major_bit_map |= the_priority_map->ready_major; 482f0: 3029 0008 movew %a1@(8),%d0 482f4: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1 Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 482fa: 226a 0008 moveal %a2@(8),%a1 482fe: 8280 orl %d0,%d1 the_node->next = tail; tail->previous = the_node; 48300: 2548 0008 movel %a0,%a2@(8) RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 48304: 588a addql #4,%a2 48306: 33c1 0006 0110 movew %d1,60110 <_Priority_Major_bit_map> * a context switch. * Pseudo-ISR case: * Even if the thread isn't preemptible, if the new heir is * a pseudo-ISR system task, we need to do a context switch. */ if ( the_thread->current_priority < _Thread_Heir->current_priority ) { 4830c: 2028 0014 movel %a0@(20),%d0 48310: 208a movel %a2,%a0@ Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 48312: 2149 0004 movel %a1,%a0@(4) Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 48316: 2288 movel %a0,%a1@ 48318: 2279 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a1 4831e: b0a9 0014 cmpl %a1@(20),%d0 48322: 641a bccs 4833e <_Scheduler_priority_Unblock+0x6e> _Thread_Heir = the_thread; 48324: 23c8 0006 0106 movel %a0,60106 <_Per_CPU_Information+0x10> if ( _Thread_Executing->is_preemptible || 4832a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 48330: 4a28 0074 tstb %a0@(116) 48334: 6710 beqs 48346 <_Scheduler_priority_Unblock+0x76> the_thread->current_priority == 0 ) _Thread_Dispatch_necessary = true; 48336: 7001 moveq #1,%d0 48338: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> _Scheduler_priority_Unblock_body(the_scheduler, the_thread); } 4833e: 245f moveal %sp@+,%a2 48340: 265f moveal %sp@+,%a3 48342: 4e5e unlk %fp 48344: 4e75 rts * Even if the thread isn't preemptible, if the new heir is * a pseudo-ISR system task, we need to do a context switch. */ if ( the_thread->current_priority < _Thread_Heir->current_priority ) { _Thread_Heir = the_thread; if ( _Thread_Executing->is_preemptible || 48346: 4a80 tstl %d0 48348: 66f4 bnes 4833e <_Scheduler_priority_Unblock+0x6e><== ALWAYS TAKEN the_thread->current_priority == 0 ) _Thread_Dispatch_necessary = true; 4834a: 7001 moveq #1,%d0 <== NOT EXECUTED 4834c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED 48352: 60ea bras 4833e <_Scheduler_priority_Unblock+0x6e><== NOT EXECUTED =============================================================================== 00048354 <_Scheduler_priority_Yield>: */ void _Scheduler_priority_Yield( Scheduler_Control *the_scheduler __attribute__((unused)) ) { 48354: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; 48358: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ void _Scheduler_priority_Yield( Scheduler_Control *the_scheduler __attribute__((unused)) ) { 4835e: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->scheduler.priority->ready_chain; _ISR_Disable( level ); 48362: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 48368: 2002 movel %d2,%d0 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->scheduler.priority->ready_chain; 4836a: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED 4836e: 2251 moveal %a1@,%a1 <== NOT EXECUTED _ISR_Disable( level ); 48370: 40c1 movew %sr,%d1 <== NOT EXECUTED 48372: 8081 orl %d1,%d0 <== NOT EXECUTED 48374: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_Chain_Has_only_one_node( ready ) ) { 48376: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 4837a: b091 cmpl %a1@,%d0 <== NOT EXECUTED 4837c: 6750 beqs 483ce <_Scheduler_priority_Yield+0x7a> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4837e: 2850 moveal %a0@,%a4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 48380: 2009 movel %a1,%d0 <== NOT EXECUTED 48382: 5880 addql #4,%d0 <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 48384: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED next->previous = previous; 48388: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 4838c: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; previous->next = next; 48390: 268c movel %a4,%a3@ <== NOT EXECUTED { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 48392: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 48396: 2080 movel %d0,%a0@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 48398: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 4839c: 2488 movel %a0,%a2@ <== NOT EXECUTED _Chain_Extract_unprotected( &executing->Object.Node ); _Chain_Append_unprotected( ready, &executing->Object.Node ); _ISR_Flash( level ); 4839e: 46c1 movew %d1,%sr <== NOT EXECUTED 483a0: 8481 orl %d1,%d2 <== NOT EXECUTED 483a2: 46c2 movew %d2,%sr <== NOT EXECUTED if ( _Thread_Is_heir( executing ) ) 483a4: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 483aa: 6712 beqs 483be <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED _Thread_Heir = (Thread_Control *) _Chain_First( ready ); _Thread_Dispatch_necessary = true; } else if ( !_Thread_Is_heir( executing ) ) _Thread_Dispatch_necessary = true; 483ac: 7001 moveq #1,%d0 <== NOT EXECUTED 483ae: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED _ISR_Enable( level ); 483b4: 46c1 movew %d1,%sr <== NOT EXECUTED } 483b6: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED 483ba: 4e5e unlk %fp <== NOT EXECUTED 483bc: 4e75 rts <== NOT EXECUTED _Chain_Append_unprotected( ready, &executing->Object.Node ); _ISR_Flash( level ); if ( _Thread_Is_heir( executing ) ) _Thread_Heir = (Thread_Control *) _Chain_First( ready ); 483be: 23d1 0006 0106 movel %a1@,60106 <_Per_CPU_Information+0x10><== NOT EXECUTED _Thread_Dispatch_necessary = true; } else if ( !_Thread_Is_heir( executing ) ) _Thread_Dispatch_necessary = true; 483c4: 7001 moveq #1,%d0 <== NOT EXECUTED 483c6: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED 483cc: 60e6 bras 483b4 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED if ( _Thread_Is_heir( executing ) ) _Thread_Heir = (Thread_Control *) _Chain_First( ready ); _Thread_Dispatch_necessary = true; } else if ( !_Thread_Is_heir( executing ) ) 483ce: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 483d4: 67de beqs 483b4 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED _Thread_Dispatch_necessary = true; 483d6: 7001 moveq #1,%d0 <== NOT EXECUTED 483d8: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED 483de: 60d4 bras 483b4 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED =============================================================================== 0004663e <_Semaphore_Translate_core_semaphore_return_code>: */ #if defined(RTEMS_DEBUG) if ( status > CORE_SEMAPHORE_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Semaphore_Translate_core_semaphore_return_code_[status]; 4663e: 41f9 0005 d47e lea 5d47e <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( uint32_t status ) { 46644: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( status > CORE_SEMAPHORE_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Semaphore_Translate_core_semaphore_return_code_[status]; } 46648: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4664c: 4e5e unlk %fp <== NOT EXECUTED 4664e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00047778 <_TOD_Get_uptime_as_timespec>: */ void _TOD_Get_uptime_as_timespec( struct timespec *uptime ) { 47778: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED Timestamp_Control uptime_ts; /* assume time checked for NULL by caller */ _TOD_Get_uptime( &uptime_ts ); 4777c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 47780: 4eb9 0004 ca30 jsr 4ca30 <_TOD_Get_uptime> <== NOT EXECUTED _Timestamp_To_timespec( &uptime_ts, uptime ); 47786: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4778a: 588f addql #4,%sp <== NOT EXECUTED 4778c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47790: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED } 47794: 4e5e unlk %fp <== NOT EXECUTED { Timestamp_Control uptime_ts; /* assume time checked for NULL by caller */ _TOD_Get_uptime( &uptime_ts ); _Timestamp_To_timespec( &uptime_ts, uptime ); 47796: 2080 movel %d0,%a0@ <== NOT EXECUTED 47798: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED } ... =============================================================================== 00048cec <_TOD_Set>: */ void _TOD_Set( const struct timespec *time ) { 48cec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48cf0: 2039 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48cf6: 5280 addql #1,%d0 <== NOT EXECUTED 48cf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48cfa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 48cfe: 23c0 0006 a218 movel %d0,6a218 <_Thread_Dispatch_disable_level><== NOT EXECUTED long seconds; _Thread_Disable_dispatch(); _TOD_Deactivate(); seconds = _TOD_Seconds_since_epoch(); 48d04: 2039 0006 a2c2 movel 6a2c2 <_TOD_Now>,%d0 <== NOT EXECUTED if ( time->tv_sec < seconds ) 48d0a: 2212 movel %a2@,%d1 <== NOT EXECUTED 48d0c: b280 cmpl %d0,%d1 <== NOT EXECUTED 48d0e: 6d38 blts 48d48 <_TOD_Set+0x5c> <== NOT EXECUTED Watchdog_Adjust_directions direction, Watchdog_Interval units ) { _Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units ); 48d10: 9280 subl %d0,%d1 <== NOT EXECUTED 48d12: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48d14: 42a7 clrl %sp@- <== NOT EXECUTED 48d16: 4879 0006 a2ec pea 6a2ec <_Watchdog_Seconds_chain> <== NOT EXECUTED 48d1c: 4eb9 0004 b478 jsr 4b478 <_Watchdog_Adjust> <== NOT EXECUTED _Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec ); else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); 48d22: 23d2 0006 a2c2 movel %a2@,6a2c2 <_TOD_Now> <== NOT EXECUTED 48d28: 588a addql #4,%a2 <== NOT EXECUTED 48d2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48d2e: 23d2 0006 a2c6 movel %a2@,6a2c6 <_TOD_Now+0x4> <== NOT EXECUTED _TOD_Is_set = true; _TOD_Activate(); _Thread_Enable_dispatch(); } 48d34: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48d38: 4e5e unlk %fp <== NOT EXECUTED else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); _TOD_Is_set = true; 48d3a: 7001 moveq #1,%d0 <== NOT EXECUTED 48d3c: 13c0 0006 a228 moveb %d0,6a228 <_TOD_Is_set> <== NOT EXECUTED _TOD_Activate(); _Thread_Enable_dispatch(); 48d42: 4ef9 0004 a3c2 jmp 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED 48d48: 9081 subl %d1,%d0 <== NOT EXECUTED 48d4a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48d4c: 4878 0001 pea 1 <== NOT EXECUTED 48d50: 4879 0006 a2ec pea 6a2ec <_Watchdog_Seconds_chain> <== NOT EXECUTED 48d56: 4eb9 0004 b478 jsr 4b478 <_Watchdog_Adjust> <== NOT EXECUTED _Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec ); else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); 48d5c: 23d2 0006 a2c2 movel %a2@,6a2c2 <_TOD_Now> <== NOT EXECUTED 48d62: 588a addql #4,%a2 <== NOT EXECUTED 48d64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48d68: 23d2 0006 a2c6 movel %a2@,6a2c6 <_TOD_Now+0x4> <== NOT EXECUTED _TOD_Is_set = true; _TOD_Activate(); _Thread_Enable_dispatch(); } 48d6e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48d72: 4e5e unlk %fp <== NOT EXECUTED else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); _TOD_Is_set = true; 48d74: 7001 moveq #1,%d0 <== NOT EXECUTED 48d76: 13c0 0006 a228 moveb %d0,6a228 <_TOD_Is_set> <== NOT EXECUTED _TOD_Activate(); _Thread_Enable_dispatch(); 48d7c: 4ef9 0004 a3c2 jmp 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED ... =============================================================================== 000473dc <_TOD_Tickle_ticks>: * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 473dc: 4e56 ffec linkw %fp,#-20 Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 473e0: 2239 0005 e3d0 movel 5e3d0 ,%d1 * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 473e6: 48d7 040c moveml %d2-%d3/%a2,%sp@ /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 473ea: 240e movel %fp,%d2 473ec: 5182 subql #8,%d2 { Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 473ee: 263c 0000 03e8 movel #1000,%d3 473f4: 4c03 1800 mulsl %d3,%d1 /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 473f8: 45f9 0004 952c lea 4952c <_Timespec_Add_to>,%a2 /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 473fe: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0 47404: 5280 addql #1,%d0 /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 47406: 2f02 movel %d2,%sp@- 47408: 4879 0005 fcf2 pea 5fcf2 <_TOD_Uptime> { Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 4740e: 2d41 fffc movel %d1,%fp@(-4) 47412: 42ae fff8 clrl %fp@(-8) /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 47416: 23c0 0005 fda2 movel %d0,5fda2 <_Watchdog_Ticks_since_boot> /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 4741c: 4e92 jsr %a2@ /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); 4741e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47420: 4879 0005 fd22 pea 5fd22 <_TOD_Now> <== NOT EXECUTED 47426: 4e92 jsr %a2@ <== NOT EXECUTED while ( seconds ) { 47428: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); 4742c: 2400 movel %d0,%d2 <== NOT EXECUTED while ( seconds ) { 4742e: 6716 beqs 47446 <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED 47430: 45f9 0004 9a70 lea 49a70 <_Watchdog_Tickle>,%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void ) { _Watchdog_Tickle( &_Watchdog_Seconds_chain ); 47436: 4879 0005 fd4c pea 5fd4c <_Watchdog_Seconds_chain> <== NOT EXECUTED _Watchdog_Tickle_seconds(); seconds--; 4743c: 5382 subql #1,%d2 <== NOT EXECUTED 4743e: 4e92 jsr %a2@ <== NOT EXECUTED _Timestamp_Add_to( &_TOD_Uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); while ( seconds ) { 47440: 588f addql #4,%sp <== NOT EXECUTED 47442: 4a82 tstl %d2 <== NOT EXECUTED 47444: 66f0 bnes 47436 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED _Watchdog_Tickle_seconds(); seconds--; } } 47446: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4744c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047268 <_TOD_To_seconds>: */ uint32_t _TOD_To_seconds( const rtems_time_of_day *the_tod ) { 47268: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4726c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47270: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; year_mod_4 = the_tod->year & 3; 47274: 2610 movel %a0@,%d3 <== NOT EXECUTED 47276: 7403 moveq #3,%d2 <== NOT EXECUTED ) { uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; 47278: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 4727c: 5380 subql #1,%d0 <== NOT EXECUTED year_mod_4 = the_tod->year & 3; 4727e: c483 andl %d3,%d2 <== NOT EXECUTED if ( year_mod_4 == 0 ) 47280: 6774 beqs 472f6 <_TOD_To_seconds+0x8e> <== NOT EXECUTED time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 47282: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 47286: 43f9 0005 fb2a lea 5fb2a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 4728c: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 47292: 45f9 0005 fb5e lea 5fb5e <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED year_mod_4 = the_tod->year & 3; if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 47298: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED 4729c: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 472a2: 2241 moveal %d1,%a1 <== NOT EXECUTED 472a4: d3c0 addal %d0,%a1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 472a6: 2003 movel %d3,%d0 <== NOT EXECUTED 472a8: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED 472ae: e488 lsrl #2,%d0 <== NOT EXECUTED 472b0: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 472b4: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 472b8: 2601 movel %d1,%d3 <== NOT EXECUTED 472ba: ed89 lsll #6,%d1 <== NOT EXECUTED 472bc: e58b lsll #2,%d3 <== NOT EXECUTED 472be: 9283 subl %d3,%d1 <== NOT EXECUTED 472c0: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 472c4: 4283 clrl %d3 <== NOT EXECUTED 472c6: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; 472ca: 2401 movel %d1,%d2 <== NOT EXECUTED if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 472cc: d083 addl %d3,%d0 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 472ce: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 472d4: d089 addl %a1,%d0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; 472d6: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; 472da: e58a lsll #2,%d2 <== NOT EXECUTED 472dc: ed89 lsll #6,%d1 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 472de: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED * TOD_SECONDS_PER_MINUTE; 472e2: 9282 subl %d2,%d1 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 472e4: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 472ea: d288 addl %a0,%d1 <== NOT EXECUTED time += TOD_SECONDS_1970_THROUGH_1988; return( time ); } 472ec: d081 addl %d1,%d0 <== NOT EXECUTED 472ee: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED 472f2: 4e5e unlk %fp <== NOT EXECUTED 472f4: 4e75 rts <== NOT EXECUTED time = the_tod->day - 1; year_mod_4 = the_tod->year & 3; if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; 472f6: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 472fa: 43f9 0005 fb2a lea 5fb2a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED time = the_tod->day - 1; year_mod_4 = the_tod->year & 3; if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; 47300: 0681 0000 000d addil #13,%d1 <== NOT EXECUTED else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 47306: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 4730c: 45f9 0005 fb5e lea 5fb5e <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED year_mod_4 = the_tod->year & 3; if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 47312: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED 47316: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 4731c: 2241 moveal %d1,%a1 <== NOT EXECUTED 4731e: d3c0 addal %d0,%a1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 47320: 2003 movel %d3,%d0 <== NOT EXECUTED 47322: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED 47328: e488 lsrl #2,%d0 <== NOT EXECUTED 4732a: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 4732e: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 47332: 2601 movel %d1,%d3 <== NOT EXECUTED 47334: ed89 lsll #6,%d1 <== NOT EXECUTED 47336: e58b lsll #2,%d3 <== NOT EXECUTED 47338: 9283 subl %d3,%d1 <== NOT EXECUTED 4733a: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 4733e: 4283 clrl %d3 <== NOT EXECUTED 47340: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; 47344: 2401 movel %d1,%d2 <== NOT EXECUTED if ( year_mod_4 == 0 ) time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 47346: d083 addl %d3,%d0 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 47348: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 4734e: d089 addl %a1,%d0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; 47350: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; 47354: e58a lsll #2,%d2 <== NOT EXECUTED 47356: ed89 lsll #6,%d1 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 47358: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED * TOD_SECONDS_PER_MINUTE; 4735c: 9282 subl %d2,%d1 <== NOT EXECUTED time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 4735e: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 47364: d288 addl %a0,%d1 <== NOT EXECUTED time += TOD_SECONDS_1970_THROUGH_1988; return( time ); } 47366: d081 addl %d1,%d0 <== NOT EXECUTED 47368: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED 4736c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047370 <_TOD_Validate>: */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) { 47370: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47374: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); 47378: 2039 0006 0bb0 movel 60bb0 ,%d0 <== NOT EXECUTED */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) { 4737e: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || 47380: 4a88 tstl %a0 <== NOT EXECUTED 47382: 6762 beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED ) { uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / 47384: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 4738a: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || 4738e: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED 47392: 6352 blss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->ticks >= ticks_per_second) || 47394: 703b moveq #59,%d0 <== NOT EXECUTED 47396: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4739a: 654a bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->second >= TOD_SECONDS_PER_MINUTE) || 4739c: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED 473a0: 6544 bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->minute >= TOD_MINUTES_PER_HOUR) || 473a2: 7217 moveq #23,%d1 <== NOT EXECUTED 473a4: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED 473a8: 653c bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || 473aa: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || (the_tod->ticks >= ticks_per_second) || (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || 473ae: 6736 beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->month == 0) || 473b0: 740c moveq #12,%d2 <== NOT EXECUTED 473b2: b480 cmpl %d0,%d2 <== NOT EXECUTED 473b4: 6530 bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || 473b6: 2210 movel %a0@,%d1 <== NOT EXECUTED (the_tod->ticks >= ticks_per_second) || (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || 473b8: 0c81 0000 07c3 cmpil #1987,%d1 <== NOT EXECUTED 473be: 6326 blss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->year < TOD_BASE_YEAR) || (the_tod->day == 0) ) 473c0: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || 473c4: 4a88 tstl %a0 <== NOT EXECUTED 473c6: 671e beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED (the_tod->day == 0) ) return false; if ( (the_tod->year % 4) == 0 ) 473c8: 143c 0003 moveb #3,%d2 <== NOT EXECUTED 473cc: c282 andl %d2,%d1 <== NOT EXECUTED 473ce: 661e bnes 473ee <_TOD_Validate+0x7e> <== NOT EXECUTED days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ]; 473d0: 43f9 0005 fb66 lea 5fb66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED 473d6: 2031 0c34 movel %a1@(00000034,%d0:l:4),%d0 <== NOT EXECUTED * false - if the the_tod is invalid * * NOTE: This routine only works for leap-years through 2099. */ bool _TOD_Validate( 473da: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 473dc: 53c0 sls %d0 <== NOT EXECUTED 473de: 4480 negl %d0 <== NOT EXECUTED if ( the_tod->day > days_in_month ) return false; return true; } 473e0: 241f movel %sp@+,%d2 <== NOT EXECUTED 473e2: 4e5e unlk %fp <== NOT EXECUTED 473e4: 4e75 rts <== NOT EXECUTED 473e6: 241f movel %sp@+,%d2 <== NOT EXECUTED 473e8: 4e5e unlk %fp <== NOT EXECUTED (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || (the_tod->day == 0) ) return false; 473ea: 4200 clrb %d0 <== NOT EXECUTED if ( the_tod->day > days_in_month ) return false; return true; } 473ec: 4e75 rts <== NOT EXECUTED return false; if ( (the_tod->year % 4) == 0 ) days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ]; else days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ]; 473ee: 43f9 0005 fb66 lea 5fb66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED 473f4: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0 <== NOT EXECUTED * false - if the the_tod is invalid * * NOTE: This routine only works for leap-years through 2099. */ bool _TOD_Validate( 473f8: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 473fa: 53c0 sls %d0 <== NOT EXECUTED 473fc: 4480 negl %d0 <== NOT EXECUTED 473fe: 60e0 bras 473e0 <_TOD_Validate+0x70> <== NOT EXECUTED =============================================================================== 00048448 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 48448: 4e56 ffec linkw %fp,#-20 4844c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 48450: 246e 0008 moveal %fp@(8),%a2 */ /* * Save original state */ original_state = the_thread->current_state; 48454: 262a 0010 movel %a2@(16),%d3 void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 48458: 242e 000c movel %fp@(12),%d2 /* * Set a transient state for the thread so it is pulled off the Ready chains. * This will prevent it from being scheduled no matter what happens in an * ISR. */ _Thread_Set_transient( the_thread ); 4845c: 2f0a movel %a2,%sp@- void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 4845e: 182e 0013 moveb %fp@(19),%d4 /* * Set a transient state for the thread so it is pulled off the Ready chains. * This will prevent it from being scheduled no matter what happens in an * ISR. */ _Thread_Set_transient( the_thread ); 48462: 4eb9 0004 928c jsr 4928c <_Thread_Set_transient> /* * Do not bother recomputing all the priority related information if * we are not REALLY changing priority. */ if ( the_thread->current_priority != new_priority ) 48468: 588f addql #4,%sp 4846a: b4aa 0014 cmpl %a2@(20),%d2 4846e: 670c beqs 4847c <_Thread_Change_priority+0x34> _Thread_Set_priority( the_thread, new_priority ); 48470: 2f02 movel %d2,%sp@- 48472: 2f0a movel %a2,%sp@- 48474: 4eb9 0004 9214 jsr 49214 <_Thread_Set_priority> 4847a: 508f addql #8,%sp _ISR_Disable( level ); 4847c: 203c 0000 0700 movel #1792,%d0 48482: 40c2 movew %sr,%d2 48484: 8082 orl %d2,%d0 48486: 46c0 movew %d0,%sr /* * If the thread has more than STATES_TRANSIENT set, then it is blocked, * If it is blocked on a thread queue, then we need to requeue it. */ state = the_thread->current_state; 48488: 202a 0010 movel %a2@(16),%d0 if ( state != STATES_TRANSIENT ) { 4848c: 7204 moveq #4,%d1 4848e: b280 cmpl %d0,%d1 48490: 6738 beqs 484ca <_Thread_Change_priority+0x82> /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) 48492: 44c3 movew %d3,%ccr 48494: 6708 beqs 4849e <_Thread_Change_priority+0x56> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 48496: 72fb moveq #-5,%d1 48498: c280 andl %d0,%d1 4849a: 2541 0010 movel %d1,%a2@(16) the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); _ISR_Enable( level ); 4849e: 46c2 movew %d2,%sr */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 484a0: 0280 0003 bee0 andil #245472,%d0 if ( _States_Is_waiting_on_thread_queue( state ) ) { 484a6: 660a bnes 484b2 <_Thread_Change_priority+0x6a> if ( !_Thread_Is_executing_also_the_heir() && _Thread_Executing->is_preemptible ) _Thread_Dispatch_necessary = true; _ISR_Enable( level ); } 484a8: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 484ae: 4e5e unlk %fp 484b0: 4e75 rts /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); _ISR_Enable( level ); if ( _States_Is_waiting_on_thread_queue( state ) ) { _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); 484b2: 2d4a 000c movel %a2,%fp@(12) 484b6: 2d6a 0044 0008 movel %a2@(68),%fp@(8) if ( !_Thread_Is_executing_also_the_heir() && _Thread_Executing->is_preemptible ) _Thread_Dispatch_necessary = true; _ISR_Enable( level ); } 484bc: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 484c2: 4e5e unlk %fp /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); _ISR_Enable( level ); if ( _States_Is_waiting_on_thread_queue( state ) ) { _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); 484c4: 4ef9 0004 9168 jmp 49168 <_Thread_queue_Requeue> } return; } /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) { 484ca: 44c3 movew %d3,%ccr 484cc: 673c beqs 4850a <_Thread_Change_priority+0xc2> <== NEVER TAKEN * Ready Queue with interrupts off. * * FIXME: hard-coded for priority scheduling. Might be ok since this * function is specific to priority scheduling? */ the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); 484ce: 42aa 0010 clrl %a2@(16) if ( prepend_it ) 484d2: 4a04 tstb %d4 484d4: 6778 beqs 4854e <_Thread_Change_priority+0x106> RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first( Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); 484d6: 206a 008a moveal %a2@(138),%a0 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 484da: 2668 0004 moveal %a0@(4),%a3 484de: 3028 000a movew %a0@(10),%d0 484e2: 3213 movew %a3@,%d1 _Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain, 484e4: 2250 moveal %a0@,%a1 484e6: 8081 orl %d1,%d0 484e8: 3680 movew %d0,%a3@ _Priority_Major_bit_map |= the_priority_map->ready_major; 484ea: 3028 0008 movew %a0@(8),%d0 484ee: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1 ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 484f4: 2051 moveal %a1@,%a0 484f6: 8081 orl %d1,%d0 Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 484f8: 2549 0004 movel %a1,%a2@(4) 484fc: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map> before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; before_node->previous = the_node; 48502: 214a 0004 movel %a2,%a0@(4) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; 48506: 228a movel %a2,%a1@ the_node->next = before_node; 48508: 2488 movel %a0,%a2@ _Scheduler_priority_Ready_queue_enqueue_first( the_thread ); else _Scheduler_priority_Ready_queue_enqueue( the_thread ); } _ISR_Flash( level ); 4850a: 203c 0000 0700 movel #1792,%d0 48510: 46c2 movew %d2,%sr 48512: 8082 orl %d2,%d0 48514: 46c0 movew %d0,%sr */ RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( Scheduler_Control *the_scheduler ) { the_scheduler->Operations.schedule( the_scheduler ); 48516: 4879 0005 fcfe pea 5fcfe <_Scheduler> 4851c: 2079 0005 fd02 moveal 5fd02 <_Scheduler+0x4>,%a0 48522: 4e90 jsr %a0@ * is also the heir thread, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void ) { return ( _Thread_Executing == _Thread_Heir ); 48524: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 * We altered the set of thread priorities. So let's figure out * who is the heir and if we need to switch to them. */ _Scheduler_Schedule(&_Scheduler); if ( !_Thread_Is_executing_also_the_heir() && 4852a: 588f addql #4,%sp 4852c: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 48532: 670e beqs 48542 <_Thread_Change_priority+0xfa> 48534: 4a28 0074 tstb %a0@(116) 48538: 6708 beqs 48542 <_Thread_Change_priority+0xfa> <== NEVER TAKEN _Thread_Executing->is_preemptible ) _Thread_Dispatch_necessary = true; 4853a: 7001 moveq #1,%d0 4853c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> _ISR_Enable( level ); 48542: 46c2 movew %d2,%sr } 48544: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 4854a: 4e5e unlk %fp 4854c: 4e75 rts RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue( Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); 4854e: 206a 008a moveal %a2@(138),%a0 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 48552: 2668 0004 moveal %a0@(4),%a3 48556: 3028 000a movew %a0@(10),%d0 4855a: 3213 movew %a3@,%d1 _Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain, 4855c: 2250 moveal %a0@,%a1 4855e: 8081 orl %d1,%d0 48560: 3680 movew %d0,%a3@ _Priority_Major_bit_map |= the_priority_map->ready_major; 48562: 3028 0008 movew %a0@(8),%d0 48566: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1 Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 4856c: 2069 0008 moveal %a1@(8),%a0 48570: 8081 orl %d1,%d0 the_node->next = tail; tail->previous = the_node; 48572: 234a 0008 movel %a2,%a1@(8) RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 48576: 5889 addql #4,%a1 48578: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map> Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 4857e: 2548 0004 movel %a0,%a2@(4) RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 48582: 2489 movel %a1,%a2@ Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 48584: 208a movel %a2,%a0@ 48586: 6082 bras 4850a <_Thread_Change_priority+0xc2> =============================================================================== 00048588 <_Thread_Clear_state>: ) { ISR_Level level; States_Control current_state; _ISR_Disable( level ); 48588: 203c 0000 0700 movel #1792,%d0 void _Thread_Clear_state( Thread_Control *the_thread, States_Control state ) { 4858e: 4e56 0000 linkw %fp,#0 48592: 206e 0008 moveal %fp@(8),%a0 48596: 2f03 movel %d3,%sp@- 48598: 2f02 movel %d2,%sp@- 4859a: 242e 000c movel %fp@(12),%d2 ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4859e: 40c3 movew %sr,%d3 485a0: 8083 orl %d3,%d0 485a2: 46c0 movew %d0,%sr current_state = the_thread->current_state; 485a4: 2228 0010 movel %a0@(16),%d1 if ( current_state & state ) { 485a8: 2002 movel %d2,%d0 485aa: c081 andl %d1,%d0 485ac: 670c beqs 485ba <_Thread_Clear_state+0x32> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 485ae: 2002 movel %d2,%d0 485b0: 4680 notl %d0 485b2: c081 andl %d1,%d0 current_state = the_thread->current_state = _States_Clear( state, current_state ); 485b4: 2140 0010 movel %d0,%a0@(16) if ( _States_Is_ready( current_state ) ) { 485b8: 670e beqs 485c8 <_Thread_Clear_state+0x40> <== ALWAYS TAKEN _Scheduler_Unblock( &_Scheduler, the_thread); } } _ISR_Enable( level ); 485ba: 46c3 movew %d3,%sr <== NOT EXECUTED } 485bc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 485c0: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 485c4: 4e5e unlk %fp <== NOT EXECUTED 485c6: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.unblock( the_scheduler, the_thread ); 485c8: 2f08 movel %a0,%sp@- 485ca: 4879 0005 fcfe pea 5fcfe <_Scheduler> 485d0: 2079 0005 fd0e moveal 5fd0e <_Scheduler+0x10>,%a0 485d6: 4e90 jsr %a0@ 485d8: 508f addql #8,%sp if ( _States_Is_ready( current_state ) ) { _Scheduler_Unblock( &_Scheduler, the_thread); } } _ISR_Enable( level ); 485da: 46c3 movew %d3,%sr } 485dc: 242e fff8 movel %fp@(-8),%d2 485e0: 262e fffc movel %fp@(-4),%d3 485e4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000485e8 <_Thread_Close>: RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 485e8: 4280 clrl %d0 void _Thread_Close( Objects_Information *information, Thread_Control *the_thread ) { 485ea: 4e56 0000 linkw %fp,#0 485ee: 2f0b movel %a3,%sp@- 485f0: 266e 0008 moveal %fp@(8),%a3 485f4: 2f0a movel %a2,%sp@- 485f6: 246e 000c moveal %fp@(12),%a2 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 485fa: 206b 0018 moveal %a3@(24),%a0 RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 485fe: 302a 000a movew %a2@(10),%d0 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 48602: 42b0 0c00 clrl %a0@(00000000,%d0:l:4) */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 48606: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 4860c: 5380 subql #1,%d0 * disappear and set a transient state on it. So we temporarily * unnest dispatching. */ _Thread_Unnest_dispatch(); _User_extensions_Thread_delete( the_thread ); 4860e: 2f0a movel %a2,%sp@- 48610: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> 48616: 4eb9 0004 97b0 jsr 497b0 <_User_extensions_Thread_delete> rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4861c: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 48622: 5280 addql #1,%d0 48624: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> /* * Now we are in a dispatching critical section again and we * can take the thread OUT of the published set. It is invalid * to use this thread's Id OR name after this call. */ _Objects_Close( information, &the_thread->Object ); 4862a: 2f0a movel %a2,%sp@- 4862c: 2f0b movel %a3,%sp@- 4862e: 4eb9 0004 795c jsr 4795c <_Objects_Close> /* * By setting the dormant state, the thread will not be considered * for scheduling when we remove any blocking states. */ _Thread_Set_state( the_thread, STATES_DORMANT ); 48634: 4878 0001 pea 1 48638: 2f0a movel %a2,%sp@- 4863a: 4eb9 0004 923c jsr 4923c <_Thread_Set_state> if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { 48640: 2f0a movel %a2,%sp@- 48642: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy> 48648: 4fef 0018 lea %sp@(24),%sp 4864c: 4a00 tstb %d0 4864e: 6608 bnes 48658 <_Thread_Close+0x70> <== NEVER TAKEN if ( _Watchdog_Is_active( &the_thread->Timer ) ) 48650: 7002 moveq #2,%d0 48652: b0aa 0050 cmpl %a2@(80),%d0 48656: 6768 beqs 486c0 <_Thread_Close+0xd8> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_free( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { return the_scheduler->Operations.scheduler_free( the_scheduler, the_thread ); 48658: 2f0a movel %a2,%sp@- 4865a: 4879 0005 fcfe pea 5fcfe <_Scheduler> 48660: 2079 0005 fd16 moveal 5fd16 <_Scheduler+0x18>,%a0 48666: 4e90 jsr %a0@ /* * The thread might have been FP. So deal with that. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) 48668: 508f addql #8,%sp 4866a: b5f9 0005 fcfa cmpal 5fcfa <_Thread_Allocated_fp>,%a2 48670: 6746 beqs 486b8 <_Thread_Close+0xd0> <== NEVER TAKEN _Thread_Deallocate_fp(); #endif the_thread->fp_context = NULL; if ( the_thread->Start.fp_context ) 48672: 202a 00ba movel %a2@(186),%d0 #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) _Thread_Deallocate_fp(); #endif the_thread->fp_context = NULL; 48676: 42aa 00f6 clrl %a2@(246) if ( the_thread->Start.fp_context ) 4867a: 4a80 tstl %d0 4867c: 670a beqs 48688 <_Thread_Close+0xa0> <== ALWAYS TAKEN (void) _Workspace_Free( the_thread->Start.fp_context ); 4867e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48680: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48686: 588f addql #4,%sp <== NOT EXECUTED /* * Free the rest of the memory associated with this task * and set the associated pointers to NULL for safety. */ _Thread_Stack_Free( the_thread ); 48688: 2f0a movel %a2,%sp@- 4868a: 4eb9 0004 9374 jsr 49374 <_Thread_Stack_Free> the_thread->Start.stack = NULL; if ( the_thread->extensions ) 48690: 202a 0106 movel %a2@(262),%d0 48694: 588f addql #4,%sp /* * Free the rest of the memory associated with this task * and set the associated pointers to NULL for safety. */ _Thread_Stack_Free( the_thread ); the_thread->Start.stack = NULL; 48696: 42aa 00be clrl %a2@(190) if ( the_thread->extensions ) 4869a: 4a80 tstl %d0 4869c: 670a beqs 486a8 <_Thread_Close+0xc0> <== ALWAYS TAKEN (void) _Workspace_Free( the_thread->extensions ); 4869e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 486a0: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 486a6: 588f addql #4,%sp <== NOT EXECUTED the_thread->extensions = NULL; 486a8: 42aa 0106 clrl %a2@(262) } 486ac: 246e fff8 moveal %fp@(-8),%a2 486b0: 266e fffc moveal %fp@(-4),%a3 486b4: 4e5e unlk %fp 486b6: 4e75 rts */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void ) { _Thread_Allocated_fp = NULL; 486b8: 42b9 0005 fcfa clrl 5fcfa <_Thread_Allocated_fp> <== NOT EXECUTED 486be: 60b2 bras 48672 <_Thread_Close+0x8a> <== NOT EXECUTED */ _Thread_Set_state( the_thread, STATES_DORMANT ); if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { if ( _Watchdog_Is_active( &the_thread->Timer ) ) (void) _Watchdog_Remove( &the_thread->Timer ); 486c0: 486a 0048 pea %a2@(72) <== NOT EXECUTED 486c4: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 486ca: 588f addql #4,%sp <== NOT EXECUTED 486cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 486ce: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED 486d4: 2079 0005 fd16 moveal 5fd16 <_Scheduler+0x18>,%a0 <== NOT EXECUTED 486da: 4e90 jsr %a0@ <== NOT EXECUTED /* * The thread might have been FP. So deal with that. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) 486dc: 508f addql #8,%sp <== NOT EXECUTED 486de: b5f9 0005 fcfa cmpal 5fcfa <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED 486e4: 668c bnes 48672 <_Thread_Close+0x8a> <== NOT EXECUTED 486e6: 60d0 bras 486b8 <_Thread_Close+0xd0> <== NOT EXECUTED =============================================================================== 00048798 <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) { 48798: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 4879c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 487a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 487a4: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 487aa: 508f addql #8,%sp <== NOT EXECUTED 487ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 487b0: 661e bnes 487d0 <_Thread_Delay_ended+0x38> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* impossible */ #endif break; case OBJECTS_LOCAL: _Thread_Clear_state( 487b2: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED 487b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 487ba: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED 487c0: 508f addql #8,%sp <== NOT EXECUTED 487c2: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 487c8: 5380 subql #1,%d0 <== NOT EXECUTED 487ca: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Thread_Unnest_dispatch(); break; } } 487d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000487d4 <_Thread_Dispatch>: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) { 487d4: 4e56 ffc8 linkw %fp,#-56 487d8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); 487dc: 283c 0000 0700 movel #1792,%d4 487e2: 2004 movel %d4,%d0 { Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; 487e4: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 _ISR_Disable( level ); 487ea: 40c1 movew %sr,%d1 487ec: 8081 orl %d1,%d0 487ee: 46c0 movew %d0,%sr while ( _Thread_Dispatch_necessary == true ) { 487f0: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0 487f6: 6700 0120 beqw 48918 <_Thread_Dispatch+0x144> heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; 487fa: 7001 moveq #1,%d0 487fc: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; 48802: 2679 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a3 _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 48808: 4200 clrb %d0 _Thread_Executing = heir; 4880a: 23cb 0006 0102 movel %a3,60102 <_Per_CPU_Information+0xc> executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 48810: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> /* * When the heir and executing are the same, then we are being * requested to do the post switch dispatching. This is normally * done to dispatch signals. */ if ( heir == executing ) 48816: b7ca cmpal %a2,%a3 48818: 6700 00fe beqw 48918 <_Thread_Dispatch+0x144> 4881c: 260e movel %fp,%d3 4881e: 240e movel %fp,%d2 48820: 5183 subql #8,%d3 48822: 2e3c 0004 c590 movel #312720,%d7 48828: 0682 ffff fff0 addil #-16,%d2 4882e: 2c3c 0004 9574 movel #300404,%d6 48834: 2a3c 0004 952c movel #300332,%d5 4883a: 4bf9 0004 983c lea 4983c <_User_extensions_Thread_switch>,%a5 48840: 49f9 0004 9bbc lea 49bbc <_CPU_Context_switch>,%a4 */ #if __RTEMS_ADA__ executing->rtems_ada_self = rtems_ada_self; rtems_ada_self = heir->rtems_ada_self; #endif if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE ) 48846: 7001 moveq #1,%d0 48848: b0ab 007a cmpl %a3@(122),%d0 4884c: 6700 00e2 beqw 48930 <_Thread_Dispatch+0x15c> heir->cpu_time_budget = _Thread_Ticks_per_timeslice; _ISR_Enable( level ); 48850: 46c1 movew %d1,%sr #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ { Timestamp_Control uptime, ran; _TOD_Get_uptime( &uptime ); 48852: 2f03 movel %d3,%sp@- 48854: 2047 moveal %d7,%a0 48856: 4e90 jsr %a0@ _Timestamp_Subtract( 48858: 2046 moveal %d6,%a0 4885a: 2f02 movel %d2,%sp@- 4885c: 2f03 movel %d3,%sp@- 4885e: 4879 0005 fd44 pea 5fd44 <_Thread_Time_of_last_context_switch> 48864: 4e90 jsr %a0@ &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timestamp_Add_to( &executing->cpu_time_used, &ran ); 48866: 2045 moveal %d5,%a0 48868: 2f02 movel %d2,%sp@- 4886a: 486a 0082 pea %a2@(130) 4886e: 4e90 jsr %a0@ #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 48870: 2079 0005 fd1e moveal 5fd1e <_Thread_libc_reent>,%a0 48876: 4fef 0018 lea %sp@(24),%sp &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timestamp_Add_to( &executing->cpu_time_used, &ran ); _Thread_Time_of_last_context_switch = uptime; 4887a: 202e fff8 movel %fp@(-8),%d0 4887e: 222e fffc movel %fp@(-4),%d1 48882: 23c0 0005 fd44 movel %d0,5fd44 <_Thread_Time_of_last_context_switch> 48888: 23c1 0005 fd48 movel %d1,5fd48 <_Thread_Time_of_last_context_switch+0x4> #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 4888e: 4a88 tstl %a0 48890: 6708 beqs 4889a <_Thread_Dispatch+0xc6> <== NEVER TAKEN executing->libc_reent = *_Thread_libc_reent; 48892: 2550 00fa movel %a0@,%a2@(250) *_Thread_libc_reent = heir->libc_reent; 48896: 20ab 00fa movel %a3@(250),%a0@ } _User_extensions_Thread_switch( executing, heir ); 4889a: 2f0b movel %a3,%sp@- 4889c: 2f0a movel %a2,%sp@- 4889e: 4e95 jsr %a5@ if ( executing->fp_context != NULL ) _Context_Save_fp( &executing->fp_context ); #endif #endif _Context_Switch( &executing->Registers, &heir->Registers ); 488a0: 486b 00c2 pea %a3@(194) 488a4: 486a 00c2 pea %a2@(194) 488a8: 4e94 jsr %a4@ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && 488aa: 4fef 0010 lea %sp@(16),%sp 488ae: 4aaa 00f6 tstl %a2@(246) 488b2: 672c beqs 488e0 <_Thread_Dispatch+0x10c> <== ALWAYS TAKEN #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Allocated_fp ); 488b4: 2079 0005 fcfa moveal 5fcfa <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 488ba: b1ca cmpal %a2,%a0 <== NOT EXECUTED 488bc: 6722 beqs 488e0 <_Thread_Dispatch+0x10c> <== NOT EXECUTED !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) 488be: 4a88 tstl %a0 <== NOT EXECUTED 488c0: 670c beqs 488ce <_Thread_Dispatch+0xfa> <== NOT EXECUTED _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 488c2: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 488c6: 4eb9 0004 9ce2 jsr 49ce2 <_CPU_Context_save_fp> <== NOT EXECUTED 488cc: 588f addql #4,%sp <== NOT EXECUTED _Context_Restore_fp( &executing->fp_context ); 488ce: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 488d2: 4eb9 0004 9d1a jsr 49d1a <_CPU_Context_restore_fp> <== NOT EXECUTED _Thread_Allocated_fp = executing; 488d8: 588f addql #4,%sp <== NOT EXECUTED 488da: 23ca 0005 fcfa movel %a2,5fcfa <_Thread_Allocated_fp> <== NOT EXECUTED if ( executing->fp_context != NULL ) _Context_Restore_fp( &executing->fp_context ); #endif #endif executing = _Thread_Executing; 488e0: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 _ISR_Disable( level ); 488e6: 2004 movel %d4,%d0 488e8: 40c1 movew %sr,%d1 488ea: 8081 orl %d1,%d0 488ec: 46c0 movew %d0,%sr Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { 488ee: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0 488f4: 6722 beqs 48918 <_Thread_Dispatch+0x144> <== ALWAYS TAKEN heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; 488f6: 7001 moveq #1,%d0 <== NOT EXECUTED 488f8: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; 488fe: 2679 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 48904: 4200 clrb %d0 <== NOT EXECUTED _Thread_Executing = heir; 48906: 23cb 0006 0102 movel %a3,60102 <_Per_CPU_Information+0xc> <== NOT EXECUTED executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 4890c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED /* * When the heir and executing are the same, then we are being * requested to do the post switch dispatching. This is normally * done to dispatch signals. */ if ( heir == executing ) 48912: b5cb cmpal %a3,%a2 <== NOT EXECUTED 48914: 6600 ff30 bnew 48846 <_Thread_Dispatch+0x72> <== NOT EXECUTED _ISR_Disable( level ); } post_switch: _Thread_Dispatch_disable_level = 0; 48918: 42b9 0005 fc78 clrl 5fc78 <_Thread_Dispatch_disable_level> _ISR_Enable( level ); 4891e: 46c1 movew %d1,%sr _API_extensions_Run_postswitch(); 48920: 4eb9 0004 6da2 jsr 46da2 <_API_extensions_Run_postswitch> } 48926: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 4892c: 4e5e unlk %fp 4892e: 4e75 rts #if __RTEMS_ADA__ executing->rtems_ada_self = rtems_ada_self; rtems_ada_self = heir->rtems_ada_self; #endif if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE ) heir->cpu_time_budget = _Thread_Ticks_per_timeslice; 48930: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 48936: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED 4893a: 6000 ff14 braw 48850 <_Thread_Dispatch+0x7c> <== NOT EXECUTED =============================================================================== 00048964 <_Thread_Get>: */ Thread_Control *_Thread_Get ( Objects_Id id, Objects_Locations *location ) { 48964: 4e56 0000 linkw %fp,#0 48968: 202e 0008 movel %fp@(8),%d0 4896c: 2f03 movel %d3,%sp@- 4896e: 206e 000c moveal %fp@(12),%a0 48972: 2f02 movel %d2,%sp@- uint32_t the_class; Objects_Information **api_information; Objects_Information *information; Thread_Control *tp = (Thread_Control *) 0; if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) { 48974: 4a80 tstl %d0 48976: 6762 beqs 489da <_Thread_Get+0x76> */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 48978: 7418 moveq #24,%d2 4897a: 2200 movel %d0,%d1 4897c: e4a9 lsrl %d2,%d1 4897e: 7607 moveq #7,%d3 */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 48980: 143c 0002 moveb #2,%d2 */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 48984: c283 andl %d3,%d1 */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 48986: 2241 moveal %d1,%a1 48988: 5389 subql #1,%a1 4898a: b489 cmpl %a1,%d2 4898c: 653a bcss 489c8 <_Thread_Get+0x64> <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class( Objects_Id id ) { return (uint32_t) 4898e: 761b moveq #27,%d3 48990: 2400 movel %d0,%d2 48992: e6aa lsrl %d3,%d2 *location = OBJECTS_ERROR; goto done; } the_class = _Objects_Get_class( id ); if ( the_class != 1 ) { /* threads are always first class :) */ 48994: 163c 0001 moveb #1,%d3 48998: b682 cmpl %d2,%d3 4899a: 662c bnes 489c8 <_Thread_Get+0x64> <== NEVER TAKEN *location = OBJECTS_ERROR; goto done; } api_information = _Objects_Information_table[ the_api ]; 4899c: 43f9 0005 fc34 lea 5fc34 <_Objects_Information_table>,%a1 *location = OBJECTS_ERROR; goto done; } #endif information = api_information[ the_class ]; 489a2: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1 489a6: 2229 0004 movel %a1@(4),%d1 if ( !information ) { 489aa: 671c beqs 489c8 <_Thread_Get+0x64> <== NEVER TAKEN *location = OBJECTS_ERROR; goto done; } tp = (Thread_Control *) _Objects_Get( information, id, location ); 489ac: 2f08 movel %a0,%sp@- 489ae: 2f00 movel %d0,%sp@- 489b0: 2f01 movel %d1,%sp@- 489b2: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get> done: return tp; } 489b8: 242e fff8 movel %fp@(-8),%d2 if ( !information ) { *location = OBJECTS_ERROR; goto done; } tp = (Thread_Control *) _Objects_Get( information, id, location ); 489bc: 4fef 000c lea %sp@(12),%sp done: return tp; } 489c0: 262e fffc movel %fp@(-4),%d3 489c4: 4e5e unlk %fp 489c6: 4e75 rts } #endif information = api_information[ the_class ]; if ( !information ) { *location = OBJECTS_ERROR; 489c8: 7001 moveq #1,%d0 <== NOT EXECUTED tp = (Thread_Control *) _Objects_Get( information, id, location ); done: return tp; } 489ca: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 489ce: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 489d2: 4e5e unlk %fp <== NOT EXECUTED } #endif information = api_information[ the_class ]; if ( !information ) { *location = OBJECTS_ERROR; 489d4: 2080 movel %d0,%a0@ <== NOT EXECUTED { uint32_t the_api; uint32_t the_class; Objects_Information **api_information; Objects_Information *information; Thread_Control *tp = (Thread_Control *) 0; 489d6: 4280 clrl %d0 <== NOT EXECUTED tp = (Thread_Control *) _Objects_Get( information, id, location ); done: return tp; } 489d8: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 489da: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 489e0: 5280 addql #1,%d0 489e2: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> 489e8: 242e fff8 movel %fp@(-8),%d2 489ec: 262e fffc movel %fp@(-4),%d3 489f0: 4e5e unlk %fp Thread_Control *tp = (Thread_Control *) 0; if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) { _Thread_Disable_dispatch(); *location = OBJECTS_LOCAL; tp = _Thread_Executing; 489f2: 2039 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%d0 Objects_Information *information; Thread_Control *tp = (Thread_Control *) 0; if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) { _Thread_Disable_dispatch(); *location = OBJECTS_LOCAL; 489f8: 4290 clrl %a0@ <== NOT EXECUTED tp = (Thread_Control *) _Objects_Get( information, id, location ); done: return tp; } =============================================================================== 0004e688 <_Thread_Handler>: * * Output parameters: NONE */ void _Thread_Handler( void ) { 4e688: 4e56 0000 linkw %fp,#0 4e68c: 2f0a movel %a2,%sp@- #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) static char doneConstructors; char doneCons; #endif executing = _Thread_Executing; 4e68e: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 * * Output parameters: NONE */ void _Thread_Handler( void ) { 4e694: 2f02 movel %d2,%sp@- /* * have to put level into a register for those cpu's that use * inline asm here */ level = executing->Start.isr_level; 4e696: 222a 00a8 movel %a2@(168),%d1 _ISR_Set_level(level); 4e69a: 40c0 movew %sr,%d0 4e69c: e189 lsll #8,%d1 4e69e: 0280 0000 f8ff andil #63743,%d0 4e6a4: 8081 orl %d1,%d0 4e6a6: 46c0 movew %d0,%sr #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) doneCons = doneConstructors; doneConstructors = 1; 4e6a8: 7001 moveq #1,%d0 level = executing->Start.isr_level; _ISR_Set_level(level); #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) doneCons = doneConstructors; 4e6aa: 1439 0005 f438 moveb 5f438 ,%d2 doneConstructors = 1; 4e6b0: 13c0 0005 f438 moveb %d0,5f438 #endif #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && 4e6b6: 4aaa 00f6 tstl %a2@(246) 4e6ba: 6720 beqs 4e6dc <_Thread_Handler+0x54> #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Allocated_fp ); 4e6bc: 2079 0005 fcfa moveal 5fcfa <_Thread_Allocated_fp>,%a0 4e6c2: b1ca cmpal %a2,%a0 4e6c4: 6716 beqs 4e6dc <_Thread_Handler+0x54> <== NEVER TAKEN !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) 4e6c6: 4a88 tstl %a0 4e6c8: 670c beqs 4e6d6 <_Thread_Handler+0x4e> <== ALWAYS TAKEN _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 4e6ca: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 4e6ce: 4eb9 0004 9ce2 jsr 49ce2 <_CPU_Context_save_fp> <== NOT EXECUTED 4e6d4: 588f addql #4,%sp <== NOT EXECUTED _Thread_Allocated_fp = executing; 4e6d6: 23ca 0005 fcfa movel %a2,5fcfa <_Thread_Allocated_fp> /* * Take care that 'begin' extensions get to complete before * 'switch' extensions can run. This means must keep dispatch * disabled until all 'begin' extensions complete. */ _User_extensions_Thread_begin( executing ); 4e6dc: 2f0a movel %a2,%sp@- 4e6de: 4eb9 0004 9688 jsr 49688 <_User_extensions_Thread_begin> /* * At this point, the dispatch disable level BETTER be 1. */ _Thread_Enable_dispatch(); 4e6e4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> /* * _init could be a weak symbol and we SHOULD test it but it isn't * in any configuration I know of and it generates a warning on every * RTEMS target configuration. --joel (12 May 2007) */ if (!doneCons) /* && (volatile void *)_init) */ { 4e6ea: 588f addql #4,%sp 4e6ec: 4a02 tstb %d2 4e6ee: 6724 beqs 4e714 <_Thread_Handler+0x8c> INIT_NAME (); } #endif if ( executing->Start.prototype == THREAD_START_NUMERIC ) { 4e6f0: 202a 0092 movel %a2@(146),%d0 4e6f4: 672a beqs 4e720 <_Thread_Handler+0x98> <== ALWAYS TAKEN (*(Thread_Entry_numeric) executing->Start.entry_point)( executing->Start.numeric_argument ); } #if defined(RTEMS_POSIX_API) else if ( executing->Start.prototype == THREAD_START_POINTER ) { 4e6f6: 7201 moveq #1,%d1 4e6f8: b280 cmpl %d0,%d1 4e6fa: 674c beqs 4e748 <_Thread_Handler+0xc0> <== ALWAYS TAKEN * was placed in return_argument. This assumed that if it returned * anything (which is not supporting in all APIs), then it would be * able to fit in a (void *). */ _User_extensions_Thread_exitted( executing ); 4e6fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e6fe: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted> <== NOT EXECUTED _Internal_error_Occurred( 4e704: 4878 0005 pea 5 <== NOT EXECUTED 4e708: 4878 0001 pea 1 <== NOT EXECUTED 4e70c: 42a7 clrl %sp@- <== NOT EXECUTED 4e70e: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED * _init could be a weak symbol and we SHOULD test it but it isn't * in any configuration I know of and it generates a warning on every * RTEMS target configuration. --joel (12 May 2007) */ if (!doneCons) /* && (volatile void *)_init) */ { INIT_NAME (); 4e714: 4eb9 0005 c870 jsr 5c870 <_init> } #endif if ( executing->Start.prototype == THREAD_START_NUMERIC ) { 4e71a: 202a 0092 movel %a2@(146),%d0 4e71e: 66d6 bnes 4e6f6 <_Thread_Handler+0x6e> executing->Wait.return_argument = (*(Thread_Entry_numeric) executing->Start.entry_point)( 4e720: 2f2a 009a movel %a2@(154),%sp@- 4e724: 206a 008e moveal %a2@(142),%a0 4e728: 4e90 jsr %a0@ INIT_NAME (); } #endif if ( executing->Start.prototype == THREAD_START_NUMERIC ) { executing->Wait.return_argument = 4e72a: 588f addql #4,%sp 4e72c: 2540 0028 movel %d0,%a2@(40) * was placed in return_argument. This assumed that if it returned * anything (which is not supporting in all APIs), then it would be * able to fit in a (void *). */ _User_extensions_Thread_exitted( executing ); 4e730: 2f0a movel %a2,%sp@- 4e732: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted> _Internal_error_Occurred( 4e738: 4878 0005 pea 5 4e73c: 4878 0001 pea 1 4e740: 42a7 clrl %sp@- 4e742: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> ); } #if defined(RTEMS_POSIX_API) else if ( executing->Start.prototype == THREAD_START_POINTER ) { executing->Wait.return_argument = (*(Thread_Entry_pointer) executing->Start.entry_point)( 4e748: 2f2a 0096 movel %a2@(150),%sp@- 4e74c: 206a 008e moveal %a2@(142),%a0 4e750: 4e90 jsr %a0@ executing->Start.numeric_argument ); } #if defined(RTEMS_POSIX_API) else if ( executing->Start.prototype == THREAD_START_POINTER ) { executing->Wait.return_argument = 4e752: 588f addql #4,%sp <== NOT EXECUTED 4e754: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED * was placed in return_argument. This assumed that if it returned * anything (which is not supporting in all APIs), then it would be * able to fit in a (void *). */ _User_extensions_Thread_exitted( executing ); 4e758: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e75a: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted> <== NOT EXECUTED _Internal_error_Occurred( 4e760: 4878 0005 pea 5 <== NOT EXECUTED 4e764: 4878 0001 pea 1 <== NOT EXECUTED 4e768: 42a7 clrl %sp@- <== NOT EXECUTED 4e76a: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED =============================================================================== 00048c14 <_Thread_Handler_initialization>: * * Output parameters: NONE */ void _Thread_Handler_initialization(void) { 48c14: 4e56 0000 linkw %fp,#0 /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!Configuration.stack_allocate_hook) == (!Configuration.stack_free_hook) ) ) 48c18: 4ab9 0005 e3ec tstl 5e3ec 48c1e: 57c1 seq %d1 #endif /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!Configuration.stack_allocate_hook) 48c20: 4ab9 0005 e3e8 tstl 5e3e8 48c26: 57c0 seq %d0 == (!Configuration.stack_free_hook) ) ) 48c28: 4481 negl %d1 #endif /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!Configuration.stack_allocate_hook) 48c2a: 4480 negl %d0 48c2c: b380 eorl %d1,%d0 uint32_t maximum_extensions; #if defined(RTEMS_MULTIPROCESSING) uint32_t maximum_proxies; #endif ticks_per_timeslice = Configuration.ticks_per_timeslice; 48c2e: 2239 0005 e3d4 movel 5e3d4 ,%d1 maximum_extensions = Configuration.maximum_extensions; 48c34: 2079 0005 e3cc moveal 5e3cc ,%a0 #endif /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!Configuration.stack_allocate_hook) 48c3a: 4a00 tstb %d0 48c3c: 6650 bnes 48c8e <_Thread_Handler_initialization+0x7a> /* * Initialize this class of objects. */ _Objects_Initialize_information( 48c3e: 4878 0008 pea 8 INTERNAL_ERROR_CORE, true, INTERNAL_ERROR_BAD_STACK_HOOK ); _Thread_Dispatch_necessary = false; 48c42: 4200 clrb %d0 /* * Initialize this class of objects. */ _Objects_Initialize_information( 48c44: 42a7 clrl %sp@- 48c46: 4878 010e pea 10e 48c4a: 4878 0001 pea 1 48c4e: 4878 0001 pea 1 48c52: 4878 0001 pea 1 48c56: 4879 0005 fdaa pea 5fdaa <_Thread_Internal_information> INTERNAL_ERROR_CORE, true, INTERNAL_ERROR_BAD_STACK_HOOK ); _Thread_Dispatch_necessary = false; 48c5c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> _Thread_Executing = NULL; 48c62: 42b9 0006 0102 clrl 60102 <_Per_CPU_Information+0xc> _Thread_Heir = NULL; 48c68: 42b9 0006 0106 clrl 60106 <_Per_CPU_Information+0x10> #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) _Thread_Allocated_fp = NULL; 48c6e: 42b9 0005 fcfa clrl 5fcfa <_Thread_Allocated_fp> #endif _Thread_Maximum_extensions = maximum_extensions; 48c74: 23c8 0005 fd2a movel %a0,5fd2a <_Thread_Maximum_extensions> _Thread_Ticks_per_timeslice = ticks_per_timeslice; 48c7a: 23c1 0005 fc30 movel %d1,5fc30 <_Thread_Ticks_per_timeslice> /* * Initialize this class of objects. */ _Objects_Initialize_information( 48c80: 4eb9 0004 7df8 jsr 47df8 <_Objects_Initialize_information> 48c86: 4fef 001c lea %sp@(28),%sp false, /* true if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 48c8a: 4e5e unlk %fp 48c8c: 4e75 rts * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!Configuration.stack_allocate_hook) == (!Configuration.stack_free_hook) ) ) _Internal_error_Occurred( 48c8e: 4878 000e pea e 48c92: 4878 0001 pea 1 48c96: 42a7 clrl %sp@- 48c98: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> ... =============================================================================== 000489fc <_Thread_Initialize>: Thread_CPU_budget_algorithms budget_algorithm, Thread_CPU_budget_algorithm_callout budget_callout, uint32_t isr_level, Objects_Name name ) { 489fc: 4e56 ffe4 linkw %fp,#-28 48a00: 202e 0010 movel %fp@(16),%d0 48a04: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ 48a08: 246e 000c moveal %fp@(12),%a2 48a0c: 282e 0014 movel %fp@(20),%d4 48a10: 242e 001c movel %fp@(28),%d2 48a14: 262e 0024 movel %fp@(36),%d3 48a18: 1a2e 001b moveb %fp@(27),%d5 48a1c: 1c2e 0023 moveb %fp@(35),%d6 /* * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; 48a20: 42aa 00fe clrl %a2@(254) 48a24: 42aa 0102 clrl %a2@(258) extensions_area = NULL; the_thread->libc_reent = NULL; 48a28: 42aa 00fa clrl %a2@(250) if ( !actual_stack_size || actual_stack_size < stack_size ) return false; /* stack allocation failed */ stack = the_thread->Start.stack; #else if ( !stack_area ) { 48a2c: 4a80 tstl %d0 48a2e: 6700 01ae beqw 48bde <_Thread_Initialize+0x1e2> stack = the_thread->Start.stack; the_thread->Start.core_allocated_stack = true; } else { stack = stack_area; actual_stack_size = stack_size; the_thread->Start.core_allocated_stack = false; 48a32: 2204 movel %d4,%d1 <== NOT EXECUTED 48a34: 4204 clrb %d4 <== NOT EXECUTED 48a36: 1544 00b0 moveb %d4,%a2@(176) <== NOT EXECUTED Stack_Control *the_stack, void *starting_address, size_t size ) { the_stack->area = starting_address; 48a3a: 2540 00b6 movel %d0,%a2@(182) the_stack->size = size; 48a3e: 2541 00b2 movel %d1,%a2@(178) /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { 48a42: 4a05 tstb %d5 48a44: 6600 013c bnew 48b82 <_Thread_Initialize+0x186> 48a48: 4280 clrl %d0 extensions_area = NULL; the_thread->libc_reent = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) fp_area = NULL; 48a4a: 4284 clrl %d4 #endif /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 48a4c: 2239 0005 fd2a movel 5fd2a <_Thread_Maximum_extensions>,%d1 fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); if ( !fp_area ) goto failed; fp_area = _Context_Fp_start( fp_area, 0 ); } the_thread->fp_context = fp_area; 48a52: 2540 00f6 movel %d0,%a2@(246) the_thread->Start.fp_context = fp_area; 48a56: 2540 00ba movel %d0,%a2@(186) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 48a5a: 42aa 0050 clrl %a2@(80) the_watchdog->routine = routine; 48a5e: 42aa 0064 clrl %a2@(100) the_watchdog->id = id; 48a62: 42aa 0068 clrl %a2@(104) the_watchdog->user_data = user_data; 48a66: 42aa 006c clrl %a2@(108) #endif /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 48a6a: 4a81 tstl %d1 48a6c: 6600 012e bnew 48b9c <_Thread_Initialize+0x1a0> (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) goto failed; } the_thread->extensions = (void **) extensions_area; 48a70: 42aa 0106 clrl %a2@(262) * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; extensions_area = NULL; 48a74: 97cb subal %a3,%a3 /* * General initialization */ the_thread->Start.is_preemptible = is_preemptible; the_thread->Start.budget_algorithm = budget_algorithm; 48a76: 2543 00a0 movel %d3,%a2@(160) the_thread->Start.budget_callout = budget_callout; switch ( budget_algorithm ) { 48a7a: 7002 moveq #2,%d0 /* * General initialization */ the_thread->Start.is_preemptible = is_preemptible; 48a7c: 1546 009e moveb %d6,%a2@(158) the_thread->Start.budget_algorithm = budget_algorithm; the_thread->Start.budget_callout = budget_callout; 48a80: 256e 0028 00a4 movel %fp@(40),%a2@(164) switch ( budget_algorithm ) { 48a86: b083 cmpl %d3,%d0 48a88: 6700 00de beqw 48b68 <_Thread_Initialize+0x16c> RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { return 48a8c: 2f0a movel %a2,%sp@- 48a8e: 4879 0005 fcfe pea 5fcfe <_Scheduler> #endif } the_thread->Start.isr_level = isr_level; the_thread->current_state = STATES_DORMANT; 48a94: 7001 moveq #1,%d0 case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: break; #endif } the_thread->Start.isr_level = isr_level; 48a96: 256e 002c 00a8 movel %fp@(44),%a2@(168) 48a9c: 2079 0005 fd12 moveal 5fd12 <_Scheduler+0x14>,%a0 the_thread->current_state = STATES_DORMANT; 48aa2: 2540 0010 movel %d0,%a2@(16) the_thread->Wait.queue = NULL; 48aa6: 42aa 0044 clrl %a2@(68) the_thread->resource_count = 0; 48aaa: 42aa 001c clrl %a2@(28) the_thread->real_priority = priority; 48aae: 2542 0018 movel %d2,%a2@(24) the_thread->Start.initial_priority = priority; 48ab2: 2542 00ac movel %d2,%a2@(172) 48ab6: 4e90 jsr %a0@ sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread ); if ( !sched ) 48ab8: 508f addql #8,%sp 48aba: 2600 movel %d0,%d3 48abc: 673a beqs 48af8 <_Thread_Initialize+0xfc> <== NEVER TAKEN goto failed; _Thread_Set_priority( the_thread, priority ); 48abe: 2f02 movel %d2,%sp@- 48ac0: 2f0a movel %a2,%sp@- 48ac2: 4eb9 0004 9214 jsr 49214 <_Thread_Set_priority> _Thread_Stack_Free( the_thread ); return false; } 48ac8: 206e 0008 moveal %fp@(8),%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 48acc: 4280 clrl %d0 48ace: 2068 0018 moveal %a0@(24),%a0 48ad2: 302a 000a movew %a2@(10),%d0 /* * Initialize the CPU usage statistics */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Set_to_zero( &the_thread->cpu_time_used ); 48ad6: 42aa 0082 clrl %a2@(130) 48ada: 42aa 0086 clrl %a2@(134) #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 48ade: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 48ae2: 256e 0030 000c movel %fp@(48),%a2@(12) * enabled when we get here. We want to be able to run the * user extensions with dispatching enabled. The Allocator * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread ); 48ae8: 2f0a movel %a2,%sp@- 48aea: 4eb9 0004 9758 jsr 49758 <_User_extensions_Thread_create> if ( extension_status ) 48af0: 4fef 000c lea %sp@(12),%sp 48af4: 4a00 tstb %d0 48af6: 667e bnes 48b76 <_Thread_Initialize+0x17a> <== ALWAYS TAKEN return true; failed: if ( the_thread->libc_reent ) 48af8: 202a 00fa movel %a2@(250),%d0 <== NOT EXECUTED 48afc: 670a beqs 48b08 <_Thread_Initialize+0x10c> <== NOT EXECUTED _Workspace_Free( the_thread->libc_reent ); 48afe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b00: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b06: 588f addql #4,%sp <== NOT EXECUTED for ( i=0 ; i <= THREAD_API_LAST ; i++ ) if ( the_thread->API_Extensions[i] ) 48b08: 202a 00fe movel %a2@(254),%d0 <== NOT EXECUTED 48b0c: 670a beqs 48b18 <_Thread_Initialize+0x11c> <== NOT EXECUTED _Workspace_Free( the_thread->API_Extensions[i] ); 48b0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b10: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b16: 588f addql #4,%sp <== NOT EXECUTED failed: if ( the_thread->libc_reent ) _Workspace_Free( the_thread->libc_reent ); for ( i=0 ; i <= THREAD_API_LAST ; i++ ) if ( the_thread->API_Extensions[i] ) 48b18: 202a 0102 movel %a2@(258),%d0 <== NOT EXECUTED 48b1c: 670a beqs 48b28 <_Thread_Initialize+0x12c> <== NOT EXECUTED _Workspace_Free( the_thread->API_Extensions[i] ); 48b1e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b20: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b26: 588f addql #4,%sp <== NOT EXECUTED if ( extensions_area ) 48b28: 4a8b tstl %a3 <== NOT EXECUTED 48b2a: 670a beqs 48b36 <_Thread_Initialize+0x13a> <== NOT EXECUTED (void) _Workspace_Free( extensions_area ); 48b2c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48b2e: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b34: 588f addql #4,%sp <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( fp_area ) 48b36: 4a84 tstl %d4 <== NOT EXECUTED 48b38: 670a beqs 48b44 <_Thread_Initialize+0x148> <== NOT EXECUTED (void) _Workspace_Free( fp_area ); 48b3a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48b3c: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b42: 588f addql #4,%sp <== NOT EXECUTED #endif if ( sched ) 48b44: 4a83 tstl %d3 <== NOT EXECUTED 48b46: 670a beqs 48b52 <_Thread_Initialize+0x156> <== NOT EXECUTED (void) _Workspace_Free( sched ); 48b48: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48b4a: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED 48b50: 588f addql #4,%sp <== NOT EXECUTED _Thread_Stack_Free( the_thread ); 48b52: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48b54: 4eb9 0004 9374 jsr 49374 <_Thread_Stack_Free> <== NOT EXECUTED return false; 48b5a: 588f addql #4,%sp <== NOT EXECUTED } 48b5c: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED if ( sched ) (void) _Workspace_Free( sched ); _Thread_Stack_Free( the_thread ); return false; 48b62: 4200 clrb %d0 <== NOT EXECUTED } 48b64: 4e5e unlk %fp <== NOT EXECUTED 48b66: 4e75 rts <== NOT EXECUTED case THREAD_CPU_BUDGET_ALGORITHM_NONE: case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: break; #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 48b68: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 48b6e: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED break; 48b72: 6000 ff18 braw 48a8c <_Thread_Initialize+0x90> <== NOT EXECUTED _Thread_Stack_Free( the_thread ); return false; } 48b76: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread ); if ( extension_status ) return true; 48b7c: 7001 moveq #1,%d0 _Thread_Stack_Free( the_thread ); return false; } 48b7e: 4e5e unlk %fp 48b80: 4e75 rts /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 48b82: 4878 001c pea 1c 48b86: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> if ( !fp_area ) 48b8c: 588f addql #4,%sp /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 48b8e: 2800 movel %d0,%d4 if ( !fp_area ) 48b90: 6600 feba bnew 48a4c <_Thread_Initialize+0x50> * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; extensions_area = NULL; 48b94: 97cb subal %a3,%a3 <== NOT EXECUTED size_t actual_stack_size = 0; void *stack = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) void *fp_area; #endif void *sched = NULL; 48b96: 4283 clrl %d3 <== NOT EXECUTED 48b98: 6000 ff5e braw 48af8 <_Thread_Initialize+0xfc> <== NOT EXECUTED /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { extensions_area = _Workspace_Allocate( 48b9c: e589 lsll #2,%d1 48b9e: 2041 moveal %d1,%a0 48ba0: 4868 0004 pea %a0@(4) 48ba4: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate> (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) 48baa: 588f addql #4,%sp /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { extensions_area = _Workspace_Allocate( 48bac: 2640 moveal %d0,%a3 (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) 48bae: 4a80 tstl %d0 48bb0: 675a beqs 48c0c <_Thread_Initialize+0x210> <== NEVER TAKEN goto failed; } the_thread->extensions = (void **) extensions_area; 48bb2: 2079 0005 fd2a moveal 5fd2a <_Thread_Maximum_extensions>,%a0 * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) 48bb8: 4281 clrl %d1 (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) goto failed; } the_thread->extensions = (void **) extensions_area; 48bba: 4280 clrl %d0 48bbc: 254b 0106 movel %a3,%a2@(262) * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) the_thread->extensions[i] = NULL; 48bc0: 42b3 1c00 clrl %a3@(00000000,%d1:l:4) * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) 48bc4: 5280 addql #1,%d0 48bc6: 2200 movel %d0,%d1 48bc8: b088 cmpl %a0,%d0 48bca: 6200 feaa bhiw 48a76 <_Thread_Initialize+0x7a> the_thread->extensions[i] = NULL; 48bce: 42b3 1c00 clrl %a3@(00000000,%d1:l:4) * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) 48bd2: 5280 addql #1,%d0 48bd4: 2200 movel %d0,%d1 48bd6: b088 cmpl %a0,%d0 48bd8: 63e6 blss 48bc0 <_Thread_Initialize+0x1c4> 48bda: 6000 fe9a braw 48a76 <_Thread_Initialize+0x7a> return false; /* stack allocation failed */ stack = the_thread->Start.stack; #else if ( !stack_area ) { actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); 48bde: 2f04 movel %d4,%sp@- 48be0: 2f0a movel %a2,%sp@- 48be2: 4eb9 0004 9310 jsr 49310 <_Thread_Stack_Allocate> if ( !actual_stack_size || actual_stack_size < stack_size ) 48be8: 508f addql #8,%sp return false; /* stack allocation failed */ stack = the_thread->Start.stack; #else if ( !stack_area ) { actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); 48bea: 2200 movel %d0,%d1 if ( !actual_stack_size || actual_stack_size < stack_size ) 48bec: 6712 beqs 48c00 <_Thread_Initialize+0x204> 48bee: b084 cmpl %d4,%d0 48bf0: 650e bcss 48c00 <_Thread_Initialize+0x204> <== NEVER TAKEN return false; /* stack allocation failed */ stack = the_thread->Start.stack; 48bf2: 202a 00be movel %a2@(190),%d0 the_thread->Start.core_allocated_stack = true; 48bf6: 7801 moveq #1,%d4 48bf8: 1544 00b0 moveb %d4,%a2@(176) 48bfc: 6000 fe3c braw 48a3a <_Thread_Initialize+0x3e> _Thread_Stack_Free( the_thread ); return false; } 48c00: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 stack = the_thread->Start.stack; #else if ( !stack_area ) { actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); if ( !actual_stack_size || actual_stack_size < stack_size ) return false; /* stack allocation failed */ 48c06: 4200 clrb %d0 _Thread_Stack_Free( the_thread ); return false; } 48c08: 4e5e unlk %fp 48c0a: 4e75 rts size_t actual_stack_size = 0; void *stack = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) void *fp_area; #endif void *sched = NULL; 48c0c: 4283 clrl %d3 <== NOT EXECUTED 48c0e: 6000 fee8 braw 48af8 <_Thread_Initialize+0xfc> <== NOT EXECUTED ... =============================================================================== 0004da0c <_Thread_Reset>: void _Thread_Reset( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 4da0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4da10: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4da12: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED the_thread->resource_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; 4da16: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED the_thread->budget_callout = the_thread->Start.budget_callout; 4da1c: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED the_thread->Start.pointer_argument = pointer_argument; 4da22: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED the_thread->Start.numeric_argument = numeric_argument; 4da28: 256e 0010 009a movel %fp@(16),%a2@(154) <== NOT EXECUTED void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; 4da2e: 156a 009e 0074 moveb %a2@(158),%a2@(116) <== NOT EXECUTED Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; 4da34: 42aa 001c clrl %a2@(28) <== NOT EXECUTED the_thread->budget_callout = the_thread->Start.budget_callout; the_thread->Start.pointer_argument = pointer_argument; the_thread->Start.numeric_argument = numeric_argument; if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { 4da38: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4da3a: 4eb9 0004 9c78 jsr 49c78 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 4da40: 588f addql #4,%sp <== NOT EXECUTED 4da42: 4a00 tstb %d0 <== NOT EXECUTED 4da44: 6608 bnes 4da4e <_Thread_Reset+0x42> <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) 4da46: 7002 moveq #2,%d0 <== NOT EXECUTED 4da48: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4da4c: 672a beqs 4da78 <_Thread_Reset+0x6c> <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { 4da4e: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED 4da52: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4da56: 6718 beqs 4da70 <_Thread_Reset+0x64> <== NOT EXECUTED the_thread->real_priority = the_thread->Start.initial_priority; 4da58: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4da5c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4da60: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { the_thread->real_priority = the_thread->Start.initial_priority; _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4da64: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED } } 4da68: 4e5e unlk %fp <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { the_thread->real_priority = the_thread->Start.initial_priority; _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4da6a: 4ef9 0004 9eb8 jmp 49eb8 <_Thread_Set_priority> <== NOT EXECUTED } } 4da70: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4da74: 4e5e unlk %fp <== NOT EXECUTED 4da76: 4e75 rts <== NOT EXECUTED the_thread->Start.numeric_argument = numeric_argument; if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { if ( _Watchdog_Is_active( &the_thread->Timer ) ) (void) _Watchdog_Remove( &the_thread->Timer ); 4da78: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4da7c: 4eb9 0004 a6b8 jsr 4a6b8 <_Watchdog_Remove> <== NOT EXECUTED 4da82: 588f addql #4,%sp <== NOT EXECUTED 4da84: 60c8 bras 4da4e <_Thread_Reset+0x42> <== NOT EXECUTED ... =============================================================================== 00049e28 <_Thread_Restart>: */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states ) { return (the_states & STATES_DORMANT); 49e28: 7001 moveq #1,%d0 <== NOT EXECUTED bool _Thread_Restart( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 49e2a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49e2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e30: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49e34: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED if ( !_States_Is_dormant( the_thread->current_state ) ) { 49e38: 670a beqs 49e44 <_Thread_Restart+0x1c> <== NOT EXECUTED return true; } return false; } 49e3a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49e3e: 4e5e unlk %fp <== NOT EXECUTED _Thread_Restart_self(); return true; } return false; 49e40: 4200 clrb %d0 <== NOT EXECUTED } 49e42: 4e75 rts <== NOT EXECUTED Thread_Entry_numeric_type numeric_argument ) { if ( !_States_Is_dormant( the_thread->current_state ) ) { _Thread_Set_transient( the_thread ); 49e44: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e46: 4eb9 0004 9f30 jsr 49f30 <_Thread_Set_transient> <== NOT EXECUTED _Thread_Reset( the_thread, pointer_argument, numeric_argument ); 49e4c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49e50: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49e54: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e56: 4eb9 0004 da0c jsr 4da0c <_Thread_Reset> <== NOT EXECUTED _Thread_Load_environment( the_thread ); 49e5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e5e: 4eb9 0004 d6f0 jsr 4d6f0 <_Thread_Load_environment> <== NOT EXECUTED _Thread_Ready( the_thread ); 49e64: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e66: 4eb9 0004 d9d4 jsr 4d9d4 <_Thread_Ready> <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); 49e6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e6e: 4eb9 0004 a49c jsr 4a49c <_User_extensions_Thread_restart> <== NOT EXECUTED if ( _Thread_Is_executing ( the_thread ) ) 49e74: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 49e78: b5f9 0006 10aa cmpal 610aa <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49e7e: 670a beqs 49e8a <_Thread_Restart+0x62> <== NOT EXECUTED return true; } return false; } 49e80: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49e84: 4e5e unlk %fp <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); if ( _Thread_Is_executing ( the_thread ) ) _Thread_Restart_self(); return true; 49e86: 7001 moveq #1,%d0 <== NOT EXECUTED } return false; } 49e88: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void ) { #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( _Thread_Executing->fp_context != NULL ) 49e8a: 4aaa 00f6 tstl %a2@(246) <== NOT EXECUTED 49e8e: 6712 beqs 49ea2 <_Thread_Restart+0x7a> <== NOT EXECUTED _Context_Restore_fp( &_Thread_Executing->fp_context ); 49e90: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 49e94: 4eb9 0004 aa02 jsr 4aa02 <_CPU_Context_restore_fp> <== NOT EXECUTED 49e9a: 2479 0006 10aa moveal 610aa <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49ea0: 588f addql #4,%sp <== NOT EXECUTED #endif _CPU_Context_Restart_self( &_Thread_Executing->Registers ); 49ea2: 486a 00c2 pea %a2@(194) <== NOT EXECUTED 49ea6: 4eb9 0004 a8ba jsr 4a8ba <_CPU_Context_Restart_self> <== NOT EXECUTED 49eac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49eb0: 588f addql #4,%sp <== NOT EXECUTED 49eb2: 4e5e unlk %fp <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); if ( _Thread_Is_executing ( the_thread ) ) _Thread_Restart_self(); return true; 49eb4: 7001 moveq #1,%d0 <== NOT EXECUTED } return false; } =============================================================================== 0004c8c0 <_Thread_Resume>: { ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4c8c0: 203c 0000 0700 movel #1792,%d0 void _Thread_Resume( Thread_Control *the_thread, bool force ) { 4c8c6: 4e56 0000 linkw %fp,#0 4c8ca: 206e 0008 moveal %fp@(8),%a0 4c8ce: 2f02 movel %d2,%sp@- ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4c8d0: 40c2 movew %sr,%d2 4c8d2: 8082 orl %d2,%d0 4c8d4: 46c0 movew %d0,%sr current_state = the_thread->current_state; 4c8d6: 2028 0010 movel %a0@(16),%d0 if ( current_state & STATES_SUSPENDED ) { 4c8da: 0800 0001 btst #1,%d0 4c8de: 670a beqs 4c8ea <_Thread_Resume+0x2a> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 4c8e0: 72fd moveq #-3,%d1 4c8e2: c081 andl %d1,%d0 current_state = the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state); 4c8e4: 2140 0010 movel %d0,%a0@(16) if ( _States_Is_ready( current_state ) ) { 4c8e8: 670a beqs 4c8f4 <_Thread_Resume+0x34> <== ALWAYS TAKEN _Scheduler_Unblock( &_Scheduler, the_thread ); } } _ISR_Enable( level ); 4c8ea: 46c2 movew %d2,%sr <== NOT EXECUTED } 4c8ec: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4c8f0: 4e5e unlk %fp <== NOT EXECUTED 4c8f2: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.unblock( the_scheduler, the_thread ); 4c8f4: 2f08 movel %a0,%sp@- 4c8f6: 4879 0006 3a56 pea 63a56 <_Scheduler> 4c8fc: 2079 0006 3a66 moveal 63a66 <_Scheduler+0x10>,%a0 4c902: 4e90 jsr %a0@ 4c904: 508f addql #8,%sp if ( _States_Is_ready( current_state ) ) { _Scheduler_Unblock( &_Scheduler, the_thread ); } } _ISR_Enable( level ); 4c906: 46c2 movew %d2,%sr } 4c908: 242e fffc movel %fp@(-4),%d2 4c90c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049214 <_Thread_Set_priority>: void _Thread_Set_priority( Thread_Control *the_thread, Priority_Control new_priority ) { 49214: 4e56 0000 linkw %fp,#0 RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_update( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.scheduler_update( the_scheduler, the_thread ); 49218: 203c 0005 fcfe movel #392446,%d0 4921e: 206e 0008 moveal %fp@(8),%a0 the_thread->current_priority = new_priority; 49222: 216e 000c 0014 movel %fp@(12),%a0@(20) 49228: 2279 0005 fd1a moveal 5fd1a <_Scheduler+0x1c>,%a1 4922e: 2d40 0008 movel %d0,%fp@(8) 49232: 2d48 000c movel %a0,%fp@(12) _Scheduler_Thread_scheduler_update(&_Scheduler, the_thread); } 49236: 4e5e unlk %fp 49238: 4ed1 jmp %a1@ ... =============================================================================== 0004923c <_Thread_Set_state>: States_Control state ) { ISR_Level level; _ISR_Disable( level ); 4923c: 203c 0000 0700 movel #1792,%d0 void _Thread_Set_state( Thread_Control *the_thread, States_Control state ) { 49242: 4e56 0000 linkw %fp,#0 49246: 206e 0008 moveal %fp@(8),%a0 4924a: 2f02 movel %d2,%sp@- 4924c: 222e 000c movel %fp@(12),%d1 ISR_Level level; _ISR_Disable( level ); 49250: 40c2 movew %sr,%d2 49252: 8082 orl %d2,%d0 49254: 46c0 movew %d0,%sr if ( !_States_Is_ready( the_thread->current_state ) ) { 49256: 2028 0010 movel %a0@(16),%d0 4925a: 6710 beqs 4926c <_Thread_Set_state+0x30> <== ALWAYS TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control states_to_set, States_Control current_state ) { return (current_state | states_to_set); 4925c: 8280 orl %d0,%d1 <== NOT EXECUTED 4925e: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED the_thread->current_state = _States_Set( state, the_thread->current_state ); _ISR_Enable( level ); 49262: 46c2 movew %d2,%sr <== NOT EXECUTED the_thread->current_state = state; _Scheduler_Block( &_Scheduler, the_thread); _ISR_Enable( level ); } 49264: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 49268: 4e5e unlk %fp <== NOT EXECUTED 4926a: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_Block( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.block( the_scheduler, the_thread ); 4926c: 2f08 movel %a0,%sp@- 4926e: 4879 0005 fcfe pea 5fcfe <_Scheduler> _States_Set( state, the_thread->current_state ); _ISR_Enable( level ); return; } the_thread->current_state = state; 49274: 2141 0010 movel %d1,%a0@(16) 49278: 2079 0005 fd0a moveal 5fd0a <_Scheduler+0xc>,%a0 4927e: 4e90 jsr %a0@ _Scheduler_Block( &_Scheduler, the_thread); _ISR_Enable( level ); 49280: 46c2 movew %d2,%sr 49282: 508f addql #8,%sp } 49284: 242e fffc movel %fp@(-4),%d2 49288: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004928c <_Thread_Set_transient>: ) { ISR_Level level; uint32_t old_state; _ISR_Disable( level ); 4928c: 203c 0000 0700 movel #1792,%d0 */ void _Thread_Set_transient( Thread_Control *the_thread ) { 49292: 4e56 0000 linkw %fp,#0 49296: 206e 0008 moveal %fp@(8),%a0 4929a: 2f02 movel %d2,%sp@- ISR_Level level; uint32_t old_state; _ISR_Disable( level ); 4929c: 40c1 movew %sr,%d1 4929e: 8081 orl %d1,%d0 492a0: 46c0 movew %d0,%sr old_state = the_thread->current_state; 492a2: 2028 0010 movel %a0@(16),%d0 492a6: 7404 moveq #4,%d2 492a8: 8480 orl %d0,%d2 492aa: 2142 0010 movel %d2,%a0@(16) the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state ); /* FIXME: need to check which scheduler to use? */ if ( _States_Is_ready( old_state ) ) { 492ae: 4a80 tstl %d0 492b0: 661a bnes 492cc <_Thread_Set_transient+0x40> RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread ) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain; 492b2: 2268 008a moveal %a0@(138),%a1 492b6: 2251 moveal %a1@,%a1 if ( _Chain_Has_only_one_node( ready ) ) { 492b8: 2029 0008 movel %a1@(8),%d0 492bc: b091 cmpl %a1@,%d0 492be: 6714 beqs 492d4 <_Thread_Set_transient+0x48> <== ALWAYS TAKEN ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 492c0: 2250 moveal %a0@,%a1 <== NOT EXECUTED previous = the_node->previous; 492c2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED next->previous = previous; 492c6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED previous->next = next; 492ca: 2089 movel %a1,%a0@ <== NOT EXECUTED _Scheduler_priority_Ready_queue_extract( the_thread); } _ISR_Enable( level ); 492cc: 46c1 movew %d1,%sr } 492ce: 241f movel %sp@+,%d2 492d0: 4e5e unlk %fp 492d2: 4e75 rts RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 492d4: 2409 movel %a1,%d2 492d6: 5882 addql #4,%d2 head->next = tail; head->previous = NULL; 492d8: 42a9 0004 clrl %a1@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 492dc: 2282 movel %d2,%a1@ head->next = tail; head->previous = NULL; tail->previous = head; 492de: 2349 0008 movel %a1,%a1@(8) _Chain_Initialize_empty( ready ); _Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map ); 492e2: 2068 008a moveal %a0@(138),%a0 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 492e6: 2268 0004 moveal %a0@(4),%a1 492ea: 3028 000e movew %a0@(14),%d0 492ee: 3411 movew %a1@,%d2 492f0: c082 andl %d2,%d0 492f2: 3280 movew %d0,%a1@ if ( *the_priority_map->minor == 0 ) 492f4: 66d6 bnes 492cc <_Thread_Set_transient+0x40> _Priority_Major_bit_map &= the_priority_map->block_major; 492f6: 3439 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d2 492fc: 3028 000c movew %a0@(12),%d0 49300: c082 andl %d2,%d0 49302: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map> /* FIXME: need to check which scheduler to use? */ if ( _States_Is_ready( old_state ) ) { _Scheduler_priority_Ready_queue_extract( the_thread); } _ISR_Enable( level ); 49308: 46c1 movew %d1,%sr } 4930a: 241f movel %sp@+,%d2 4930c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049374 <_Thread_Stack_Free>: */ void _Thread_Stack_Free( Thread_Control *the_thread ) { 49374: 4e56 0000 linkw %fp,#0 49378: 206e 0008 moveal %fp@(8),%a0 #if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) /* * If the API provided the stack space, then don't free it. */ if ( !the_thread->Start.core_allocated_stack ) 4937c: 4a28 00b0 tstb %a0@(176) 49380: 6714 beqs 49396 <_Thread_Stack_Free+0x22> <== NEVER TAKEN * Call ONLY the CPU table stack free hook, or the * the RTEMS workspace free. This is so the free * routine properly matches the allocation of the stack. */ if ( Configuration.stack_free_hook ) 49382: 2279 0005 e3ec moveal 5e3ec ,%a1 49388: 4a89 tstl %a1 4938a: 670e beqs 4939a <_Thread_Stack_Free+0x26> <== ALWAYS TAKEN (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); 4938c: 2d68 00b6 0008 movel %a0@(182),%fp@(8) <== NOT EXECUTED else _Workspace_Free( the_thread->Start.Initial_stack.area ); } 49392: 4e5e unlk %fp <== NOT EXECUTED * the RTEMS workspace free. This is so the free * routine properly matches the allocation of the stack. */ if ( Configuration.stack_free_hook ) (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); 49394: 4ed1 jmp %a1@ <== NOT EXECUTED else _Workspace_Free( the_thread->Start.Initial_stack.area ); } 49396: 4e5e unlk %fp <== NOT EXECUTED 49398: 4e75 rts <== NOT EXECUTED */ if ( Configuration.stack_free_hook ) (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); 4939a: 2d68 00b6 0008 movel %a0@(182),%fp@(8) } 493a0: 4e5e unlk %fp */ if ( Configuration.stack_free_hook ) (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); 493a2: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> =============================================================================== 000493f8 <_Thread_Start>: */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states ) { return (the_states & STATES_DORMANT); 493f8: 7001 moveq #1,%d0 Thread_Start_types the_prototype, void *entry_point, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 493fa: 4e56 0000 linkw %fp,#0 493fe: 2f0a movel %a2,%sp@- 49400: 246e 0008 moveal %fp@(8),%a2 49404: c0aa 0010 andl %a2@(16),%d0 if ( _States_Is_dormant( the_thread->current_state ) ) { 49408: 660a bnes 49414 <_Thread_Start+0x1c> <== ALWAYS TAKEN return true; } return false; } 4940a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4940e: 4e5e unlk %fp <== NOT EXECUTED _User_extensions_Thread_start( the_thread ); return true; } return false; 49410: 4200 clrb %d0 <== NOT EXECUTED } 49412: 4e75 rts <== NOT EXECUTED the_thread->Start.prototype = the_prototype; the_thread->Start.pointer_argument = pointer_argument; the_thread->Start.numeric_argument = numeric_argument; _Thread_Load_environment( the_thread ); 49414: 2f0a movel %a2,%sp@- Thread_Entry_numeric_type numeric_argument ) { if ( _States_Is_dormant( the_thread->current_state ) ) { the_thread->Start.entry_point = (Thread_Entry) entry_point; 49416: 256e 0010 008e movel %fp@(16),%a2@(142) the_thread->Start.prototype = the_prototype; 4941c: 256e 000c 0092 movel %fp@(12),%a2@(146) the_thread->Start.pointer_argument = pointer_argument; 49422: 256e 0014 0096 movel %fp@(20),%a2@(150) the_thread->Start.numeric_argument = numeric_argument; 49428: 256e 0018 009a movel %fp@(24),%a2@(154) _Thread_Load_environment( the_thread ); 4942e: 4eb9 0004 ca08 jsr 4ca08 <_Thread_Load_environment> _Thread_Ready( the_thread ); 49434: 2f0a movel %a2,%sp@- 49436: 4eb9 0004 ccec jsr 4ccec <_Thread_Ready> _User_extensions_Thread_start( the_thread ); 4943c: 2f0a movel %a2,%sp@- 4943e: 4eb9 0004 97f8 jsr 497f8 <_User_extensions_Thread_start> return true; } return false; } 49444: 246e fffc moveal %fp@(-4),%a2 _Thread_Ready( the_thread ); _User_extensions_Thread_start( the_thread ); return true; 49448: 4fef 000c lea %sp@(12),%sp } return false; } 4944c: 4e5e unlk %fp _Thread_Ready( the_thread ); _User_extensions_Thread_start( the_thread ); return true; 4944e: 7001 moveq #1,%d0 } return false; } ... =============================================================================== 00049454 <_Thread_Suspend>: Thread_Control *the_thread ) { ISR_Level level; _ISR_Disable( level ); 49454: 203c 0000 0700 movel #1792,%d0 */ void _Thread_Suspend( Thread_Control *the_thread ) { 4945a: 4e56 0000 linkw %fp,#0 4945e: 206e 0008 moveal %fp@(8),%a0 49462: 2f02 movel %d2,%sp@- ISR_Level level; _ISR_Disable( level ); 49464: 40c2 movew %sr,%d2 49466: 8082 orl %d2,%d0 49468: 46c0 movew %d0,%sr if ( !_States_Is_ready( the_thread->current_state ) ) { 4946a: 2028 0010 movel %a0@(16),%d0 4946e: 6712 beqs 49482 <_Thread_Suspend+0x2e> <== ALWAYS TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control states_to_set, States_Control current_state ) { return (current_state | states_to_set); 49470: 7202 moveq #2,%d1 <== NOT EXECUTED 49472: 8280 orl %d0,%d1 <== NOT EXECUTED 49474: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED the_thread->current_state = _States_Set( STATES_SUSPENDED, the_thread->current_state ); _ISR_Enable( level ); 49478: 46c2 movew %d2,%sr <== NOT EXECUTED the_thread->current_state = STATES_SUSPENDED; _Scheduler_Block(&_Scheduler, the_thread); _ISR_Enable( level ); } 4947a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4947e: 4e5e unlk %fp <== NOT EXECUTED 49480: 4e75 rts <== NOT EXECUTED 49482: 2f08 movel %a0,%sp@- 49484: 4879 0005 fcfe pea 5fcfe <_Scheduler> _States_Set( STATES_SUSPENDED, the_thread->current_state ); _ISR_Enable( level ); return; } the_thread->current_state = STATES_SUSPENDED; 4948a: 7002 moveq #2,%d0 4948c: 2140 0010 movel %d0,%a0@(16) 49490: 2079 0005 fd0a moveal 5fd0a <_Scheduler+0xc>,%a0 49496: 4e90 jsr %a0@ _Scheduler_Block(&_Scheduler, the_thread); _ISR_Enable( level ); 49498: 46c2 movew %d2,%sr 4949a: 508f addql #8,%sp } 4949c: 242e fffc movel %fp@(-4),%d2 494a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000494a4 <_Thread_Tickle_timeslice>: * * Output parameters: NONE */ void _Thread_Tickle_timeslice( void ) { 494a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 494a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_Control *executing; executing = _Thread_Executing; 494aa: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED /* * If the thread is not preemptible or is not ready, then * just return. */ if ( !executing->is_preemptible ) 494b0: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED 494b4: 6720 beqs 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED return; if ( !_States_Is_ready( executing->current_state ) ) 494b6: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 494ba: 661a bnes 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED /* * The cpu budget algorithm determines what happens next. */ switch ( executing->budget_algorithm ) { 494bc: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED 494c0: 7201 moveq #1,%d1 <== NOT EXECUTED 494c2: b280 cmpl %d0,%d1 <== NOT EXECUTED 494c4: 6210 bhis 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED 494c6: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 494ca: b280 cmpl %d0,%d1 <== NOT EXECUTED 494cc: 642e bccs 494fc <_Thread_Tickle_timeslice+0x58> <== NOT EXECUTED 494ce: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 494d2: b280 cmpl %d0,%d1 <== NOT EXECUTED 494d4: 6708 beqs 494de <_Thread_Tickle_timeslice+0x3a> <== NOT EXECUTED if ( --executing->cpu_time_budget == 0 ) (*executing->budget_callout)( executing ); break; #endif } } 494d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 494da: 4e5e unlk %fp <== NOT EXECUTED 494dc: 4e75 rts <== NOT EXECUTED } break; #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: if ( --executing->cpu_time_budget == 0 ) 494de: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 494e2: 5380 subql #1,%d0 <== NOT EXECUTED 494e4: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 494e8: 66ec bnes 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED (*executing->budget_callout)( executing ); 494ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494ec: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED 494f0: 4e90 jsr %a0@ <== NOT EXECUTED break; #endif } } 494f2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED break; #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: if ( --executing->cpu_time_budget == 0 ) (*executing->budget_callout)( executing ); 494f6: 588f addql #4,%sp <== NOT EXECUTED break; #endif } } 494f8: 4e5e unlk %fp <== NOT EXECUTED 494fa: 4e75 rts <== NOT EXECUTED case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: #endif if ( (int)(--executing->cpu_time_budget) <= 0 ) { 494fc: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 49500: 5380 subql #1,%d0 <== NOT EXECUTED 49502: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 49506: 6ece bgts 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 49508: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED 4950e: 2079 0005 fd06 moveal 5fd06 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 49514: 4e90 jsr %a0@ <== NOT EXECUTED * executing thread's timeslice is reset. Otherwise, the * currently executing thread is placed at the rear of the * FIFO for this priority and a new heir is selected. */ _Scheduler_Yield( ); executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 49516: 588f addql #4,%sp <== NOT EXECUTED 49518: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 4951e: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED if ( --executing->cpu_time_budget == 0 ) (*executing->budget_callout)( executing ); break; #endif } } 49522: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49526: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000483e0 <_Thread_blocking_operation_Cancel>: /* * If the sync state is timed out, this is very likely not needed. * But better safe than sorry when it comes to critical sections. */ if ( _Watchdog_Is_active( &the_thread->Timer ) ) { 483e0: 7202 moveq #2,%d1 <== NOT EXECUTED Thread_blocking_operation_States sync_state __attribute__((unused)), #endif Thread_Control *the_thread, ISR_Level level ) { 483e2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 483e6: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 483ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483ec: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED #endif /* * The thread is not waiting on anything after this completes. */ the_thread->Wait.queue = NULL; 483f0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED /* * If the sync state is timed out, this is very likely not needed. * But better safe than sorry when it comes to critical sections. */ if ( _Watchdog_Is_active( &the_thread->Timer ) ) { 483f4: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 483f8: 671c beqs 48416 <_Thread_blocking_operation_Cancel+0x36><== NOT EXECUTED _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); (void) _Watchdog_Remove( &the_thread->Timer ); } else _ISR_Enable( level ); 483fa: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 483fc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 48400: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48404: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4840a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4840e: 4e5e unlk %fp <== NOT EXECUTED 48410: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 48416: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4841a: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED * If the sync state is timed out, this is very likely not needed. * But better safe than sorry when it comes to critical sections. */ if ( _Watchdog_Is_active( &the_thread->Timer ) ) { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4841e: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 48420: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48424: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 4842a: 588f addql #4,%sp <== NOT EXECUTED 4842c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 48432: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 48436: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4843a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4843e: 4e5e unlk %fp <== NOT EXECUTED 48440: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED ... =============================================================================== 00048ca0 <_Thread_queue_Dequeue>: Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) dequeue_p = _Thread_queue_Dequeue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; 48ca0: 41f9 0004 ca84 lea 4ca84 <_Thread_queue_Dequeue_fifo>,%a0 Thread_Control *(*dequeue_p)( Thread_queue_Control * ); Thread_Control *the_thread; ISR_Level level; Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 48ca6: 7001 moveq #1,%d0 */ Thread_Control *_Thread_queue_Dequeue( Thread_queue_Control *the_thread_queue ) { 48ca8: 4e56 fff4 linkw %fp,#-12 48cac: 48d7 040c moveml %d2-%d3/%a2,%sp@ 48cb0: 246e 0008 moveal %fp@(8),%a2 Thread_Control *(*dequeue_p)( Thread_queue_Control * ); Thread_Control *the_thread; ISR_Level level; Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 48cb4: b0aa 0034 cmpl %a2@(52),%d0 48cb8: 6722 beqs 48cdc <_Thread_queue_Dequeue+0x3c> dequeue_p = _Thread_queue_Dequeue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; the_thread = (*dequeue_p)( the_thread_queue ); 48cba: 2f0a movel %a2,%sp@- 48cbc: 4e90 jsr %a0@ _ISR_Disable( level ); 48cbe: 223c 0000 0700 movel #1792,%d1 48cc4: 40c2 movew %sr,%d2 48cc6: 8282 orl %d2,%d1 48cc8: 46c1 movew %d1,%sr if ( !the_thread ) { 48cca: 588f addql #4,%sp 48ccc: 4a80 tstl %d0 48cce: 6728 beqs 48cf8 <_Thread_queue_Dequeue+0x58> <== ALWAYS TAKEN (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; the_thread = _Thread_Executing; } } _ISR_Enable( level ); 48cd0: 46c2 movew %d2,%sr return the_thread; } 48cd2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 48cd8: 4e5e unlk %fp 48cda: 4e75 rts if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) dequeue_p = _Thread_queue_Dequeue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; the_thread = (*dequeue_p)( the_thread_queue ); 48cdc: 2f0a movel %a2,%sp@- Thread_Control *the_thread; ISR_Level level; Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) dequeue_p = _Thread_queue_Dequeue_priority; 48cde: 41f9 0004 8d1c lea 48d1c <_Thread_queue_Dequeue_priority>,%a0 else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; the_thread = (*dequeue_p)( the_thread_queue ); 48ce4: 4e90 jsr %a0@ _ISR_Disable( level ); 48ce6: 223c 0000 0700 movel #1792,%d1 48cec: 40c2 movew %sr,%d2 48cee: 8282 orl %d2,%d1 48cf0: 46c1 movew %d1,%sr if ( !the_thread ) { 48cf2: 588f addql #4,%sp 48cf4: 4a80 tstl %d0 48cf6: 66d8 bnes 48cd0 <_Thread_queue_Dequeue+0x30> sync_state = the_thread_queue->sync_state; if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 48cf8: 222a 0030 movel %a2@(48),%d1 48cfc: 7601 moveq #1,%d3 48cfe: 5381 subql #1,%d1 48d00: b681 cmpl %d1,%d3 48d02: 65cc bcss 48cd0 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 48d04: 7203 moveq #3,%d1 <== NOT EXECUTED the_thread = _Thread_Executing; 48d06: 2039 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED _ISR_Disable( level ); if ( !the_thread ) { sync_state = the_thread_queue->sync_state; if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 48d0c: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED the_thread = _Thread_Executing; } } _ISR_Enable( level ); 48d10: 46c2 movew %d2,%sr <== NOT EXECUTED return the_thread; } 48d12: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48d18: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ca84 <_Thread_queue_Dequeue_fifo>: ) { ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4ca84: 203c 0000 0700 movel #1792,%d0 */ Thread_Control *_Thread_queue_Dequeue_fifo( Thread_queue_Control *the_thread_queue ) { 4ca8a: 4e56 0000 linkw %fp,#0 4ca8e: 226e 0008 moveal %fp@(8),%a1 4ca92: 2f0b movel %a3,%sp@- 4ca94: 2f0a movel %a2,%sp@- ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4ca96: 40c1 movew %sr,%d1 4ca98: 8081 orl %d1,%d0 4ca9a: 46c0 movew %d0,%sr return the_thread; } _ISR_Enable( level ); return NULL; } 4ca9c: 2049 moveal %a1,%a0 4ca9e: 2458 moveal %a0@+,%a2 { ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) { 4caa0: b1ca cmpal %a2,%a0 4caa2: 6768 beqs 4cb0c <_Thread_queue_Dequeue_fifo+0x88><== ALWAYS TAKEN Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 4caa4: 2052 moveal %a2@,%a0 <== NOT EXECUTED the_thread = (Thread_Control *) 4caa6: 264a moveal %a2,%a3 <== NOT EXECUTED _Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo ); the_thread->Wait.queue = NULL; if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4caa8: 7002 moveq #2,%d0 <== NOT EXECUTED head->next = new_first; 4caaa: 2288 movel %a0,%a1@ <== NOT EXECUTED new_first->previous = head; 4caac: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) { the_thread = (Thread_Control *) _Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo ); the_thread->Wait.queue = NULL; 4cab0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4cab4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4cab8: 6720 beqs 4cada <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED _ISR_Enable( level ); 4caba: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4cabc: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4cac2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cac4: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED return the_thread; } _ISR_Enable( level ); return NULL; } 4caca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cace: 200b movel %a3,%d0 <== NOT EXECUTED 4cad0: 508f addql #8,%sp <== NOT EXECUTED 4cad2: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4cad6: 4e5e unlk %fp <== NOT EXECUTED 4cad8: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 4cada: 7003 moveq #3,%d0 <== NOT EXECUTED 4cadc: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { _ISR_Enable( level ); _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4cae0: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4cae2: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4cae6: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 4caec: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4caf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4caf4: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED return the_thread; } _ISR_Enable( level ); return NULL; } 4cafa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cafe: 200b movel %a3,%d0 <== NOT EXECUTED 4cb00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb04: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4cb08: 4e5e unlk %fp <== NOT EXECUTED 4cb0a: 4e75 rts <== NOT EXECUTED #endif return the_thread; } _ISR_Enable( level ); 4cb0c: 46c1 movew %d1,%sr return NULL; 4cb0e: 97cb subal %a3,%a3 } 4cb10: 200b movel %a3,%d0 4cb12: 246e fff8 moveal %fp@(-8),%a2 4cb16: 266e fffc moveal %fp@(-4),%a3 4cb1a: 4e5e unlk %fp ... =============================================================================== 00048d1c <_Thread_queue_Dequeue_priority>: Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 48d1c: 203c 0000 0700 movel #1792,%d0 */ Thread_Control *_Thread_queue_Dequeue_priority( Thread_queue_Control *the_thread_queue ) { 48d22: 4e56 ffe8 linkw %fp,#-24 48d26: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 48d2a: 266e 0008 moveal %fp@(8),%a3 Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 48d2e: 40c3 movew %sr,%d3 48d30: 8083 orl %d3,%d0 48d32: 46c0 movew %d0,%sr for( index=0 ; 48d34: 4280 clrl %d0 Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 48d36: 204b moveal %a3,%a0 RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 48d38: 2400 movel %d0,%d2 48d3a: 2200 movel %d0,%d1 for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 48d3c: 5280 addql #1,%d0 48d3e: e58a lsll #2,%d2 48d40: e989 lsll #4,%d1 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48d42: 2450 moveal %a0@,%a2 48d44: 9282 subl %d2,%d1 Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 48d46: 41e8 000c lea %a0@(12),%a0 48d4a: 43f3 1804 lea %a3@(00000004,%d1:l),%a1 if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) { 48d4e: b3ca cmpal %a2,%a1 48d50: 6616 bnes 48d68 <_Thread_queue_Dequeue_priority+0x4c> Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; 48d52: 7204 moveq #4,%d1 48d54: b280 cmpl %d0,%d1 48d56: 66e0 bnes 48d38 <_Thread_queue_Dequeue_priority+0x1c> } /* * We did not find a thread to unblock. */ _ISR_Enable( level ); 48d58: 46c3 movew %d3,%sr return NULL; 48d5a: 4282 clrl %d2 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48d5c: 2002 movel %d2,%d0 48d5e: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48d64: 4e5e unlk %fp 48d66: 4e75 rts 48d68: 200a movel %a2,%d0 _ISR_Disable( level ); for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) { the_thread = (Thread_Control *) _Chain_First( 48d6a: 240a movel %a2,%d2 48d6c: 0680 0000 003c addil #60,%d0 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48d72: 206a 0038 moveal %a2@(56),%a0 dequeue: the_thread->Wait.queue = NULL; new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next; 48d76: 2252 moveal %a2@,%a1 previous_node = the_thread->Object.Node.previous; 48d78: 266a 0004 moveal %a2@(4),%a3 */ _ISR_Enable( level ); return NULL; dequeue: the_thread->Wait.queue = NULL; 48d7c: 42aa 0044 clrl %a2@(68) new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next; previous_node = the_thread->Object.Node.previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 48d80: b088 cmpl %a0,%d0 48d82: 6700 008a beqw 48e0e <_Thread_queue_Dequeue_priority+0xf2> #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48d86: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED next_node = the_thread->Object.Node.next; previous_node = the_thread->Object.Node.previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; 48d8a: 2a50 moveal %a0@,%a5 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 48d8c: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; 48d90: 2688 movel %a0,%a3@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 48d92: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; next_node->previous = new_first_node; new_first_node->next = next_node; 48d96: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 48d98: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED 48d9c: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED 48da0: 6716 beqs 48db8 <_Thread_queue_Dequeue_priority+0x9c><== NOT EXECUTED /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; 48da2: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); 48da6: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED 48daa: 2889 movel %a1,%a4@ <== NOT EXECUTED new_first_node->next = next_node; new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); 48dac: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 48db0: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; tail->previous = last_node; 48db4: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED } else { previous_node->next = next_node; next_node->previous = previous_node; } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 48db8: 7002 moveq #2,%d0 48dba: b0aa 0050 cmpl %a2@(80),%d0 48dbe: 671e beqs 48dde <_Thread_queue_Dequeue_priority+0xc2><== NEVER TAKEN _ISR_Enable( level ); 48dc0: 46c3 movew %d3,%sr RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 48dc2: 2f3c 1003 fff8 movel #268697592,%sp@- 48dc8: 2f0a movel %a2,%sp@- 48dca: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> 48dd0: 508f addql #8,%sp #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48dd2: 2002 movel %d2,%d0 48dd4: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48dda: 4e5e unlk %fp 48ddc: 4e75 rts RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 48dde: 7203 moveq #3,%d1 <== NOT EXECUTED 48de0: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { _ISR_Enable( level ); _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 48de4: 46c3 movew %d3,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 48de6: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48dea: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 48df0: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 48df6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48df8: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED 48dfe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 48e02: 2002 movel %d2,%d0 <== NOT EXECUTED 48e04: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 48e0a: 4e5e unlk %fp <== NOT EXECUTED 48e0c: 4e75 rts <== NOT EXECUTED head->next = new_second_node; tail->previous = last_node; last_node->next = tail; } } else { previous_node->next = next_node; 48e0e: 2689 movel %a1,%a3@ next_node->previous = previous_node; 48e10: 234b 0004 movel %a3,%a1@(4) 48e14: 60a2 bras 48db8 <_Thread_queue_Dequeue_priority+0x9c> ... =============================================================================== 0004cb20 <_Thread_queue_Enqueue_fifo>: ) { Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4cb20: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED Thread_blocking_operation_States _Thread_queue_Enqueue_fifo ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) { 4cb26: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cb2a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cb2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb30: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4cb34: 2f02 movel %d2,%sp@- <== NOT EXECUTED Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4cb36: 40c1 movew %sr,%d1 <== NOT EXECUTED 4cb38: 8081 orl %d1,%d0 <== NOT EXECUTED 4cb3a: 46c0 movew %d0,%sr <== NOT EXECUTED sync_state = the_thread_queue->sync_state; 4cb3c: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4cb40: 7401 moveq #1,%d2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); sync_state = the_thread_queue->sync_state; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 4cb42: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4cb46: b480 cmpl %d0,%d2 <== NOT EXECUTED 4cb48: 670e beqs 4cb58 <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED * * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; } 4cb4a: 241f movel %sp@+,%d2 <== NOT EXECUTED * For example, the blocking thread could have been given * the mutex by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ *level_p = level; 4cb4c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED return sync_state; } 4cb50: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cb52: 4e5e unlk %fp <== NOT EXECUTED * For example, the blocking thread could have been given * the mutex by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ *level_p = level; 4cb54: 2081 movel %d1,%a0@ <== NOT EXECUTED return sync_state; } 4cb56: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 4cb58: 2408 movel %a0,%d2 <== NOT EXECUTED 4cb5a: 5882 addql #4,%d2 <== NOT EXECUTED Chain_Node *old_last = tail->previous; 4cb5c: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 4cb60: 2282 movel %d2,%a1@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 4cb62: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED old_last->next = the_node; 4cb66: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->previous = old_last; 4cb68: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { _Chain_Append_unprotected( &the_thread_queue->Queues.Fifo, &the_thread->Object.Node ); the_thread->Wait.queue = the_thread_queue; 4cb6c: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; _ISR_Enable( level ); 4cb70: 46c1 movew %d1,%sr <== NOT EXECUTED * * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; } 4cb72: 241f movel %sp@+,%d2 <== NOT EXECUTED 4cb74: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cb76: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048ec0 <_Thread_queue_Enqueue_priority>: Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) { 48ec0: 4e56 ffe0 linkw %fp,#-32 48ec4: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ 48ec8: 246e 000c moveal %fp@(12),%a2 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 48ecc: 41ea 003c lea %a2@(60),%a0 */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48ed0: 49ea 0038 lea %a2@(56),%a4 48ed4: 266e 0008 moveal %fp@(8),%a3 Priority_Control priority; States_Control block_state; _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority; 48ed8: 222a 0014 movel %a2@(20),%d1 RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( Priority_Control the_priority ) { return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER); 48edc: 2a01 movel %d1,%d5 48ede: ec8d lsrl #6,%d5 header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; block_state = the_thread_queue->state; 48ee0: 242b 0038 movel %a3@(56),%d2 Chain_Node *tail = _Chain_Tail( the_chain ); 48ee4: 2548 0038 movel %a0,%a2@(56) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48ee8: 254c 0040 movel %a4,%a2@(64) Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 48eec: 42aa 003c clrl %a2@(60) if ( _Thread_queue_Is_reverse_search( priority ) ) 48ef0: 0801 0005 btst #5,%d1 48ef4: 665e bnes 48f54 <_Thread_queue_Enqueue_priority+0x94> 48ef6: 700c moveq #12,%d0 48ef8: 4c00 5800 mulsl %d0,%d5 goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); 48efc: 2c3c 0000 0700 movel #1792,%d6 48f02: 2006 movel %d6,%d0 RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 48f04: 49f3 5804 lea %a3@(00000004,%d5:l),%a4 48f08: 40c3 movew %sr,%d3 48f0a: 8083 orl %d3,%d0 48f0c: 46c0 movew %d0,%sr 48f0e: 2803 movel %d3,%d4 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48f10: 2073 5800 moveal %a3@(00000000,%d5:l),%a0 restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_First( header ); while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 48f14: b9c8 cmpal %a0,%a4 48f16: 6700 013a beqw 49052 <_Thread_queue_Enqueue_priority+0x192> search_priority = search_thread->current_priority; 48f1a: 2268 0014 moveal %a0@(20),%a1 if ( priority <= search_priority ) 48f1e: b3c1 cmpal %d1,%a1 48f20: 6418 bccs 48f3a <_Thread_queue_Enqueue_priority+0x7a> break; search_priority = search_thread->current_priority; if ( priority <= search_priority ) break; #endif _ISR_Flash( level ); 48f22: 2006 movel %d6,%d0 48f24: 46c3 movew %d3,%sr 48f26: 8083 orl %d3,%d0 48f28: 46c0 movew %d0,%sr RTEMS_INLINE_ROUTINE bool _States_Are_set ( States_Control the_states, States_Control mask ) { return ( (the_states & mask) != STATES_READY); 48f2a: 2002 movel %d2,%d0 48f2c: c0a8 0010 andl %a0@(16),%d0 if ( !_States_Are_set( search_thread->current_state, block_state) ) { 48f30: 6700 00be beqw 48ff0 <_Thread_queue_Enqueue_priority+0x130> _ISR_Enable( level ); goto restart_forward_search; } search_thread = (Thread_Control *)search_thread->Object.Node.next; 48f34: 2050 moveal %a0@,%a0 restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_First( header ); while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 48f36: b9c8 cmpal %a0,%a4 48f38: 66e0 bnes 48f1a <_Thread_queue_Enqueue_priority+0x5a> } search_thread = (Thread_Control *)search_thread->Object.Node.next; } if ( the_thread_queue->sync_state != 48f3a: 202b 0030 movel %a3@(48),%d0 48f3e: 7401 moveq #1,%d2 48f40: b480 cmpl %d0,%d2 48f42: 6700 00c4 beqw 49008 <_Thread_queue_Enqueue_priority+0x148> * For example, the blocking thread could have been given * the mutex by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ *level_p = level; 48f46: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 48f4a: 2084 movel %d4,%a0@ <== NOT EXECUTED return the_thread_queue->sync_state; } 48f4c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 48f50: 4e5e unlk %fp <== NOT EXECUTED 48f52: 4e75 rts <== NOT EXECUTED 48f54: 700c moveq #12,%d0 48f56: 4c00 5800 mulsl %d0,%d5 the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 48f5a: 4283 clrl %d3 48f5c: 1639 0005 e3c2 moveb 5e3c2 ,%d3 _ISR_Disable( level ); 48f62: 2c3c 0000 0700 movel #1792,%d6 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48f68: da8b addl %a3,%d5 48f6a: 2845 moveal %d5,%a4 the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 48f6c: 2243 moveal %d3,%a1 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48f6e: 508c addql #8,%a4 return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); 48f70: 2006 movel %d6,%d0 the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 48f72: 5289 addql #1,%a1 _ISR_Disable( level ); 48f74: 40c3 movew %sr,%d3 48f76: 8083 orl %d3,%d0 48f78: 46c0 movew %d0,%sr 48f7a: 2803 movel %d3,%d4 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48f7c: 2054 moveal %a4@,%a0 restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_Last( header ); while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 48f7e: ba88 cmpl %a0,%d5 48f80: 6720 beqs 48fa2 <_Thread_queue_Enqueue_priority+0xe2> search_priority = search_thread->current_priority; 48f82: 2268 0014 moveal %a0@(20),%a1 if ( priority >= search_priority ) 48f86: b3c1 cmpal %d1,%a1 48f88: 6318 blss 48fa2 <_Thread_queue_Enqueue_priority+0xe2><== ALWAYS TAKEN break; search_priority = search_thread->current_priority; if ( priority >= search_priority ) break; #endif _ISR_Flash( level ); 48f8a: 2006 movel %d6,%d0 <== NOT EXECUTED 48f8c: 46c3 movew %d3,%sr <== NOT EXECUTED 48f8e: 8083 orl %d3,%d0 <== NOT EXECUTED 48f90: 46c0 movew %d0,%sr <== NOT EXECUTED 48f92: 2002 movel %d2,%d0 <== NOT EXECUTED 48f94: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED if ( !_States_Are_set( search_thread->current_state, block_state) ) { 48f98: 6736 beqs 48fd0 <_Thread_queue_Enqueue_priority+0x110><== NOT EXECUTED _ISR_Enable( level ); goto restart_reverse_search; } search_thread = (Thread_Control *) search_thread->Object.Node.previous; 48f9a: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_Last( header ); while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 48f9e: ba88 cmpl %a0,%d5 <== NOT EXECUTED 48fa0: 66e0 bnes 48f82 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED } search_thread = (Thread_Control *) search_thread->Object.Node.previous; } if ( the_thread_queue->sync_state != 48fa2: 202b 0030 movel %a3@(48),%d0 48fa6: 7401 moveq #1,%d2 48fa8: b480 cmpl %d0,%d2 48faa: 669a bnes 48f46 <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 48fac: 42ab 0030 clrl %a3@(48) if ( priority == search_priority ) 48fb0: b3c1 cmpal %d1,%a1 48fb2: 677a beqs 4902e <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN goto equal_priority; search_node = (Chain_Node *) search_thread; next_node = search_node->next; 48fb4: 2250 moveal %a0@,%a1 the_node = (Chain_Node *) the_thread; the_node->next = next_node; the_node->previous = search_node; 48fb6: 2548 0004 movel %a0,%a2@(4) search_node = (Chain_Node *) search_thread; next_node = search_node->next; the_node = (Chain_Node *) the_thread; the_node->next = next_node; 48fba: 2489 movel %a1,%a2@ the_node->previous = search_node; search_node->next = the_node; next_node->previous = the_node; 48fbc: 234a 0004 movel %a2,%a1@(4) next_node = search_node->next; the_node = (Chain_Node *) the_thread; the_node->next = next_node; the_node->previous = search_node; search_node->next = the_node; 48fc0: 208a movel %a2,%a0@ next_node->previous = the_node; the_thread->Wait.queue = the_thread_queue; 48fc2: 254b 0044 movel %a3,%a2@(68) _ISR_Enable( level ); 48fc6: 46c3 movew %d3,%sr * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48fc8: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 48fcc: 4e5e unlk %fp 48fce: 4e75 rts if ( priority >= search_priority ) break; #endif _ISR_Flash( level ); if ( !_States_Are_set( search_thread->current_state, block_state) ) { _ISR_Enable( level ); 48fd0: 46c3 movew %d3,%sr <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 48fd2: 4283 clrl %d3 <== NOT EXECUTED 48fd4: 1639 0005 e3c2 moveb 5e3c2 ,%d3 <== NOT EXECUTED _ISR_Disable( level ); 48fda: 2006 movel %d6,%d0 <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 48fdc: 2243 moveal %d3,%a1 <== NOT EXECUTED 48fde: 5289 addql #1,%a1 <== NOT EXECUTED _ISR_Disable( level ); 48fe0: 40c3 movew %sr,%d3 <== NOT EXECUTED 48fe2: 8083 orl %d3,%d0 <== NOT EXECUTED 48fe4: 46c0 movew %d0,%sr <== NOT EXECUTED 48fe6: 2803 movel %d3,%d4 <== NOT EXECUTED * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48fe8: 2054 moveal %a4@,%a0 <== NOT EXECUTED restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_Last( header ); while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 48fea: ba88 cmpl %a0,%d5 <== NOT EXECUTED 48fec: 6694 bnes 48f82 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED 48fee: 60b2 bras 48fa2 <_Thread_queue_Enqueue_priority+0xe2><== NOT EXECUTED if ( priority <= search_priority ) break; #endif _ISR_Flash( level ); if ( !_States_Are_set( search_thread->current_state, block_state) ) { _ISR_Enable( level ); 48ff0: 46c3 movew %d3,%sr <== NOT EXECUTED if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); 48ff2: 2006 movel %d6,%d0 <== NOT EXECUTED 48ff4: 40c3 movew %sr,%d3 <== NOT EXECUTED 48ff6: 8083 orl %d3,%d0 <== NOT EXECUTED 48ff8: 46c0 movew %d0,%sr <== NOT EXECUTED 48ffa: 2803 movel %d3,%d4 <== NOT EXECUTED * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 48ffc: 2073 5800 moveal %a3@(00000000,%d5:l),%a0 <== NOT EXECUTED restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_First( header ); while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 49000: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 49002: 6600 ff16 bnew 48f1a <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED 49006: 604a bras 49052 <_Thread_queue_Enqueue_priority+0x192><== NOT EXECUTED if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 49008: 42ab 0030 clrl %a3@(48) if ( priority == search_priority ) 4900c: b3c1 cmpal %d1,%a1 4900e: 671e beqs 4902e <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN goto equal_priority; search_node = (Chain_Node *) search_thread; previous_node = search_node->previous; 49010: 2268 0004 moveal %a0@(4),%a1 the_node = (Chain_Node *) the_thread; the_node->next = search_node; 49014: 2488 movel %a0,%a2@ the_node->previous = previous_node; 49016: 2549 0004 movel %a1,%a2@(4) previous_node->next = the_node; 4901a: 228a movel %a2,%a1@ search_node->previous = the_node; 4901c: 214a 0004 movel %a2,%a0@(4) the_thread->Wait.queue = the_thread_queue; 49020: 254b 0044 movel %a3,%a2@(68) _ISR_Enable( level ); 49024: 46c3 movew %d3,%sr * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 49026: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 4902a: 4e5e unlk %fp 4902c: 4e75 rts the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; equal_priority: /* add at end of priority group */ search_node = _Chain_Tail( &search_thread->Wait.Block2n ); 4902e: 49e8 003c lea %a0@(60),%a4 <== NOT EXECUTED previous_node = search_node->previous; 49032: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; equal_priority: /* add at end of priority group */ search_node = _Chain_Tail( &search_thread->Wait.Block2n ); 49036: 248c movel %a4,%a2@ <== NOT EXECUTED previous_node = search_node->previous; the_node = (Chain_Node *) the_thread; the_node->next = search_node; the_node->previous = previous_node; 49038: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED previous_node->next = the_node; 4903c: 228a movel %a2,%a1@ <== NOT EXECUTED search_node->previous = the_node; 4903e: 214a 0040 movel %a2,%a0@(64) <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; 49042: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED _ISR_Enable( level ); 49046: 46c4 movew %d4,%sr <== NOT EXECUTED return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 49048: 7001 moveq #1,%d0 <== NOT EXECUTED * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 4904a: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 4904e: 4e5e unlk %fp <== NOT EXECUTED 49050: 4e75 rts <== NOT EXECUTED } search_thread = (Thread_Control *)search_thread->Object.Node.next; } if ( the_thread_queue->sync_state != 49052: 202b 0030 movel %a3@(48),%d0 if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; 49056: 327c ffff moveaw #-1,%a1 } search_thread = (Thread_Control *)search_thread->Object.Node.next; } if ( the_thread_queue->sync_state != 4905a: 7401 moveq #1,%d2 4905c: b480 cmpl %d0,%d2 4905e: 6600 fee6 bnew 48f46 <_Thread_queue_Enqueue_priority+0x86> 49062: 60a4 bras 49008 <_Thread_queue_Enqueue_priority+0x148> =============================================================================== 00048e18 <_Thread_queue_Enqueue_with_handler>: void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) { 48e18: 4e56 fff0 linkw %fp,#-16 48e1c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 48e20: 266e 0008 moveal %fp@(8),%a3 else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 48e24: 2f2b 0038 movel %a3@(56),%sp@- Thread_queue_Control *, Thread_Control *, ISR_Level * ); the_thread = _Thread_Executing; 48e28: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) { 48e2e: 242e 000c movel %fp@(12),%d2 else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 48e32: 2f0a movel %a2,%sp@- 48e34: 4eb9 0004 923c jsr 4923c <_Thread_Set_state> /* * If the thread wants to timeout, then schedule its timer. */ if ( timeout ) { 48e3a: 508f addql #8,%sp 48e3c: 4a82 tstl %d2 48e3e: 663e bnes 48e7e <_Thread_queue_Enqueue_with_handler+0x66><== NEVER TAKEN * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) enqueue_p = _Thread_queue_Enqueue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ enqueue_p = _Thread_queue_Enqueue_fifo; 48e40: 41f9 0004 cb20 lea 4cb20 <_Thread_queue_Enqueue_fifo>,%a0 } /* * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 48e46: 7001 moveq #1,%d0 48e48: b0ab 0034 cmpl %a3@(52),%d0 48e4c: 676a beqs 48eb8 <_Thread_queue_Enqueue_with_handler+0xa0><== ALWAYS TAKEN enqueue_p = _Thread_queue_Enqueue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ enqueue_p = _Thread_queue_Enqueue_fifo; sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level ); 48e4e: 486e fffc pea %fp@(-4) 48e52: 2f0a movel %a2,%sp@- 48e54: 2f0b movel %a3,%sp@- 48e56: 4e90 jsr %a0@ if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) 48e58: 4fef 000c lea %sp@(12),%sp 48e5c: 7201 moveq #1,%d1 48e5e: b280 cmpl %d0,%d1 48e60: 6712 beqs 48e74 <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN _Thread_blocking_operation_Cancel( sync_state, the_thread, level ); 48e62: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e68: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48e6a: 4eb9 0004 83e0 jsr 483e0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED 48e70: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } 48e74: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 48e7a: 4e5e unlk %fp 48e7c: 4e75 rts /* * If the thread wants to timeout, then schedule its timer. */ if ( timeout ) { _Watchdog_Initialize( 48e7e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 48e82: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED the_watchdog->id = id; 48e88: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 48e8c: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 48e90: 42aa 006c clrl %a2@(108) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 48e94: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 48e98: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48e9c: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 48ea2: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert> <== NOT EXECUTED 48ea8: 508f addql #8,%sp <== NOT EXECUTED * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) enqueue_p = _Thread_queue_Enqueue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ enqueue_p = _Thread_queue_Enqueue_fifo; 48eaa: 41f9 0004 cb20 lea 4cb20 <_Thread_queue_Enqueue_fifo>,%a0 <== NOT EXECUTED } /* * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 48eb0: 7001 moveq #1,%d0 <== NOT EXECUTED 48eb2: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED 48eb6: 6696 bnes 48e4e <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED enqueue_p = _Thread_queue_Enqueue_priority; 48eb8: 41f9 0004 8ec0 lea 48ec0 <_Thread_queue_Enqueue_priority>,%a0 48ebe: 608e bras 48e4e <_Thread_queue_Enqueue_with_handler+0x36> =============================================================================== 0004cb7c <_Thread_queue_Extract>: { /* * Can not use indirect function pointer here since Extract priority * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 4cb7c: 7201 moveq #1,%d1 <== NOT EXECUTED void _Thread_queue_Extract( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 4cb7e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cb82: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cb86: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED /* * Can not use indirect function pointer here since Extract priority * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 4cb8a: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 4cb8e: 6710 beqs 4cba0 <_Thread_queue_Extract+0x24> <== NOT EXECUTED _Thread_queue_Extract_priority( the_thread_queue, the_thread ); else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); 4cb90: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4cb94: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4cb98: 4e5e unlk %fp <== NOT EXECUTED * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) _Thread_queue_Extract_priority( the_thread_queue, the_thread ); else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); 4cb9a: 4ef9 0004 e770 jmp 4e770 <_Thread_queue_Extract_fifo> <== NOT EXECUTED /* * Can not use indirect function pointer here since Extract priority * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) _Thread_queue_Extract_priority( the_thread_queue, the_thread ); 4cba0: 42a7 clrl %sp@- <== NOT EXECUTED 4cba2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cba4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cba6: 4eb9 0004 cbb4 jsr 4cbb4 <_Thread_queue_Extract_priority_helper><== NOT EXECUTED 4cbac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); } 4cbb0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e770 <_Thread_queue_Extract_fifo>: Thread_Control *the_thread ) { ISR_Level level; _ISR_Disable( level ); 4e770: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void _Thread_queue_Extract_fifo( Thread_queue_Control *the_thread_queue __attribute__((unused)), Thread_Control *the_thread ) { 4e776: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e77a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e77c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4e780: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e782: 8081 orl %d1,%d0 <== NOT EXECUTED 4e784: 46c0 movew %d0,%sr <== NOT EXECUTED 4e786: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4e78a: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4e790: 6734 beqs 4e7c6 <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4e792: 2252 moveal %a2@,%a1 <== NOT EXECUTED _Chain_Extract_unprotected( &the_thread->Object.Node ); the_thread->Wait.queue = NULL; if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4e794: 7002 moveq #2,%d0 <== NOT EXECUTED previous = the_node->previous; 4e796: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; 4e79a: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED previous->next = next; 4e79e: 2089 movel %a1,%a0@ <== NOT EXECUTED return; } _Chain_Extract_unprotected( &the_thread->Object.Node ); the_thread->Wait.queue = NULL; 4e7a0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4e7a4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4e7a8: 6726 beqs 4e7d0 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED _ISR_Enable( level ); 4e7aa: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4e7ac: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4e7b0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e7b4: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e7ba: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e7be: 4e5e unlk %fp <== NOT EXECUTED 4e7c0: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { _ISR_Enable( level ); 4e7c6: 46c1 movew %d1,%sr <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4e7c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e7cc: 4e5e unlk %fp <== NOT EXECUTED 4e7ce: 4e75 rts <== NOT EXECUTED 4e7d0: 7003 moveq #3,%d0 <== NOT EXECUTED 4e7d2: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { _ISR_Enable( level ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4e7d6: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4e7d8: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4e7dc: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 4e7e2: 588f addql #4,%sp <== NOT EXECUTED 4e7e4: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e7ea: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4e7ee: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e7f2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e7f6: 4e5e unlk %fp <== NOT EXECUTED 4e7f8: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED ... =============================================================================== 0004cbb4 <_Thread_queue_Extract_priority_helper>: Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4cbb4: 203c 0000 0700 movel #1792,%d0 void _Thread_queue_Extract_priority_helper( Thread_queue_Control *the_thread_queue __attribute__((unused)), Thread_Control *the_thread, bool requeuing ) { 4cbba: 4e56 ffec linkw %fp,#-20 4cbbe: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 4cbc2: 246e 000c moveal %fp@(12),%a2 4cbc6: 142e 0013 moveb %fp@(19),%d2 Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4cbca: 40c1 movew %sr,%d1 4cbcc: 8081 orl %d1,%d0 4cbce: 46c0 movew %d0,%sr */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 4cbd0: 202a 0010 movel %a2@(16),%d0 4cbd4: 0280 0003 bee0 andil #245472,%d0 if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4cbda: 677e beqs 4cc5a <_Thread_queue_Extract_priority_helper+0xa6><== NEVER TAKEN RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4cbdc: 200a movel %a2,%d0 4cbde: 0680 0000 003c addil #60,%d0 /* * The thread was actually waiting on a thread queue so let's remove it. */ next_node = the_node->next; 4cbe4: 2252 moveal %a2@,%a1 previous_node = the_node->previous; 4cbe6: 266a 0004 moveal %a2@(4),%a3 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cbea: 206a 0038 moveal %a2@(56),%a0 */ next_node = the_node->next; previous_node = the_node->previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 4cbee: b088 cmpl %a0,%d0 4cbf0: 6774 beqs 4cc66 <_Thread_queue_Extract_priority_helper+0xb2><== ALWAYS TAKEN #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cbf2: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; 4cbf6: 2a50 moveal %a0@,%a5 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 4cbf8: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; 4cbfc: 2688 movel %a0,%a3@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 4cbfe: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; next_node->previous = new_first_node; new_first_node->next = next_node; 4cc02: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 4cc04: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED 4cc08: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 4cc0c: 6716 beqs 4cc24 <_Thread_queue_Extract_priority_helper+0x70><== NOT EXECUTED /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; 4cc0e: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); 4cc12: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED 4cc16: 2889 movel %a1,%a4@ <== NOT EXECUTED new_first_node->next = next_node; new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); 4cc18: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 4cc1c: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; tail->previous = last_node; 4cc20: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED /* * If we are not supposed to touch timers or the thread's state, return. */ if ( requeuing ) { 4cc24: 4a02 tstb %d2 <== NOT EXECUTED 4cc26: 6626 bnes 4cc4e <_Thread_queue_Extract_priority_helper+0x9a><== NOT EXECUTED _ISR_Enable( level ); return; } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4cc28: 7002 moveq #2,%d0 <== NOT EXECUTED 4cc2a: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4cc2e: 6742 beqs 4cc72 <_Thread_queue_Extract_priority_helper+0xbe><== NOT EXECUTED _ISR_Enable( level ); 4cc30: 46c1 movew %d1,%sr <== NOT EXECUTED 4cc32: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4cc36: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cc3c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cc42: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4cc46: 4e5e unlk %fp <== NOT EXECUTED 4cc48: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED /* * If we are not supposed to touch timers or the thread's state, return. */ if ( requeuing ) { _ISR_Enable( level ); 4cc4e: 46c1 movew %d1,%sr #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cc50: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4cc56: 4e5e unlk %fp 4cc58: 4e75 rts Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { _ISR_Enable( level ); 4cc5a: 46c1 movew %d1,%sr <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cc5c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cc62: 4e5e unlk %fp <== NOT EXECUTED 4cc64: 4e75 rts <== NOT EXECUTED head->next = new_second_node; tail->previous = last_node; last_node->next = tail; } } else { previous_node->next = next_node; 4cc66: 2689 movel %a1,%a3@ next_node->previous = previous_node; 4cc68: 234b 0004 movel %a3,%a1@(4) /* * If we are not supposed to touch timers or the thread's state, return. */ if ( requeuing ) { 4cc6c: 4a02 tstb %d2 4cc6e: 67b8 beqs 4cc28 <_Thread_queue_Extract_priority_helper+0x74><== NEVER TAKEN 4cc70: 60dc bras 4cc4e <_Thread_queue_Extract_priority_helper+0x9a> 4cc72: 7003 moveq #3,%d0 <== NOT EXECUTED 4cc74: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { _ISR_Enable( level ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4cc78: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4cc7a: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4cc7e: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED 4cc84: 588f addql #4,%sp <== NOT EXECUTED 4cc86: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED 4cc8c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4cc90: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cc96: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4cc9a: 4e5e unlk %fp <== NOT EXECUTED 4cc9c: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED ... =============================================================================== 00049064 <_Thread_queue_Extract_with_proxy>: */ bool _Thread_queue_Extract_with_proxy( Thread_Control *the_thread ) { 49064: 4e56 0000 linkw %fp,#0 49068: 206e 0008 moveal %fp@(8),%a0 */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 4906c: 2028 0010 movel %a0@(16),%d0 49070: 0280 0003 bee0 andil #245472,%d0 States_Control state; state = the_thread->current_state; if ( _States_Is_waiting_on_thread_queue( state ) ) { 49076: 6606 bnes 4907e <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); return true; } return false; } 49078: 4e5e unlk %fp #endif _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); return true; } return false; 4907a: 4200 clrb %d0 } 4907c: 4e75 rts if ( proxy_extract_callout ) (*proxy_extract_callout)( the_thread ); } #endif _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 4907e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 49080: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED 49084: 4eb9 0004 cb7c jsr 4cb7c <_Thread_queue_Extract> <== NOT EXECUTED return true; 4908a: 508f addql #8,%sp <== NOT EXECUTED } return false; } 4908c: 4e5e unlk %fp <== NOT EXECUTED (*proxy_extract_callout)( the_thread ); } #endif _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); return true; 4908e: 7001 moveq #1,%d0 <== NOT EXECUTED } return false; } ... =============================================================================== 0004b258 <_Thread_queue_First>: Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) first_p = _Thread_queue_First_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; 4b258: 43f9 0004 eee8 lea 4eee8 <_Thread_queue_First_fifo>,%a1 <== NOT EXECUTED Thread_queue_Control *the_thread_queue ) { Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 4b25e: 7001 moveq #1,%d0 <== NOT EXECUTED */ Thread_Control *_Thread_queue_First( Thread_queue_Control *the_thread_queue ) { 4b260: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b264: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 4b268: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4b26c: 6708 beqs 4b276 <_Thread_queue_First+0x1e> <== NOT EXECUTED first_p = _Thread_queue_First_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; return (*first_p)( the_thread_queue ); 4b26e: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4b272: 4e5e unlk %fp <== NOT EXECUTED if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) first_p = _Thread_queue_First_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; return (*first_p)( the_thread_queue ); 4b274: 4ed1 jmp %a1@ <== NOT EXECUTED 4b276: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4b27a: 4e5e unlk %fp <== NOT EXECUTED ) { Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) first_p = _Thread_queue_First_priority; 4b27c: 43f9 0004 b284 lea 4b284 <_Thread_queue_First_priority>,%a1<== NOT EXECUTED else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; return (*first_p)( the_thread_queue ); 4b282: 4ed1 jmp %a1@ <== NOT EXECUTED =============================================================================== 0004eee8 <_Thread_queue_First_fifo>: */ Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ) { 4eee8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo ); return NULL; } 4eeec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4eef0: 2018 movel %a0@+,%d0 <== NOT EXECUTED Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) 4eef2: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4eef4: 6704 beqs 4eefa <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo ); return NULL; } 4eef6: 4e5e unlk %fp <== NOT EXECUTED 4eef8: 4e75 rts <== NOT EXECUTED ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo ); return NULL; 4eefa: 4280 clrl %d0 <== NOT EXECUTED } 4eefc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b284 <_Thread_queue_First_priority>: Thread_queue_Control *the_thread_queue ) { uint32_t index; for( index=0 ; 4b284: 4281 clrl %d1 <== NOT EXECUTED */ Thread_Control *_Thread_queue_First_priority ( Thread_queue_Control *the_thread_queue ) { 4b286: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b28a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b28e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; 4b292: 204a moveal %a2,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4b294: 2601 movel %d1,%d3 <== NOT EXECUTED 4b296: 2401 movel %d1,%d2 <== NOT EXECUTED { uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 4b298: 5281 addql #1,%d1 <== NOT EXECUTED 4b29a: e58b lsll #2,%d3 <== NOT EXECUTED 4b29c: e98a lsll #4,%d2 <== NOT EXECUTED return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; } 4b29e: 2010 movel %a0@,%d0 <== NOT EXECUTED 4b2a0: 9483 subl %d3,%d2 <== NOT EXECUTED { uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 4b2a2: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED 4b2a6: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) 4b2aa: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b2ac: 6608 bnes 4b2b6 <_Thread_queue_First_priority+0x32><== NOT EXECUTED Thread_queue_Control *the_thread_queue ) { uint32_t index; for( index=0 ; 4b2ae: 7004 moveq #4,%d0 <== NOT EXECUTED 4b2b0: b081 cmpl %d1,%d0 <== NOT EXECUTED 4b2b2: 66e0 bnes 4b294 <_Thread_queue_First_priority+0x10><== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; 4b2b4: 4200 clrb %d0 <== NOT EXECUTED } 4b2b6: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 4b2ba: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000490d0 <_Thread_queue_Initialize>: the_thread_queue->state = state; the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 490d0: 7201 moveq #1,%d1 Thread_queue_Control *the_thread_queue, Thread_queue_Disciplines the_discipline, States_Control state, uint32_t timeout_status ) { 490d2: 4e56 0000 linkw %fp,#0 490d6: 206e 0008 moveal %fp@(8),%a0 490da: 2f0a movel %a2,%sp@- 490dc: 202e 000c movel %fp@(12),%d0 490e0: 2f02 movel %d2,%sp@- the_thread_queue->state = state; 490e2: 216e 0010 0038 movel %fp@(16),%a0@(56) the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status; 490e8: 216e 0014 003c movel %fp@(20),%a0@(60) States_Control state, uint32_t timeout_status ) { the_thread_queue->state = state; the_thread_queue->discipline = the_discipline; 490ee: 2140 0034 movel %d0,%a0@(52) the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 490f2: 42a8 0030 clrl %a0@(48) if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 490f6: b280 cmpl %d0,%d1 490f8: 6716 beqs 49110 <_Thread_queue_Initialize+0x40> RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 490fa: 2448 moveal %a0,%a2 490fc: 588a addql #4,%a2 head->next = tail; head->previous = NULL; 490fe: 42a8 0004 clrl %a0@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 49102: 208a movel %a2,%a0@ head->next = tail; head->previous = NULL; tail->previous = head; 49104: 2148 0008 movel %a0,%a0@(8) _Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] ); } else { /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Chain_Initialize_empty( &the_thread_queue->Queues.Fifo ); } } 49108: 241f movel %sp@+,%d2 4910a: 245f moveal %sp@+,%a2 4910c: 4e5e unlk %fp 4910e: 4e75 rts the_thread_queue->state = state; the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 49110: 2248 moveal %a0,%a1 49112: 4280 clrl %d0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 49114: 2400 movel %d0,%d2 49116: 2200 movel %d0,%d1 uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++) 49118: 5280 addql #1,%d0 4911a: e58a lsll #2,%d2 4911c: e989 lsll #4,%d1 head->next = tail; head->previous = NULL; 4911e: 42a9 0004 clrl %a1@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 49122: 9282 subl %d2,%d1 */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 49124: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 49128: 234a 0008 movel %a2,%a1@(8) Chain_Node *tail = _Chain_Tail( the_chain ); 4912c: 45f0 1804 lea %a0@(00000004,%d1:l),%a2 the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { uint32_t index; for( index=0 ; 49130: 7204 moveq #4,%d1 49132: 228a movel %a2,%a1@ index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++) 49134: 43e9 000c lea %a1@(12),%a1 the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { uint32_t index; for( index=0 ; 49138: b280 cmpl %d0,%d1 4913a: 67cc beqs 49108 <_Thread_queue_Initialize+0x38> <== NEVER TAKEN 4913c: 2400 movel %d0,%d2 4913e: 2200 movel %d0,%d1 index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++) 49140: 5280 addql #1,%d0 49142: e58a lsll #2,%d2 49144: e989 lsll #4,%d1 head->next = tail; head->previous = NULL; 49146: 42a9 0004 clrl %a1@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4914a: 9282 subl %d2,%d1 */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4914c: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 49150: 234a 0008 movel %a2,%a1@(8) Chain_Node *tail = _Chain_Tail( the_chain ); 49154: 45f0 1804 lea %a0@(00000004,%d1:l),%a2 the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { uint32_t index; for( index=0 ; 49158: 7204 moveq #4,%d1 4915a: 228a movel %a2,%a1@ index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++) 4915c: 43e9 000c lea %a1@(12),%a1 the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { uint32_t index; for( index=0 ; 49160: b280 cmpl %d0,%d1 49162: 66b0 bnes 49114 <_Thread_queue_Initialize+0x44> 49164: 60a2 bras 49108 <_Thread_queue_Initialize+0x38> ... =============================================================================== 0004cca4 <_Thread_queue_Process_timeout>: #include void _Thread_queue_Process_timeout( Thread_Control *the_thread ) { 4cca4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cca8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_queue_Control *the_thread_queue = the_thread->Wait.queue; 4ccac: 2268 0044 moveal %a0@(68),%a1 <== NOT EXECUTED * If it is not satisfied, then it is "nothing happened" and * this is the "timeout" transition. After a request is satisfied, * a timeout is not allowed to occur. */ if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED && 4ccb0: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED 4ccb4: 6708 beqs 4ccbe <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED 4ccb6: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4ccbc: 6716 beqs 4ccd4 <_Thread_queue_Process_timeout+0x30><== NOT EXECUTED if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; } } else { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; 4ccbe: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 4ccc4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4ccc6: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4ccc8: 4eb9 0004 cb7c jsr 4cb7c <_Thread_queue_Extract> <== NOT EXECUTED 4ccce: 508f addql #8,%sp <== NOT EXECUTED } } 4ccd0: 4e5e unlk %fp <== NOT EXECUTED 4ccd2: 4e75 rts <== NOT EXECUTED * a timeout is not allowed to occur. */ if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED && _Thread_Is_executing( the_thread ) ) { if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) { 4ccd4: 7203 moveq #3,%d1 <== NOT EXECUTED 4ccd6: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ccd8: 67f6 beqs 4ccd0 <_Thread_queue_Process_timeout+0x2c><== NOT EXECUTED the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4ccda: 7002 moveq #2,%d0 <== NOT EXECUTED } } else { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); } } 4ccdc: 4e5e unlk %fp <== NOT EXECUTED */ if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED && _Thread_Is_executing( the_thread ) ) { if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; 4ccde: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4cce4: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED } } else { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); } } ... =============================================================================== 00049168 <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 49168: 4e56 fff0 linkw %fp,#-16 4916c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 49170: 246e 0008 moveal %fp@(8),%a2 49174: 266e 000c moveal %fp@(12),%a3 /* * Just in case the thread really wasn't blocked on a thread queue * when we get here. */ if ( !the_thread_queue ) 49178: 4a8a tstl %a2 4917a: 6708 beqs 49184 <_Thread_queue_Requeue+0x1c> <== NEVER TAKEN /* * If queueing by FIFO, there is nothing to do. This only applies to * priority blocking discipline. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 4917c: 7001 moveq #1,%d0 4917e: b0aa 0034 cmpl %a2@(52),%d0 49182: 670a beqs 4918e <_Thread_queue_Requeue+0x26> <== ALWAYS TAKEN _Thread_queue_Extract_priority_helper( tq, the_thread, true ); (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); } _ISR_Enable( level ); } } 49184: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4918a: 4e5e unlk %fp <== NOT EXECUTED 4918c: 4e75 rts <== NOT EXECUTED if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { Thread_queue_Control *tq = the_thread_queue; ISR_Level level; ISR_Level level_ignored; _ISR_Disable( level ); 4918e: 303c 0700 movew #1792,%d0 49192: 40c2 movew %sr,%d2 49194: 8082 orl %d2,%d0 49196: 46c0 movew %d0,%sr 49198: 202b 0010 movel %a3@(16),%d0 4919c: 0280 0003 bee0 andil #245472,%d0 if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 491a2: 660c bnes 491b0 <_Thread_queue_Requeue+0x48> <== ALWAYS TAKEN _Thread_queue_Enter_critical_section( tq ); _Thread_queue_Extract_priority_helper( tq, the_thread, true ); (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); } _ISR_Enable( level ); 491a4: 46c2 movew %d2,%sr <== NOT EXECUTED } } 491a6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 491ac: 4e5e unlk %fp 491ae: 4e75 rts ISR_Level level_ignored; _ISR_Disable( level ); if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { _Thread_queue_Enter_critical_section( tq ); _Thread_queue_Extract_priority_helper( tq, the_thread, true ); 491b0: 4878 0001 pea 1 RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 491b4: 7001 moveq #1,%d0 491b6: 2f0b movel %a3,%sp@- 491b8: 2540 0030 movel %d0,%a2@(48) 491bc: 2f0a movel %a2,%sp@- 491be: 4eb9 0004 cbb4 jsr 4cbb4 <_Thread_queue_Extract_priority_helper> (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); 491c4: 486e fffc pea %fp@(-4) 491c8: 2f0b movel %a3,%sp@- 491ca: 2f0a movel %a2,%sp@- 491cc: 4eb9 0004 8ec0 jsr 48ec0 <_Thread_queue_Enqueue_priority> 491d2: 4fef 0018 lea %sp@(24),%sp } _ISR_Enable( level ); 491d6: 46c2 movew %d2,%sr 491d8: 60cc bras 491a6 <_Thread_queue_Requeue+0x3e> ... =============================================================================== 000491dc <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) { 491dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 491e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 491e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 491e8: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 491ee: 508f addql #8,%sp <== NOT EXECUTED 491f0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 491f4: 6618 bnes 4920e <_Thread_queue_Timeout+0x32> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* impossible */ #endif break; case OBJECTS_LOCAL: _Thread_queue_Process_timeout( the_thread ); 491f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 491f8: 4eb9 0004 cca4 jsr 4cca4 <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 491fe: 588f addql #4,%sp <== NOT EXECUTED 49200: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49206: 5380 subql #1,%d0 <== NOT EXECUTED 49208: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 4920e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00059070 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) { 59070: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; tail->previous = head; 59074: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 59078: 200e movel %fp,%d0 <== NOT EXECUTED 5907a: 5180 subql #8,%d0 <== NOT EXECUTED head->previous = NULL; tail->previous = head; 5907c: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED 59080: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 59084: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 59088: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 5908c: 260e movel %fp,%d3 <== NOT EXECUTED 5908e: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 59094: 240a movel %a2,%d2 <== NOT EXECUTED 59096: 2a0a movel %a2,%d5 <== NOT EXECUTED 59098: 4bf9 0005 d5f8 lea 5d5f8 <_Watchdog_Adjust_to_chain>,%a5 <== NOT EXECUTED 5909e: 0682 0000 0030 addil #48,%d2 <== NOT EXECUTED 590a4: 0685 0000 0068 addil #104,%d5 <== NOT EXECUTED 590aa: 47f9 0005 9c8c lea 59c8c <_Chain_Get>,%a3 <== NOT EXECUTED 590b0: 49f9 0005 d680 lea 5d680 <_Watchdog_Insert>,%a4 <== NOT EXECUTED 590b6: 2e00 movel %d0,%d7 <== NOT EXECUTED * of zero it will be processed in the next iteration of the timer server * body loop. */ _Timer_server_Process_insertions( ts ); _ISR_Disable( level ); 590b8: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 590be: 2d48 ffd8 movel %a0,%fp@(-40) <== NOT EXECUTED 590c2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED 590c6: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED 590ca: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED 590ce: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED 590d2: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 590d6: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED head->previous = NULL; 590da: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED 590de: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED tail->previous = head; 590e2: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 590e6: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED Chain_Control *tmp; /* * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; 590ea: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 590ee: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED static void _Timer_server_Process_interval_watchdogs( Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot; 590f2: 2039 0007 ec16 movel 7ec16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED /* * We assume adequate unsigned arithmetic here. */ Watchdog_Interval delta = snapshot - watchdogs->last_snapshot; 590f8: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED watchdogs->last_snapshot = snapshot; 590fc: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 59100: 9081 subl %d1,%d0 <== NOT EXECUTED 59102: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59104: 2f00 movel %d0,%sp@- <== NOT EXECUTED 59106: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59108: 4e95 jsr %a5@ <== NOT EXECUTED static void _Timer_server_Process_tod_watchdogs( Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 5910a: 2039 0007 eb96 movel 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED /* * Process the seconds chain. Start by checking that the Time * of Day (TOD) has not been set backwards. If it has then * we want to adjust the watchdogs->Chain to indicate this. */ if ( snapshot > last_snapshot ) { 59110: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); Watchdog_Interval last_snapshot = watchdogs->last_snapshot; 59114: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED /* * Process the seconds chain. Start by checking that the Time * of Day (TOD) has not been set backwards. If it has then * we want to adjust the watchdogs->Chain to indicate this. */ if ( snapshot > last_snapshot ) { 59118: b280 cmpl %d0,%d1 <== NOT EXECUTED 5911a: 6500 0148 bcsw 59264 <_Timer_server_Body+0x1f4> <== NOT EXECUTED * TOD has been set forward. */ delta = snapshot - last_snapshot; _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); } else if ( snapshot < last_snapshot ) { 5911e: 6200 00be bhiw 591de <_Timer_server_Body+0x16e> <== NOT EXECUTED */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); } watchdogs->last_snapshot = snapshot; 59122: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED } static void _Timer_server_Process_insertions( Timer_server_Control *ts ) { while ( true ) { Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain ); 59126: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 5912a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5912c: 4e93 jsr %a3@ <== NOT EXECUTED if ( timer == NULL ) { 5912e: 588f addql #4,%sp <== NOT EXECUTED 59130: 4a80 tstl %d0 <== NOT EXECUTED 59132: 672e beqs 59162 <_Timer_server_Body+0xf2> <== NOT EXECUTED static void _Timer_server_Insert_timer( Timer_server_Control *ts, Timer_Control *timer ) { if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { 59134: 2040 moveal %d0,%a0 <== NOT EXECUTED 59136: 7c01 moveq #1,%d6 <== NOT EXECUTED 59138: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED 5913c: bc81 cmpl %d1,%d6 <== NOT EXECUTED 5913e: 6700 00c2 beqw 59202 <_Timer_server_Body+0x192> <== NOT EXECUTED _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { 59142: 7c03 moveq #3,%d6 <== NOT EXECUTED 59144: bc81 cmpl %d1,%d6 <== NOT EXECUTED 59146: 66de bnes 59126 <_Timer_server_Body+0xb6> <== NOT EXECUTED _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 59148: 2040 moveal %d0,%a0 <== NOT EXECUTED 5914a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5914e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 59150: 4e94 jsr %a4@ <== NOT EXECUTED } static void _Timer_server_Process_insertions( Timer_server_Control *ts ) { while ( true ) { Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain ); 59152: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED ) { if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 59156: 508f addql #8,%sp <== NOT EXECUTED } static void _Timer_server_Process_insertions( Timer_server_Control *ts ) { while ( true ) { Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain ); 59158: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5915a: 4e93 jsr %a3@ <== NOT EXECUTED if ( timer == NULL ) { 5915c: 588f addql #4,%sp <== NOT EXECUTED 5915e: 4a80 tstl %d0 <== NOT EXECUTED 59160: 66d2 bnes 59134 <_Timer_server_Body+0xc4> <== NOT EXECUTED * of zero it will be processed in the next iteration of the timer server * body loop. */ _Timer_server_Process_insertions( ts ); _ISR_Disable( level ); 59162: 2004 movel %d4,%d0 <== NOT EXECUTED 59164: 40c1 movew %sr,%d1 <== NOT EXECUTED 59166: 8081 orl %d1,%d0 <== NOT EXECUTED 59168: 46c0 movew %d0,%sr <== NOT EXECUTED tmp = ts->insert_chain; 5916a: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED if ( _Chain_Is_empty( insert_chain ) ) { 5916e: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED 59172: 6700 0114 beqw 59288 <_Timer_server_Body+0x218> <== NOT EXECUTED 59176: 7001 moveq #1,%d0 <== NOT EXECUTED ts->insert_chain = NULL; do_loop = false; } _ISR_Enable( level ); 59178: 46c1 movew %d1,%sr <== NOT EXECUTED * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; while ( do_loop ) { 5917a: 4a00 tstb %d0 <== NOT EXECUTED 5917c: 6600 ff74 bnew 590f2 <_Timer_server_Body+0x82> <== NOT EXECUTED _Chain_Initialize_empty( &fire_chain ); while ( true ) { _Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain ); if ( !_Chain_Is_empty( &fire_chain ) ) { 59180: 202e ffd8 movel %fp@(-40),%d0 <== NOT EXECUTED 59184: b0ae ffe8 cmpl %fp@(-24),%d0 <== NOT EXECUTED 59188: 6700 0086 beqw 59210 <_Timer_server_Body+0x1a0> <== NOT EXECUTED /* * It is essential that interrupts are disable here since an interrupt * service routine may remove a watchdog from the chain. */ _ISR_Disable( level ); 5918c: 2204 movel %d4,%d1 <== NOT EXECUTED 5918e: 40c0 movew %sr,%d0 <== NOT EXECUTED 59190: 8280 orl %d0,%d1 <== NOT EXECUTED 59192: 46c1 movew %d1,%sr <== NOT EXECUTED initialized = false; } #endif return status; } 59194: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 59198: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 5919c: 6732 beqs 591d0 <_Timer_server_Body+0x160> <== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 5919e: 2250 moveal %a0@,%a1 <== NOT EXECUTED head->next = new_first; new_first->previous = head; 591a0: 2343 0004 movel %d3,%a1@(4) <== NOT EXECUTED * service routine may remove a watchdog from the chain. */ _ISR_Disable( level ); watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain ); if ( watchdog != NULL ) { watchdog->state = WATCHDOG_INACTIVE; 591a4: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; head->next = new_first; 591a8: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED _ISR_Enable( level ); 591ac: 46c0 movew %d0,%sr <== NOT EXECUTED /* * The timer server may block here and wait for resources or time. * The system watchdogs are inactive and will remain inactive since * the active flag of the timer server is true. */ (*watchdog->routine)( watchdog->id, watchdog->user_data ); 591ae: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED 591b2: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED 591b6: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED 591ba: 4e90 jsr %a0@ <== NOT EXECUTED } 591bc: 508f addql #8,%sp <== NOT EXECUTED /* * It is essential that interrupts are disable here since an interrupt * service routine may remove a watchdog from the chain. */ _ISR_Disable( level ); 591be: 2204 movel %d4,%d1 <== NOT EXECUTED 591c0: 40c0 movew %sr,%d0 <== NOT EXECUTED 591c2: 8280 orl %d0,%d1 <== NOT EXECUTED 591c4: 46c1 movew %d1,%sr <== NOT EXECUTED initialized = false; } #endif return status; } 591c6: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 591ca: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 591ce: 66ce bnes 5919e <_Timer_server_Body+0x12e> <== NOT EXECUTED watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain ); if ( watchdog != NULL ) { watchdog->state = WATCHDOG_INACTIVE; _ISR_Enable( level ); } else { _ISR_Enable( level ); 591d0: 46c0 movew %d0,%sr <== NOT EXECUTED Chain_Control *tmp; /* * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; 591d2: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 591d6: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED 591da: 6000 ff16 braw 590f2 <_Timer_server_Body+0x82> <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 591de: 9280 subl %d0,%d1 <== NOT EXECUTED 591e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 591e2: 4878 0001 pea 1 <== NOT EXECUTED 591e6: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 591ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED 591ec: 4eb9 0005 d564 jsr 5d564 <_Watchdog_Adjust> <== NOT EXECUTED 591f2: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 591f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } watchdogs->last_snapshot = snapshot; 591fa: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 591fe: 6000 ff26 braw 59126 <_Timer_server_Body+0xb6> <== NOT EXECUTED Timer_server_Control *ts, Timer_Control *timer ) { if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); 59202: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59206: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59208: 4e94 jsr %a4@ <== NOT EXECUTED 5920a: 508f addql #8,%sp <== NOT EXECUTED 5920c: 6000 ff18 braw 59126 <_Timer_server_Body+0xb6> <== NOT EXECUTED * the active flag of the timer server is true. */ (*watchdog->routine)( watchdog->id, watchdog->user_data ); } } else { ts->active = false; 59210: 4206 clrb %d6 <== NOT EXECUTED 59212: 1546 007c moveb %d6,%a2@(124) <== NOT EXECUTED 59216: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5921c: 5280 addql #1,%d0 <== NOT EXECUTED 5921e: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED /* * Block until there is something to do. */ _Thread_Disable_dispatch(); _Thread_Set_state( ts->thread, STATES_DELAYING ); 59224: 4878 0008 pea 8 <== NOT EXECUTED 59228: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 5922a: 4eb9 0005 ce78 jsr 5ce78 <_Thread_Set_state> <== NOT EXECUTED _Timer_server_Reset_interval_system_watchdog( ts ); 59230: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59232: 4eba fd64 jsr %pc@(58f98 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED _Timer_server_Reset_tod_system_watchdog( ts ); 59236: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59238: 4eba fdc8 jsr %pc@(59002 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED _Thread_Enable_dispatch(); 5923c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED ts->active = true; 59242: 7001 moveq #1,%d0 <== NOT EXECUTED 59244: 1540 007c moveb %d0,%a2@(124) <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 59248: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED 5924c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 59252: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 59256: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED 5925c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 59260: 6000 fe88 braw 590ea <_Timer_server_Body+0x7a> <== NOT EXECUTED /* * This path is for normal forward movement and cases where the * TOD has been set forward. */ delta = snapshot - last_snapshot; _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 59264: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59266: 2c00 movel %d0,%d6 <== NOT EXECUTED 59268: 9c81 subl %d1,%d6 <== NOT EXECUTED 5926a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5926c: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 59270: 2f05 movel %d5,%sp@- <== NOT EXECUTED 59272: 4eb9 0005 d5f8 jsr 5d5f8 <_Watchdog_Adjust_to_chain> <== NOT EXECUTED 59278: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 5927c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); } watchdogs->last_snapshot = snapshot; 59280: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 59284: 6000 fea0 braw 59126 <_Timer_server_Body+0xb6> <== NOT EXECUTED _Timer_server_Process_insertions( ts ); _ISR_Disable( level ); tmp = ts->insert_chain; if ( _Chain_Is_empty( insert_chain ) ) { ts->insert_chain = NULL; 59288: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED do_loop = false; 5928c: 4200 clrb %d0 <== NOT EXECUTED } _ISR_Enable( level ); 5928e: 46c1 movew %d1,%sr <== NOT EXECUTED * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; while ( do_loop ) { 59290: 4a00 tstb %d0 <== NOT EXECUTED 59292: 6600 fe5e bnew 590f2 <_Timer_server_Body+0x82> <== NOT EXECUTED 59296: 6000 fee8 braw 59180 <_Timer_server_Body+0x110> <== NOT EXECUTED =============================================================================== 00058f98 <_Timer_server_Reset_interval_system_watchdog>: } static void _Timer_server_Reset_interval_system_watchdog( Timer_server_Control *ts ) { 58f98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 58f9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58f9e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 58fa2: 2f02 movel %d2,%sp@- <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 58fa4: 240a movel %a2,%d2 <== NOT EXECUTED 58fa6: 5082 addql #8,%d2 <== NOT EXECUTED 58fa8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58faa: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED { ISR_Level level; _Timer_server_Stop_interval_system_watchdog( ts ); _ISR_Disable( level ); 58fb0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58fb6: 40c1 movew %sr,%d1 <== NOT EXECUTED 58fb8: 8081 orl %d1,%d0 <== NOT EXECUTED 58fba: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 58fbc: 200a movel %a2,%d0 <== NOT EXECUTED 58fbe: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 58fc4: 588f addql #4,%sp <== NOT EXECUTED initialized = false; } #endif return status; } 58fc6: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED ISR_Level level; _Timer_server_Stop_interval_system_watchdog( ts ); _ISR_Disable( level ); if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 58fca: b088 cmpl %a0,%d0 <== NOT EXECUTED 58fcc: 6726 beqs 58ff4 <_Timer_server_Reset_interval_system_watchdog+0x5c><== NOT EXECUTED Watchdog_Interval delta_interval = 58fce: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED _Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval; _ISR_Enable( level ); 58fd2: 46c1 movew %d1,%sr <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 58fd4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58fd6: 4879 0007 ebcc pea 7ebcc <_Watchdog_Ticks_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 58fdc: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 58fe0: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED delta_interval ); } else { _ISR_Enable( level ); } } 58fe6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 58fea: 508f addql #8,%sp <== NOT EXECUTED 58fec: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 58ff0: 4e5e unlk %fp <== NOT EXECUTED 58ff2: 4e75 rts <== NOT EXECUTED _Watchdog_Insert_ticks( &ts->Interval_watchdogs.System_watchdog, delta_interval ); } else { _ISR_Enable( level ); 58ff4: 46c1 movew %d1,%sr <== NOT EXECUTED } } 58ff6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 58ffa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 58ffe: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00059002 <_Timer_server_Reset_tod_system_watchdog>: } static void _Timer_server_Reset_tod_system_watchdog( Timer_server_Control *ts ) { 59002: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 59006: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59008: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5900c: 2f02 movel %d2,%sp@- <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 5900e: 240a movel %a2,%d2 <== NOT EXECUTED 59010: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED 59016: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59018: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED { ISR_Level level; _Timer_server_Stop_tod_system_watchdog( ts ); _ISR_Disable( level ); 5901e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 59024: 40c1 movew %sr,%d1 <== NOT EXECUTED 59026: 8081 orl %d1,%d0 <== NOT EXECUTED 59028: 46c0 movew %d0,%sr <== NOT EXECUTED 5902a: 200a movel %a2,%d0 <== NOT EXECUTED 5902c: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 59032: 588f addql #4,%sp <== NOT EXECUTED initialized = false; } #endif return status; } 59034: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED ISR_Level level; _Timer_server_Stop_tod_system_watchdog( ts ); _ISR_Disable( level ); if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 59038: b088 cmpl %a0,%d0 <== NOT EXECUTED 5903a: 6726 beqs 59062 <_Timer_server_Reset_tod_system_watchdog+0x60><== NOT EXECUTED Watchdog_Interval delta_interval = 5903c: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED _Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval; _ISR_Enable( level ); 59040: 46c1 movew %d1,%sr <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 59042: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59044: 4879 0007 ebc0 pea 7ebc0 <_Watchdog_Seconds_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 5904a: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 5904e: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED delta_interval ); } else { _ISR_Enable( level ); } } 59054: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59058: 508f addql #8,%sp <== NOT EXECUTED 5905a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5905e: 4e5e unlk %fp <== NOT EXECUTED 59060: 4e75 rts <== NOT EXECUTED _Watchdog_Insert_seconds( &ts->TOD_watchdogs.System_watchdog, delta_interval ); } else { _ISR_Enable( level ); 59062: 46c1 movew %d1,%sr <== NOT EXECUTED } } 59064: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59068: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5906c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005929a <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) { 5929a: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5929e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 592a2: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 592a6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( ts->insert_chain == NULL ) { 592aa: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592ae: 671a beqs 592ca <_Timer_server_Schedule_operation_method+0x30><== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 592b0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592b4: 2d48 000c movel %a0,%fp@(12) <== NOT EXECUTED } } 592b8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 592be: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } } 592c2: 4e5e unlk %fp <== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 592c4: 4ef9 0005 9c2c jmp 59c2c <_Chain_Append> <== NOT EXECUTED 592ca: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 592d0: 5280 addql #1,%d0 <== NOT EXECUTED 592d2: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED * being inserted. This could result in an integer overflow. */ _Thread_Disable_dispatch(); if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { 592d8: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 592dc: 7201 moveq #1,%d1 <== NOT EXECUTED 592de: b280 cmpl %d0,%d1 <== NOT EXECUTED 592e0: 6700 008a beqw 5936c <_Timer_server_Schedule_operation_method+0xd2><== NOT EXECUTED _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); if ( !ts->active ) { _Timer_server_Reset_interval_system_watchdog( ts ); } } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { 592e4: 7803 moveq #3,%d4 <== NOT EXECUTED 592e6: b880 cmpl %d0,%d4 <== NOT EXECUTED 592e8: 670e beqs 592f8 <_Timer_server_Schedule_operation_method+0x5e><== NOT EXECUTED * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); } } 592ea: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 592f0: 4e5e unlk %fp <== NOT EXECUTED if ( !ts->active ) { _Timer_server_Reset_tod_system_watchdog( ts ); } } _Thread_Enable_dispatch(); 592f2: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { /* * We have to advance the last known seconds value of the server and update * the watchdog chain accordingly. */ _ISR_Disable( level ); 592f8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 592fe: 40c2 movew %sr,%d2 <== NOT EXECUTED 59300: 8082 orl %d2,%d0 <== NOT EXECUTED 59302: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 59304: 260a movel %a2,%d3 <== NOT EXECUTED 59306: 0683 0000 006c addil #108,%d3 <== NOT EXECUTED snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 5930c: 2039 0007 eb96 movel 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED last_snapshot = ts->TOD_watchdogs.last_snapshot; 59312: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED initialized = false; } #endif return status; } 59316: 226a 0068 moveal %a2@(104),%a1 <== NOT EXECUTED * the watchdog chain accordingly. */ _ISR_Disable( level ); snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); last_snapshot = ts->TOD_watchdogs.last_snapshot; if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 5931a: b689 cmpl %a1,%d3 <== NOT EXECUTED 5931c: 671c beqs 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain ); delta_interval = first_watchdog->delta_interval; 5931e: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED if ( snapshot > last_snapshot ) { 59322: b280 cmpl %d0,%d1 <== NOT EXECUTED 59324: 6400 00ba bccw 593e0 <_Timer_server_Schedule_operation_method+0x146><== NOT EXECUTED /* * We advanced in time. */ delta = snapshot - last_snapshot; 59328: 2800 movel %d0,%d4 <== NOT EXECUTED 5932a: 9881 subl %d1,%d4 <== NOT EXECUTED if (delta_interval > delta) { 5932c: b883 cmpl %d3,%d4 <== NOT EXECUTED 5932e: 6400 00bc bccw 593ec <_Timer_server_Schedule_operation_method+0x152><== NOT EXECUTED delta_interval -= delta; 59332: 9684 subl %d4,%d3 <== NOT EXECUTED 59334: 2203 movel %d3,%d1 <== NOT EXECUTED * Someone put us in the past. */ delta = last_snapshot - snapshot; delta_interval += delta; } first_watchdog->delta_interval = delta_interval; 59336: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED } ts->TOD_watchdogs.last_snapshot = snapshot; 5933a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED _ISR_Enable( level ); 5933e: 46c2 movew %d2,%sr <== NOT EXECUTED _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 59340: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59344: 486a 0068 pea %a2@(104) <== NOT EXECUTED 59348: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED if ( !ts->active ) { 5934e: 508f addql #8,%sp <== NOT EXECUTED 59350: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 59354: 6694 bnes 592ea <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED _Timer_server_Reset_tod_system_watchdog( ts ); 59356: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59358: 4eba fca8 jsr %pc@(59002 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED 5935c: 588f addql #4,%sp <== NOT EXECUTED * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); } } 5935e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 59364: 4e5e unlk %fp <== NOT EXECUTED if ( !ts->active ) { _Timer_server_Reset_tod_system_watchdog( ts ); } } _Thread_Enable_dispatch(); 59366: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { /* * We have to advance the last known ticks value of the server and update * the watchdog chain accordingly. */ _ISR_Disable( level ); 5936c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 59372: 40c3 movew %sr,%d3 <== NOT EXECUTED 59374: 8083 orl %d3,%d0 <== NOT EXECUTED 59376: 46c0 movew %d0,%sr <== NOT EXECUTED snapshot = _Watchdog_Ticks_since_boot; 59378: 2039 0007 ec16 movel 7ec16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED 5937e: 220a movel %a2,%d1 <== NOT EXECUTED 59380: 0681 0000 0034 addil #52,%d1 <== NOT EXECUTED last_snapshot = ts->Interval_watchdogs.last_snapshot; 59386: 282a 003c movel %a2@(60),%d4 <== NOT EXECUTED initialized = false; } #endif return status; } 5938a: 226a 0030 moveal %a2@(48),%a1 <== NOT EXECUTED * the watchdog chain accordingly. */ _ISR_Disable( level ); snapshot = _Watchdog_Ticks_since_boot; last_snapshot = ts->Interval_watchdogs.last_snapshot; if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 5938e: b289 cmpl %a1,%d1 <== NOT EXECUTED 59390: 6712 beqs 593a4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain ); /* * We assume adequate unsigned arithmetic here. */ delta = snapshot - last_snapshot; 59392: 2200 movel %d0,%d1 <== NOT EXECUTED 59394: 9284 subl %d4,%d1 <== NOT EXECUTED delta_interval = first_watchdog->delta_interval; 59396: 2429 0010 movel %a1@(16),%d2 <== NOT EXECUTED if (delta_interval > delta) { 5939a: b481 cmpl %d1,%d2 <== NOT EXECUTED 5939c: 633a blss 593d8 <_Timer_server_Schedule_operation_method+0x13e><== NOT EXECUTED delta_interval -= delta; 5939e: 9481 subl %d1,%d2 <== NOT EXECUTED } else { delta_interval = 0; } first_watchdog->delta_interval = delta_interval; 593a0: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED } ts->Interval_watchdogs.last_snapshot = snapshot; 593a4: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED _ISR_Enable( level ); 593a8: 46c3 movew %d3,%sr <== NOT EXECUTED _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); 593aa: 4868 0010 pea %a0@(16) <== NOT EXECUTED 593ae: 486a 0030 pea %a2@(48) <== NOT EXECUTED 593b2: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED if ( !ts->active ) { 593b8: 508f addql #8,%sp <== NOT EXECUTED 593ba: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 593be: 6600 ff2a bnew 592ea <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED _Timer_server_Reset_interval_system_watchdog( ts ); 593c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 593c4: 4eba fbd2 jsr %pc@(58f98 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED 593c8: 588f addql #4,%sp <== NOT EXECUTED * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); } } 593ca: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 593d0: 4e5e unlk %fp <== NOT EXECUTED if ( !ts->active ) { _Timer_server_Reset_tod_system_watchdog( ts ); } } _Thread_Enable_dispatch(); 593d2: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED delta_interval = first_watchdog->delta_interval; if (delta_interval > delta) { delta_interval -= delta; } else { delta_interval = 0; 593d8: 4282 clrl %d2 <== NOT EXECUTED } first_watchdog->delta_interval = delta_interval; 593da: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED 593de: 60c4 bras 593a4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED } } else { /* * Someone put us in the past. */ delta = last_snapshot - snapshot; 593e0: d283 addl %d3,%d1 <== NOT EXECUTED delta_interval += delta; 593e2: 9280 subl %d0,%d1 <== NOT EXECUTED } first_watchdog->delta_interval = delta_interval; 593e4: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 593e8: 6000 ff50 braw 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED */ delta = snapshot - last_snapshot; if (delta_interval > delta) { delta_interval -= delta; } else { delta_interval = 0; 593ec: 4281 clrl %d1 <== NOT EXECUTED * Someone put us in the past. */ delta = last_snapshot - snapshot; delta_interval += delta; } first_watchdog->delta_interval = delta_interval; 593ee: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 593f2: 6000 ff46 braw 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED =============================================================================== 0004952c <_Timespec_Add_to>: uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) { 4952c: 4e56 0000 linkw %fp,#0 49530: 226e 0008 moveal %fp@(8),%a1 49534: 2f0a movel %a2,%sp@- 49536: 246e 000c moveal %fp@(12),%a2 uint32_t seconds = add->tv_sec; /* Add the basics */ time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec; 4953a: 206a 0004 moveal %a2@(4),%a0 4953e: d1e9 0004 addal %a1@(4),%a0 /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 49542: 2208 movel %a0,%d1 uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) { uint32_t seconds = add->tv_sec; 49544: 2012 movel %a2@,%d0 /* Add the basics */ time->tv_sec += add->tv_sec; 49546: d191 addl %d0,%a1@ time->tv_nsec += add->tv_nsec; 49548: 2348 0004 movel %a0,%a1@(4) /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 4954c: b1fc 3b9a c9ff cmpal #999999999,%a0 49552: 631a blss 4956e <_Timespec_Add_to+0x42> <== ALWAYS TAKEN 49554: 2051 moveal %a1@,%a0 <== NOT EXECUTED * * This routines adds two timespecs. The second argument is added * to the first. */ uint32_t _Timespec_Add_to( 49556: 5288 addql #1,%a0 <== NOT EXECUTED time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec; /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND; 49558: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED time->tv_sec++; seconds++; 4955e: 5280 addql #1,%d0 <== NOT EXECUTED /* Add the basics */ time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec; /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 49560: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED 49566: 62ee bhis 49556 <_Timespec_Add_to+0x2a> <== NOT EXECUTED 49568: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 4956c: 2288 movel %a0,%a1@ <== NOT EXECUTED time->tv_sec++; seconds++; } return seconds; } 4956e: 245f moveal %sp@+,%a2 49570: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b048 <_Timespec_Divide>: const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 4b048: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4b04c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b050: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b054: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 4b05a: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b05e: 45f9 0005 c7b0 lea 5c7b0 <__muldi3>,%a2 <== NOT EXECUTED 4b064: 42a7 clrl %sp@- <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b066: 2a10 movel %a0@,%d5 <== NOT EXECUTED left += lhs->tv_nsec; 4b068: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b06c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4b06e: 5bc0 smi %d0 <== NOT EXECUTED 4b070: 49c0 extbl %d0 <== NOT EXECUTED 4b072: 2f00 movel %d0,%sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 4b074: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b078: 4e92 jsr %a2@ <== NOT EXECUTED 4b07a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b07e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b080: 2241 moveal %d1,%a1 <== NOT EXECUTED right += rhs->tv_nsec; 4b082: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED 4b086: 5bc2 smi %d2 <== NOT EXECUTED 4b088: 49c2 extbl %d2 <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 4b08a: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; right += rhs->tv_nsec; 4b08e: 2208 movel %a0,%d1 <== NOT EXECUTED 4b090: d689 addl %a1,%d3 <== NOT EXECUTED 4b092: d581 addxl %d1,%d2 <== NOT EXECUTED if ( right == 0 ) { 4b094: 6700 0086 beqw 4b11c <_Timespec_Divide+0xd4> <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 4b098: 4bf9 0005 cffc lea 5cffc <__udivdi3>,%a5 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b09e: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b0a4: 42a7 clrl %sp@- <== NOT EXECUTED 4b0a6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b0a8: 5bc1 smi %d1 <== NOT EXECUTED 4b0aa: 49c1 extbl %d1 <== NOT EXECUTED 4b0ac: 2f01 movel %d1,%sp@- <== NOT EXECUTED left += lhs->tv_nsec; 4b0ae: 2a04 movel %d4,%d5 <== NOT EXECUTED 4b0b0: 5bc4 smi %d4 <== NOT EXECUTED 4b0b2: 49c4 extbl %d4 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4b0b4: 4e92 jsr %a2@ <== NOT EXECUTED 4b0b6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b0ba: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b0bc: 2241 moveal %d1,%a1 <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 4b0be: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED 4b0c4: 2008 movel %a0,%d0 <== NOT EXECUTED 4b0c6: 2209 movel %a1,%d1 <== NOT EXECUTED 4b0c8: 42a7 clrl %sp@- <== NOT EXECUTED 4b0ca: d285 addl %d5,%d1 <== NOT EXECUTED 4b0cc: d184 addxl %d4,%d0 <== NOT EXECUTED 4b0ce: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b0d0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b0d2: 4e92 jsr %a2@ <== NOT EXECUTED 4b0d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b0d8: 2e83 movel %d3,%sp@ <== NOT EXECUTED 4b0da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b0dc: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b0de: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b0e0: 4e95 jsr %a5@ <== NOT EXECUTED 4b0e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b0e6: 2400 movel %d0,%d2 <== NOT EXECUTED *ival_percentage = answer / 1000; 4b0e8: 4878 03e8 pea 3e8 <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 4b0ec: 2601 movel %d1,%d3 <== NOT EXECUTED *ival_percentage = answer / 1000; 4b0ee: 42a7 clrl %sp@- <== NOT EXECUTED 4b0f0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b0f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b0f4: 4e95 jsr %a5@ <== NOT EXECUTED 4b0f6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED *fval_percentage = answer % 1000; 4b0fa: 4878 03e8 pea 3e8 <== NOT EXECUTED 4b0fe: 42a7 clrl %sp@- <== NOT EXECUTED * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; *ival_percentage = answer / 1000; 4b100: 2881 movel %d1,%a4@ <== NOT EXECUTED *fval_percentage = answer % 1000; 4b102: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b104: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b106: 4eb9 0005 d388 jsr 5d388 <__umoddi3> <== NOT EXECUTED 4b10c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b110: 2681 movel %d1,%a3@ <== NOT EXECUTED } 4b112: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b118: 4e5e unlk %fp <== NOT EXECUTED 4b11a: 4e75 rts <== NOT EXECUTED left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; right += rhs->tv_nsec; if ( right == 0 ) { *ival_percentage = 0; 4b11c: 4294 clrl %a4@ <== NOT EXECUTED *fval_percentage = 0; 4b11e: 4293 clrl %a3@ <== NOT EXECUTED answer = (left * 100000) / right; *ival_percentage = answer / 1000; *fval_percentage = answer % 1000; } 4b120: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b126: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b0b0 <_Timespec_Divide_by_integer>: void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 4b0b0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4b0b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; 4b0b8: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 4b0be: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 4b0c2: 47f9 0005 cb08 lea 5cb08 <__udivdi3>,%a3 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; 4b0c8: 42a7 clrl %sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 4b0ca: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; 4b0ce: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 4b0d0: 5bc0 smi %d0 <== NOT EXECUTED 4b0d2: 49c0 extbl %d0 <== NOT EXECUTED 4b0d4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b0d6: 4eb9 0005 c2bc jsr 5c2bc <__muldi3> <== NOT EXECUTED 4b0dc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b0e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b0e2: 2241 moveal %d1,%a1 <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 4b0e4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b0e8: 2408 movel %a0,%d2 <== NOT EXECUTED 4b0ea: 2609 movel %a1,%d3 <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; t += time->tv_nsec; 4b0ec: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED 4b0f0: 5bc0 smi %d0 <== NOT EXECUTED 4b0f2: 49c0 extbl %d0 <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 4b0f4: 42a7 clrl %sp@- <== NOT EXECUTED 4b0f6: d681 addl %d1,%d3 <== NOT EXECUTED 4b0f8: d580 addxl %d0,%d2 <== NOT EXECUTED 4b0fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b0fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b0fe: 4e93 jsr %a3@ <== NOT EXECUTED 4b100: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b104: 2400 movel %d0,%d2 <== NOT EXECUTED 4b106: 2601 movel %d1,%d3 <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 4b108: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b10e: 42a7 clrl %sp@- <== NOT EXECUTED 4b110: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b112: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b114: 4e93 jsr %a3@ <== NOT EXECUTED result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 4b116: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b11a: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED 4b120: 42a7 clrl %sp@- <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 4b122: 2481 movel %d1,%a2@ <== NOT EXECUTED result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 4b124: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b126: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b128: 4eb9 0005 ce94 jsr 5ce94 <__umoddi3> <== NOT EXECUTED 4b12e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b132: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED } 4b136: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4b13c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005cc4c <_Timespec_From_ticks>: struct timespec *time ) { uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); 5cc4c: 43f9 0005 f2d0 lea 5f2d0 ,%a1 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5cc52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); 5cc56: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5cc5a: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5cc5e: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5cc60: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5cc66: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5cc6a: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 5cc6e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * TOD_NANOSECONDS_PER_MICROSECOND; } 5cc72: 241f movel %sp@+,%d2 <== NOT EXECUTED 5cc74: 4e5e unlk %fp <== NOT EXECUTED { uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5cc76: 2080 movel %d0,%a0@ <== NOT EXECUTED time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * 5cc78: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 5cc7e: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 5cc82: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED TOD_NANOSECONDS_PER_MICROSECOND; } =============================================================================== 00049da8 <_Timespec_Greater_than>: bool _Timespec_Greater_than( const struct timespec *lhs, const struct timespec *rhs ) { 49da8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49dac: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 49db0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec > rhs->tv_sec ) 49db4: 2211 movel %a1@,%d1 <== NOT EXECUTED 49db6: 2010 movel %a0@,%d0 <== NOT EXECUTED 49db8: b081 cmpl %d1,%d0 <== NOT EXECUTED 49dba: 6d18 blts 49dd4 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED return true; if ( lhs->tv_sec < rhs->tv_sec ) 49dbc: 6e10 bgts 49dce <_Timespec_Greater_than+0x26> <== NOT EXECUTED #include #include #include bool _Timespec_Greater_than( 49dbe: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 49dc2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 49dc6: 5dc0 slt %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) return true; return false; } 49dc8: 4e5e unlk %fp <== NOT EXECUTED #include #include #include bool _Timespec_Greater_than( 49dca: 4480 negl %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) return true; return false; } 49dcc: 4e75 rts <== NOT EXECUTED 49dce: 4e5e unlk %fp <== NOT EXECUTED { if ( lhs->tv_sec > rhs->tv_sec ) return true; if ( lhs->tv_sec < rhs->tv_sec ) return false; 49dd0: 4200 clrb %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) return true; return false; } 49dd2: 4e75 rts <== NOT EXECUTED 49dd4: 4e5e unlk %fp <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs ) { if ( lhs->tv_sec > rhs->tv_sec ) return true; 49dd6: 7001 moveq #1,%d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) return true; return false; } ... =============================================================================== 0005cc88 <_Timespec_Is_valid>: #include bool _Timespec_Is_valid( const struct timespec *time ) { 5cc88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cc8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !time ) 5cc90: 4a88 tstl %a0 <== NOT EXECUTED 5cc92: 6718 beqs 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED return false; if ( time->tv_sec < 0 ) 5cc94: 4a90 tstl %a0@ <== NOT EXECUTED 5cc96: 6d14 blts 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED return false; if ( time->tv_nsec < 0 ) 5cc98: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 5cc9c: 6d0e blts 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) return false; return true; } 5cc9e: 4e5e unlk %fp <== NOT EXECUTED #include #include #include bool _Timespec_Is_valid( 5cca0: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 5cca6: 53c0 sls %d0 <== NOT EXECUTED 5cca8: 4480 negl %d0 <== NOT EXECUTED if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) return false; return true; } 5ccaa: 4e75 rts <== NOT EXECUTED 5ccac: 4e5e unlk %fp <== NOT EXECUTED if ( time->tv_sec < 0 ) return false; if ( time->tv_nsec < 0 ) return false; 5ccae: 4200 clrb %d0 <== NOT EXECUTED if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) return false; return true; } ... =============================================================================== 0004c9c8 <_Timespec_Less_than>: bool _Timespec_Less_than( const struct timespec *lhs, const struct timespec *rhs ) { 4c9c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c9cc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4c9d0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec < rhs->tv_sec ) 4c9d4: 2211 movel %a1@,%d1 <== NOT EXECUTED 4c9d6: 2010 movel %a0@,%d0 <== NOT EXECUTED 4c9d8: b081 cmpl %d1,%d0 <== NOT EXECUTED 4c9da: 6e18 bgts 4c9f4 <_Timespec_Less_than+0x2c> <== NOT EXECUTED return true; if ( lhs->tv_sec > rhs->tv_sec ) 4c9dc: 6d10 blts 4c9ee <_Timespec_Less_than+0x26> <== NOT EXECUTED #include #include #include bool _Timespec_Less_than( 4c9de: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4c9e2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 4c9e6: 5ec0 sgt %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) return true; return false; } 4c9e8: 4e5e unlk %fp <== NOT EXECUTED #include #include #include bool _Timespec_Less_than( 4c9ea: 4480 negl %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) return true; return false; } 4c9ec: 4e75 rts <== NOT EXECUTED 4c9ee: 4e5e unlk %fp <== NOT EXECUTED { if ( lhs->tv_sec < rhs->tv_sec ) return true; if ( lhs->tv_sec > rhs->tv_sec ) return false; 4c9f0: 4200 clrb %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) return true; return false; } 4c9f2: 4e75 rts <== NOT EXECUTED 4c9f4: 4e5e unlk %fp <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs ) { if ( lhs->tv_sec < rhs->tv_sec ) return true; 4c9f6: 7001 moveq #1,%d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) return true; return false; } ... =============================================================================== 00049574 <_Timespec_Subtract>: void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 49574: 4e56 0000 linkw %fp,#0 49578: 226e 0008 moveal %fp@(8),%a1 4957c: 2f0a movel %a2,%sp@- 4957e: 246e 000c moveal %fp@(12),%a2 49582: 206e 0010 moveal %fp@(16),%a0 if (end->tv_nsec < start->tv_nsec) { 49586: 222a 0004 movel %a2@(4),%d1 4958a: 2029 0004 movel %a1@(4),%d0 void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 4958e: 2f02 movel %d2,%sp@- if (end->tv_nsec < start->tv_nsec) { 49590: b081 cmpl %d1,%d0 49592: 6e14 bgts 495a8 <_Timespec_Subtract+0x34> <== NEVER TAKEN result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; 49594: 2412 movel %a2@,%d2 49596: 9491 subl %a1@,%d2 result->tv_nsec = end->tv_nsec - start->tv_nsec; 49598: 9280 subl %d0,%d1 if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; 4959a: 2082 movel %d2,%a0@ result->tv_nsec = end->tv_nsec - start->tv_nsec; } } 4959c: 241f movel %sp@+,%d2 4959e: 245f moveal %sp@+,%a2 495a0: 4e5e unlk %fp result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; 495a2: 2141 0004 movel %d1,%a0@(4) } } 495a6: 4e75 rts struct timespec *result ) { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; 495a8: 2452 moveal %a2@,%a2 <== NOT EXECUTED 495aa: 538a subql #1,%a2 <== NOT EXECUTED 495ac: 95d1 subal %a1@,%a2 <== NOT EXECUTED result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; 495ae: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED 495b4: 9280 subl %d0,%d1 <== NOT EXECUTED } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; } } 495b6: 241f movel %sp@+,%d2 <== NOT EXECUTED struct timespec *result ) { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; 495b8: 208a movel %a2,%a0@ <== NOT EXECUTED (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; } } 495ba: 245f moveal %sp@+,%a2 <== NOT EXECUTED 495bc: 4e5e unlk %fp <== NOT EXECUTED { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; 495be: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; } } =============================================================================== 0004cd24 <_Timespec_To_ticks>: */ uint32_t _Timespec_To_ticks( const struct timespec *time ) { 4cd24: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4cd28: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4cd2c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) 4cd30: 2412 movel %a2@,%d2 <== NOT EXECUTED 4cd32: 6606 bnes 4cd3a <_Timespec_To_ticks+0x16> <== NOT EXECUTED 4cd34: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4cd38: 673e beqs 4cd78 <_Timespec_To_ticks+0x54> <== NOT EXECUTED return 0; ticks = time->tv_sec * TOD_TICKS_PER_SECOND; 4cd3a: 4eb9 0004 e670 jsr 4e670 <== NOT EXECUTED ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick(); 4cd40: 2239 0005 e3d0 movel 5e3d0 ,%d1 <== NOT EXECUTED 4cd46: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED 4cd4c: 4c03 1800 mulsl %d3,%d1 <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) return 0; ticks = time->tv_sec * TOD_TICKS_PER_SECOND; 4cd50: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick(); 4cd54: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4cd58: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED 4cd5c: d083 addl %d3,%d0 <== NOT EXECUTED if (ticks) 4cd5e: 670a beqs 4cd6a <_Timespec_To_ticks+0x46> <== NOT EXECUTED return ticks; return 1; } 4cd60: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cd66: 4e5e unlk %fp <== NOT EXECUTED 4cd68: 4e75 rts <== NOT EXECUTED ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick(); if (ticks) return ticks; return 1; 4cd6a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED } 4cd6e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cd74: 4e5e unlk %fp <== NOT EXECUTED 4cd76: 4e75 rts <== NOT EXECUTED ) { uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) return 0; 4cd78: 4280 clrl %d0 <== NOT EXECUTED if (ticks) return ticks; return 1; } 4cd7a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cd80: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049706 <_User_extensions_Fatal>: void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 49706: 4e56 fff0 linkw %fp,#-16 4970a: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4970e: 242e 0008 movel %fp@(8),%d2 49712: 262e 0010 movel %fp@(16),%d3 the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 49716: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2 void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 4971c: 182e 000f moveb %fp@(15),%d4 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 49720: b5fc 0005 fde8 cmpal #392680,%a2 49726: 6726 beqs 4974e <_User_extensions_Fatal+0x48> <== NEVER TAKEN the_node = the_node->previous ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); 49728: 0284 0000 00ff andil #255,%d4 !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) 4972e: 206a 0030 moveal %a2@(48),%a0 49732: 4a88 tstl %a0 49734: 670c beqs 49742 <_User_extensions_Fatal+0x3c> (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); 49736: 2f03 movel %d3,%sp@- 49738: 2f04 movel %d4,%sp@- 4973a: 2f02 movel %d2,%sp@- 4973c: 4e90 jsr %a0@ 4973e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 49742: 246a 0004 moveal %a2@(4),%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 49746: b5fc 0005 fde8 cmpal #392680,%a2 4974c: 66e0 bnes 4972e <_User_extensions_Fatal+0x28> <== ALWAYS TAKEN the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 4974e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 49754: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000495c4 <_User_extensions_Handler_initialization>: #include #include #include void _User_extensions_Handler_initialization(void) { 495c4: 4e56 ffec linkw %fp,#-20 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 495c8: 203c 0005 fdec movel #392684,%d0 495ce: 23c0 0005 fde8 movel %d0,5fde8 <_User_extensions_List> head->previous = NULL; tail->previous = head; 495d4: 203c 0005 fde8 movel #392680,%d0 495da: 23c0 0005 fdf0 movel %d0,5fdf0 <_User_extensions_List+0x8> ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 495e0: 203c 0005 fc80 movel #392320,%d0 495e6: 23c0 0005 fc7c movel %d0,5fc7c <_User_extensions_Switches_list> head->previous = NULL; tail->previous = head; 495ec: 203c 0005 fc7c movel #392316,%d0 { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 495f2: 42b9 0005 fdec clrl 5fdec <_User_extensions_List+0x4> 495f8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ User_extensions_Control *extension; uint32_t i; uint32_t number_of_extensions; User_extensions_Table *initial_extensions; number_of_extensions = Configuration.number_of_initial_extensions; 495fc: 2439 0005 e3fe movel 5e3fe ,%d2 initial_extensions = Configuration.User_extension_table; 49602: 2639 0005 e402 movel 5e402 ,%d3 49608: 42b9 0005 fc80 clrl 5fc80 <_User_extensions_Switches_list+0x4> tail->previous = head; 4960e: 23c0 0005 fc84 movel %d0,5fc84 <_User_extensions_Switches_list+0x8> _Chain_Initialize_empty( &_User_extensions_List ); _Chain_Initialize_empty( &_User_extensions_Switches_list ); if ( initial_extensions ) { 49614: 4a83 tstl %d3 49616: 6764 beqs 4967c <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN extension = (User_extensions_Control *) _Workspace_Allocate_or_fatal_error( 49618: 7834 moveq #52,%d4 4961a: 4c02 4800 mulsl %d2,%d4 4961e: 2f04 movel %d4,%sp@- 49620: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error> 49626: 2440 moveal %d0,%a2 number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 49628: 2f04 movel %d4,%sp@- 4962a: 42a7 clrl %sp@- 4962c: 2f00 movel %d0,%sp@- 4962e: 4eb9 0004 f200 jsr 4f200 extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 49634: 4fef 0010 lea %sp@(16),%sp 49638: 4a82 tstl %d2 4963a: 6740 beqs 4967c <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN 4963c: 4284 clrl %d4 4963e: 47f9 0004 cd84 lea 4cd84 <_User_extensions_Add_set>,%a3 RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table( User_extensions_Control *extension, const User_extensions_Table *extension_table ) { extension->Callouts = *extension_table; 49644: 2043 moveal %d3,%a0 49646: 5284 addql #1,%d4 49648: 0683 0000 0020 addil #32,%d3 4964e: 2558 0014 movel %a0@+,%a2@(20) 49652: 2558 0018 movel %a0@+,%a2@(24) 49656: 2558 001c movel %a0@+,%a2@(28) 4965a: 2558 0020 movel %a0@+,%a2@(32) 4965e: 2558 0024 movel %a0@+,%a2@(36) 49662: 2558 0028 movel %a0@+,%a2@(40) 49666: 2558 002c movel %a0@+,%a2@(44) 4966a: 2550 0030 movel %a0@,%a2@(48) _User_extensions_Add_set( extension ); 4966e: 2f0a movel %a2,%sp@- _User_extensions_Add_set_with_table (extension, &initial_extensions[i]); extension++; 49670: 45ea 0034 lea %a2@(52),%a2 49674: 4e93 jsr %a3@ extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 49676: 588f addql #4,%sp 49678: b882 cmpl %d2,%d4 4967a: 65c8 bcss 49644 <_User_extensions_Handler_initialization+0x80> _User_extensions_Add_set_with_table (extension, &initial_extensions[i]); extension++; } } } 4967c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 49682: 4e5e unlk %fp ... =============================================================================== 0004ae24 <_User_extensions_Remove_set>: #include void _User_extensions_Remove_set ( User_extensions_Control *the_extension ) { 4ae24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae2a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED _Chain_Extract( &the_extension->Node ); 4ae2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae30: 4eb9 0004 85f8 jsr 485f8 <_Chain_Extract> <== NOT EXECUTED /* * If a switch handler is present, remove it. */ if ( the_extension->Callouts.thread_switch != NULL ) 4ae36: 588f addql #4,%sp <== NOT EXECUTED 4ae38: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED 4ae3c: 6712 beqs 4ae50 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED _Chain_Extract( &the_extension->Switch.Node ); 4ae3e: 508a addql #8,%a2 <== NOT EXECUTED 4ae40: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4ae44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae48: 4e5e unlk %fp <== NOT EXECUTED /* * If a switch handler is present, remove it. */ if ( the_extension->Callouts.thread_switch != NULL ) _Chain_Extract( &the_extension->Switch.Node ); 4ae4a: 4ef9 0004 85f8 jmp 485f8 <_Chain_Extract> <== NOT EXECUTED } 4ae50: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae54: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049688 <_User_extensions_Thread_begin>: #include void _User_extensions_Thread_begin ( Thread_Control *executing ) { 49688: 4e56 0000 linkw %fp,#0 4968c: 2f0a movel %a2,%sp@- the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 4968e: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2 #include void _User_extensions_Thread_begin ( Thread_Control *executing ) { 49694: 2f02 movel %d2,%sp@- 49696: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 4969a: b5fc 0005 fdec cmpal #392684,%a2 496a0: 6718 beqs 496ba <_User_extensions_Thread_begin+0x32><== NEVER TAKEN !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_begin != NULL ) 496a2: 206a 0028 moveal %a2@(40),%a0 496a6: 4a88 tstl %a0 496a8: 6706 beqs 496b0 <_User_extensions_Thread_begin+0x28> (*the_extension->Callouts.thread_begin)( executing ); 496aa: 2f02 movel %d2,%sp@- 496ac: 4e90 jsr %a0@ 496ae: 588f addql #4,%sp Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 496b0: 2452 moveal %a2@,%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 496b2: b5fc 0005 fdec cmpal #392684,%a2 496b8: 66e8 bnes 496a2 <_User_extensions_Thread_begin+0x1a> the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_begin != NULL ) (*the_extension->Callouts.thread_begin)( executing ); } } 496ba: 242e fff8 movel %fp@(-8),%d2 496be: 246e fffc moveal %fp@(-4),%a2 496c2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049758 <_User_extensions_Thread_create>: #include bool _User_extensions_Thread_create ( Thread_Control *the_thread ) { 49758: 4e56 0000 linkw %fp,#0 4975c: 2f0a movel %a2,%sp@- return false; } } return true; } 4975e: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2 #include bool _User_extensions_Thread_create ( Thread_Control *the_thread ) { 49764: 2f02 movel %d2,%sp@- 49766: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); 4976a: b5fc 0005 fdec cmpal #392684,%a2 49770: 6722 beqs 49794 <_User_extensions_Thread_create+0x3c><== NEVER TAKEN !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_create != NULL ) { 49772: 206a 0014 moveal %a2@(20),%a0 49776: 4a88 tstl %a0 49778: 6710 beqs 4978a <_User_extensions_Thread_create+0x32> status = (*the_extension->Callouts.thread_create)( 4977a: 2f02 movel %d2,%sp@- 4977c: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@- 49782: 4e90 jsr %a0@ _Thread_Executing, the_thread ); if ( !status ) 49784: 508f addql #8,%sp 49786: 4a00 tstb %d0 49788: 6718 beqs 497a2 <_User_extensions_Thread_create+0x4a><== NEVER TAKEN User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 4978a: 2452 moveal %a2@,%a2 { Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); 4978c: b5fc 0005 fdec cmpal #392684,%a2 49792: 66de bnes 49772 <_User_extensions_Thread_create+0x1a> return false; } } return true; } 49794: 242e fff8 movel %fp@(-8),%d2 49798: 246e fffc moveal %fp@(-4),%a2 4979c: 4e5e unlk %fp if ( !status ) return false; } } return true; 4979e: 7001 moveq #1,%d0 } 497a0: 4e75 rts 497a2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 497a6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 497aa: 4e5e unlk %fp <== NOT EXECUTED status = (*the_extension->Callouts.thread_create)( _Thread_Executing, the_thread ); if ( !status ) return false; 497ac: 4200 clrb %d0 <== NOT EXECUTED } } return true; } =============================================================================== 000497b0 <_User_extensions_Thread_delete>: #include void _User_extensions_Thread_delete ( Thread_Control *the_thread ) { 497b0: 4e56 0000 linkw %fp,#0 497b4: 2f0a movel %a2,%sp@- (*the_extension->Callouts.thread_delete)( _Thread_Executing, the_thread ); } } 497b6: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2 #include void _User_extensions_Thread_delete ( Thread_Control *the_thread ) { 497bc: 2f02 movel %d2,%sp@- 497be: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 497c2: b5fc 0005 fde8 cmpal #392680,%a2 497c8: 6720 beqs 497ea <_User_extensions_Thread_delete+0x3a><== NEVER TAKEN !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_delete != NULL ) 497ca: 206a 0020 moveal %a2@(32),%a0 497ce: 4a88 tstl %a0 497d0: 670c beqs 497de <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN (*the_extension->Callouts.thread_delete)( 497d2: 2f02 movel %d2,%sp@- 497d4: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@- 497da: 4e90 jsr %a0@ 497dc: 508f addql #8,%sp Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 497de: 246a 0004 moveal %a2@(4),%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 497e2: b5fc 0005 fde8 cmpal #392680,%a2 497e8: 66e0 bnes 497ca <_User_extensions_Thread_delete+0x1a> (*the_extension->Callouts.thread_delete)( _Thread_Executing, the_thread ); } } 497ea: 242e fff8 movel %fp@(-8),%d2 497ee: 246e fffc moveal %fp@(-4),%a2 497f2: 4e5e unlk %fp ... =============================================================================== 000496c6 <_User_extensions_Thread_exitted>: void _User_extensions_Thread_exitted ( Thread_Control *executing ) { 496c6: 4e56 0000 linkw %fp,#0 496ca: 2f0a movel %a2,%sp@- the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 496cc: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2 } void _User_extensions_Thread_exitted ( Thread_Control *executing ) { 496d2: 2f02 movel %d2,%sp@- 496d4: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 496d8: b5fc 0005 fde8 cmpal #392680,%a2 496de: 671a beqs 496fa <_User_extensions_Thread_exitted+0x34><== NEVER TAKEN !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_exitted != NULL ) 496e0: 206a 002c moveal %a2@(44),%a0 496e4: 4a88 tstl %a0 496e6: 6706 beqs 496ee <_User_extensions_Thread_exitted+0x28> (*the_extension->Callouts.thread_exitted)( executing ); 496e8: 2f02 movel %d2,%sp@- 496ea: 4e90 jsr %a0@ 496ec: 588f addql #4,%sp Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 496ee: 246a 0004 moveal %a2@(4),%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 496f2: b5fc 0005 fde8 cmpal #392680,%a2 496f8: 66e6 bnes 496e0 <_User_extensions_Thread_exitted+0x1a> the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_exitted != NULL ) (*the_extension->Callouts.thread_exitted)( executing ); } } 496fa: 242e fff8 movel %fp@(-8),%d2 496fe: 246e fffc moveal %fp@(-4),%a2 49702: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a49c <_User_extensions_Thread_restart>: #include void _User_extensions_Thread_restart ( Thread_Control *the_thread ) { 4a49c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a4a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED (*the_extension->Callouts.thread_restart)( _Thread_Executing, the_thread ); } } 4a4a2: 2479 0006 0d90 moveal 60d90 <_User_extensions_List>,%a2 <== NOT EXECUTED #include void _User_extensions_Thread_restart ( Thread_Control *the_thread ) { 4a4a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a4aa: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 4a4ae: b5fc 0006 0d94 cmpal #396692,%a2 <== NOT EXECUTED 4a4b4: 671e beqs 4a4d4 <_User_extensions_Thread_restart+0x38><== NOT EXECUTED !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_restart != NULL ) 4a4b6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 4a4ba: 4a88 tstl %a0 <== NOT EXECUTED 4a4bc: 670c beqs 4a4ca <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED (*the_extension->Callouts.thread_restart)( 4a4be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a4c0: 2f39 0006 10aa movel 610aa <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4a4c6: 4e90 jsr %a0@ <== NOT EXECUTED 4a4c8: 508f addql #8,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 4a4ca: 2452 moveal %a2@,%a2 <== NOT EXECUTED ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 4a4cc: b5fc 0006 0d94 cmpal #396692,%a2 <== NOT EXECUTED 4a4d2: 66e2 bnes 4a4b6 <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED (*the_extension->Callouts.thread_restart)( _Thread_Executing, the_thread ); } } 4a4d4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4a4d8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a4dc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000497f8 <_User_extensions_Thread_start>: #include void _User_extensions_Thread_start ( Thread_Control *the_thread ) { 497f8: 4e56 0000 linkw %fp,#0 497fc: 2f0a movel %a2,%sp@- (*the_extension->Callouts.thread_start)( _Thread_Executing, the_thread ); } } 497fe: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2 #include void _User_extensions_Thread_start ( Thread_Control *the_thread ) { 49804: 2f02 movel %d2,%sp@- 49806: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 4980a: b5fc 0005 fdec cmpal #392684,%a2 49810: 671e beqs 49830 <_User_extensions_Thread_start+0x38><== NEVER TAKEN !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_start != NULL ) 49812: 206a 0018 moveal %a2@(24),%a0 49816: 4a88 tstl %a0 49818: 670c beqs 49826 <_User_extensions_Thread_start+0x2e> (*the_extension->Callouts.thread_start)( 4981a: 2f02 movel %d2,%sp@- 4981c: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@- 49822: 4e90 jsr %a0@ 49824: 508f addql #8,%sp Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 49826: 2452 moveal %a2@,%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 49828: b5fc 0005 fdec cmpal #392684,%a2 4982e: 66e2 bnes 49812 <_User_extensions_Thread_start+0x1a> (*the_extension->Callouts.thread_start)( _Thread_Executing, the_thread ); } } 49830: 242e fff8 movel %fp@(-8),%d2 49834: 246e fffc moveal %fp@(-4),%a2 49838: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004983c <_User_extensions_Thread_switch>: void _User_extensions_Thread_switch ( Thread_Control *executing, Thread_Control *heir ) { 4983c: 4e56 fff4 linkw %fp,#-12 49840: 48d7 040c moveml %d2-%d3/%a2,%sp@ 49844: 262e 0008 movel %fp@(8),%d3 49848: 242e 000c movel %fp@(12),%d2 the_extension_switch = (User_extensions_Switch_control *) the_node; (*the_extension_switch->thread_switch)( executing, heir ); } } 4984c: 2479 0005 fc7c moveal 5fc7c <_User_extensions_Switches_list>,%a2 ) { Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _Chain_First( &_User_extensions_Switches_list ); 49852: b5fc 0005 fc80 cmpal #392320,%a2 49858: 6716 beqs 49870 <_User_extensions_Thread_switch+0x34><== NEVER TAKEN !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ; the_node = the_node->next ) { the_extension_switch = (User_extensions_Switch_control *) the_node; (*the_extension_switch->thread_switch)( executing, heir ); 4985a: 2f02 movel %d2,%sp@- 4985c: 2f03 movel %d3,%sp@- 4985e: 206a 0008 moveal %a2@(8),%a0 49862: 4e90 jsr %a0@ Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _Chain_First( &_User_extensions_Switches_list ); !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ; the_node = the_node->next ) { 49864: 2452 moveal %a2@,%a2 ) { Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _Chain_First( &_User_extensions_Switches_list ); 49866: 508f addql #8,%sp 49868: b5fc 0005 fc80 cmpal #392320,%a2 4986e: 66ea bnes 4985a <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN the_extension_switch = (User_extensions_Switch_control *) the_node; (*the_extension_switch->thread_switch)( executing, heir ); } } 49870: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 49876: 4e5e unlk %fp ... =============================================================================== 0004b478 <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) { 4b478: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4b47c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b480: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4b484: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 4b48a: 2004 movel %d4,%d0 <== NOT EXECUTED void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) { 4b48c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4b490: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4b494: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b496: 8081 orl %d1,%d0 <== NOT EXECUTED 4b498: 46c0 movew %d0,%sr <== NOT EXECUTED } } _ISR_Enable( level ); } 4b49a: 244b moveal %a3,%a2 <== NOT EXECUTED 4b49c: 205a moveal %a2@+,%a0 <== NOT EXECUTED * hence the compiler must not assume *header to remain * unmodified across that call. * * Till Straumann, 7/2003 */ if ( !_Chain_Is_empty( header ) ) { 4b49e: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 4b4a0: 6748 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED switch ( direction ) { 4b4a2: 4a89 tstl %a1 <== NOT EXECUTED 4b4a4: 6650 bnes 4b4f6 <_Watchdog_Adjust+0x7e> <== NOT EXECUTED case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; break; case WATCHDOG_FORWARD: while ( units ) { 4b4a6: 4a82 tstl %d2 <== NOT EXECUTED 4b4a8: 6740 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED if ( units < _Watchdog_First( header )->delta_interval ) { 4b4aa: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b4ae: 49f9 0004 b700 lea 4b700 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED 4b4b4: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b4b6: 622c bhis 4b4e4 <_Watchdog_Adjust+0x6c> <== NOT EXECUTED _Watchdog_First( header )->delta_interval -= units; break; } else { units -= _Watchdog_First( header )->delta_interval; _Watchdog_First( header )->delta_interval = 1; 4b4b8: 7001 moveq #1,%d0 <== NOT EXECUTED 4b4ba: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED _ISR_Enable( level ); 4b4be: 46c1 movew %d1,%sr <== NOT EXECUTED _Watchdog_Tickle( header ); 4b4c0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b4c2: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Disable( level ); 4b4c4: 2004 movel %d4,%d0 <== NOT EXECUTED 4b4c6: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b4c8: 8081 orl %d1,%d0 <== NOT EXECUTED 4b4ca: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Chain_Is_empty( header ) ) 4b4cc: 588f addql #4,%sp <== NOT EXECUTED while ( units ) { if ( units < _Watchdog_First( header )->delta_interval ) { _Watchdog_First( header )->delta_interval -= units; break; } else { units -= _Watchdog_First( header )->delta_interval; 4b4ce: 9483 subl %d3,%d2 <== NOT EXECUTED } } _ISR_Enable( level ); } 4b4d0: 2013 movel %a3@,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) _Chain_First( header ) ); 4b4d2: 2040 moveal %d0,%a0 <== NOT EXECUTED _Watchdog_Tickle( header ); _ISR_Disable( level ); if ( _Chain_Is_empty( header ) ) 4b4d4: b08a cmpl %a2,%d0 <== NOT EXECUTED 4b4d6: 6712 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED switch ( direction ) { case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; break; case WATCHDOG_FORWARD: while ( units ) { 4b4d8: 4a82 tstl %d2 <== NOT EXECUTED 4b4da: 670e beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED if ( units < _Watchdog_First( header )->delta_interval ) { 4b4dc: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b4e0: b483 cmpl %d3,%d2 <== NOT EXECUTED 4b4e2: 64d4 bccs 4b4b8 <_Watchdog_Adjust+0x40> <== NOT EXECUTED _Watchdog_First( header )->delta_interval -= units; 4b4e4: 9682 subl %d2,%d3 <== NOT EXECUTED 4b4e6: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED } break; } } _ISR_Enable( level ); 4b4ea: 46c1 movew %d1,%sr <== NOT EXECUTED } 4b4ec: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b4f2: 4e5e unlk %fp <== NOT EXECUTED 4b4f4: 4e75 rts <== NOT EXECUTED * unmodified across that call. * * Till Straumann, 7/2003 */ if ( !_Chain_Is_empty( header ) ) { switch ( direction ) { 4b4f6: 7001 moveq #1,%d0 <== NOT EXECUTED 4b4f8: b089 cmpl %a1,%d0 <== NOT EXECUTED 4b4fa: 66ee bnes 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; 4b4fc: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED } break; } } _ISR_Enable( level ); 4b500: 46c1 movew %d1,%sr <== NOT EXECUTED } 4b502: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b508: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005d5f8 <_Watchdog_Adjust_to_chain>: Chain_Control *header, Watchdog_Interval units_arg, Chain_Control *to_fire ) { 5d5f8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5d5fc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 5d600: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5d604: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 5d608: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED Watchdog_Interval units = units_arg; ISR_Level level; Watchdog_Control *first; if ( units <= 0 ) { 5d60c: 6760 beqs 5d66e <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED return; } _ISR_Disable( level ); 5d60e: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED 5d614: 2003 movel %d3,%d0 <== NOT EXECUTED 5d616: 40c2 movew %sr,%d2 <== NOT EXECUTED 5d618: 8082 orl %d2,%d0 <== NOT EXECUTED 5d61a: 46c0 movew %d0,%sr <== NOT EXECUTED 5d61c: 2a41 moveal %d1,%a5 <== NOT EXECUTED 5d61e: 205d moveal %a5@+,%a0 <== NOT EXECUTED while ( 1 ) { if ( units <= 0 ) { break; } if ( _Chain_Is_empty( header ) ) { 5d620: bbc8 cmpal %a0,%a5 <== NOT EXECUTED 5d622: 6748 beqs 5d66c <_Watchdog_Adjust_to_chain+0x74> <== NOT EXECUTED /* * If it is longer than "units" until the first element on the chain * fires, then bump it and quit. */ if ( units < first->delta_interval ) { 5d624: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 5d628: b880 cmpl %d0,%d4 <== NOT EXECUTED 5d62a: 654a bcss 5d676 <_Watchdog_Adjust_to_chain+0x7e> <== NOT EXECUTED /* * The first set happens in less than units, so take all of them * off the chain and adjust units to reflect this. */ units -= first->delta_interval; 5d62c: 9880 subl %d0,%d4 <== NOT EXECUTED first->delta_interval = 0; 5d62e: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 5d632: 2850 moveal %a0@,%a4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 5d634: 2009 movel %a1,%d0 <== NOT EXECUTED 5d636: 5880 addql #4,%d0 <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 5d638: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED next->previous = previous; 5d63c: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 5d640: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; previous->next = next; 5d644: 268c movel %a4,%a3@ <== NOT EXECUTED { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 5d646: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 5d64a: 2080 movel %d0,%a0@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 5d64c: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 5d650: 2488 movel %a0,%a2@ <== NOT EXECUTED while ( 1 ) { _Chain_Extract_unprotected( &first->Node ); _Chain_Append_unprotected( to_fire, &first->Node ); _ISR_Flash( level ); 5d652: 2003 movel %d3,%d0 <== NOT EXECUTED 5d654: 46c2 movew %d2,%sr <== NOT EXECUTED 5d656: 8082 orl %d2,%d0 <== NOT EXECUTED 5d658: 46c0 movew %d0,%sr <== NOT EXECUTED break; } } _ISR_Enable( level ); } 5d65a: 2441 moveal %d1,%a2 <== NOT EXECUTED 5d65c: 2052 moveal %a2@,%a0 <== NOT EXECUTED _Chain_Extract_unprotected( &first->Node ); _Chain_Append_unprotected( to_fire, &first->Node ); _ISR_Flash( level ); if ( _Chain_Is_empty( header ) ) 5d65e: b1cd cmpal %a5,%a0 <== NOT EXECUTED 5d660: 6706 beqs 5d668 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED break; first = _Watchdog_First( header ); if ( first->delta_interval != 0 ) 5d662: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 5d666: 67ca beqs 5d632 <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED } _ISR_Disable( level ); while ( 1 ) { if ( units <= 0 ) { 5d668: 4a84 tstl %d4 <== NOT EXECUTED 5d66a: 66b4 bnes 5d620 <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED if ( first->delta_interval != 0 ) break; } } _ISR_Enable( level ); 5d66c: 46c2 movew %d2,%sr <== NOT EXECUTED } 5d66e: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED 5d672: 4e5e unlk %fp <== NOT EXECUTED 5d674: 4e75 rts <== NOT EXECUTED /* * If it is longer than "units" until the first element on the chain * fires, then bump it and quit. */ if ( units < first->delta_interval ) { first->delta_interval -= units; 5d676: 9084 subl %d4,%d0 <== NOT EXECUTED 5d678: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED if ( first->delta_interval != 0 ) break; } } _ISR_Enable( level ); 5d67c: 46c2 movew %d2,%sr <== NOT EXECUTED 5d67e: 60ee bras 5d66e <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED =============================================================================== 0004987c <_Watchdog_Insert>: void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) { 4987c: 4e56 ffec linkw %fp,#-20 49880: 226e 000c moveal %fp@(12),%a1 49884: 48d7 043c moveml %d2-%d5/%a2,%sp@ 49888: 246e 0008 moveal %fp@(8),%a2 Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; _ISR_Disable( level ); 4988c: 2a3c 0000 0700 movel #1792,%d5 49892: 2005 movel %d5,%d0 Watchdog_Control *after; uint32_t insert_isr_nest_level; Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; 49894: 2839 0006 00fe movel 600fe <_Per_CPU_Information+0x8>,%d4 _ISR_Disable( level ); 4989a: 40c3 movew %sr,%d3 4989c: 8083 orl %d3,%d0 4989e: 46c0 movew %d0,%sr /* * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_watchdog->state != WATCHDOG_INACTIVE ) { 498a0: 4aa9 0008 tstl %a1@(8) 498a4: 6600 00c6 bnew 4996c <_Watchdog_Insert+0xf0> _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; _Watchdog_Sync_count++; 498a8: 2039 0005 fd9e movel 5fd9e <_Watchdog_Sync_count>,%d0 if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; 498ae: 7201 moveq #1,%d1 _Watchdog_Sync_count++; 498b0: 5280 addql #1,%d0 if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; 498b2: 2341 0008 movel %d1,%a1@(8) _Watchdog_Sync_count++; 498b6: 23c0 0005 fd9e movel %d0,5fd9e <_Watchdog_Sync_count> restart: delta_interval = the_watchdog->initial; 498bc: 2029 000c movel %a1@(12),%d0 RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) _Chain_First( header ) ); 498c0: 2052 moveal %a2@,%a0 for ( after = _Watchdog_First( header ) ; ; after = _Watchdog_Next( after ) ) { if ( delta_interval == 0 || !_Watchdog_Next( after ) ) 498c2: 6764 beqs 49928 <_Watchdog_Insert+0xac> <== NEVER TAKEN 498c4: 4a90 tstl %a0@ 498c6: 6760 beqs 49928 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN break; if ( delta_interval < after->delta_interval ) { 498c8: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 498cc: b280 cmpl %d0,%d1 <== NOT EXECUTED 498ce: 6252 bhis 49922 <_Watchdog_Insert+0xa6> <== NOT EXECUTED break; } delta_interval -= after->delta_interval; _ISR_Flash( level ); 498d0: 2405 movel %d5,%d2 <== NOT EXECUTED 498d2: 46c3 movew %d3,%sr <== NOT EXECUTED 498d4: 8483 orl %d3,%d2 <== NOT EXECUTED 498d6: 46c2 movew %d2,%sr <== NOT EXECUTED if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) { 498d8: 7401 moveq #1,%d2 <== NOT EXECUTED 498da: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED 498de: 666e bnes 4994e <_Watchdog_Insert+0xd2> <== NOT EXECUTED goto exit_insert; } if ( _Watchdog_Sync_level > insert_isr_nest_level ) { 498e0: 2439 0005 fd3c movel 5fd3c <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED 498e6: b484 cmpl %d4,%d2 <== NOT EXECUTED 498e8: 6230 bhis 4991a <_Watchdog_Insert+0x9e> <== NOT EXECUTED if ( delta_interval < after->delta_interval ) { after->delta_interval -= delta_interval; break; } delta_interval -= after->delta_interval; 498ea: 9081 subl %d1,%d0 <== NOT EXECUTED exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; _Watchdog_Sync_count--; _ISR_Enable( level ); } 498ec: 2050 moveal %a0@,%a0 <== NOT EXECUTED for ( after = _Watchdog_First( header ) ; ; after = _Watchdog_Next( after ) ) { if ( delta_interval == 0 || !_Watchdog_Next( after ) ) 498ee: 4a80 tstl %d0 <== NOT EXECUTED 498f0: 6736 beqs 49928 <_Watchdog_Insert+0xac> <== NOT EXECUTED 498f2: 4a90 tstl %a0@ <== NOT EXECUTED 498f4: 6732 beqs 49928 <_Watchdog_Insert+0xac> <== NOT EXECUTED break; if ( delta_interval < after->delta_interval ) { 498f6: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 498fa: b081 cmpl %d1,%d0 <== NOT EXECUTED 498fc: 6524 bcss 49922 <_Watchdog_Insert+0xa6> <== NOT EXECUTED break; } delta_interval -= after->delta_interval; _ISR_Flash( level ); 498fe: 2405 movel %d5,%d2 <== NOT EXECUTED 49900: 46c3 movew %d3,%sr <== NOT EXECUTED 49902: 8483 orl %d3,%d2 <== NOT EXECUTED 49904: 46c2 movew %d2,%sr <== NOT EXECUTED if ( delta_interval < after->delta_interval ) { after->delta_interval -= delta_interval; break; } delta_interval -= after->delta_interval; 49906: 9081 subl %d1,%d0 <== NOT EXECUTED _ISR_Flash( level ); if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) { 49908: 7201 moveq #1,%d1 <== NOT EXECUTED 4990a: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED 4990e: 663e bnes 4994e <_Watchdog_Insert+0xd2> <== NOT EXECUTED goto exit_insert; } if ( _Watchdog_Sync_level > insert_isr_nest_level ) { 49910: 2239 0005 fd3c movel 5fd3c <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED 49916: b284 cmpl %d4,%d1 <== NOT EXECUTED 49918: 63d2 blss 498ec <_Watchdog_Insert+0x70> <== NOT EXECUTED _Watchdog_Sync_level = insert_isr_nest_level; 4991a: 23c4 0005 fd3c movel %d4,5fd3c <_Watchdog_Sync_level> <== NOT EXECUTED goto restart; 49920: 609a bras 498bc <_Watchdog_Insert+0x40> <== NOT EXECUTED if ( delta_interval == 0 || !_Watchdog_Next( after ) ) break; if ( delta_interval < after->delta_interval ) { after->delta_interval -= delta_interval; 49922: 9280 subl %d0,%d1 <== NOT EXECUTED 49924: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); 49928: 2068 0004 moveal %a0@(4),%a0 RTEMS_INLINE_ROUTINE void _Watchdog_Activate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_ACTIVE; 4992c: 7402 moveq #2,%d2 ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 4992e: 2450 moveal %a0@,%a2 } } _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; 49930: 2340 0010 movel %d0,%a1@(16) _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); the_watchdog->start_time = _Watchdog_Ticks_since_boot; 49934: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0 4993a: 2342 0008 movel %d2,%a1@(8) Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 4993e: 2348 0004 movel %a0,%a1@(4) before_node = after_node->next; after_node->next = the_node; 49942: 2089 movel %a1,%a0@ the_node->next = before_node; before_node->previous = the_node; 49944: 2549 0004 movel %a1,%a2@(4) Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 49948: 228a movel %a2,%a1@ 4994a: 2340 0014 movel %d0,%a1@(20) exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; 4994e: 23c4 0005 fd3c movel %d4,5fd3c <_Watchdog_Sync_level> _Watchdog_Sync_count--; 49954: 2039 0005 fd9e movel 5fd9e <_Watchdog_Sync_count>,%d0 4995a: 5380 subql #1,%d0 4995c: 23c0 0005 fd9e movel %d0,5fd9e <_Watchdog_Sync_count> _ISR_Enable( level ); 49962: 46c3 movew %d3,%sr } 49964: 4cd7 043c moveml %sp@,%d2-%d5/%a2 49968: 4e5e unlk %fp 4996a: 4e75 rts * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); 4996c: 46c3 movew %d3,%sr <== NOT EXECUTED exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; _Watchdog_Sync_count--; _ISR_Enable( level ); } 4996e: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 49972: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000499d0 <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 499d0: 203c 0000 0700 movel #1792,%d0 */ Watchdog_States _Watchdog_Remove( Watchdog_Control *the_watchdog ) { 499d6: 4e56 0000 linkw %fp,#0 499da: 206e 0008 moveal %fp@(8),%a0 499de: 2f0a movel %a2,%sp@- 499e0: 2f02 movel %d2,%sp@- ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 499e2: 40c1 movew %sr,%d1 499e4: 8081 orl %d1,%d0 499e6: 46c0 movew %d0,%sr previous_state = the_watchdog->state; 499e8: 2028 0008 movel %a0@(8),%d0 switch ( previous_state ) { 499ec: 7401 moveq #1,%d2 499ee: b480 cmpl %d0,%d2 499f0: 6764 beqs 49a56 <_Watchdog_Remove+0x86> <== NEVER TAKEN 499f2: 6314 blss 49a08 <_Watchdog_Remove+0x38> <== ALWAYS TAKEN _Watchdog_Sync_level = _ISR_Nest_level; _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 499f4: 2279 0005 fda2 moveal 5fda2 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED 499fa: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED _ISR_Enable( level ); 499fe: 46c1 movew %d1,%sr <== NOT EXECUTED return( previous_state ); } 49a00: 241f movel %sp@+,%d2 <== NOT EXECUTED 49a02: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49a04: 4e5e unlk %fp <== NOT EXECUTED 49a06: 4e75 rts <== NOT EXECUTED Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); previous_state = the_watchdog->state; switch ( previous_state ) { 49a08: 143c 0003 moveb #3,%d2 49a0c: b480 cmpl %d0,%d2 49a0e: 65e4 bcss 499f4 <_Watchdog_Remove+0x24> <== NEVER TAKEN } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; _ISR_Enable( level ); return( previous_state ); } 49a10: 2250 moveal %a0@,%a1 break; case WATCHDOG_ACTIVE: case WATCHDOG_REMOVE_IT: the_watchdog->state = WATCHDOG_INACTIVE; 49a12: 42a8 0008 clrl %a0@(8) next_watchdog = _Watchdog_Next( the_watchdog ); if ( _Watchdog_Next(next_watchdog) ) 49a16: 4a91 tstl %a1@ 49a18: 6708 beqs 49a22 <_Watchdog_Remove+0x52> <== ALWAYS TAKEN next_watchdog->delta_interval += the_watchdog->delta_interval; 49a1a: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 49a1e: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED if ( _Watchdog_Sync_count ) 49a22: 2479 0005 fd9e moveal 5fd9e <_Watchdog_Sync_count>,%a2 49a28: 4a8a tstl %a2 49a2a: 670c beqs 49a38 <_Watchdog_Remove+0x68> <== ALWAYS TAKEN _Watchdog_Sync_level = _ISR_Nest_level; 49a2c: 45f9 0006 00fe lea 600fe <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED 49a32: 23d2 0005 fd3c movel %a2@,5fd3c <_Watchdog_Sync_level> <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 49a38: 2468 0004 moveal %a0@(4),%a2 next->previous = previous; 49a3c: 234a 0004 movel %a2,%a1@(4) previous->next = next; 49a40: 2489 movel %a1,%a2@ _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 49a42: 2279 0005 fda2 moveal 5fda2 <_Watchdog_Ticks_since_boot>,%a1 49a48: 2149 0018 movel %a1,%a0@(24) _ISR_Enable( level ); 49a4c: 46c1 movew %d1,%sr return( previous_state ); } 49a4e: 241f movel %sp@+,%d2 49a50: 245f moveal %sp@+,%a2 49a52: 4e5e unlk %fp 49a54: 4e75 rts _Watchdog_Sync_level = _ISR_Nest_level; _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 49a56: 2279 0005 fda2 moveal 5fda2 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED /* * It is not actually on the chain so just change the state and * the Insert operation we interrupted will be aborted. */ the_watchdog->state = WATCHDOG_INACTIVE; 49a5c: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED _Watchdog_Sync_level = _ISR_Nest_level; _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 49a60: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED _ISR_Enable( level ); 49a64: 46c1 movew %d1,%sr <== NOT EXECUTED return( previous_state ); } 49a66: 241f movel %sp@+,%d2 <== NOT EXECUTED 49a68: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49a6a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004aee8 <_Watchdog_Report>: void _Watchdog_Report( const char *name, Watchdog_Control *watch ) { 4aee8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED printk( 4aeec: 223c 0005 f3ad movel #390061,%d1 <== NOT EXECUTED void _Watchdog_Report( const char *name, Watchdog_Control *watch ) { 4aef2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4aef6: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED 4aefa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED printk( 4aefe: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED 4af02: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED 4af06: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED 4af0a: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 4af0e: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4af12: 4a80 tstl %d0 <== NOT EXECUTED 4af14: 672a beqs 4af40 <_Watchdog_Report+0x58> <== NOT EXECUTED 4af16: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4af18: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4af1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4af1c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4af1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af20: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4af22: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4af24: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4af26: 4879 0005 f52e pea 5f52e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4af2c: 4eb9 0004 4878 jsr 44878 <== NOT EXECUTED 4af32: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED watch, watch->routine, watch->id, watch->user_data ); } 4af36: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4af3c: 4e5e unlk %fp <== NOT EXECUTED 4af3e: 4e75 rts <== NOT EXECUTED void _Watchdog_Report( const char *name, Watchdog_Control *watch ) { printk( 4af40: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4af42: 223c 0005 f3b2 movel #390066,%d1 <== NOT EXECUTED 4af48: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4af4a: 2001 movel %d1,%d0 <== NOT EXECUTED 4af4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4af4e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4af50: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af52: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4af54: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4af56: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4af58: 4879 0005 f52e pea 5f52e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4af5e: 4eb9 0004 4878 jsr 44878 <== NOT EXECUTED 4af64: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED watch, watch->routine, watch->id, watch->user_data ); } 4af68: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4af6e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ae6c <_Watchdog_Report_chain>: ) { ISR_Level level; Chain_Node *node; _ISR_Disable( level ); 4ae6c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void _Watchdog_Report_chain( const char *name, Chain_Control *header ) { 4ae72: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4ae76: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 4ae7a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ae7e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED ISR_Level level; Chain_Node *node; _ISR_Disable( level ); 4ae82: 40c3 movew %sr,%d3 <== NOT EXECUTED 4ae84: 8083 orl %d3,%d0 <== NOT EXECUTED 4ae86: 46c0 movew %d0,%sr <== NOT EXECUTED printk( "Watchdog Chain: %s %p\n", name, header ); 4ae88: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ae8a: 4bf9 0004 4878 lea 44878 ,%a5 <== NOT EXECUTED 4ae90: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ae92: 4879 0005 f4f8 pea 5f4f8 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 4ae98: 4e95 jsr %a5@ <== NOT EXECUTED printk( "== end of %s \n", name ); } else { printk( "Chain is empty\n" ); } _ISR_Enable( level ); } 4ae9a: 245b moveal %a3@+,%a2 <== NOT EXECUTED ISR_Level level; Chain_Node *node; _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { 4ae9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4aea0: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4aea2: 672c beqs 4aed0 <_Watchdog_Report_chain+0x64> <== NOT EXECUTED 4aea4: 49f9 0004 aee8 lea 4aee8 <_Watchdog_Report>,%a4 <== NOT EXECUTED node != _Chain_Tail(header) ; node = node->next ) { Watchdog_Control *watch = (Watchdog_Control *) node; _Watchdog_Report( NULL, watch ); 4aeaa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aeac: 42a7 clrl %sp@- <== NOT EXECUTED 4aeae: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { for ( node = _Chain_First( header ) ; node != _Chain_Tail(header) ; node = node->next ) 4aeb0: 2452 moveal %a2@,%a2 <== NOT EXECUTED Chain_Node *node; _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { for ( node = _Chain_First( header ) ; 4aeb2: 508f addql #8,%sp <== NOT EXECUTED 4aeb4: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4aeb6: 66f2 bnes 4aeaa <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED { Watchdog_Control *watch = (Watchdog_Control *) node; _Watchdog_Report( NULL, watch ); } printk( "== end of %s \n", name ); 4aeb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aeba: 4879 0005 f50f pea 5f50f <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED 4aec0: 4e95 jsr %a5@ <== NOT EXECUTED 4aec2: 508f addql #8,%sp <== NOT EXECUTED } else { printk( "Chain is empty\n" ); } _ISR_Enable( level ); 4aec4: 46c3 movew %d3,%sr <== NOT EXECUTED } 4aec6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4aecc: 4e5e unlk %fp <== NOT EXECUTED 4aece: 4e75 rts <== NOT EXECUTED _Watchdog_Report( NULL, watch ); } printk( "== end of %s \n", name ); } else { printk( "Chain is empty\n" ); 4aed0: 4879 0005 f51e pea 5f51e <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED 4aed6: 4e95 jsr %a5@ <== NOT EXECUTED 4aed8: 588f addql #4,%sp <== NOT EXECUTED } _ISR_Enable( level ); 4aeda: 46c3 movew %d3,%sr <== NOT EXECUTED } 4aedc: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4aee2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049a70 <_Watchdog_Tickle>: * See the comment in watchdoginsert.c and watchdogadjust.c * about why it's safe not to declare header a pointer to * volatile data - till, 2003/7 */ _ISR_Disable( level ); 49a70: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _Watchdog_Tickle( Chain_Control *header ) { 49a76: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49a7a: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 49a7e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED * See the comment in watchdoginsert.c and watchdogadjust.c * about why it's safe not to declare header a pointer to * volatile data - till, 2003/7 */ _ISR_Disable( level ); 49a82: 40c2 movew %sr,%d2 <== NOT EXECUTED 49a84: 8082 orl %d2,%d0 <== NOT EXECUTED 49a86: 46c0 movew %d0,%sr <== NOT EXECUTED } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); } 49a88: 264c moveal %a4,%a3 <== NOT EXECUTED 49a8a: 245b moveal %a3@+,%a2 <== NOT EXECUTED * volatile data - till, 2003/7 */ _ISR_Disable( level ); if ( _Chain_Is_empty( header ) ) 49a8c: b7ca cmpal %a2,%a3 <== NOT EXECUTED 49a8e: 673e beqs 49ace <_Watchdog_Tickle+0x5e> <== NOT EXECUTED * to be inserted has already had its delta_interval adjusted to 0, and * so is added to the head of the chain with a delta_interval of 0. * * Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc) */ if (the_watchdog->delta_interval != 0) { 49a90: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 49a94: 4bf9 0004 99d0 lea 499d0 <_Watchdog_Remove>,%a5 <== NOT EXECUTED 49a9a: 6708 beqs 49aa4 <_Watchdog_Tickle+0x34> <== NOT EXECUTED the_watchdog->delta_interval--; 49a9c: 5380 subql #1,%d0 <== NOT EXECUTED 49a9e: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) 49aa2: 662a bnes 49ace <_Watchdog_Tickle+0x5e> <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 49aa4: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) goto leave; } do { watchdog_state = _Watchdog_Remove( the_watchdog ); 49aaa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49aac: 4e95 jsr %a5@ <== NOT EXECUTED _ISR_Enable( level ); 49aae: 46c2 movew %d2,%sr <== NOT EXECUTED switch( watchdog_state ) { 49ab0: 7202 moveq #2,%d1 <== NOT EXECUTED 49ab2: 588f addql #4,%sp <== NOT EXECUTED 49ab4: b280 cmpl %d0,%d1 <== NOT EXECUTED 49ab6: 6722 beqs 49ada <_Watchdog_Tickle+0x6a> <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 49ab8: 2003 movel %d3,%d0 <== NOT EXECUTED 49aba: 40c2 movew %sr,%d2 <== NOT EXECUTED 49abc: 8082 orl %d2,%d0 <== NOT EXECUTED 49abe: 46c0 movew %d0,%sr <== NOT EXECUTED } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); } 49ac0: 2014 movel %a4@,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) _Chain_First( header ) ); 49ac2: 2440 moveal %d0,%a2 <== NOT EXECUTED _ISR_Disable( level ); the_watchdog = _Watchdog_First( header ); } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); 49ac4: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 49ac6: 6706 beqs 49ace <_Watchdog_Tickle+0x5e> <== NOT EXECUTED } _ISR_Disable( level ); the_watchdog = _Watchdog_First( header ); } while ( !_Chain_Is_empty( header ) && 49ac8: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 49acc: 67dc beqs 49aaa <_Watchdog_Tickle+0x3a> <== NOT EXECUTED (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); 49ace: 46c2 movew %d2,%sr <== NOT EXECUTED } 49ad0: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 49ad6: 4e5e unlk %fp <== NOT EXECUTED 49ad8: 4e75 rts <== NOT EXECUTED _ISR_Enable( level ); switch( watchdog_state ) { case WATCHDOG_ACTIVE: (*the_watchdog->routine)( 49ada: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 49ade: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 49ae2: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 49ae6: 4e90 jsr %a0@ <== NOT EXECUTED the_watchdog->id, the_watchdog->user_data ); break; 49ae8: 508f addql #8,%sp <== NOT EXECUTED 49aea: 60cc bras 49ab8 <_Watchdog_Tickle+0x48> <== NOT EXECUTED =============================================================================== 00049b86 <_Workspace_Allocate_or_fatal_error>: * _Workspace_Allocate_or_fatal_error */ void *_Workspace_Allocate_or_fatal_error( size_t size ) { 49b86: 4e56 0000 linkw %fp,#0 49b8a: 42a7 clrl %sp@- 49b8c: 42a7 clrl %sp@- 49b8e: 2f2e 0008 movel %fp@(8),%sp@- 49b92: 4879 0005 fc96 pea 5fc96 <_Workspace_Area> 49b98: 4eb9 0004 c5f4 jsr 4c5f4 <_Heap_Allocate_aligned_with_boundary> __builtin_return_address( 1 ), memory ); #endif if ( memory == NULL ) 49b9e: 4fef 0010 lea %sp@(16),%sp 49ba2: 4a80 tstl %d0 49ba4: 6704 beqs 49baa <_Workspace_Allocate_or_fatal_error+0x24> true, INTERNAL_ERROR_WORKSPACE_ALLOCATION ); return memory; } 49ba6: 4e5e unlk %fp 49ba8: 4e75 rts memory ); #endif if ( memory == NULL ) _Internal_error_Occurred( 49baa: 4878 0003 pea 3 49bae: 4878 0001 pea 1 49bb2: 42a7 clrl %sp@- 49bb4: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> ... =============================================================================== 0005ce3c <_execve>: int _execve( const char *path __attribute__((unused)), char *const argv[] __attribute__((unused)), char *const envp[] __attribute__((unused)) ) { 5ce3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 5ce40: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 5ce46: 7258 moveq #88,%d1 <== NOT EXECUTED 5ce48: 2040 moveal %d0,%a0 <== NOT EXECUTED } 5ce4a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5ce4c: 4e5e unlk %fp <== NOT EXECUTED const char *path __attribute__((unused)), char *const argv[] __attribute__((unused)), char *const envp[] __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 5ce4e: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 0005bf2c <_kill_r>: int _kill_r( struct _reent *ptr, pid_t pid, int sig ) { 5bf2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 5bf30: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED int _kill_r( struct _reent *ptr, pid_t pid, int sig ) { 5bf36: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 5bf3a: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 5bf3e: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED } 5bf42: 4e5e unlk %fp <== NOT EXECUTED struct _reent *ptr, pid_t pid, int sig ) { return killinfo( pid, sig, NULL ); 5bf44: 4ef9 0005 c11c jmp 5c11c <== NOT EXECUTED ... =============================================================================== 00046500 : int adjtime( struct timeval *delta, struct timeval *olddelta ) { 46500: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46504: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 46508: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4650c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED long adjustment; /* * Simple validations */ if ( !delta ) 46510: 4a8a tstl %a2 <== NOT EXECUTED 46512: 6700 00ec beqw 46600 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) 46516: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4651a: 0c80 000f 423f cmpil #999999,%d0 <== NOT EXECUTED 46520: 6200 00de bhiw 46600 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( olddelta ) { 46524: 4a8b tstl %a3 <== NOT EXECUTED 46526: 670a beqs 46532 <== NOT EXECUTED olddelta->tv_sec = 0; olddelta->tv_usec = 0; 46528: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED 4652c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( olddelta ) { olddelta->tv_sec = 0; 46530: 4293 clrl %a3@ <== NOT EXECUTED olddelta->tv_usec = 0; } /* convert delta to microseconds */ adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND); 46532: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED 46538: 4c12 1800 mulsl %a2@,%d1 <== NOT EXECUTED adjustment += delta->tv_usec; 4653c: d081 addl %d1,%d0 <== NOT EXECUTED /* too small to account for */ if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 4653e: b0b9 0005 fb20 cmpl 5fb20 ,%d0 <== NOT EXECUTED 46544: 640c bccs 46552 <== NOT EXECUTED /* set the user's output */ if ( olddelta ) *olddelta = *delta; return 0; 46546: 4280 clrl %d0 <== NOT EXECUTED } 46548: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED 4654e: 4e5e unlk %fp <== NOT EXECUTED 46550: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46552: 2039 0006 14f0 movel 614f0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46558: 5280 addql #1,%d0 <== NOT EXECUTED 4655a: 23c0 0006 14f0 movel %d0,614f0 <_Thread_Dispatch_disable_level><== NOT EXECUTED * This prevents context switches while we are adjusting the TOD */ _Thread_Disable_dispatch(); _TOD_Get( &ts ); 46560: 240e movel %fp,%d2 <== NOT EXECUTED 46562: 5182 subql #8,%d2 <== NOT EXECUTED 46564: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46566: 4eb9 0004 7ee0 jsr 47ee0 <_TOD_Get> <== NOT EXECUTED ts.tv_sec += delta->tv_sec; ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 4656c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 46570: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 46576: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 4657a: 588f addql #4,%sp <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Get( &ts ); ts.tv_sec += delta->tv_sec; 4657c: 2212 movel %a2@,%d1 <== NOT EXECUTED ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 4657e: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Get( &ts ); ts.tv_sec += delta->tv_sec; 46582: d3ae fff8 addl %d1,%fp@(-8) <== NOT EXECUTED ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 46586: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 4658a: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 46590: 631c blss 465ae <== NOT EXECUTED 46592: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED * At one point there was a static variable named adjustment * used by this implementation. I don't see any reason for it * to be here based upon the GNU/Linux documentation. */ int adjtime( 46596: 5281 addql #1,%d1 <== NOT EXECUTED ts.tv_sec += delta->tv_sec; ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND; 46598: 0680 c465 3600 addil #-1000000000,%d0 <== NOT EXECUTED ts.tv_sec += delta->tv_sec; ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 4659e: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 465a4: 62f0 bhis 46596 <== NOT EXECUTED 465a6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 465aa: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND; ts.tv_sec++; } /* if adjustment is too much negative */ while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) { 465ae: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED 465b4: 621c bhis 465d2 <== NOT EXECUTED 465b6: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED * At one point there was a static variable named adjustment * used by this implementation. I don't see any reason for it * to be here based upon the GNU/Linux documentation. */ int adjtime( 465ba: 5381 subql #1,%d1 <== NOT EXECUTED ts.tv_sec++; } /* if adjustment is too much negative */ while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) { ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; 465bc: 0680 3b9a ca00 addil #1000000000,%d0 <== NOT EXECUTED ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND; ts.tv_sec++; } /* if adjustment is too much negative */ while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) { 465c2: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED 465c8: 63f0 blss 465ba <== NOT EXECUTED 465ca: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 465ce: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; ts.tv_sec--; } _TOD_Set( &ts ); 465d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465d4: 4eb9 0004 7f74 jsr 47f74 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 465da: 4eb9 0004 94ee jsr 494ee <_Thread_Enable_dispatch> <== NOT EXECUTED /* set the user's output */ if ( olddelta ) 465e0: 588f addql #4,%sp <== NOT EXECUTED 465e2: 4a8b tstl %a3 <== NOT EXECUTED 465e4: 6700 ff60 beqw 46546 <== NOT EXECUTED *olddelta = *delta; return 0; 465e8: 4280 clrl %d0 <== NOT EXECUTED _Thread_Enable_dispatch(); /* set the user's output */ if ( olddelta ) *olddelta = *delta; 465ea: 2212 movel %a2@,%d1 <== NOT EXECUTED 465ec: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED 465f0: 2681 movel %d1,%a3@ <== NOT EXECUTED 465f2: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED return 0; } 465f6: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED 465fc: 4e5e unlk %fp <== NOT EXECUTED 465fe: 4e75 rts <== NOT EXECUTED */ if ( !delta ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) rtems_set_errno_and_return_minus_one( EINVAL ); 46600: 4eb9 0004 f5cc jsr 4f5cc <__errno> <== NOT EXECUTED 46606: 7216 moveq #22,%d1 <== NOT EXECUTED 46608: 2040 moveal %d0,%a0 <== NOT EXECUTED 4660a: 70ff moveq #-1,%d0 <== NOT EXECUTED /* set the user's output */ if ( olddelta ) *olddelta = *delta; return 0; } 4660c: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED */ if ( !delta ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) rtems_set_errno_and_return_minus_one( EINVAL ); 46612: 2081 movel %d1,%a0@ <== NOT EXECUTED /* set the user's output */ if ( olddelta ) *olddelta = *delta; return 0; } 46614: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046d8c : * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) { 46d8c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46d90: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED rtems_aio_request_chain *r_chain; int result; pthread_mutex_lock (&aio_request_queue.mutex); 46d94: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 46d9a: 47f9 0004 80d8 lea 480d8 ,%a3 <== NOT EXECUTED * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) { 46da0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46da4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED rtems_aio_request_chain *r_chain; int result; pthread_mutex_lock (&aio_request_queue.mutex); 46da8: 4e93 jsr %a3@ <== NOT EXECUTED if (fcntl (fildes, F_GETFD) < 0) { 46daa: 4878 0001 pea 1 <== NOT EXECUTED 46dae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46db0: 4eb9 0004 dfdc jsr 4dfdc <== NOT EXECUTED 46db6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46dba: 4a80 tstl %d0 <== NOT EXECUTED 46dbc: 6d00 0198 bltw 46f56 <== NOT EXECUTED pthread_mutex_unlock(&aio_request_queue.mutex); rtems_set_errno_and_return_minus_one (EBADF); } /* if aiocbp is NULL remove all request for given file descriptor */ if (aiocbp == NULL) { 46dc0: 4a8a tstl %a2 <== NOT EXECUTED 46dc2: 6700 0084 beqw 46e48 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return AIO_CANCELED; } else { AIO_printf ("Cancel request\n"); if (aiocbp->aio_fildes != fildes) { 46dc6: 2612 movel %a2@,%d3 <== NOT EXECUTED 46dc8: b483 cmpl %d3,%d2 <== NOT EXECUTED 46dca: 6600 0162 bnew 46f2e <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); rtems_set_errno_and_return_minus_one (EINVAL); } r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 46dce: 42a7 clrl %sp@- <== NOT EXECUTED 46dd0: 47f9 0004 71d6 lea 471d6 ,%a3 <== NOT EXECUTED 46dd6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46dd8: 4879 0006 2de0 pea 62de0 <== NOT EXECUTED 46dde: 4e93 jsr %a3@ <== NOT EXECUTED if (r_chain == NULL) { 46de0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46de4: 4a80 tstl %d0 <== NOT EXECUTED 46de6: 670e beqs 46df6 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; 46de8: 7402 moveq #2,%d2 <== NOT EXECUTED } 46dea: 2002 movel %d2,%d0 <== NOT EXECUTED 46dec: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46df2: 4e5e unlk %fp <== NOT EXECUTED 46df4: 4e75 rts <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); } r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { 46df6: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED 46dfc: b0b9 0006 2dec cmpl 62dec ,%d0 <== NOT EXECUTED 46e02: 6700 009e beqw 46ea2 <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 46e06: 42a7 clrl %sp@- <== NOT EXECUTED 46e08: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e0a: 4879 0006 2dec pea 62dec <== NOT EXECUTED 46e10: 4e93 jsr %a3@ <== NOT EXECUTED if (r_chain == NULL) { 46e12: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46e16: 4a80 tstl %d0 <== NOT EXECUTED 46e18: 6700 0114 beqw 46f2e <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); } AIO_printf ("Request on [IQ]\n"); result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 46e1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46e1e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e20: 4868 0008 pea %a0@(8) <== NOT EXECUTED 46e24: 4eb9 0004 75f2 jsr 475f2 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 46e2a: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); } AIO_printf ("Request on [IQ]\n"); result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 46e30: 2400 movel %d0,%d2 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 46e32: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED return result; 46e38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46e3c: 2002 movel %d2,%d0 <== NOT EXECUTED 46e3e: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46e44: 4e5e unlk %fp <== NOT EXECUTED 46e46: 4e75 rts <== NOT EXECUTED /* if aiocbp is NULL remove all request for given file descriptor */ if (aiocbp == NULL) { AIO_printf ("Cancel all requests\n"); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 46e48: 42a7 clrl %sp@- <== NOT EXECUTED 46e4a: 45f9 0004 71d6 lea 471d6 ,%a2 <== NOT EXECUTED 46e50: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46e52: 4879 0006 2de0 pea 62de0 <== NOT EXECUTED 46e58: 4e92 jsr %a2@ <== NOT EXECUTED if (r_chain == NULL) { 46e5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* if aiocbp is NULL remove all request for given file descriptor */ if (aiocbp == NULL) { AIO_printf ("Cancel all requests\n"); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 46e5e: 2600 movel %d0,%d3 <== NOT EXECUTED if (r_chain == NULL) { 46e60: 675c beqs 46ebe <== NOT EXECUTED return AIO_ALLDONE; } AIO_printf ("Request chain on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); 46e62: 2800 movel %d0,%d4 <== NOT EXECUTED 46e64: 0684 0000 001c addil #28,%d4 <== NOT EXECUTED rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); pthread_mutex_unlock (&r_chain->mutex); 46e6a: 45f9 0004 8174 lea 48174 ,%a2 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return AIO_CANCELED; 46e70: 4282 clrl %d2 <== NOT EXECUTED return AIO_ALLDONE; } AIO_printf ("Request chain on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); 46e72: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46e74: 4e93 jsr %a3@ <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 46e76: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e78: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); 46e7e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e80: 4eb9 0004 759a jsr 4759a <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 46e86: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46e88: 4e92 jsr %a2@ <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 46e8a: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 46e90: 4e92 jsr %a2@ <== NOT EXECUTED return AIO_CANCELED; 46e92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46e96: 2002 movel %d2,%d0 <== NOT EXECUTED 46e98: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46e9e: 4e5e unlk %fp <== NOT EXECUTED 46ea0: 4e75 rts <== NOT EXECUTED result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); pthread_mutex_unlock (&aio_request_queue.mutex); return result; } else { pthread_mutex_unlock (&aio_request_queue.mutex); 46ea2: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED return AIO_ALLDONE; 46ea8: 7402 moveq #2,%d2 <== NOT EXECUTED result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); pthread_mutex_unlock (&aio_request_queue.mutex); return result; } else { pthread_mutex_unlock (&aio_request_queue.mutex); 46eaa: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED return AIO_ALLDONE; 46eb0: 588f addql #4,%sp <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46eb2: 2002 movel %d2,%d0 <== NOT EXECUTED 46eb4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46eba: 4e5e unlk %fp <== NOT EXECUTED 46ebc: 4e75 rts <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { AIO_printf ("Request chain not on [WQ]\n"); if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { 46ebe: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED 46ec4: b0b9 0006 2dec cmpl 62dec ,%d0 <== NOT EXECUTED 46eca: 67d6 beqs 46ea2 <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 46ecc: 42a7 clrl %sp@- <== NOT EXECUTED 46ece: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ed0: 4879 0006 2dec pea 62dec <== NOT EXECUTED 46ed6: 4e92 jsr %a2@ <== NOT EXECUTED if (r_chain == NULL) { 46ed8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { AIO_printf ("Request chain not on [WQ]\n"); if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 46edc: 2600 movel %d0,%d3 <== NOT EXECUTED if (r_chain == NULL) { 46ede: 67c2 beqs 46ea2 <== NOT EXECUTED 46ee0: 2f00 movel %d0,%sp@- <== NOT EXECUTED AIO_printf ("Request chain on [IQ]\n"); rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); pthread_mutex_destroy (&r_chain->mutex); 46ee2: 2800 movel %d0,%d4 <== NOT EXECUTED 46ee4: 0684 0000 001c addil #28,%d4 <== NOT EXECUTED pthread_cond_destroy (&r_chain->mutex); free (r_chain); pthread_mutex_unlock (&aio_request_queue.mutex); return AIO_CANCELED; 46eea: 4282 clrl %d2 <== NOT EXECUTED 46eec: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED } AIO_printf ("Request chain on [IQ]\n"); rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); 46ef2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ef4: 4eb9 0004 759a jsr 4759a <== NOT EXECUTED pthread_mutex_destroy (&r_chain->mutex); 46efa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46efc: 4eb9 0004 7e24 jsr 47e24 <== NOT EXECUTED pthread_cond_destroy (&r_chain->mutex); 46f02: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46f04: 4eb9 0004 7ab0 jsr 47ab0 <== NOT EXECUTED free (r_chain); 46f0a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46f0c: 4eb9 0004 3978 jsr 43978 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 46f12: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 46f18: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED return AIO_CANCELED; 46f1e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46f22: 2002 movel %d2,%d0 <== NOT EXECUTED 46f24: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46f2a: 4e5e unlk %fp <== NOT EXECUTED 46f2c: 4e75 rts <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); if (r_chain == NULL) { pthread_mutex_unlock (&aio_request_queue.mutex); 46f2e: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); 46f34: 74ff moveq #-1,%d2 <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); if (r_chain == NULL) { pthread_mutex_unlock (&aio_request_queue.mutex); 46f36: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); 46f3c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED 46f42: 588f addql #4,%sp <== NOT EXECUTED 46f44: 2040 moveal %d0,%a0 <== NOT EXECUTED 46f46: 7016 moveq #22,%d0 <== NOT EXECUTED 46f48: 2080 movel %d0,%a0@ <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46f4a: 2002 movel %d2,%d0 <== NOT EXECUTED 46f4c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46f52: 4e5e unlk %fp <== NOT EXECUTED 46f54: 4e75 rts <== NOT EXECUTED int result; pthread_mutex_lock (&aio_request_queue.mutex); if (fcntl (fildes, F_GETFD) < 0) { pthread_mutex_unlock(&aio_request_queue.mutex); 46f56: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EBADF); 46f5c: 74ff moveq #-1,%d2 <== NOT EXECUTED int result; pthread_mutex_lock (&aio_request_queue.mutex); if (fcntl (fildes, F_GETFD) < 0) { pthread_mutex_unlock(&aio_request_queue.mutex); 46f5e: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EBADF); 46f64: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED 46f6a: 588f addql #4,%sp <== NOT EXECUTED 46f6c: 7209 moveq #9,%d1 <== NOT EXECUTED 46f6e: 2040 moveal %d0,%a0 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46f70: 2002 movel %d2,%d0 <== NOT EXECUTED 46f72: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED pthread_mutex_lock (&aio_request_queue.mutex); if (fcntl (fildes, F_GETFD) < 0) { pthread_mutex_unlock(&aio_request_queue.mutex); rtems_set_errno_and_return_minus_one (EBADF); 46f78: 2081 movel %d1,%a0@ <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); return result; } } return AIO_ALLDONE; } 46f7a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046f80 : */ int aio_error (const struct aiocb *aiocbp) { 46f80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED return aiocbp->error_code; } 46f88: 4e5e unlk %fp <== NOT EXECUTED 46f8a: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED =============================================================================== 00046f90 : ) { rtems_aio_request *req; int mode; if (op != O_SYNC) 46f90: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED int aio_fsync( int op, struct aiocb *aiocbp ) { 46f96: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f9c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; if (op != O_SYNC) 46fa0: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46fa4: 6648 bnes 46fee <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); mode = fcntl (aiocbp->aio_fildes, F_GETFL); 46fa6: 4878 0003 pea 3 <== NOT EXECUTED 46faa: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46fac: 4eb9 0004 dfdc jsr 4dfdc <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) 46fb2: 508f addql #8,%sp <== NOT EXECUTED 46fb4: 7203 moveq #3,%d1 <== NOT EXECUTED 46fb6: c081 andl %d1,%d0 <== NOT EXECUTED 46fb8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 46fbc: 5380 subql #1,%d0 <== NOT EXECUTED 46fbe: b280 cmpl %d0,%d1 <== NOT EXECUTED 46fc0: 654e bcss 47010 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); req = malloc (sizeof (rtems_aio_request)); 46fc2: 4878 0018 pea 18 <== NOT EXECUTED 46fc6: 4eb9 0004 3f84 jsr 43f84 <== NOT EXECUTED if (req == NULL) 46fcc: 588f addql #4,%sp <== NOT EXECUTED 46fce: 4a80 tstl %d0 <== NOT EXECUTED 46fd0: 6760 beqs 47032 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 46fd2: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_SYNC; 46fd4: 7203 moveq #3,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 46fd6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_SYNC; 46fda: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 46fde: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); 46fe2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 46fe6: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); 46fe8: 4ef9 0004 766c jmp 4766c <== NOT EXECUTED { rtems_aio_request *req; int mode; if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 46fee: 7216 moveq #22,%d1 <== NOT EXECUTED 46ff0: 70ff moveq #-1,%d0 <== NOT EXECUTED 46ff2: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED 46ff6: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED 46ffa: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47000: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED { rtems_aio_request *req; int mode; if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 47004: 2040 moveal %d0,%a0 <== NOT EXECUTED 47006: 7016 moveq #22,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47008: 4e5e unlk %fp <== NOT EXECUTED { rtems_aio_request *req; int mode; if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 4700a: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 4700c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4700e: 4e75 rts <== NOT EXECUTED if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 47010: 72ff moveq #-1,%d1 <== NOT EXECUTED 47012: 7009 moveq #9,%d0 <== NOT EXECUTED 47014: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47018: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4701c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47022: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 47026: 2040 moveal %d0,%a0 <== NOT EXECUTED 47028: 7209 moveq #9,%d1 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 4702a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4702c: 4e5e unlk %fp <== NOT EXECUTED if (op != O_SYNC) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 4702e: 2081 movel %d1,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47030: 4e75 rts <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47032: 103c 000b moveb #11,%d0 <== NOT EXECUTED 47036: 72ff moveq #-1,%d1 <== NOT EXECUTED 47038: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4703c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47040: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47046: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 4704a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4704c: 700b moveq #11,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 4704e: 4e5e unlk %fp <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47050: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); } 47052: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00047890 : * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) { 47890: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47894: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 47896: 4878 0003 pea 3 <== NOT EXECUTED * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) { 4789a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 4789e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 478a0: 4eb9 0004 dfdc jsr 4dfdc <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR))) 478a6: 508f addql #8,%sp <== NOT EXECUTED 478a8: 7203 moveq #3,%d1 <== NOT EXECUTED 478aa: c081 andl %d1,%d0 <== NOT EXECUTED 478ac: 6708 beqs 478b6 <== NOT EXECUTED 478ae: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 478b2: b280 cmpl %d0,%d1 <== NOT EXECUTED 478b4: 6638 bnes 478ee <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) 478b6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 478ba: 6654 bnes 47910 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) 478bc: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 478c0: 6b4e bmis 47910 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); 478c2: 4878 0018 pea 18 <== NOT EXECUTED 478c6: 4eb9 0004 3f84 jsr 43f84 <== NOT EXECUTED if (req == NULL) 478cc: 588f addql #4,%sp <== NOT EXECUTED 478ce: 4a80 tstl %d0 <== NOT EXECUTED 478d0: 6760 beqs 47932 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 478d2: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_READ; 478d4: 7201 moveq #1,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 478d6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_READ; 478da: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 478de: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); 478e2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 478e6: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); 478e8: 4ef9 0004 766c jmp 4766c <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 478ee: 7009 moveq #9,%d0 <== NOT EXECUTED 478f0: 72ff moveq #-1,%d1 <== NOT EXECUTED 478f2: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 478f6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 478fa: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47900: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 47904: 2040 moveal %d0,%a0 <== NOT EXECUTED 47906: 7009 moveq #9,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47908: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 4790a: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 4790c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4790e: 4e75 rts <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 47910: 72ff moveq #-1,%d1 <== NOT EXECUTED 47912: 7016 moveq #22,%d0 <== NOT EXECUTED 47914: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47918: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4791c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47922: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 47926: 2040 moveal %d0,%a0 <== NOT EXECUTED 47928: 7216 moveq #22,%d1 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 4792a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4792c: 4e5e unlk %fp <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 4792e: 2081 movel %d1,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47930: 4e75 rts <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47932: 103c 000b moveb #11,%d0 <== NOT EXECUTED 47936: 72ff moveq #-1,%d1 <== NOT EXECUTED 47938: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4793c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47940: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47946: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 4794a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4794c: 700b moveq #11,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 4794e: 4e5e unlk %fp <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47950: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); } 47952: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00047958 : * aiocbp->return_value */ ssize_t aio_return (const struct aiocb *aiocbp) { 47958: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4795c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED return aiocbp->return_value; } 47960: 4e5e unlk %fp <== NOT EXECUTED 47962: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED =============================================================================== 00046174 : int aio_suspend( const struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), const struct timespec *timeout __attribute__((unused)) ) { 46174: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46178: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 4617e: 7258 moveq #88,%d1 <== NOT EXECUTED 46180: 2040 moveal %d0,%a0 <== NOT EXECUTED } 46182: 70ff moveq #-1,%d0 <== NOT EXECUTED 46184: 4e5e unlk %fp <== NOT EXECUTED const struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), const struct timespec *timeout __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 46186: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00047968 : * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) { 47968: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4796c: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 4796e: 4878 0003 pea 3 <== NOT EXECUTED * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) { 47972: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 47976: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47978: 4eb9 0004 dfdc jsr 4dfdc <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) 4797e: 508f addql #8,%sp <== NOT EXECUTED 47980: 7203 moveq #3,%d1 <== NOT EXECUTED 47982: c081 andl %d1,%d0 <== NOT EXECUTED 47984: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 47988: 5380 subql #1,%d0 <== NOT EXECUTED 4798a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4798c: 6538 bcss 479c6 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) 4798e: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 47992: 6654 bnes 479e8 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) 47994: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 47998: 6b4e bmis 479e8 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); 4799a: 4878 0018 pea 18 <== NOT EXECUTED 4799e: 4eb9 0004 3f84 jsr 43f84 <== NOT EXECUTED if (req == NULL) 479a4: 588f addql #4,%sp <== NOT EXECUTED 479a6: 4a80 tstl %d0 <== NOT EXECUTED 479a8: 6760 beqs 47a0a <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 479aa: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_WRITE; 479ac: 7202 moveq #2,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 479ae: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_WRITE; 479b2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 479b6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); 479ba: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 479be: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); 479c0: 4ef9 0004 766c jmp 4766c <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 479c6: 7009 moveq #9,%d0 <== NOT EXECUTED 479c8: 72ff moveq #-1,%d1 <== NOT EXECUTED 479ca: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 479ce: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 479d2: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 479d8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 479dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 479de: 7009 moveq #9,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 479e0: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 479e2: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 479e4: 70ff moveq #-1,%d0 <== NOT EXECUTED 479e6: 4e75 rts <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 479e8: 72ff moveq #-1,%d1 <== NOT EXECUTED 479ea: 7016 moveq #22,%d0 <== NOT EXECUTED 479ec: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 479f0: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 479f4: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 479fa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 479fe: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a00: 7216 moveq #22,%d1 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 47a02: 70ff moveq #-1,%d0 <== NOT EXECUTED 47a04: 4e5e unlk %fp <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 47a06: 2081 movel %d1,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 47a08: 4e75 rts <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47a0a: 103c 000b moveb #11,%d0 <== NOT EXECUTED 47a0e: 72ff moveq #-1,%d1 <== NOT EXECUTED 47a10: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47a14: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47a18: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 47a1e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47a22: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a24: 700b moveq #11,%d0 <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 47a26: 4e5e unlk %fp <== NOT EXECUTED if (aiocbp->aio_offset < 0) rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 47a28: 2080 movel %d0,%a0@ <== NOT EXECUTED req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); } 47a2a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 0004840c : } unsigned int alarm( unsigned int seconds ) { 4840c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 48410: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 48414: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 48418: 4ab9 0006 4bdc tstl 64bdc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED 4841e: 674e beqs 4846e <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL ); } else { Watchdog_States state; state = _Watchdog_Remove( the_timer ); 48420: 4879 0006 4bc0 pea 64bc0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 48426: 4eb9 0004 d598 jsr 4d598 <_Watchdog_Remove> <== NOT EXECUTED if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) { 4842c: 588f addql #4,%sp <== NOT EXECUTED 4842e: 7201 moveq #1,%d1 <== NOT EXECUTED 48430: 5580 subql #2,%d0 <== NOT EXECUTED 48432: b280 cmpl %d0,%d1 <== NOT EXECUTED 48434: 645e bccs 48494 <== NOT EXECUTED unsigned int alarm( unsigned int seconds ) { unsigned int remaining = 0; 48436: 4283 clrl %d3 <== NOT EXECUTED remaining = the_timer->initial - ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); } } if ( seconds ) 48438: 4a82 tstl %d2 <== NOT EXECUTED 4843a: 660c bnes 48448 <== NOT EXECUTED _Watchdog_Insert_seconds( the_timer, seconds ); return remaining; } 4843c: 2003 movel %d3,%d0 <== NOT EXECUTED 4843e: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 48444: 4e5e unlk %fp <== NOT EXECUTED 48446: 4e75 rts <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 48448: 4879 0006 4bc0 pea 64bc0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 4844e: 4879 0006 4f24 pea 64f24 <_Watchdog_Seconds_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 48454: 23c2 0006 4bcc movel %d2,64bcc <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 4845a: 4eb9 0004 d444 jsr 4d444 <_Watchdog_Insert> <== NOT EXECUTED 48460: 508f addql #8,%sp <== NOT EXECUTED 48462: 2003 movel %d3,%d0 <== NOT EXECUTED 48464: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 4846a: 4e5e unlk %fp <== NOT EXECUTED 4846c: 4e75 rts <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4846e: 42b9 0006 4bc8 clrl 64bc8 <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED unsigned int alarm( unsigned int seconds ) { unsigned int remaining = 0; 48474: 4283 clrl %d3 <== NOT EXECUTED the_watchdog->routine = routine; 48476: 203c 0004 83f0 movel #295920,%d0 <== NOT EXECUTED the_watchdog->id = id; 4847c: 42b9 0006 4be0 clrl 64be0 <_POSIX_signals_Alarm_timer+0x20><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 48482: 23c0 0006 4bdc movel %d0,64bdc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 48488: 42b9 0006 4be4 clrl 64be4 <_POSIX_signals_Alarm_timer+0x24><== NOT EXECUTED remaining = the_timer->initial - ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); } } if ( seconds ) 4848e: 4a82 tstl %d2 <== NOT EXECUTED 48490: 67aa beqs 4843c <== NOT EXECUTED 48492: 60b4 bras 48448 <== NOT EXECUTED * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); 48494: 2839 0006 4bd8 movel 64bd8 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED 4849a: 98b9 0006 4bd4 subl 64bd4 <_POSIX_signals_Alarm_timer+0x14>,%d4<== NOT EXECUTED * The stop_time and start_time fields are snapshots of ticks since * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - 484a0: 2639 0006 4bcc movel 64bcc <_POSIX_signals_Alarm_timer+0xc>,%d3<== NOT EXECUTED ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); 484a6: 4eb9 0004 af1c jsr 4af1c <== NOT EXECUTED 484ac: 4c40 4004 remul %d0,%d4,%d4 <== NOT EXECUTED * The stop_time and start_time fields are snapshots of ticks since * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - 484b0: 9684 subl %d4,%d3 <== NOT EXECUTED ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); } } if ( seconds ) 484b2: 4a82 tstl %d2 <== NOT EXECUTED 484b4: 6786 beqs 4843c <== NOT EXECUTED 484b6: 6090 bras 48448 <== NOT EXECUTED =============================================================================== 0004618c : int clock_getcpuclockid( pid_t pid, clockid_t *clock_id ) { 4618c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46190: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 46196: 7258 moveq #88,%d1 <== NOT EXECUTED 46198: 2040 moveal %d0,%a0 <== NOT EXECUTED } 4619a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4619c: 4e5e unlk %fp <== NOT EXECUTED int clock_getcpuclockid( pid_t pid, clockid_t *clock_id ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4619e: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 000461a4 : int clock_getenable_attr( clockid_t clock_id, int *attr ) { 461a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 461a8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 461ae: 7258 moveq #88,%d1 <== NOT EXECUTED 461b0: 2040 moveal %d0,%a0 <== NOT EXECUTED } 461b2: 70ff moveq #-1,%d0 <== NOT EXECUTED 461b4: 4e5e unlk %fp <== NOT EXECUTED int clock_getenable_attr( clockid_t clock_id, int *attr ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 461b6: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 000467b0 : int clock_getres( clockid_t clock_id, struct timespec *res ) { 467b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 467b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 467ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !res ) 467bc: 4a88 tstl %a0 <== NOT EXECUTED 467be: 670c beqs 467cc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); switch ( clock_id ) { 467c0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 467c4: 7202 moveq #2,%d1 <== NOT EXECUTED 467c6: 5380 subql #1,%d0 <== NOT EXECUTED 467c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 467ca: 641a bccs 467e6 <== NOT EXECUTED res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); } break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 467cc: 4eb9 0004 f790 jsr 4f790 <__errno> <== NOT EXECUTED } return 0; } 467d2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); } break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 467d6: 2040 moveal %d0,%a0 <== NOT EXECUTED 467d8: 7216 moveq #22,%d1 <== NOT EXECUTED 467da: 70ff moveq #-1,%d0 <== NOT EXECUTED } return 0; } 467dc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 467e0: 4e5e unlk %fp <== NOT EXECUTED res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); } break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 467e2: 2081 movel %d1,%a0@ <== NOT EXECUTED } return 0; } 467e4: 4e75 rts <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 467e6: 2239 0006 04d0 movel 604d0 ,%d1 <== NOT EXECUTED TOD_MICROSECONDS_PER_SECOND; res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); 467ec: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 467f2: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return 0; 467f6: 4280 clrl %d0 <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 467f8: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED TOD_MICROSECONDS_PER_SECOND; res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); 467fe: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 46802: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return 0; } 46806: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4680a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4680e: 4e5e unlk %fp <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 46810: 2081 movel %d1,%a0@ <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return 0; } =============================================================================== 0004636c : int clock_gettime( clockid_t clock_id, struct timespec *tp ) { 4636c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46370: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46374: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 46378: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !tp ) 4637a: 4a81 tstl %d1 <== NOT EXECUTED 4637c: 6718 beqs 46396 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 4637e: 7401 moveq #1,%d2 <== NOT EXECUTED 46380: b480 cmpl %d0,%d2 <== NOT EXECUTED 46382: 6752 beqs 463d6 <== NOT EXECUTED _TOD_Get(tp); return 0; } #ifdef CLOCK_MONOTONIC if ( clock_id == CLOCK_MONOTONIC ) { 46384: 7404 moveq #4,%d2 <== NOT EXECUTED 46386: b480 cmpl %d0,%d2 <== NOT EXECUTED 46388: 6738 beqs 463c2 <== NOT EXECUTED return 0; } #endif #ifdef _POSIX_CPUTIME if ( clock_id == CLOCK_PROCESS_CPUTIME ) { 4638a: 7402 moveq #2,%d2 <== NOT EXECUTED 4638c: b480 cmpl %d0,%d2 <== NOT EXECUTED 4638e: 6732 beqs 463c2 <== NOT EXECUTED return 0; } #endif #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME ) 46390: 7203 moveq #3,%d1 <== NOT EXECUTED 46392: b280 cmpl %d0,%d1 <== NOT EXECUTED 46394: 6716 beqs 463ac <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif rtems_set_errno_and_return_minus_one( EINVAL ); 46396: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED return 0; } 4639c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif rtems_set_errno_and_return_minus_one( EINVAL ); 463a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 463a2: 7216 moveq #22,%d1 <== NOT EXECUTED 463a4: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 463a6: 4e5e unlk %fp <== NOT EXECUTED #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif rtems_set_errno_and_return_minus_one( EINVAL ); 463a8: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 463aa: 4e75 rts <== NOT EXECUTED } #endif #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); 463ac: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED 463b2: 7458 moveq #88,%d2 <== NOT EXECUTED 463b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 463b6: 70ff moveq #-1,%d0 <== NOT EXECUTED 463b8: 2082 movel %d2,%a0@ <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 463ba: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 463be: 4e5e unlk %fp <== NOT EXECUTED 463c0: 4e75 rts <== NOT EXECUTED } #endif #ifdef _POSIX_CPUTIME if ( clock_id == CLOCK_PROCESS_CPUTIME ) { _TOD_Get_uptime_as_timespec( tp ); 463c2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 463c4: 4eb9 0004 84d4 jsr 484d4 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 463ca: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED #endif #ifdef _POSIX_CPUTIME if ( clock_id == CLOCK_PROCESS_CPUTIME ) { _TOD_Get_uptime_as_timespec( tp ); return 0; 463ce: 588f addql #4,%sp <== NOT EXECUTED 463d0: 4280 clrl %d0 <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 463d2: 4e5e unlk %fp <== NOT EXECUTED 463d4: 4e75 rts <== NOT EXECUTED { if ( !tp ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { _TOD_Get(tp); 463d6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 463d8: 4eb9 0004 8470 jsr 48470 <_TOD_Get> <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 463de: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED if ( !tp ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { _TOD_Get(tp); return 0; 463e2: 588f addql #4,%sp <== NOT EXECUTED 463e4: 4280 clrl %d0 <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 463e6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000461bc : int clock_setenable_attr( clockid_t clock_id, int attr ) { 461bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 461c0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 461c6: 7258 moveq #88,%d1 <== NOT EXECUTED 461c8: 2040 moveal %d0,%a0 <== NOT EXECUTED } 461ca: 70ff moveq #-1,%d0 <== NOT EXECUTED 461cc: 4e5e unlk %fp <== NOT EXECUTED int clock_setenable_attr( clockid_t clock_id, int attr ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 461ce: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 000463ec : int clock_settime( clockid_t clock_id, const struct timespec *tp ) { 463ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 463f0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 463f4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( !tp ) 463f8: 4a88 tstl %a0 <== NOT EXECUTED 463fa: 6712 beqs 4640e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 463fc: 7201 moveq #1,%d1 <== NOT EXECUTED 463fe: b280 cmpl %d0,%d1 <== NOT EXECUTED 46400: 6730 beqs 46432 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( tp ); _Thread_Enable_dispatch(); } #ifdef _POSIX_CPUTIME else if ( clock_id == CLOCK_PROCESS_CPUTIME ) 46402: 7202 moveq #2,%d1 <== NOT EXECUTED 46404: b280 cmpl %d0,%d1 <== NOT EXECUTED 46406: 6718 beqs 46420 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) 46408: 7203 moveq #3,%d1 <== NOT EXECUTED 4640a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4640c: 6712 beqs 46420 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 4640e: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED 46414: 7216 moveq #22,%d1 <== NOT EXECUTED 46416: 2040 moveal %d0,%a0 <== NOT EXECUTED 46418: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 4641a: 4e5e unlk %fp <== NOT EXECUTED #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 4641c: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 4641e: 4e75 rts <== NOT EXECUTED else if ( clock_id == CLOCK_PROCESS_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); 46420: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED 46426: 7258 moveq #88,%d1 <== NOT EXECUTED 46428: 2040 moveal %d0,%a0 <== NOT EXECUTED 4642a: 70ff moveq #-1,%d0 <== NOT EXECUTED #endif else rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 4642c: 4e5e unlk %fp <== NOT EXECUTED else if ( clock_id == CLOCK_PROCESS_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); 4642e: 2081 movel %d1,%a0@ <== NOT EXECUTED #endif else rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } 46430: 4e75 rts <== NOT EXECUTED { if ( !tp ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 ) 46432: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED 46438: b090 cmpl %a0@,%d0 <== NOT EXECUTED 4643a: 64d2 bccs 4640e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4643c: 2039 0006 1cb8 movel 61cb8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46442: 5280 addql #1,%d0 <== NOT EXECUTED 46444: 23c0 0006 1cb8 movel %d0,61cb8 <_Thread_Dispatch_disable_level><== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); _Thread_Disable_dispatch(); _TOD_Set( tp ); 4644a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4644c: 4eb9 0004 852c jsr 4852c <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 46452: 4eb9 0004 9aa6 jsr 49aa6 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif else rtems_set_errno_and_return_minus_one( EINVAL ); return 0; 46458: 588f addql #4,%sp <== NOT EXECUTED 4645a: 4280 clrl %d0 <== NOT EXECUTED } 4645c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461d4 : #include #include #include int fork( void ) { 461d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 461d8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 461de: 7258 moveq #88,%d1 <== NOT EXECUTED 461e0: 2040 moveal %d0,%a0 <== NOT EXECUTED } 461e2: 70ff moveq #-1,%d0 <== NOT EXECUTED 461e4: 4e5e unlk %fp <== NOT EXECUTED #include #include int fork( void ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 461e6: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 000460f0 : int getitimer( int which, struct itimerval *value ) { 460f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !value ) 460f4: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 460f8: 672c beqs 46126 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); switch ( which ) { 460fa: 7002 moveq #2,%d0 <== NOT EXECUTED 460fc: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46100: 6412 bccs 46114 <== NOT EXECUTED case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46102: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED } 46108: 4e5e unlk %fp <== NOT EXECUTED case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4610a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4610c: 7016 moveq #22,%d0 <== NOT EXECUTED 4610e: 2080 movel %d0,%a0@ <== NOT EXECUTED } 46110: 70ff moveq #-1,%d0 <== NOT EXECUTED 46112: 4e75 rts <== NOT EXECUTED switch ( which ) { case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 46114: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED 4611a: 7258 moveq #88,%d1 <== NOT EXECUTED 4611c: 2040 moveal %d0,%a0 <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4611e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46120: 4e5e unlk %fp <== NOT EXECUTED switch ( which ) { case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 46122: 2081 movel %d1,%a0@ <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46124: 4e75 rts <== NOT EXECUTED int which, struct itimerval *value ) { if ( !value ) rtems_set_errno_and_return_minus_one( EFAULT ); 46126: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4612c: 4e5e unlk %fp <== NOT EXECUTED int which, struct itimerval *value ) { if ( !value ) rtems_set_errno_and_return_minus_one( EFAULT ); 4612e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46130: 700e moveq #14,%d0 <== NOT EXECUTED 46132: 2080 movel %d0,%a0@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46134: 70ff moveq #-1,%d0 <== NOT EXECUTED =============================================================================== 000467e4 : int kill( pid_t pid, int sig ) { 467e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 467e8: 42a7 clrl %sp@- <== NOT EXECUTED 467ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 467ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 467f2: 4eb9 0004 cf28 jsr 4cf28 <== NOT EXECUTED } 467f8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005c11c : int killinfo( pid_t pid, int sig, const union sigval *value ) { 5c11c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 5c120: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 5c124: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 5c128: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED POSIX_signals_Siginfo_node *psiginfo; /* * Only supported for the "calling process" (i.e. this node). */ if ( pid != getpid() ) 5c12c: 4eb9 0005 bc50 jsr 5bc50 <== NOT EXECUTED 5c132: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 5c136: 6600 0234 bnew 5c36c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); /* * Validate the signal passed. */ if ( !sig ) 5c13a: 4a83 tstl %d3 <== NOT EXECUTED 5c13c: 6700 0246 beqw 5c384 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 5c140: 2003 movel %d3,%d0 <== NOT EXECUTED 5c142: 5380 subql #1,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 5c144: 721f moveq #31,%d1 <== NOT EXECUTED 5c146: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c148: 6500 023a bcsw 5c384 <== 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 ) 5c14c: 2c03 movel %d3,%d6 <== NOT EXECUTED 5c14e: 2a03 movel %d3,%d5 <== NOT EXECUTED 5c150: 7201 moveq #1,%d1 <== NOT EXECUTED 5c152: e98e lsll #4,%d6 <== NOT EXECUTED 5c154: e58d lsll #2,%d5 <== NOT EXECUTED 5c156: 2806 movel %d6,%d4 <== NOT EXECUTED 5c158: 9885 subl %d5,%d4 <== NOT EXECUTED 5c15a: 2044 moveal %d4,%a0 <== NOT EXECUTED 5c15c: d1fc 0006 013c addal #393532,%a0 <== NOT EXECUTED 5c162: b290 cmpl %a0@,%d1 <== NOT EXECUTED 5c164: 6700 01f2 beqw 5c358 <== 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 ) ) 5c168: 123c 0008 moveb #8,%d1 <== NOT EXECUTED 5c16c: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c16e: 6700 00d2 beqw 5c242 <== NOT EXECUTED 5c172: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 5c176: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c178: 6700 00c8 beqw 5c242 <== NOT EXECUTED 5c17c: 123c 000b moveb #11,%d1 <== NOT EXECUTED 5c180: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c182: 6700 00be beqw 5c242 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 5c186: 7401 moveq #1,%d2 <== NOT EXECUTED 5c188: e1aa lsll %d0,%d2 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER; 5c18a: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; 5c18c: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED siginfo->si_code = SI_USER; 5c190: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED if ( !value ) { 5c194: 4a8a tstl %a2 <== NOT EXECUTED 5c196: 6700 01cc beqw 5c364 <== NOT EXECUTED siginfo->si_value.sival_int = 0; } else { siginfo->si_value = *value; 5c19a: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED 5c19e: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5c1a4: 5280 addql #1,%d0 <== NOT EXECUTED 5c1a6: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED /* * Is the currently executing thread interested? If so then it will * get it an execute it as soon as the dispatcher executes. */ the_thread = _Thread_Executing; 5c1ac: 2679 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( _POSIX_signals_Is_interested( api, mask ) ) { 5c1b2: 206b 0102 moveal %a3@(258),%a0 <== NOT EXECUTED 5c1b6: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED 5c1ba: 4680 notl %d0 <== NOT EXECUTED 5c1bc: c082 andl %d2,%d0 <== NOT EXECUTED 5c1be: 6642 bnes 5c202 <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c1c0: 2079 0006 02c0 moveal 602c0 <_POSIX_signals_Wait_queue>,%a0<== NOT EXECUTED /* XXX violation of visibility -- need to define thread queue support */ the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); 5c1c6: b1fc 0006 02c4 cmpal #393924,%a0 <== NOT EXECUTED 5c1cc: 6700 00d6 beqw 5c2a4 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5c1d0: 2002 movel %d2,%d0 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { the_thread = (Thread_Control *)the_node; 5c1d2: 2648 moveal %a0,%a3 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5c1d4: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { the_thread = (Thread_Control *)the_node; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5c1d8: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5c1dc: 6624 bnes 5c202 <== NOT EXECUTED /* * Is this thread is blocked waiting for another signal but has * not blocked this one? */ if (~api->signals_blocked & mask) 5c1de: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED 5c1e2: 4680 notl %d0 <== NOT EXECUTED 5c1e4: c082 andl %d2,%d0 <== NOT EXECUTED 5c1e6: 661a bnes 5c202 <== NOT EXECUTED the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { 5c1e8: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_thread = (Thread_Control *)the_node; 5c1ea: 2648 moveal %a0,%a3 <== NOT EXECUTED /* XXX violation of visibility -- need to define thread queue support */ the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); 5c1ec: b1fc 0006 02c4 cmpal #393924,%a0 <== NOT EXECUTED 5c1f2: 6700 00b0 beqw 5c2a4 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5c1f6: 2002 movel %d2,%d0 <== NOT EXECUTED 5c1f8: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { the_thread = (Thread_Control *)the_node; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5c1fc: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5c200: 67dc beqs 5c1de <== 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 ) ) { 5c202: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c206: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c208: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c20a: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c210: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c214: 4a00 tstb %d0 <== NOT EXECUTED 5c216: 6618 bnes 5c230 <== 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 ); 5c218: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c21a: 4eb9 0005 c3bc jsr 5c3bc <_POSIX_signals_Set_process_signals><== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 5c220: 588f addql #4,%sp <== NOT EXECUTED 5c222: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 5c228: 7002 moveq #2,%d0 <== NOT EXECUTED 5c22a: b0b0 4800 cmpl %a0@(00000000,%d4:l),%d0 <== NOT EXECUTED 5c22e: 672e beqs 5c25e <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); 5c230: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 5c236: 4280 clrl %d0 <== NOT EXECUTED } 5c238: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c23e: 4e5e unlk %fp <== NOT EXECUTED 5c240: 4e75 rts <== 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 ) ) return pthread_kill( pthread_self(), sig ); 5c242: 4eb9 0005 c5f0 jsr 5c5f0 <== NOT EXECUTED 5c248: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c24a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c24c: 4eb9 0005 c518 jsr 5c518 <== NOT EXECUTED 5c252: 508f addql #8,%sp <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c254: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c25a: 4e5e unlk %fp <== NOT EXECUTED 5c25c: 4e75 rts <== NOT EXECUTED _POSIX_signals_Set_process_signals( mask ); if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); 5c25e: 4879 0006 02b4 pea 602b4 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 5c264: 4eb9 0004 6f30 jsr 46f30 <_Chain_Get> <== NOT EXECUTED if ( !psiginfo ) { 5c26a: 588f addql #4,%sp <== NOT EXECUTED _POSIX_signals_Set_process_signals( mask ); if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); 5c26c: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !psiginfo ) { 5c26e: 4a80 tstl %d0 <== NOT EXECUTED 5c270: 6700 012a beqw 5c39c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); } psiginfo->Info = *siginfo; _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5c274: 9c85 subl %d5,%d6 <== NOT EXECUTED 5c276: 0686 0006 032c addil #394028,%d6 <== NOT EXECUTED if ( !psiginfo ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); } psiginfo->Info = *siginfo; 5c27c: 216e fff4 0008 movel %fp@(-12),%a0@(8) <== NOT EXECUTED 5c282: 216e fff8 000c movel %fp@(-8),%a0@(12) <== NOT EXECUTED 5c288: 216e fffc 0010 movel %fp@(-4),%a0@(16) <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5c28e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c290: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5c292: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED 5c298: 508f addql #8,%sp <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); 5c29a: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 5c2a0: 4280 clrl %d0 <== NOT EXECUTED 5c2a2: 6094 bras 5c238 <== NOT EXECUTED * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1; 5c2a4: 4287 clrl %d7 <== NOT EXECUTED 5c2a6: 1e39 0005 e3c2 moveb 5e3c2 ,%d7 <== NOT EXECUTED 5c2ac: 49f9 0005 fc3c lea 5fc3c <_Objects_Information_table+0x8>,%a4<== NOT EXECUTED 5c2b2: 5287 addql #1,%d7 <== NOT EXECUTED * * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; 5c2b4: 97cb subal %a3,%a3 <== NOT EXECUTED interested_priority = PRIORITY_MAXIMUM + 1; 5c2b6: 2447 moveal %d7,%a2 <== NOT EXECUTED for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) { /* * This can occur when no one is interested and an API is not configured. */ if ( !_Objects_Information_table[ the_api ] ) 5c2b8: 205c moveal %a4@+,%a0 <== NOT EXECUTED 5c2ba: 4a88 tstl %a0 <== NOT EXECUTED 5c2bc: 6770 beqs 5c32e <== NOT EXECUTED continue; the_info = _Objects_Information_table[ the_api ][ 1 ]; 5c2be: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED */ if ( !the_info ) continue; #endif maximum = the_info->maximum; 5c2c2: 4287 clrl %d7 <== NOT EXECUTED 5c2c4: 3e28 000e movew %a0@(14),%d7 <== NOT EXECUTED object_table = the_info->local_table; 5c2c8: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED for ( index = 1 ; index <= maximum ; index++ ) { 5c2cc: 4a87 tstl %d7 <== NOT EXECUTED 5c2ce: 675e beqs 5c32e <== NOT EXECUTED */ #define _POSIX_signals_Is_interested( _api, _mask ) \ ( ~(_api)->signals_blocked & (_mask) ) int killinfo( 5c2d0: 5889 addql #4,%a1 <== NOT EXECUTED #endif maximum = the_info->maximum; object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 5c2d2: 7001 moveq #1,%d0 <== NOT EXECUTED 5c2d4: 2d43 ffec movel %d3,%fp@(-20) <== NOT EXECUTED the_thread = (Thread_Control *) object_table[ index ]; 5c2d8: 2059 moveal %a1@+,%a0 <== NOT EXECUTED if ( !the_thread ) 5c2da: 4a88 tstl %a0 <== NOT EXECUTED 5c2dc: 6746 beqs 5c324 <== NOT EXECUTED /* * If this thread is of lower priority than the interested thread, * go on to the next thread. */ if ( the_thread->current_priority > interested_priority ) 5c2de: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 5c2e2: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c2e4: 653e bcss 5c324 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( !api ) continue; #endif if ( !_POSIX_signals_Is_interested( api, mask ) ) 5c2e6: 2a68 0102 moveal %a0@(258),%a5 <== NOT EXECUTED 5c2ea: 262d 00d0 movel %a5@(208),%d3 <== NOT EXECUTED 5c2ee: 4683 notl %d3 <== NOT EXECUTED 5c2f0: c682 andl %d2,%d3 <== NOT EXECUTED 5c2f2: 6730 beqs 5c324 <== NOT EXECUTED * * NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1 * so we never have to worry about deferencing a NULL * interested thread. */ if ( the_thread->current_priority < interested_priority ) { 5c2f4: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c2f6: 6228 bhis 5c320 <== NOT EXECUTED * and blocking interruptibutable by signal. * * If the interested thread is ready, don't think about changing. */ if ( interested && !_States_Is_ready( interested->current_state ) ) { 5c2f8: 4a8b tstl %a3 <== NOT EXECUTED 5c2fa: 6728 beqs 5c324 <== NOT EXECUTED 5c2fc: 2a6b 0010 moveal %a3@(16),%a5 <== NOT EXECUTED 5c300: 4a8d tstl %a5 <== NOT EXECUTED 5c302: 6720 beqs 5c324 <== NOT EXECUTED /* preferred ready over blocked */ DEBUG_STEP("5"); if ( _States_Is_ready( the_thread->current_state ) ) { 5c304: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 5c308: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED 5c30c: 6712 beqs 5c320 <== NOT EXECUTED continue; } DEBUG_STEP("6"); /* prefer blocked/interruptible over blocked/not interruptible */ if ( !_States_Is_interruptible_by_signal(interested->current_state) ) { 5c30e: 260d movel %a5,%d3 <== NOT EXECUTED 5c310: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c314: 660e bnes 5c324 <== NOT EXECUTED DEBUG_STEP("7"); if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) { 5c316: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 5c31a: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c31e: 6704 beqs 5c324 <== NOT EXECUTED */ if ( interested && !_States_Is_ready( interested->current_state ) ) { /* preferred ready over blocked */ DEBUG_STEP("5"); if ( _States_Is_ready( the_thread->current_state ) ) { 5c320: 2441 moveal %d1,%a2 <== NOT EXECUTED 5c322: 2648 moveal %a0,%a3 <== NOT EXECUTED #endif maximum = the_info->maximum; object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 5c324: 5280 addql #1,%d0 <== NOT EXECUTED 5c326: b087 cmpl %d7,%d0 <== NOT EXECUTED 5c328: 63ae blss 5c2d8 <== NOT EXECUTED 5c32a: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1; for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) { 5c32e: b9fc 0005 fc44 cmpal #392260,%a4 <== NOT EXECUTED 5c334: 6682 bnes 5c2b8 <== NOT EXECUTED } } } } if ( interested ) { 5c336: 4a8b tstl %a3 <== NOT EXECUTED 5c338: 6700 fede beqw 5c218 <== 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 ) ) { 5c33c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c340: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c342: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c344: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c34a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c34e: 4a00 tstb %d0 <== NOT EXECUTED 5c350: 6700 fec6 beqw 5c218 <== NOT EXECUTED 5c354: 6000 feda braw 5c230 <== NOT EXECUTED /* * If the signal is being ignored, then we are out of here. */ if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) return 0; 5c358: 4280 clrl %d0 <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c35a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c360: 4e5e unlk %fp <== NOT EXECUTED 5c362: 4e75 rts <== NOT EXECUTED */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER; if ( !value ) { siginfo->si_value.sival_int = 0; 5c364: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 5c368: 6000 fe34 braw 5c19e <== NOT EXECUTED /* * Only supported for the "calling process" (i.e. this node). */ if ( pid != getpid() ) rtems_set_errno_and_return_minus_one( ESRCH ); 5c36c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 5c372: 7603 moveq #3,%d3 <== NOT EXECUTED 5c374: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c376: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c378: 2083 movel %d3,%a0@ <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c37a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c380: 4e5e unlk %fp <== NOT EXECUTED 5c382: 4e75 rts <== NOT EXECUTED */ if ( !sig ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) rtems_set_errno_and_return_minus_one( EINVAL ); 5c384: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 5c38a: 7416 moveq #22,%d2 <== NOT EXECUTED 5c38c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c38e: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c390: 2082 movel %d2,%a0@ <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c392: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c398: 4e5e unlk %fp <== NOT EXECUTED 5c39a: 4e75 rts <== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { _Thread_Enable_dispatch(); 5c39c: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 5c3a2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 5c3a8: 720b moveq #11,%d1 <== NOT EXECUTED 5c3aa: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c3ac: 70ff moveq #-1,%d0 <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c3ae: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); 5c3b4: 2081 movel %d1,%a0@ <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5c3b6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000461ec : int mode __attribute__((unused)), struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), struct sigevent *sig __attribute__((unused)) ) { 461ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 461f0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 461f6: 7258 moveq #88,%d1 <== NOT EXECUTED 461f8: 2040 moveal %d0,%a0 <== NOT EXECUTED } 461fa: 70ff moveq #-1,%d0 <== NOT EXECUTED 461fc: 4e5e unlk %fp <== NOT EXECUTED struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), struct sigevent *sig __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 461fe: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00046204 : const void *addr __attribute__((unused)), size_t len __attribute__((unused)), int prot __attribute__((unused)) ) { return 0; } 46204: 4280 clrl %d0 <== NOT EXECUTED int mprotect( const void *addr __attribute__((unused)), size_t len __attribute__((unused)), int prot __attribute__((unused)) ) { 46206: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4620a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004bd6c : */ int mq_close( mqd_t mqdes ) { 4bd6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4bd70: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 4bd72: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4bd76: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4bd7a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bd80: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); if ( location == OBJECTS_LOCAL ) { 4bd86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bd8a: 2440 moveal %d0,%a2 <== NOT EXECUTED 4bd8c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4bd90: 6640 bnes 4bdd2 <== NOT EXECUTED * First update the actual message queue to reflect this descriptor * being disassociated. This may result in the queue being really * deleted. */ the_mq = the_mq_fd->Queue; 4bd92: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED the_mq->open_count -= 1; 4bd96: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Message_queue_Delete( the_mq ); 4bd9a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4bd9c: 4eb9 0004 bde8 jsr 4bde8 <_POSIX_Message_queue_Delete> <== NOT EXECUTED /* * Now close this file descriptor. */ _Objects_Close( 4bda2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bda4: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdaa: 4eb9 0004 f234 jsr 4f234 <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd ( POSIX_Message_queue_Control_fd *the_mq_fd ) { _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); 4bdb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bdb2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdb8: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 4bdbe: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); } 4bdc4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Objects_Close( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); return 0; 4bdc8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4bdcc: 4280 clrl %d0 <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); } 4bdce: 4e5e unlk %fp <== NOT EXECUTED 4bdd0: 4e75 rts <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); 4bdd2: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED } 4bdd8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); 4bddc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bdde: 7209 moveq #9,%d1 <== NOT EXECUTED 4bde0: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4bde2: 4e5e unlk %fp <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); 4bde4: 2081 movel %d1,%a0@ <== NOT EXECUTED } =============================================================================== 0004be40 : int mq_getattr( mqd_t mqdes, struct mq_attr *mqstat ) { 4be40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4be44: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be46: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; CORE_message_queue_Attributes *the_mq_attr; if ( !mqstat ) 4be4a: 4a8a tstl %a2 <== NOT EXECUTED 4be4c: 6760 beqs 4beae <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 4be4e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4be52: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4be56: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4be5c: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4be62: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4be66: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4be6a: 662c bnes 4be98 <== NOT EXECUTED case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 4be6c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4be6e: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED * Return the old values. */ the_mq_attr = &the_mq->Message_queue.Attributes; mqstat->mq_flags = the_mq_fd->oflag; 4be72: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size; 4be76: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages; 4be7c: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages; 4be82: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 4be88: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4be8e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size; mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages; mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages; _Thread_Enable_dispatch(); return 0; 4be92: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4be94: 4e5e unlk %fp <== NOT EXECUTED 4be96: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4be98: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED } 4be9e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4bea2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bea4: 7209 moveq #9,%d1 <== NOT EXECUTED 4bea6: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4bea8: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4beaa: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4beac: 4e75 rts <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; CORE_message_queue_Attributes *the_mq_attr; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4beae: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4beb4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; CORE_message_queue_Attributes *the_mq_attr; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4beb8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4beba: 7216 moveq #22,%d1 <== NOT EXECUTED 4bebc: 70ff moveq #-1,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4bebe: 4e5e unlk %fp <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; CORE_message_queue_Attributes *the_mq_attr; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4bec0: 2081 movel %d1,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } =============================================================================== 0004befa : int mq_notify( mqd_t mqdes, const struct sigevent *notification ) { 4befa: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4befe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bf00: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bf02: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4bf06: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4bf0a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bf10: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4bf14: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4bf1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bf1e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4bf22: 671a beqs 4bf3e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4bf24: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED } 4bf2a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4bf2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf30: 7209 moveq #9,%d1 <== NOT EXECUTED 4bf32: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4bf34: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bf38: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4bf3a: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4bf3c: 4e75 rts <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 4bf3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf40: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED if ( notification ) { 4bf44: 4a82 tstl %d2 <== NOT EXECUTED 4bf46: 673c beqs 4bf84 <== NOT EXECUTED if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) { 4bf48: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED 4bf4c: 6648 bnes 4bf96 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); } _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); the_mq->notification = *notification; 4bf4e: 41ea 008e lea %a2@(142),%a0 <== NOT EXECUTED 4bf52: 2242 moveal %d2,%a1 <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 4bf54: 203c 0004 bec4 movel #310980,%d0 <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4bf5a: 42aa 007e clrl %a2@(126) <== NOT EXECUTED 4bf5e: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf60: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf62: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf64: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf66: 2091 movel %a1@,%a0@ <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 4bf68: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4bf6c: 254a 007e movel %a2,%a2@(126) <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } _Thread_Enable_dispatch(); 4bf70: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4bf76: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4bf78: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4bf7c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bf80: 4e5e unlk %fp <== NOT EXECUTED 4bf82: 4e75 rts <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 4bf84: 42aa 007a clrl %a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4bf88: 42aa 007e clrl %a2@(126) <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } _Thread_Enable_dispatch(); 4bf8c: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4bf92: 4280 clrl %d0 <== NOT EXECUTED 4bf94: 60e2 bras 4bf78 <== NOT EXECUTED case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; if ( notification ) { if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) { _Thread_Enable_dispatch(); 4bf96: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); 4bf9c: 7410 moveq #16,%d2 <== NOT EXECUTED 4bf9e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4bfa4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED the_mq = the_mq_fd->Queue; if ( notification ) { if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBUSY ); 4bfa8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bfaa: 70ff moveq #-1,%d0 <== NOT EXECUTED 4bfac: 2082 movel %d2,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4bfae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4bfb2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004bfb8 : int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) { 4bfb8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4bfbc: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4bfc2: 5280 addql #1,%d0 <== NOT EXECUTED 4bfc4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4bfc8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4bfcc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4bfd0: 23c0 0006 9a24 movel %d0,69a24 <_Thread_Dispatch_disable_level><== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 4bfd6: 2802 movel %d2,%d4 <== NOT EXECUTED 4bfd8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 4bfde: 6600 00c4 bnew 4c0a4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * _POSIX_Message_queue_Allocate_fd( void ) { return (POSIX_Message_queue_Control_fd *) _Objects_Allocate( &_POSIX_Message_queue_Information_fds ); 4bfe2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED /* struct mq_attr attr */ ) { va_list arg; mode_t mode; struct mq_attr *attr = NULL; 4bfe8: 4286 clrl %d6 <== NOT EXECUTED 4bfea: 4eb9 0004 f1a4 jsr 4f1a4 <_Objects_Allocate> <== NOT EXECUTED attr = (struct mq_attr *) va_arg( arg, struct mq_attr * ); va_end(arg); } the_mq_fd = _POSIX_Message_queue_Allocate_fd(); if ( !the_mq_fd ) { 4bff0: 588f addql #4,%sp <== NOT EXECUTED 4bff2: 2440 moveal %d0,%a2 <== NOT EXECUTED 4bff4: 4a80 tstl %d0 <== NOT EXECUTED 4bff6: 6700 00c6 beqw 4c0be <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq_fd->oflag = oflag; 4bffa: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 4bffe: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c002: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c004: 4eb9 0005 32e4 jsr 532e4 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED * If the name to id translation worked, then the message queue exists * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 4c00a: 508f addql #8,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq_fd->oflag = oflag; status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 4c00c: 2600 movel %d0,%d3 <== NOT EXECUTED * If the name to id translation worked, then the message queue exists * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 4c00e: 6662 bnes 4c072 <== NOT EXECUTED } else { /* name -> ID translation succeeded */ /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 4c010: 0282 0000 0a00 andil #2560,%d2 <== NOT EXECUTED 4c016: 0c82 0000 0a00 cmpil #2560,%d2 <== NOT EXECUTED 4c01c: 6700 010c beqw 4c12a <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control *) _Objects_Get( &_POSIX_Message_queue_Information, id, location ); 4c020: 486e fff4 pea %fp@(-12) <== NOT EXECUTED _Objects_Open_string( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 4c024: 47f9 0005 021e lea 5021e <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4c02a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c02e: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 4c034: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4c03a: 4281 clrl %d1 <== NOT EXECUTED /* * In this case we need to do an ID->pointer conversion to * check the mode. */ the_mq = _POSIX_Message_queue_Get( the_mq_id, &location ); the_mq->open_count += 1; 4c03c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c03e: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4c042: 2079 0006 9e54 moveal 69e54 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4c048: 322a 000a movew %a2@(10),%d1 <== NOT EXECUTED /* * In this case we need to do an ID->pointer conversion to * check the mode. */ the_mq = _POSIX_Message_queue_Get( the_mq_id, &location ); 4c04c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED the_mq->open_count += 1; the_mq_fd->Queue = the_mq; 4c050: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4c054: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4c058: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Objects_Open_string( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 4c05c: 4e93 jsr %a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4c05e: 4e93 jsr %a3@ <== NOT EXECUTED return (mqd_t)the_mq_fd->Object.id; 4c060: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 4c064: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c068: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c06e: 4e5e unlk %fp <== NOT EXECUTED 4c070: 4e75 rts <== NOT EXECUTED if ( status ) { /* * Unless provided a valid name that did not already exist * and we are willing to create then it is an error. */ if ( !( status == ENOENT && (oflag & O_CREAT) ) ) { 4c072: 7002 moveq #2,%d0 <== NOT EXECUTED 4c074: b083 cmpl %d3,%d0 <== NOT EXECUTED 4c076: 6764 beqs 4c0dc <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd ( POSIX_Message_queue_Control_fd *the_mq_fd ) { _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); 4c078: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c07a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c080: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 4c086: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, mqd_t ); 4c08c: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c092: 508f addql #8,%sp <== NOT EXECUTED 4c094: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c096: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c098: 2083 movel %d3,%a0@ <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c09a: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c0a0: 4e5e unlk %fp <== NOT EXECUTED 4c0a2: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * _POSIX_Message_queue_Allocate_fd( void ) { return (POSIX_Message_queue_Control_fd *) _Objects_Allocate( &_POSIX_Message_queue_Information_fds ); 4c0a4: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); attr = (struct mq_attr *) va_arg( arg, struct mq_attr * ); 4c0aa: 2c2e 0014 movel %fp@(20),%d6 <== NOT EXECUTED 4c0ae: 4eb9 0004 f1a4 jsr 4f1a4 <_Objects_Allocate> <== NOT EXECUTED va_end(arg); } the_mq_fd = _POSIX_Message_queue_Allocate_fd(); if ( !the_mq_fd ) { 4c0b4: 588f addql #4,%sp <== NOT EXECUTED 4c0b6: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c0b8: 4a80 tstl %d0 <== NOT EXECUTED 4c0ba: 6600 ff3e bnew 4bffa <== NOT EXECUTED _Thread_Enable_dispatch(); 4c0be: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 4c0c4: 7417 moveq #23,%d2 <== NOT EXECUTED 4c0c6: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c0cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c0ce: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c0d0: 2082 movel %d2,%a0@ <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c0d2: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c0d8: 4e5e unlk %fp <== NOT EXECUTED 4c0da: 4e75 rts <== NOT EXECUTED if ( status ) { /* * Unless provided a valid name that did not already exist * and we are willing to create then it is an error. */ if ( !( status == ENOENT && (oflag & O_CREAT) ) ) { 4c0dc: 4a84 tstl %d4 <== NOT EXECUTED 4c0de: 6798 beqs 4c078 <== NOT EXECUTED /* * At this point, the message queue does not exist and everything has been * checked. We should go ahead and create a message queue. */ status = _POSIX_Message_queue_Create_support( 4c0e0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c0e4: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c0e6: 4878 0001 pea 1 <== NOT EXECUTED 4c0ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c0ec: 4eb9 0005 3164 jsr 53164 <_POSIX_Message_queue_Create_support><== NOT EXECUTED ); /* * errno was set by Create_support, so don't set it again. */ if ( status == -1 ) { 4c0f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c0f6: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c0f8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c0fa: 675c beqs 4c158 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4c0fc: 4280 clrl %d0 <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); return (mqd_t) -1; } the_mq_fd->Queue = the_mq; 4c0fe: 256e fff8 0010 movel %fp@(-8),%a2@(16) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4c104: 2079 0006 9e54 moveal 69e54 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4c10a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4c10e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4c112: 42aa 000c clrl %a2@(12) <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 4c116: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return (mqd_t) the_mq_fd->Object.id; 4c11c: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED } 4c120: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c126: 4e5e unlk %fp <== NOT EXECUTED 4c128: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd ( POSIX_Message_queue_Control_fd *the_mq_fd ) { _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); 4c12a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c12c: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c132: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 4c138: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t ); 4c13e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED 4c144: 508f addql #8,%sp <== NOT EXECUTED 4c146: 7211 moveq #17,%d1 <== NOT EXECUTED 4c148: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c14a: 70ff moveq #-1,%d0 <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c14c: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t ); 4c152: 2081 movel %d1,%a0@ <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c154: 4e5e unlk %fp <== NOT EXECUTED 4c156: 4e75 rts <== NOT EXECUTED 4c158: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c15a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c160: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED /* * errno was set by Create_support, so don't set it again. */ if ( status == -1 ) { _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 4c166: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return (mqd_t) -1; 4c16c: 508f addql #8,%sp <== NOT EXECUTED 4c16e: 70ff moveq #-1,%d0 <== NOT EXECUTED ); _Thread_Enable_dispatch(); return (mqd_t) the_mq_fd->Object.id; } 4c170: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c176: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c17c : mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio ) { 4c17c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Receive_support( 4c180: 42a7 clrl %sp@- <== NOT EXECUTED 4c182: 4878 0001 pea 1 <== NOT EXECUTED 4c186: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c18a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c18e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c192: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c196: 4eb9 0004 c1a0 jsr 4c1a0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED msg_len, msg_prio, true, THREAD_QUEUE_WAIT_FOREVER ); } 4c19c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c308 : mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio ) { 4c308: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Send_support( 4c30c: 42a7 clrl %sp@- <== NOT EXECUTED 4c30e: 4878 0001 pea 1 <== NOT EXECUTED 4c312: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c316: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c31a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c31e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c322: 4eb9 0004 c32c jsr 4c32c <_POSIX_Message_queue_Send_support><== NOT EXECUTED msg_len, msg_prio, true, THREAD_QUEUE_WAIT_FOREVER ); } 4c328: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c484 : int mq_setattr( mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat ) { 4c484: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4c488: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c48a: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 4c48e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c490: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; CORE_message_queue_Control *the_core_mq; Objects_Locations location; if ( !mqstat ) 4c494: 4a8b tstl %a3 <== NOT EXECUTED 4c496: 6770 beqs 4c508 <== NOT EXECUTED 4c498: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c49c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c4a0: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c4a6: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4c4ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c4b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c4b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c4b6: 6636 bnes 4c4ee <== NOT EXECUTED case OBJECTS_LOCAL: the_core_mq = &the_mq_fd->Queue->Message_queue; 4c4b8: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED /* * Return the old values. */ if ( omqstat ) { 4c4bc: 4a8a tstl %a2 <== NOT EXECUTED 4c4be: 6716 beqs 4c4d6 <== NOT EXECUTED omqstat->mq_flags = the_mq_fd->oflag; 4c4c0: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED omqstat->mq_msgsize = the_core_mq->maximum_message_size; 4c4c4: 2569 0066 0008 movel %a1@(102),%a2@(8) <== NOT EXECUTED omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages; 4c4ca: 2569 005e 0004 movel %a1@(94),%a2@(4) <== NOT EXECUTED omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages; 4c4d0: 2569 0062 000c movel %a1@(98),%a2@(12) <== NOT EXECUTED } the_mq_fd->oflag = mqstat->mq_flags; 4c4d6: 2153 0014 movel %a3@,%a0@(20) <== NOT EXECUTED _Thread_Enable_dispatch(); 4c4da: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c4e0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages; } the_mq_fd->oflag = mqstat->mq_flags; _Thread_Enable_dispatch(); return 0; 4c4e4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c4e6: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c4ea: 4e5e unlk %fp <== NOT EXECUTED 4c4ec: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c4ee: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED } 4c4f4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c4f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c4fa: 7209 moveq #9,%d1 <== NOT EXECUTED 4c4fc: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4c4fe: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c502: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 4c504: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4c506: 4e75 rts <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; CORE_message_queue_Control *the_core_mq; Objects_Locations location; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c508: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c50e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; CORE_message_queue_Control *the_core_mq; Objects_Locations location; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c512: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c514: 7216 moveq #22,%d1 <== NOT EXECUTED 4c516: 70ff moveq #-1,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 4c518: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c51c: 4e5e unlk %fp <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; CORE_message_queue_Control *the_core_mq; Objects_Locations location; if ( !mqstat ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c51e: 2081 movel %d1,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } ... =============================================================================== 0004c524 : char *msg_ptr, size_t msg_len, unsigned int *msg_prio, const struct timespec *abstime ) { 4c524: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4c528: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c52c: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4c530: 4eb9 0004 c640 jsr 4c640 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; return _POSIX_Message_queue_Receive_support( 4c536: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c53a: 7203 moveq #3,%d1 <== NOT EXECUTED 4c53c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c53e: 57c0 seq %d0 <== NOT EXECUTED 4c540: 49c0 extbl %d0 <== NOT EXECUTED 4c542: 4480 negl %d0 <== NOT EXECUTED 4c544: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c546: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c54a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c54e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c552: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c556: 4eb9 0004 c1a0 jsr 4c1a0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 4c55c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c560 : const char *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec *abstime ) { 4c560: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4c564: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c568: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4c56c: 4eb9 0004 c640 jsr 4c640 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; return _POSIX_Message_queue_Send_support( 4c572: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c576: 7203 moveq #3,%d1 <== NOT EXECUTED 4c578: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c57a: 57c0 seq %d0 <== NOT EXECUTED 4c57c: 49c0 extbl %d0 <== NOT EXECUTED 4c57e: 4480 negl %d0 <== NOT EXECUTED 4c580: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c582: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c586: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c58a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c58e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c592: 4eb9 0004 c32c jsr 4c32c <_POSIX_Message_queue_Send_support><== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 4c598: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c5b4 : */ int mq_unlink( const char *name ) { 4c5b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4c5b8: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c5be: 5280 addql #1,%d0 <== NOT EXECUTED 4c5c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c5c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c5c4: 23c0 0006 9a24 movel %d0,69a24 <_Thread_Dispatch_disable_level><== NOT EXECUTED register POSIX_Message_queue_Control *the_mq; Objects_Id the_mq_id; _Thread_Disable_dispatch(); status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 4c5ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c5ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c5d2: 4eb9 0005 32e4 jsr 532e4 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 4c5d8: 508f addql #8,%sp <== NOT EXECUTED register POSIX_Message_queue_Control *the_mq; Objects_Id the_mq_id; _Thread_Disable_dispatch(); status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 4c5da: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status != 0 ) { 4c5dc: 6644 bnes 4c622 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 4c5de: 4280 clrl %d0 <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( status ); } the_mq = (POSIX_Message_queue_Control *) _Objects_Get_local_object( 4c5e0: 2079 0006 9ce6 moveal 69ce6 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED 4c5e6: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED 4c5ea: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED &_POSIX_Message_queue_Information, _Objects_Get_index( the_mq_id ) ); the_mq->linked = false; 4c5ee: 4200 clrb %d0 <== NOT EXECUTED 4c5f0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Namespace_remove ( POSIX_Message_queue_Control *the_mq ) { _Objects_Namespace_remove( 4c5f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c5f6: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED 4c5fc: 4eb9 0004 f7e4 jsr 4f7e4 <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); 4c602: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c604: 4eb9 0004 bde8 jsr 4bde8 <_POSIX_Message_queue_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4c60a: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 4c610: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED the_mq->linked = false; _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); _Thread_Enable_dispatch(); return 0; 4c614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c618: 4280 clrl %d0 <== NOT EXECUTED } 4c61a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4c61e: 4e5e unlk %fp <== NOT EXECUTED 4c620: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); if ( status != 0 ) { _Thread_Enable_dispatch(); 4c622: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 4c628: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); _Thread_Enable_dispatch(); return 0; } 4c62e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Thread_Disable_dispatch(); status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); if ( status != 0 ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( status ); 4c632: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c634: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c636: 2082 movel %d2,%a0@ <== NOT EXECUTED _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); _Thread_Enable_dispatch(); return 0; } 4c638: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4c63c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005cb1c : int nanosleep( const struct timespec *rqtp, struct timespec *rmtp ) { 5cb1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cb20: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cb22: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 5cb26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb28: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED * Return EINVAL if the delay interval is negative. * * NOTE: This behavior is beyond the POSIX specification. * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) ) 5cb2c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb2e: 4eb9 0005 cc88 jsr 5cc88 <_Timespec_Is_valid> <== NOT EXECUTED 5cb34: 588f addql #4,%sp <== NOT EXECUTED 5cb36: 4a00 tstb %d0 <== NOT EXECUTED 5cb38: 6700 00f8 beqw 5cc32 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); ticks = _Timespec_To_ticks( rqtp ); 5cb3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb3e: 4eb9 0004 d1c4 jsr 4d1c4 <_Timespec_To_ticks> <== NOT EXECUTED * A nanosleep for zero time is implemented as a yield. * This behavior is also beyond the POSIX specification but is * consistent with the RTEMS API and yields desirable behavior. */ if ( !ticks ) { 5cb44: 588f addql #4,%sp <== NOT EXECUTED * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) ) rtems_set_errno_and_return_minus_one( EINVAL ); ticks = _Timespec_To_ticks( rqtp ); 5cb46: 2400 movel %d0,%d2 <== NOT EXECUTED * A nanosleep for zero time is implemented as a yield. * This behavior is also beyond the POSIX specification but is * consistent with the RTEMS API and yields desirable behavior. */ if ( !ticks ) { 5cb48: 663e bnes 5cb88 <== NOT EXECUTED 5cb4a: 2039 0006 0be0 movel 60be0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cb50: 5280 addql #1,%d0 <== NOT EXECUTED 5cb52: 23c0 0006 0be0 movel %d0,60be0 <_Thread_Dispatch_disable_level><== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 5cb58: 4879 0006 0c66 pea 60c66 <_Scheduler> <== NOT EXECUTED 5cb5e: 2079 0006 0c6e moveal 60c6e <_Scheduler+0x8>,%a0 <== NOT EXECUTED 5cb64: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Disable_dispatch(); _Scheduler_Yield(); _Thread_Enable_dispatch(); 5cb66: 4eb9 0004 8d4a jsr 48d4a <_Thread_Enable_dispatch> <== NOT EXECUTED if ( rmtp ) { 5cb6c: 588f addql #4,%sp <== NOT EXECUTED 5cb6e: 4a8a tstl %a2 <== NOT EXECUTED 5cb70: 6700 0098 beqw 5cc0a <== NOT EXECUTED rmtp->tv_sec = 0; 5cb74: 4292 clrl %a2@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); #endif } return 0; } 5cb76: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( rmtp ) { rmtp->tv_sec = 0; rmtp->tv_nsec = 0; } return 0; 5cb7a: 4280 clrl %d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _Scheduler_Yield(); _Thread_Enable_dispatch(); if ( rmtp ) { rmtp->tv_sec = 0; rmtp->tv_nsec = 0; 5cb7c: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); #endif } return 0; } 5cb80: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cb84: 4e5e unlk %fp <== NOT EXECUTED 5cb86: 4e75 rts <== NOT EXECUTED 5cb88: 2039 0006 0be0 movel 60be0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cb8e: 5280 addql #1,%d0 <== NOT EXECUTED 5cb90: 23c0 0006 0be0 movel %d0,60be0 <_Thread_Dispatch_disable_level><== NOT EXECUTED /* * Block for the desired amount of time */ _Thread_Disable_dispatch(); _Thread_Set_state( 5cb96: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED 5cb9c: 2f39 0006 106a movel 6106a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 5cba2: 4eb9 0004 9648 jsr 49648 <_Thread_Set_state> <== NOT EXECUTED STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 5cba8: 2079 0006 106a moveal 6106a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 5cbae: 203c 0004 8ba4 movel #297892,%d0 <== NOT EXECUTED 5cbb4: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Watchdog_Initialize( 5cbb8: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 5cbbc: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 5cbc0: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED the_watchdog->user_data = user_data; 5cbc4: 42a8 006c clrl %a0@(108) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 5cbc8: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 5cbcc: 4868 0048 pea %a0@(72) <== NOT EXECUTED 5cbd0: 4879 0006 0cc0 pea 60cc0 <_Watchdog_Ticks_chain> <== NOT EXECUTED 5cbd6: 4eb9 0004 9d1c jsr 49d1c <_Watchdog_Insert> <== NOT EXECUTED _Thread_Delay_ended, _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); _Thread_Enable_dispatch(); 5cbdc: 4eb9 0004 8d4a jsr 48d4a <_Thread_Enable_dispatch> <== NOT EXECUTED /* calculate time remaining */ if ( rmtp ) { 5cbe2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5cbe6: 4a8a tstl %a2 <== NOT EXECUTED 5cbe8: 6720 beqs 5cc0a <== NOT EXECUTED ticks -= _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; 5cbea: 2079 0006 106a moveal 6106a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 5cbf0: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 5cbf4: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED _Thread_Enable_dispatch(); /* calculate time remaining */ if ( rmtp ) { ticks -= 5cbf8: d480 addl %d0,%d2 <== NOT EXECUTED _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; _Timespec_From_ticks( ticks, rmtp ); 5cbfa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cbfc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cbfe: 4eb9 0005 cc4c jsr 5cc4c <_Timespec_From_ticks> <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) 5cc04: 508f addql #8,%sp <== NOT EXECUTED 5cc06: 4a82 tstl %d2 <== NOT EXECUTED 5cc08: 660e bnes 5cc18 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); #endif } return 0; } 5cc0a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED if ( ticks ) rtems_set_errno_and_return_minus_one( EINTR ); #endif } return 0; 5cc0e: 4280 clrl %d0 <== NOT EXECUTED } 5cc10: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc14: 4e5e unlk %fp <== NOT EXECUTED 5cc16: 4e75 rts <== NOT EXECUTED #if defined(RTEMS_POSIX_API) /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) rtems_set_errno_and_return_minus_one( EINTR ); 5cc18: 4eb9 0004 eda8 jsr 4eda8 <__errno> <== NOT EXECUTED #endif } return 0; } 5cc1e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #if defined(RTEMS_POSIX_API) /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) rtems_set_errno_and_return_minus_one( EINTR ); 5cc22: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cc24: 7204 moveq #4,%d1 <== NOT EXECUTED 5cc26: 70ff moveq #-1,%d0 <== NOT EXECUTED #endif } return 0; } 5cc28: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc2c: 4e5e unlk %fp <== NOT EXECUTED #if defined(RTEMS_POSIX_API) /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) rtems_set_errno_and_return_minus_one( EINTR ); 5cc2e: 2081 movel %d1,%a0@ <== NOT EXECUTED #endif } return 0; } 5cc30: 4e75 rts <== NOT EXECUTED * * NOTE: This behavior is beyond the POSIX specification. * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) ) rtems_set_errno_and_return_minus_one( EINVAL ); 5cc32: 4eb9 0004 eda8 jsr 4eda8 <__errno> <== NOT EXECUTED 5cc38: 7416 moveq #22,%d2 <== NOT EXECUTED 5cc3a: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cc3c: 70ff moveq #-1,%d0 <== NOT EXECUTED 5cc3e: 2082 movel %d2,%a0@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); #endif } return 0; } 5cc40: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5cc44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc48: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048544 : /* * 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81 */ int pause( void ) { 48544: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48548: 2f02 movel %d2,%sp@- <== NOT EXECUTED sigset_t all_signals; int status; (void) sigfillset( &all_signals ); 4854a: 240e movel %fp,%d2 <== NOT EXECUTED 4854c: 5982 subql #4,%d2 <== NOT EXECUTED 4854e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48550: 4eb9 0004 93d0 jsr 493d0 <== NOT EXECUTED status = sigtimedwait( &all_signals, NULL, NULL ); 48556: 42a7 clrl %sp@- <== NOT EXECUTED 48558: 42a7 clrl %sp@- <== NOT EXECUTED 4855a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4855c: 4eb9 0004 954c jsr 4954c <== NOT EXECUTED return status; } 48562: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48566: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046210 : int pthread_atfork( void (*prepare)(void) __attribute__((unused)), void (*parent)(void) __attribute__((unused)), void (*child)(void) __attribute__((unused)) ) { 46210: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46214: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 4621a: 7258 moveq #88,%d1 <== NOT EXECUTED 4621c: 2040 moveal %d0,%a0 <== NOT EXECUTED } 4621e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46220: 4e5e unlk %fp <== NOT EXECUTED void (*prepare)(void) __attribute__((unused)), void (*parent)(void) __attribute__((unused)), void (*child)(void) __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 46222: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 0004af8c : #include int pthread_attr_destroy( pthread_attr_t *attr ) { 4af8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4af90: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4af94: 4a88 tstl %a0 <== NOT EXECUTED 4af96: 670c beqs 4afa4 <== NOT EXECUTED 4af98: 4a90 tstl %a0@ <== NOT EXECUTED 4af9a: 6708 beqs 4afa4 <== NOT EXECUTED return EINVAL; attr->is_initialized = false; return 0; 4af9c: 4280 clrl %d0 <== NOT EXECUTED } 4af9e: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->is_initialized = false; 4afa0: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 4afa2: 4e75 rts <== NOT EXECUTED int pthread_attr_destroy( pthread_attr_t *attr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4afa4: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 4afa6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b700 : int pthread_attr_getcputime( pthread_attr_t *attr, int *clock_allowed ) { 4b700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b704: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b708: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !clock_allowed ) 4b70c: 4a88 tstl %a0 <== NOT EXECUTED 4b70e: 6712 beqs 4b722 <== NOT EXECUTED 4b710: 4a90 tstl %a0@ <== NOT EXECUTED 4b712: 670e beqs 4b722 <== NOT EXECUTED 4b714: 4a89 tstl %a1 <== NOT EXECUTED 4b716: 670a beqs 4b722 <== NOT EXECUTED return EINVAL; *clock_allowed = attr->cputime_clock_allowed; 4b718: 22a8 0038 movel %a0@(56),%a1@ <== NOT EXECUTED return 0; 4b71c: 4280 clrl %d0 <== NOT EXECUTED } 4b71e: 4e5e unlk %fp <== NOT EXECUTED 4b720: 4e75 rts <== NOT EXECUTED pthread_attr_t *attr, int *clock_allowed ) { if ( !attr || !attr->is_initialized || !clock_allowed ) return EINVAL; 4b722: 7016 moveq #22,%d0 <== NOT EXECUTED *clock_allowed = attr->cputime_clock_allowed; return 0; } 4b724: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afac : int pthread_attr_getdetachstate( const pthread_attr_t *attr, int *detachstate ) { 4afac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4afb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4afb4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !detachstate ) 4afb8: 4a88 tstl %a0 <== NOT EXECUTED 4afba: 6712 beqs 4afce <== NOT EXECUTED 4afbc: 4a90 tstl %a0@ <== NOT EXECUTED 4afbe: 670e beqs 4afce <== NOT EXECUTED 4afc0: 4a89 tstl %a1 <== NOT EXECUTED 4afc2: 670a beqs 4afce <== NOT EXECUTED return EINVAL; *detachstate = attr->detachstate; 4afc4: 22a8 003c movel %a0@(60),%a1@ <== NOT EXECUTED return 0; 4afc8: 4280 clrl %d0 <== NOT EXECUTED } 4afca: 4e5e unlk %fp <== NOT EXECUTED 4afcc: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, int *detachstate ) { if ( !attr || !attr->is_initialized || !detachstate ) return EINVAL; 4afce: 7016 moveq #22,%d0 <== NOT EXECUTED *detachstate = attr->detachstate; return 0; } 4afd0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afd4 : int pthread_attr_getguardsize( const pthread_attr_t *attr, size_t *guardsize ) { 4afd4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4afd8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4afdc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !guardsize ) 4afe0: 4a88 tstl %a0 <== NOT EXECUTED 4afe2: 6712 beqs 4aff6 <== NOT EXECUTED 4afe4: 4a90 tstl %a0@ <== NOT EXECUTED 4afe6: 670e beqs 4aff6 <== NOT EXECUTED 4afe8: 4a89 tstl %a1 <== NOT EXECUTED 4afea: 670a beqs 4aff6 <== NOT EXECUTED return EINVAL; *guardsize = attr->guardsize; 4afec: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED return 0; 4aff0: 4280 clrl %d0 <== NOT EXECUTED } 4aff2: 4e5e unlk %fp <== NOT EXECUTED 4aff4: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, size_t *guardsize ) { if ( !attr || !attr->is_initialized || !guardsize ) return EINVAL; 4aff6: 7016 moveq #22,%d0 <== NOT EXECUTED *guardsize = attr->guardsize; return 0; } 4aff8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004affc : int pthread_attr_getinheritsched( const pthread_attr_t *attr, int *inheritsched ) { 4affc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b000: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b004: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !inheritsched ) 4b008: 4a88 tstl %a0 <== NOT EXECUTED 4b00a: 6712 beqs 4b01e <== NOT EXECUTED 4b00c: 4a90 tstl %a0@ <== NOT EXECUTED 4b00e: 670e beqs 4b01e <== NOT EXECUTED 4b010: 4a89 tstl %a1 <== NOT EXECUTED 4b012: 670a beqs 4b01e <== NOT EXECUTED return EINVAL; *inheritsched = attr->inheritsched; 4b014: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED return 0; 4b018: 4280 clrl %d0 <== NOT EXECUTED } 4b01a: 4e5e unlk %fp <== NOT EXECUTED 4b01c: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, int *inheritsched ) { if ( !attr || !attr->is_initialized || !inheritsched ) return EINVAL; 4b01e: 7016 moveq #22,%d0 <== NOT EXECUTED *inheritsched = attr->inheritsched; return 0; } 4b020: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b024 : int pthread_attr_getschedparam( const pthread_attr_t *attr, struct sched_param *param ) { 4b024: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b028: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4b02c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 4b030: 4a89 tstl %a1 <== NOT EXECUTED 4b032: 672a beqs 4b05e <== NOT EXECUTED 4b034: 4a91 tstl %a1@ <== NOT EXECUTED 4b036: 6726 beqs 4b05e <== NOT EXECUTED 4b038: 4a88 tstl %a0 <== NOT EXECUTED 4b03a: 6722 beqs 4b05e <== NOT EXECUTED return EINVAL; *param = attr->schedparam; 4b03c: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED return 0; 4b040: 4280 clrl %d0 <== NOT EXECUTED } 4b042: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; *param = attr->schedparam; 4b044: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED 4b048: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED 4b04c: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED 4b050: 20e9 0028 movel %a1@(40),%a0@+ <== NOT EXECUTED 4b054: 20e9 002c movel %a1@(44),%a0@+ <== NOT EXECUTED 4b058: 20a9 0030 movel %a1@(48),%a0@ <== NOT EXECUTED return 0; } 4b05c: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, struct sched_param *param ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; 4b05e: 7016 moveq #22,%d0 <== NOT EXECUTED *param = attr->schedparam; return 0; } 4b060: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b064 : int pthread_attr_getschedpolicy( const pthread_attr_t *attr, int *policy ) { 4b064: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b068: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b06c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !policy ) 4b070: 4a88 tstl %a0 <== NOT EXECUTED 4b072: 6712 beqs 4b086 <== NOT EXECUTED 4b074: 4a90 tstl %a0@ <== NOT EXECUTED 4b076: 670e beqs 4b086 <== NOT EXECUTED 4b078: 4a89 tstl %a1 <== NOT EXECUTED 4b07a: 670a beqs 4b086 <== NOT EXECUTED return EINVAL; *policy = attr->schedpolicy; 4b07c: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED return 0; 4b080: 4280 clrl %d0 <== NOT EXECUTED } 4b082: 4e5e unlk %fp <== NOT EXECUTED 4b084: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, int *policy ) { if ( !attr || !attr->is_initialized || !policy ) return EINVAL; 4b086: 7016 moveq #22,%d0 <== NOT EXECUTED *policy = attr->schedpolicy; return 0; } 4b088: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b08c : int pthread_attr_getscope( const pthread_attr_t *attr, int *contentionscope ) { 4b08c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b090: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b094: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !contentionscope ) 4b098: 4a88 tstl %a0 <== NOT EXECUTED 4b09a: 6712 beqs 4b0ae <== NOT EXECUTED 4b09c: 4a90 tstl %a0@ <== NOT EXECUTED 4b09e: 670e beqs 4b0ae <== NOT EXECUTED 4b0a0: 4a89 tstl %a1 <== NOT EXECUTED 4b0a2: 670a beqs 4b0ae <== NOT EXECUTED return EINVAL; *contentionscope = attr->contentionscope; 4b0a4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED return 0; 4b0a8: 4280 clrl %d0 <== NOT EXECUTED } 4b0aa: 4e5e unlk %fp <== NOT EXECUTED 4b0ac: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, int *contentionscope ) { if ( !attr || !attr->is_initialized || !contentionscope ) return EINVAL; 4b0ae: 7016 moveq #22,%d0 <== NOT EXECUTED *contentionscope = attr->contentionscope; return 0; } 4b0b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b0dc : int pthread_attr_getstack( const pthread_attr_t *attr, void **stackaddr, size_t *stacksize ) { 4b0dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0e0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b0e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b0e6: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b0ea: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) 4b0ee: 4a88 tstl %a0 <== NOT EXECUTED 4b0f0: 671c beqs 4b10e <== NOT EXECUTED 4b0f2: 4a90 tstl %a0@ <== NOT EXECUTED 4b0f4: 6718 beqs 4b10e <== NOT EXECUTED 4b0f6: 4a89 tstl %a1 <== NOT EXECUTED 4b0f8: 6714 beqs 4b10e <== NOT EXECUTED 4b0fa: 4a8a tstl %a2 <== NOT EXECUTED 4b0fc: 6710 beqs 4b10e <== NOT EXECUTED return EINVAL; *stackaddr = attr->stackaddr; 4b0fe: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED *stacksize = attr->stacksize; return 0; 4b102: 4280 clrl %d0 <== NOT EXECUTED { if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) return EINVAL; *stackaddr = attr->stackaddr; *stacksize = attr->stacksize; 4b104: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return 0; } 4b108: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4b10a: 4e5e unlk %fp <== NOT EXECUTED 4b10c: 4e75 rts <== NOT EXECUTED 4b10e: 245f moveal %sp@+,%a2 <== NOT EXECUTED void **stackaddr, size_t *stacksize ) { if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) return EINVAL; 4b110: 7016 moveq #22,%d0 <== NOT EXECUTED *stackaddr = attr->stackaddr; *stacksize = attr->stacksize; return 0; } 4b112: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b0b4 : int pthread_attr_getstackaddr( const pthread_attr_t *attr, void **stackaddr ) { 4b0b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b0bc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stackaddr ) 4b0c0: 4a88 tstl %a0 <== NOT EXECUTED 4b0c2: 6712 beqs 4b0d6 <== NOT EXECUTED 4b0c4: 4a90 tstl %a0@ <== NOT EXECUTED 4b0c6: 670e beqs 4b0d6 <== NOT EXECUTED 4b0c8: 4a89 tstl %a1 <== NOT EXECUTED 4b0ca: 670a beqs 4b0d6 <== NOT EXECUTED return EINVAL; *stackaddr = attr->stackaddr; 4b0cc: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 4b0d0: 4280 clrl %d0 <== NOT EXECUTED } 4b0d2: 4e5e unlk %fp <== NOT EXECUTED 4b0d4: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, void **stackaddr ) { if ( !attr || !attr->is_initialized || !stackaddr ) return EINVAL; 4b0d6: 7016 moveq #22,%d0 <== NOT EXECUTED *stackaddr = attr->stackaddr; return 0; } 4b0d8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b118 : int pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize ) { 4b118: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b11c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b120: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stacksize ) 4b124: 4a88 tstl %a0 <== NOT EXECUTED 4b126: 6712 beqs 4b13a <== NOT EXECUTED 4b128: 4a90 tstl %a0@ <== NOT EXECUTED 4b12a: 670e beqs 4b13a <== NOT EXECUTED 4b12c: 4a89 tstl %a1 <== NOT EXECUTED 4b12e: 670a beqs 4b13a <== NOT EXECUTED return EINVAL; *stacksize = attr->stacksize; 4b130: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED return 0; 4b134: 4280 clrl %d0 <== NOT EXECUTED } 4b136: 4e5e unlk %fp <== NOT EXECUTED 4b138: 4e75 rts <== NOT EXECUTED const pthread_attr_t *attr, size_t *stacksize ) { if ( !attr || !attr->is_initialized || !stacksize ) return EINVAL; 4b13a: 7016 moveq #22,%d0 <== NOT EXECUTED *stacksize = attr->stacksize; return 0; } 4b13c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d1c4 : #include int pthread_attr_init( pthread_attr_t *attr ) { 4d1c4: 4e56 0000 linkw %fp,#0 4d1c8: 202e 0008 movel %fp@(8),%d0 if ( !attr ) 4d1cc: 671c beqs 4d1ea <== NEVER TAKEN return EINVAL; *attr = _POSIX_Threads_Default_attributes; 4d1ce: 4878 0040 pea 40 4d1d2: 4879 0005 e8be pea 5e8be <_POSIX_Threads_Default_attributes> 4d1d8: 2f00 movel %d0,%sp@- 4d1da: 4eb9 0005 0198 jsr 50198 return 0; 4d1e0: 4fef 000c lea %sp@(12),%sp 4d1e4: 4280 clrl %d0 } 4d1e6: 4e5e unlk %fp 4d1e8: 4e75 rts int pthread_attr_init( pthread_attr_t *attr ) { if ( !attr ) return EINVAL; 4d1ea: 7016 moveq #22,%d0 <== NOT EXECUTED *attr = _POSIX_Threads_Default_attributes; return 0; } 4d1ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004bc80 : int pthread_attr_setcputime( pthread_attr_t *attr, int clock_allowed ) { 4bc80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bc84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4bc88: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4bc8c: 4a88 tstl %a0 <== NOT EXECUTED 4bc8e: 670a beqs 4bc9a <== NOT EXECUTED 4bc90: 4a90 tstl %a0@ <== NOT EXECUTED 4bc92: 6706 beqs 4bc9a <== NOT EXECUTED return EINVAL; switch ( clock_allowed ) { 4bc94: 7201 moveq #1,%d1 <== NOT EXECUTED 4bc96: b280 cmpl %d0,%d1 <== NOT EXECUTED 4bc98: 6406 bccs 4bca0 <== NOT EXECUTED case CLOCK_DISABLED: attr->cputime_clock_allowed = clock_allowed; return 0; default: return EINVAL; 4bc9a: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4bc9c: 4e5e unlk %fp <== NOT EXECUTED 4bc9e: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( clock_allowed ) { case CLOCK_ENABLED: case CLOCK_DISABLED: attr->cputime_clock_allowed = clock_allowed; 4bca0: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED return 0; 4bca4: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 4bca6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b16c : int pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate ) { 4b16c: 4e56 0000 linkw %fp,#0 4b170: 206e 0008 moveal %fp@(8),%a0 4b174: 202e 000c movel %fp@(12),%d0 if ( !attr || !attr->is_initialized ) 4b178: 4a88 tstl %a0 4b17a: 670a beqs 4b186 <== NEVER TAKEN 4b17c: 4a90 tstl %a0@ 4b17e: 6706 beqs 4b186 <== NEVER TAKEN return EINVAL; switch ( detachstate ) { 4b180: 7201 moveq #1,%d1 4b182: b280 cmpl %d0,%d1 4b184: 6406 bccs 4b18c <== ALWAYS TAKEN case PTHREAD_CREATE_JOINABLE: attr->detachstate = detachstate; return 0; default: return EINVAL; 4b186: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4b188: 4e5e unlk %fp <== NOT EXECUTED 4b18a: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( detachstate ) { case PTHREAD_CREATE_DETACHED: case PTHREAD_CREATE_JOINABLE: attr->detachstate = detachstate; 4b18c: 2140 003c movel %d0,%a0@(60) return 0; 4b190: 4280 clrl %d0 default: return EINVAL; } } 4b192: 4e5e unlk %fp ... =============================================================================== 0004b198 : int pthread_attr_setguardsize( pthread_attr_t *attr, size_t guardsize ) { 4b198: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b19c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b1a0: 4a88 tstl %a0 <== NOT EXECUTED 4b1a2: 6710 beqs 4b1b4 <== NOT EXECUTED 4b1a4: 4a90 tstl %a0@ <== NOT EXECUTED 4b1a6: 670c beqs 4b1b4 <== NOT EXECUTED return EINVAL; attr->guardsize = guardsize; return 0; 4b1a8: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->guardsize = guardsize; 4b1aa: 216e 000c 0034 movel %fp@(12),%a0@(52) <== NOT EXECUTED return 0; } 4b1b0: 4e5e unlk %fp <== NOT EXECUTED 4b1b2: 4e75 rts <== NOT EXECUTED pthread_attr_t *attr, size_t guardsize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b1b4: 7016 moveq #22,%d0 <== NOT EXECUTED attr->guardsize = guardsize; return 0; } 4b1b6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d1f0 : int pthread_attr_setinheritsched( pthread_attr_t *attr, int inheritsched ) { 4d1f0: 4e56 0000 linkw %fp,#0 4d1f4: 206e 0008 moveal %fp@(8),%a0 4d1f8: 222e 000c movel %fp@(12),%d1 4d1fc: 2f02 movel %d2,%sp@- if ( !attr || !attr->is_initialized ) 4d1fe: 4a88 tstl %a0 4d200: 6726 beqs 4d228 <== NEVER TAKEN 4d202: 4a90 tstl %a0@ 4d204: 6722 beqs 4d228 <== NEVER TAKEN return EINVAL; switch ( inheritsched ) { 4d206: 2241 moveal %d1,%a1 4d208: 5389 subql #1,%a1 case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; return 0; default: return ENOTSUP; 4d20a: 203c 0000 0086 movel #134,%d0 ) { if ( !attr || !attr->is_initialized ) return EINVAL; switch ( inheritsched ) { 4d210: 7401 moveq #1,%d2 4d212: b489 cmpl %a1,%d2 4d214: 6406 bccs 4d21c <== ALWAYS TAKEN return 0; default: return ENOTSUP; } } 4d216: 241f movel %sp@+,%d2 <== NOT EXECUTED 4d218: 4e5e unlk %fp <== NOT EXECUTED 4d21a: 4e75 rts <== NOT EXECUTED 4d21c: 241f movel %sp@+,%d2 switch ( inheritsched ) { case PTHREAD_INHERIT_SCHED: case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; return 0; 4d21e: 4200 clrb %d0 default: return ENOTSUP; } } 4d220: 4e5e unlk %fp return EINVAL; switch ( inheritsched ) { case PTHREAD_INHERIT_SCHED: case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; 4d222: 2141 0010 movel %d1,%a0@(16) return 0; default: return ENOTSUP; } } 4d226: 4e75 rts 4d228: 241f movel %sp@+,%d2 <== NOT EXECUTED pthread_attr_t *attr, int inheritsched ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4d22a: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; default: return ENOTSUP; } } 4d22c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b1fc : int pthread_attr_setschedparam( pthread_attr_t *attr, const struct sched_param *param ) { 4b1fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b200: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4b204: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 4b208: 4a89 tstl %a1 <== NOT EXECUTED 4b20a: 672a beqs 4b236 <== NOT EXECUTED 4b20c: 4a91 tstl %a1@ <== NOT EXECUTED 4b20e: 6726 beqs 4b236 <== NOT EXECUTED 4b210: 4a88 tstl %a0 <== NOT EXECUTED 4b212: 6722 beqs 4b236 <== NOT EXECUTED return EINVAL; attr->schedparam = *param; 4b214: 2358 0018 movel %a0@+,%a1@(24) <== NOT EXECUTED return 0; 4b218: 4280 clrl %d0 <== NOT EXECUTED } 4b21a: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; attr->schedparam = *param; 4b21c: 2358 001c movel %a0@+,%a1@(28) <== NOT EXECUTED 4b220: 2358 0020 movel %a0@+,%a1@(32) <== NOT EXECUTED 4b224: 2358 0024 movel %a0@+,%a1@(36) <== NOT EXECUTED 4b228: 2358 0028 movel %a0@+,%a1@(40) <== NOT EXECUTED 4b22c: 2358 002c movel %a0@+,%a1@(44) <== NOT EXECUTED 4b230: 2350 0030 movel %a0@,%a1@(48) <== NOT EXECUTED return 0; } 4b234: 4e75 rts <== NOT EXECUTED pthread_attr_t *attr, const struct sched_param *param ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; 4b236: 7016 moveq #22,%d0 <== NOT EXECUTED attr->schedparam = *param; return 0; } 4b238: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b23c : int pthread_attr_setschedpolicy( pthread_attr_t *attr, int policy ) { 4b23c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b240: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b244: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4b248: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b24a: 4a88 tstl %a0 <== NOT EXECUTED 4b24c: 672e beqs 4b27c <== NOT EXECUTED 4b24e: 4a90 tstl %a0@ <== NOT EXECUTED 4b250: 672a beqs 4b27c <== NOT EXECUTED return EINVAL; switch ( policy ) { 4b252: 7204 moveq #4,%d1 <== NOT EXECUTED 4b254: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b256: 640c bccs 4b264 <== NOT EXECUTED return 0; default: return ENOTSUP; } } 4b258: 241f movel %sp@+,%d2 <== NOT EXECUTED case SCHED_SPORADIC: attr->schedpolicy = policy; return 0; default: return ENOTSUP; 4b25a: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED } } 4b260: 4e5e unlk %fp <== NOT EXECUTED 4b262: 4e75 rts <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; switch ( policy ) { 4b264: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4b268: 7417 moveq #23,%d2 <== NOT EXECUTED 4b26a: e1a9 lsll %d0,%d1 <== NOT EXECUTED 4b26c: c282 andl %d2,%d1 <== NOT EXECUTED 4b26e: 67e8 beqs 4b258 <== NOT EXECUTED return 0; default: return ENOTSUP; } } 4b270: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b272: 4e5e unlk %fp <== NOT EXECUTED switch ( policy ) { case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: case SCHED_SPORADIC: attr->schedpolicy = policy; 4b274: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED return 0; 4b278: 4280 clrl %d0 <== NOT EXECUTED default: return ENOTSUP; } } 4b27a: 4e75 rts <== NOT EXECUTED 4b27c: 241f movel %sp@+,%d2 <== NOT EXECUTED pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b27e: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; default: return ENOTSUP; } } 4b280: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b284 : int pthread_attr_setscope( pthread_attr_t *attr, int contentionscope ) { 4b284: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b288: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b28c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 4b290: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b292: 4a88 tstl %a0 <== NOT EXECUTED 4b294: 6720 beqs 4b2b6 <== NOT EXECUTED 4b296: 4a90 tstl %a0@ <== NOT EXECUTED 4b298: 671c beqs 4b2b6 <== NOT EXECUTED return EINVAL; switch ( contentionscope ) { 4b29a: 4a81 tstl %d1 <== NOT EXECUTED 4b29c: 660c bnes 4b2aa <== NOT EXECUTED case PTHREAD_SCOPE_PROCESS: attr->contentionscope = contentionscope; 4b29e: 42a8 000c clrl %a0@(12) <== NOT EXECUTED return 0; 4b2a2: 4280 clrl %d0 <== NOT EXECUTED return ENOTSUP; default: return EINVAL; } } 4b2a4: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b2a6: 4e5e unlk %fp <== NOT EXECUTED 4b2a8: 4e75 rts <== NOT EXECUTED case PTHREAD_SCOPE_PROCESS: attr->contentionscope = contentionscope; return 0; case PTHREAD_SCOPE_SYSTEM: return ENOTSUP; 4b2aa: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; switch ( contentionscope ) { 4b2b0: 7401 moveq #1,%d2 <== NOT EXECUTED 4b2b2: b481 cmpl %d1,%d2 <== NOT EXECUTED 4b2b4: 67ee beqs 4b2a4 <== NOT EXECUTED return ENOTSUP; default: return EINVAL; } } 4b2b6: 241f movel %sp@+,%d2 <== NOT EXECUTED case PTHREAD_SCOPE_SYSTEM: return ENOTSUP; default: return EINVAL; 4b2b8: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4b2ba: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b2e4 : int pthread_attr_setstack( pthread_attr_t *attr, void *stackaddr, size_t stacksize ) { 4b2e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b2e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b2ec: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b2f0: 4a88 tstl %a0 <== NOT EXECUTED 4b2f2: 672e beqs 4b322 <== NOT EXECUTED 4b2f4: 4a90 tstl %a0@ <== NOT EXECUTED 4b2f6: 672a beqs 4b322 <== NOT EXECUTED return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) 4b2f8: 2039 0006 71e2 movel 671e2 ,%d0 <== NOT EXECUTED 4b2fe: d080 addl %d0,%d0 <== NOT EXECUTED 4b300: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b302: 6410 bccs 4b314 <== NOT EXECUTED attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; 4b304: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED else attr->stacksize = stacksize; attr->stackaddr = stackaddr; return 0; 4b308: 4280 clrl %d0 <== NOT EXECUTED if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; attr->stackaddr = stackaddr; 4b30a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED return 0; } 4b310: 4e5e unlk %fp <== NOT EXECUTED 4b312: 4e75 rts <== NOT EXECUTED return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; 4b314: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED attr->stackaddr = stackaddr; return 0; 4b318: 4280 clrl %d0 <== NOT EXECUTED if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; attr->stackaddr = stackaddr; 4b31a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED 4b320: 60ee bras 4b310 <== NOT EXECUTED void *stackaddr, size_t stacksize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b322: 7016 moveq #22,%d0 <== NOT EXECUTED else attr->stacksize = stacksize; attr->stackaddr = stackaddr; return 0; } 4b324: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b2c0 : int pthread_attr_setstackaddr( pthread_attr_t *attr, void *stackaddr ) { 4b2c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b2c4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b2c8: 4a88 tstl %a0 <== NOT EXECUTED 4b2ca: 6710 beqs 4b2dc <== NOT EXECUTED 4b2cc: 4a90 tstl %a0@ <== NOT EXECUTED 4b2ce: 670c beqs 4b2dc <== NOT EXECUTED return EINVAL; attr->stackaddr = stackaddr; return 0; 4b2d0: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->stackaddr = stackaddr; 4b2d2: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED return 0; } 4b2d8: 4e5e unlk %fp <== NOT EXECUTED 4b2da: 4e75 rts <== NOT EXECUTED pthread_attr_t *attr, void *stackaddr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b2dc: 7016 moveq #22,%d0 <== NOT EXECUTED attr->stackaddr = stackaddr; return 0; } 4b2de: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d230 : int pthread_attr_setstacksize( pthread_attr_t *attr, size_t stacksize ) { 4d230: 4e56 0000 linkw %fp,#0 4d234: 206e 0008 moveal %fp@(8),%a0 4d238: 222e 000c movel %fp@(12),%d1 if ( !attr || !attr->is_initialized ) 4d23c: 4a88 tstl %a0 4d23e: 6724 beqs 4d264 <== NEVER TAKEN 4d240: 4a90 tstl %a0@ 4d242: 6720 beqs 4d264 <== NEVER TAKEN return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) 4d244: 2039 0005 f842 movel 5f842 ,%d0 4d24a: d080 addl %d0,%d0 4d24c: b280 cmpl %d0,%d1 4d24e: 650a bcss 4d25a attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; return 0; 4d250: 4280 clrl %d0 } 4d252: 4e5e unlk %fp return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; 4d254: 2141 0008 movel %d1,%a0@(8) return 0; } 4d258: 4e75 rts { if ( !attr || !attr->is_initialized ) return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; 4d25a: 2140 0008 movel %d0,%a0@(8) else attr->stacksize = stacksize; return 0; 4d25e: 4280 clrl %d0 } 4d260: 4e5e unlk %fp 4d262: 4e75 rts pthread_attr_t *attr, size_t stacksize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4d264: 7016 moveq #22,%d0 <== NOT EXECUTED if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; return 0; } 4d266: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000467e4 : */ int pthread_barrier_destroy( pthread_barrier_t *barrier ) { 467e4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 467e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 467ec: 4a88 tstl %a0 <== NOT EXECUTED 467ee: 6730 beqs 46820 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 467f0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 467f4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 467f6: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED 467fc: 4eb9 0004 9104 jsr 49104 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 46802: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46806: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4680a: 6614 bnes 46820 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) { 4680c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4680e: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED 46812: 6712 beqs 46826 <== NOT EXECUTED _Thread_Enable_dispatch(); 46814: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED return EBUSY; 4681a: 7010 moveq #16,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4681c: 4e5e unlk %fp <== NOT EXECUTED 4681e: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46820: 7016 moveq #22,%d0 <== NOT EXECUTED } 46822: 4e5e unlk %fp <== NOT EXECUTED 46824: 4e75 rts <== NOT EXECUTED if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) { _Thread_Enable_dispatch(); return EBUSY; } _Objects_Close( &_POSIX_Barrier_Information, &the_barrier->Object ); 46826: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46828: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED 4682e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46832: 4eb9 0004 8cd4 jsr 48cd4 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free ( POSIX_Barrier_Control *the_barrier ) { _Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object ); 46838: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4683c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4683e: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED 46844: 4eb9 0004 8f98 jsr 48f98 <_Objects_Free> <== NOT EXECUTED _POSIX_Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 4684a: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46850: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46854: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46856: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004685c : int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) { 4685c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46860: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 46864: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46868: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4686c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED const pthread_barrierattr_t *the_attr; /* * Error check parameters */ if ( !barrier ) 46870: 4a8a tstl %a2 <== NOT EXECUTED 46872: 677a beqs 468ee <== NOT EXECUTED return EINVAL; if ( count == 0 ) 46874: 4a82 tstl %d2 <== NOT EXECUTED 46876: 6776 beqs 468ee <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 46878: 4a83 tstl %d3 <== NOT EXECUTED 4687a: 6700 0090 beqw 4690c <== NOT EXECUTED 4687e: 2043 moveal %d3,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 46880: 4a90 tstl %a0@ <== NOT EXECUTED 46882: 676a beqs 468ee <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 46884: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 46888: 6664 bnes 468ee <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4688a: 2039 0006 151c movel 6151c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46890: 5280 addql #1,%d0 <== NOT EXECUTED } /* * Convert from POSIX attributes to Core Barrier attributes */ the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 46892: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED the_attributes.maximum_count = count; 46896: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED 4689a: 23c0 0006 151c movel %d0,6151c <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void ) { return (POSIX_Barrier_Control *) _Objects_Allocate( &_POSIX_Barrier_Information ); 468a0: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED 468a6: 4eb9 0004 8c44 jsr 48c44 <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _POSIX_Barrier_Allocate(); if ( !the_barrier ) { 468ac: 588f addql #4,%sp <== NOT EXECUTED 468ae: 2640 moveal %d0,%a3 <== NOT EXECUTED 468b0: 4a80 tstl %d0 <== NOT EXECUTED 468b2: 6746 beqs 468fa <== NOT EXECUTED _Thread_Enable_dispatch(); return EAGAIN; } _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 468b4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 468b8: 486b 0010 pea %a3@(16) <== NOT EXECUTED 468bc: 4eb9 0004 8214 jsr 48214 <_CORE_barrier_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 468c2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 468c6: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 468c8: 2079 0006 1852 moveal 61852 <_POSIX_Barrier_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 468ce: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 468d0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 468d4: 42ab 000c clrl %a3@(12) <== NOT EXECUTED ); /* * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; 468d8: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 468da: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 468e0: 508f addql #8,%sp <== NOT EXECUTED 468e2: 4280 clrl %d0 <== NOT EXECUTED } 468e4: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 468ea: 4e5e unlk %fp <== NOT EXECUTED 468ec: 4e75 rts <== NOT EXECUTED switch ( the_attr->process_shared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 468ee: 7016 moveq #22,%d0 <== NOT EXECUTED * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; _Thread_Enable_dispatch(); return 0; } 468f0: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 468f6: 4e5e unlk %fp <== NOT EXECUTED 468f8: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _POSIX_Barrier_Allocate(); if ( !the_barrier ) { _Thread_Enable_dispatch(); 468fa: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 46900: 700b moveq #11,%d0 <== NOT EXECUTED * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; _Thread_Enable_dispatch(); return 0; } 46902: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46908: 4e5e unlk %fp <== NOT EXECUTED 4690a: 4e75 rts <== NOT EXECUTED * If the user passed in NULL, use the default attributes */ if ( attr ) { the_attr = attr; } else { (void) pthread_barrierattr_init( &my_attr ); 4690c: 260e movel %fp,%d3 <== NOT EXECUTED 4690e: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED 46914: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46916: 4eb9 0004 6798 jsr 46798 <== NOT EXECUTED 4691c: 588f addql #4,%sp <== NOT EXECUTED the_attr = &my_attr; 4691e: 2043 moveal %d3,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 46920: 4a90 tstl %a0@ <== NOT EXECUTED 46922: 6600 ff60 bnew 46884 <== NOT EXECUTED 46926: 60c6 bras 468ee <== NOT EXECUTED =============================================================================== 00046928 : */ int pthread_barrier_wait( pthread_barrier_t *barrier ) { 46928: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4692c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 46930: 4a88 tstl %a0 <== NOT EXECUTED 46932: 6752 beqs 46986 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 46934: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46938: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4693a: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED 46940: 4eb9 0004 9104 jsr 49104 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 46946: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4694a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4694e: 6636 bnes 46986 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 46950: 42a7 clrl %sp@- <== NOT EXECUTED 46952: 2040 moveal %d0,%a0 <== NOT EXECUTED 46954: 42a7 clrl %sp@- <== NOT EXECUTED 46956: 4878 0001 pea 1 <== NOT EXECUTED 4695a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4695e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 46962: 4eb9 0004 8250 jsr 48250 <_CORE_barrier_Wait> <== NOT EXECUTED the_barrier->Object.id, true, 0, NULL ); _Thread_Enable_dispatch(); 46968: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Barrier_Translate_core_barrier_return_code( _Thread_Executing->Wait.return_code ); 4696e: 2079 0006 19a6 moveal 619a6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED true, 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_Barrier_Translate_core_barrier_return_code( 46974: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46978: 4eb9 0004 cbe4 jsr 4cbe4 <_POSIX_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED 4697e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46982: 4e5e unlk %fp <== NOT EXECUTED 46984: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46986: 7016 moveq #22,%d0 <== NOT EXECUTED } 46988: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046754 : */ int pthread_barrierattr_destroy( pthread_barrierattr_t *attr ) { 46754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46758: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 4675c: 4a88 tstl %a0 <== NOT EXECUTED 4675e: 670c beqs 4676c <== NOT EXECUTED 46760: 4a90 tstl %a0@ <== NOT EXECUTED 46762: 6708 beqs 4676c <== NOT EXECUTED return EINVAL; attr->is_initialized = false; return 0; 46764: 4280 clrl %d0 <== NOT EXECUTED } 46766: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || attr->is_initialized == false ) return EINVAL; attr->is_initialized = false; 46768: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 4676a: 4e75 rts <== NOT EXECUTED int pthread_barrierattr_destroy( pthread_barrierattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 4676c: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 4676e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046774 : int pthread_barrierattr_getpshared( const pthread_barrierattr_t *attr, int *pshared ) { 46774: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46778: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 4677c: 4a88 tstl %a0 <== NOT EXECUTED 4677e: 6712 beqs 46792 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 46780: 4a90 tstl %a0@ <== NOT EXECUTED 46782: 670e beqs 46792 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 46784: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 46788: 4280 clrl %d0 <== NOT EXECUTED } 4678a: 4e5e unlk %fp <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) return EINVAL; *pshared = attr->process_shared; 4678c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; } 46790: 4e75 rts <== NOT EXECUTED { if ( !attr ) return EINVAL; if ( !attr->is_initialized ) return EINVAL; 46792: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 46794: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046798 : */ int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { 46798: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4679c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 467a0: 4a88 tstl %a0 <== NOT EXECUTED 467a2: 670e beqs 467b2 <== NOT EXECUTED return EINVAL; attr->is_initialized = true; 467a4: 7001 moveq #1,%d0 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 467a6: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = true; 467a8: 2080 movel %d0,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; 467aa: 4280 clrl %d0 <== NOT EXECUTED { if ( !attr ) return EINVAL; attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; 467ac: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED return 0; } 467b0: 4e75 rts <== NOT EXECUTED int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { if ( !attr ) return EINVAL; 467b2: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 467b4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000467b8 : int pthread_barrierattr_setpshared( pthread_barrierattr_t *attr, int pshared ) { 467b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 467c0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 467c4: 4a88 tstl %a0 <== NOT EXECUTED 467c6: 670a beqs 467d2 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 467c8: 4a90 tstl %a0@ <== NOT EXECUTED 467ca: 6706 beqs 467d2 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 467cc: 7201 moveq #1,%d1 <== NOT EXECUTED 467ce: b280 cmpl %d0,%d1 <== NOT EXECUTED 467d0: 6406 bccs 467d8 <== NOT EXECUTED case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; return 0; default: return EINVAL; 467d2: 7016 moveq #22,%d0 <== NOT EXECUTED } } 467d4: 4e5e unlk %fp <== NOT EXECUTED 467d6: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( pshared ) { case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 467d8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 467dc: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 467de: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045ea8 : */ int pthread_cancel( pthread_t thread ) { 45ea8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED /* * Don't even think about deleting a resource from an ISR. */ if ( _ISR_Is_in_progress() ) 45eac: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED 45eb2: 6706 beqs 45eba <== NOT EXECUTED return EPROTO; 45eb4: 7047 moveq #71,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45eb6: 4e5e unlk %fp <== NOT EXECUTED 45eb8: 4e75 rts <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 45eba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45ebe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45ec2: 4879 0006 062e pea 6062e <_POSIX_Threads_Information> <== NOT EXECUTED 45ec8: 4eb9 0004 8170 jsr 48170 <_Objects_Get> <== NOT EXECUTED if ( _ISR_Is_in_progress() ) return EPROTO; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 45ece: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45ed2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45ed6: 661c bnes 45ef4 <== NOT EXECUTED case OBJECTS_LOCAL: thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; thread_support->cancelation_requested = 1; 45ed8: 2240 moveal %d0,%a1 <== NOT EXECUTED 45eda: 7201 moveq #1,%d1 <== NOT EXECUTED 45edc: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED 45ee0: 2141 00e0 movel %d1,%a0@(224) <== NOT EXECUTED /* This enables dispatch implicitly */ _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( the_thread ); 45ee4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45ee6: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED return 0; 45eec: 588f addql #4,%sp <== NOT EXECUTED 45eee: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45ef0: 4e5e unlk %fp <== NOT EXECUTED 45ef2: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 45ef4: 7016 moveq #22,%d0 <== NOT EXECUTED } 45ef6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045d1c : */ void pthread_cleanup_pop( int execute ) { 45d1c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45d20: 2039 0006 0090 movel 60090 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45d26: 5280 addql #1,%d0 <== NOT EXECUTED POSIX_Cancel_Handler_control tmp_handler; Chain_Control *handler_stack; POSIX_API_Control *thread_support; ISR_Level level; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45d28: 2079 0006 051a moveal 6051a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ void pthread_cleanup_pop( int execute ) { 45d2e: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 45d32: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED POSIX_Cancel_Handler_control tmp_handler; Chain_Control *handler_stack; POSIX_API_Control *thread_support; ISR_Level level; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45d36: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 45d3a: 23c0 0006 0090 movel %d0,60090 <_Thread_Dispatch_disable_level><== NOT EXECUTED * ensure that we do not get prempted and deleted while we are holding * memory that needs to be freed. */ _Thread_Disable_dispatch(); _ISR_Disable( level ); 45d40: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45d46: 40c2 movew %sr,%d2 <== NOT EXECUTED 45d48: 8082 orl %d2,%d0 <== NOT EXECUTED 45d4a: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 45d4c: 2008 movel %a0,%d0 <== NOT EXECUTED 45d4e: 0680 0000 00e8 addil #232,%d0 <== NOT EXECUTED if ( _Chain_Is_empty( handler_stack ) ) { 45d54: b0a8 00e4 cmpl %a0@(228),%d0 <== NOT EXECUTED 45d58: 6748 beqs 45da2 <== NOT EXECUTED _Thread_Enable_dispatch(); _ISR_Enable( level ); return; } handler = (POSIX_Cancel_Handler_control *) 45d5a: 2068 00ec moveal %a0@(236),%a0 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 45d5e: 2450 moveal %a0@,%a2 <== NOT EXECUTED previous = the_node->previous; 45d60: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED next->previous = previous; 45d64: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED previous->next = next; 45d68: 228a movel %a2,%a1@ <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 45d6a: 46c2 movew %d2,%sr <== NOT EXECUTED 45d6c: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED 45d70: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED tmp_handler = *handler; _Workspace_Free( handler ); 45d74: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45d76: 4eb9 0004 9bae jsr 49bae <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 45d7c: 4eb9 0004 897e jsr 4897e <_Thread_Enable_dispatch> <== NOT EXECUTED if ( execute ) 45d82: 588f addql #4,%sp <== NOT EXECUTED 45d84: 4a83 tstl %d3 <== NOT EXECUTED 45d86: 660a bnes 45d92 <== NOT EXECUTED (*tmp_handler.routine)( tmp_handler.arg ); } 45d88: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45d8e: 4e5e unlk %fp <== NOT EXECUTED 45d90: 4e75 rts <== NOT EXECUTED _Workspace_Free( handler ); _Thread_Enable_dispatch(); if ( execute ) (*tmp_handler.routine)( tmp_handler.arg ); 45d92: 2244 moveal %d4,%a1 <== NOT EXECUTED 45d94: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 45d98: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45d9e: 4e5e unlk %fp <== NOT EXECUTED _Workspace_Free( handler ); _Thread_Enable_dispatch(); if ( execute ) (*tmp_handler.routine)( tmp_handler.arg ); 45da0: 4ed1 jmp %a1@ <== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Disable( level ); if ( _Chain_Is_empty( handler_stack ) ) { _Thread_Enable_dispatch(); 45da2: 4eb9 0004 897e jsr 4897e <_Thread_Enable_dispatch> <== NOT EXECUTED _ISR_Enable( level ); 45da8: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); if ( execute ) (*tmp_handler.routine)( tmp_handler.arg ); } 45daa: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45db0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000462a0 : void pthread_cleanup_push( void (*routine)( void * ), void *arg ) { 462a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 462a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 462a6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 462aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 462ac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED /* * The POSIX standard does not address what to do when the routine * is NULL. It also does not address what happens when we cannot * allocate memory or anything else bad happens. */ if ( !routine ) 462b0: 6754 beqs 46306 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 462b2: 2039 0006 0e92 movel 60e92 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 462b8: 5280 addql #1,%d0 <== NOT EXECUTED 462ba: 23c0 0006 0e92 movel %d0,60e92 <_Thread_Dispatch_disable_level><== NOT EXECUTED return; _Thread_Disable_dispatch(); handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); 462c0: 4878 0010 pea 10 <== NOT EXECUTED 462c4: 4eb9 0004 a96e jsr 4a96e <_Workspace_Allocate> <== NOT EXECUTED if ( handler ) { 462ca: 588f addql #4,%sp <== NOT EXECUTED 462cc: 4a80 tstl %d0 <== NOT EXECUTED 462ce: 6726 beqs 462f6 <== NOT EXECUTED thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 462d0: 2079 0006 131c moveal 6131c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; 462d6: 2228 0102 movel %a0@(258),%d1 <== NOT EXECUTED handler->routine = routine; 462da: 2040 moveal %d0,%a0 <== NOT EXECUTED handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); if ( handler ) { thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; 462dc: 0681 0000 00e4 addil #228,%d1 <== NOT EXECUTED handler->routine = routine; 462e2: 2142 0008 movel %d2,%a0@(8) <== NOT EXECUTED handler->arg = arg; 462e6: 2143 000c movel %d3,%a0@(12) <== NOT EXECUTED _Chain_Append( handler_stack, &handler->Node ); 462ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED 462ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED 462ee: 4eb9 0004 7cc8 jsr 47cc8 <_Chain_Append> <== NOT EXECUTED 462f4: 508f addql #8,%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); } 462f6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 462fa: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 462fe: 4e5e unlk %fp <== NOT EXECUTED handler->routine = routine; handler->arg = arg; _Chain_Append( handler_stack, &handler->Node ); } _Thread_Enable_dispatch(); 46300: 4ef9 0004 96b6 jmp 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED } 46306: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4630a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4630e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004705c : */ int pthread_cond_broadcast( pthread_cond_t *cond ) { 4705c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, true ); 47060: 4878 0001 pea 1 <== NOT EXECUTED 47064: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47068: 4eb9 0004 7238 jsr 47238 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED } 4706e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047074 : */ int pthread_cond_destroy( pthread_cond_t *cond ) { 47074: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47078: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 4707a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4707e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47082: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 47088: 508f addql #8,%sp <== NOT EXECUTED ) { POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 4708a: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 4708c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47090: 6620 bnes 470b2 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_queue_First( &the_cond->Wait_queue ) ) { 47092: 486a 0018 pea %a2@(24) <== NOT EXECUTED 47096: 4eb9 0004 b258 jsr 4b258 <_Thread_queue_First> <== NOT EXECUTED 4709c: 588f addql #4,%sp <== NOT EXECUTED 4709e: 4a80 tstl %d0 <== NOT EXECUTED 470a0: 671a beqs 470bc <== NOT EXECUTED _Thread_Enable_dispatch(); 470a2: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 470a8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_queue_First( &the_cond->Wait_queue ) ) { _Thread_Enable_dispatch(); return EBUSY; 470ac: 7010 moveq #16,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 470ae: 4e5e unlk %fp <== NOT EXECUTED 470b0: 4e75 rts <== NOT EXECUTED 470b2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 470b6: 7016 moveq #22,%d0 <== NOT EXECUTED } 470b8: 4e5e unlk %fp <== NOT EXECUTED 470ba: 4e75 rts <== NOT EXECUTED if ( _Thread_queue_First( &the_cond->Wait_queue ) ) { _Thread_Enable_dispatch(); return EBUSY; } _Objects_Close( 470bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470be: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED 470c4: 4eb9 0004 9ba0 jsr 49ba0 <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free ( POSIX_Condition_variables_Control *the_condition_variable ) { _Objects_Free( 470ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470cc: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED 470d2: 4eb9 0004 9e64 jsr 49e64 <_Objects_Free> <== NOT EXECUTED &_POSIX_Condition_variables_Information, &the_cond->Object ); _POSIX_Condition_variables_Free( the_cond ); _Thread_Enable_dispatch(); 470d8: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 470de: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED &the_cond->Object ); _POSIX_Condition_variables_Free( the_cond ); _Thread_Enable_dispatch(); return 0; 470e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 470e6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 470e8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047164 : int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) { 47164: 4e56 0000 linkw %fp,#0 47168: 2f0b movel %a3,%sp@- 4716a: 2f0a movel %a2,%sp@- 4716c: 246e 000c moveal %fp@(12),%a2 POSIX_Condition_variables_Control *the_cond; const pthread_condattr_t *the_attr; if ( attr ) the_attr = attr; 47170: 4a8a tstl %a2 47172: 6700 0092 beqw 47206 else the_attr = &_POSIX_Condition_variables_Default_attributes; /* * Be careful about attributes when global!!! */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) 47176: 7001 moveq #1,%d0 47178: b0aa 0004 cmpl %a2@(4),%d0 4717c: 6704 beqs 47182 <== NEVER TAKEN return EINVAL; if ( !the_attr->is_initialized ) 4717e: 4a92 tstl %a2@ 47180: 660e bnes 47190 <== ALWAYS TAKEN *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; } 47182: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) return EINVAL; if ( !the_attr->is_initialized ) return EINVAL; 47186: 7016 moveq #22,%d0 <== NOT EXECUTED *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; } 47188: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4718c: 4e5e unlk %fp <== NOT EXECUTED 4718e: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 47190: 2039 0006 26d8 movel 626d8 <_Thread_Dispatch_disable_level>,%d0 47196: 5280 addql #1,%d0 47198: 23c0 0006 26d8 movel %d0,626d8 <_Thread_Dispatch_disable_level> RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control *_POSIX_Condition_variables_Allocate( void ) { return (POSIX_Condition_variables_Control *) _Objects_Allocate( &_POSIX_Condition_variables_Information ); 4719e: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information> 471a4: 4eb9 0004 9b10 jsr 49b10 <_Objects_Allocate> _Thread_Disable_dispatch(); the_cond = _POSIX_Condition_variables_Allocate(); if ( !the_cond ) { 471aa: 588f addql #4,%sp 471ac: 2640 moveal %d0,%a3 471ae: 4a80 tstl %d0 471b0: 675e beqs 47210 <== NEVER TAKEN _Thread_Enable_dispatch(); return ENOMEM; } the_cond->process_shared = the_attr->process_shared; 471b2: 276a 0004 0010 movel %a2@(4),%a3@(16) the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 471b8: 42ab 0014 clrl %a3@(20) _Thread_queue_Initialize( 471bc: 4878 0074 pea 74 471c0: 2f3c 1000 0800 movel #268437504,%sp@- 471c6: 42a7 clrl %sp@- 471c8: 486b 0018 pea %a3@(24) 471cc: 4eb9 0004 b2fc jsr 4b2fc <_Thread_queue_Initialize> uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 471d2: 202b 0008 movel %a3@(8),%d0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 471d6: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 471d8: 2079 0006 2a9a moveal 62a9a <_POSIX_Condition_variables_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 471de: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 471e0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) &_POSIX_Condition_variables_Information, &the_cond->Object, 0 ); *cond = the_cond->Object.id; 471e4: 206e 0008 moveal %fp@(8),%a0 _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 471e8: 42ab 000c clrl %a3@(12) 471ec: 2080 movel %d0,%a0@ _Thread_Enable_dispatch(); 471ee: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> return 0; } 471f4: 246e fff8 moveal %fp@(-8),%a2 *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; 471f8: 4fef 0010 lea %sp@(16),%sp 471fc: 4280 clrl %d0 } 471fe: 266e fffc moveal %fp@(-4),%a3 47202: 4e5e unlk %fp 47204: 4e75 rts { POSIX_Condition_variables_Control *the_cond; const pthread_condattr_t *the_attr; if ( attr ) the_attr = attr; else the_attr = &_POSIX_Condition_variables_Default_attributes; 47206: 45f9 0005 fe9e lea 5fe9e <_POSIX_Condition_variables_Default_attributes>,%a2 4720c: 6000 ff68 braw 47176 _Thread_Disable_dispatch(); the_cond = _POSIX_Condition_variables_Allocate(); if ( !the_cond ) { _Thread_Enable_dispatch(); 47210: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; } 47216: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED the_cond = _POSIX_Condition_variables_Allocate(); if ( !the_cond ) { _Thread_Enable_dispatch(); return ENOMEM; 4721a: 700c moveq #12,%d0 <== NOT EXECUTED *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; } 4721c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 47220: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047224 : */ int pthread_cond_signal( pthread_cond_t *cond ) { 47224: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, false ); 47228: 42a7 clrl %sp@- <== NOT EXECUTED 4722a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4722e: 4eb9 0004 7238 jsr 47238 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED } 47234: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000472a0 : int pthread_cond_timedwait( pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime ) { 472a0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * is valid or not. If it isn't correct and in the future, * then we do a polling operation and convert the UNSATISFIED * status into the appropriate error. */ already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); 472a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 472a8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 472ac: 4eb9 0004 77a8 jsr 477a8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 472b2: 508f addql #8,%sp <== NOT EXECUTED 472b4: 4a80 tstl %d0 <== NOT EXECUTED 472b6: 6728 beqs 472e0 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) already_timedout = true; return _POSIX_Condition_variables_Wait_support( 472b8: 7201 moveq #1,%d1 <== NOT EXECUTED already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 472ba: 5380 subql #1,%d0 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) already_timedout = true; return _POSIX_Condition_variables_Wait_support( 472bc: b280 cmpl %d0,%d1 <== NOT EXECUTED 472be: 54c0 scc %d0 <== NOT EXECUTED 472c0: 49c0 extbl %d0 <== NOT EXECUTED 472c2: 4480 negl %d0 <== NOT EXECUTED 472c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472c6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 472ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 472ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 472d2: 4eb9 0004 7304 jsr 47304 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED 472d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED cond, mutex, ticks, already_timedout ); } 472dc: 4e5e unlk %fp <== NOT EXECUTED 472de: 4e75 rts <== NOT EXECUTED * status into the appropriate error. */ already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 472e0: 7016 moveq #22,%d0 <== NOT EXECUTED cond, mutex, ticks, already_timedout ); } 472e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000472e8 : int pthread_cond_wait( pthread_cond_t *cond, pthread_mutex_t *mutex ) { 472e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Wait_support( 472ec: 42a7 clrl %sp@- <== NOT EXECUTED 472ee: 42a7 clrl %sp@- <== NOT EXECUTED 472f0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 472f4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 472f8: 4eb9 0004 7304 jsr 47304 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED cond, mutex, THREAD_QUEUE_WAIT_FOREVER, false ); } 472fe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046fc4 : */ int pthread_condattr_destroy( pthread_condattr_t *attr ) { 46fc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 46fcc: 4a88 tstl %a0 <== NOT EXECUTED 46fce: 670c beqs 46fdc <== NOT EXECUTED 46fd0: 4a90 tstl %a0@ <== NOT EXECUTED 46fd2: 6708 beqs 46fdc <== NOT EXECUTED return EINVAL; attr->is_initialized = false; return 0; 46fd4: 4280 clrl %d0 <== NOT EXECUTED } 46fd6: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || attr->is_initialized == false ) return EINVAL; attr->is_initialized = false; 46fd8: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 46fda: 4e75 rts <== NOT EXECUTED int pthread_condattr_destroy( pthread_condattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 46fdc: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 46fde: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046fe4 : int pthread_condattr_getpshared( const pthread_condattr_t *attr, int *pshared ) { 46fe4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fe8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 46fec: 4a88 tstl %a0 <== NOT EXECUTED 46fee: 670e beqs 46ffe <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 46ff0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 46ff4: 4280 clrl %d0 <== NOT EXECUTED } 46ff6: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr ) return EINVAL; *pshared = attr->process_shared; 46ff8: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; } 46ffc: 4e75 rts <== NOT EXECUTED const pthread_condattr_t *attr, int *pshared ) { if ( !attr ) return EINVAL; 46ffe: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 47000: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047004 : */ int pthread_condattr_init( pthread_condattr_t *attr ) { 47004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4700c: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr ) 4700e: 4a88 tstl %a0 <== NOT EXECUTED 47010: 671a beqs 4702c <== NOT EXECUTED return EINVAL; *attr = _POSIX_Condition_variables_Default_attributes; return 0; 47012: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr ) return EINVAL; *attr = _POSIX_Condition_variables_Default_attributes; 47014: 2239 0005 fe9e movel 5fe9e <_POSIX_Condition_variables_Default_attributes>,%d1<== NOT EXECUTED 4701a: 2439 0005 fea2 movel 5fea2 <_POSIX_Condition_variables_Default_attributes+0x4>,%d2<== NOT EXECUTED 47020: 2081 movel %d1,%a0@ <== NOT EXECUTED 47022: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED return 0; } 47026: 241f movel %sp@+,%d2 <== NOT EXECUTED 47028: 4e5e unlk %fp <== NOT EXECUTED 4702a: 4e75 rts <== NOT EXECUTED 4702c: 241f movel %sp@+,%d2 <== NOT EXECUTED int pthread_condattr_init( pthread_condattr_t *attr ) { if ( !attr ) return EINVAL; 4702e: 7016 moveq #22,%d0 <== NOT EXECUTED *attr = _POSIX_Condition_variables_Default_attributes; return 0; } 47030: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047034 : int pthread_condattr_setpshared( pthread_condattr_t *attr, int pshared ) { 47034: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47038: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4703c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 47040: 4a88 tstl %a0 <== NOT EXECUTED 47042: 6706 beqs 4704a <== NOT EXECUTED return EINVAL; switch ( pshared ) { 47044: 7201 moveq #1,%d1 <== NOT EXECUTED 47046: b280 cmpl %d0,%d1 <== NOT EXECUTED 47048: 6406 bccs 47050 <== NOT EXECUTED case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; return 0; default: return EINVAL; 4704a: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4704c: 4e5e unlk %fp <== NOT EXECUTED 4704e: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( pshared ) { case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 47050: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 47054: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 47056: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046730 : pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) { 46730: 4e56 ff9c linkw %fp,#-100 46734: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 46738: 246e 000c moveal %fp@(12),%a2 4673c: 262e 0010 movel %fp@(16),%d3 int schedpolicy = SCHED_RR; struct sched_param schedparam; Objects_Name name; int rc; if ( !start_routine ) 46740: 6700 01fc beqw 4693e return EFAULT; the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes; 46744: 4a8a tstl %a2 46746: 6738 beqs 46780 <== NEVER TAKEN if ( !the_attr->is_initialized ) 46748: 4a92 tstl %a2@ 4674a: 6726 beqs 46772 <== NEVER TAKEN * stack space if it is allowed to allocate it itself. * * NOTE: If the user provides the stack we will let it drop below * twice the minimum. */ if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) ) 4674c: 4aaa 0004 tstl %a2@(4) 46750: 670c beqs 4675e <== ALWAYS TAKEN 46752: 2039 0005 f842 movel 5f842 ,%d0 <== NOT EXECUTED 46758: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 4675c: 6214 bhis 46772 <== NOT EXECUTED * If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread * inherits scheduling attributes from the creating thread. If it is * PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the * attributes structure. */ switch ( the_attr->inheritsched ) { 4675e: 202a 0010 movel %a2@(16),%d0 46762: 7201 moveq #1,%d1 46764: b280 cmpl %d0,%d1 46766: 6700 0176 beqw 468de 4676a: 123c 0002 moveb #2,%d1 4676e: b280 cmpl %d0,%d1 46770: 6716 beqs 46788 <== ALWAYS TAKEN /* * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) return EINVAL; 46772: 7416 moveq #22,%d2 <== NOT EXECUTED */ *thread = the_thread->Object.id; _RTEMS_Unlock_allocator(); return 0; } 46774: 2002 movel %d2,%d0 <== NOT EXECUTED 46776: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4677c: 4e5e unlk %fp <== NOT EXECUTED 4677e: 4e75 rts <== NOT EXECUTED int rc; if ( !start_routine ) return EFAULT; the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes; 46780: 45f9 0005 e8be lea 5e8be <_POSIX_Threads_Default_attributes>,%a2<== NOT EXECUTED 46786: 60c0 bras 46748 <== NOT EXECUTED schedpolicy = api->schedpolicy; schedparam = api->schedparam; break; case PTHREAD_EXPLICIT_SCHED: schedpolicy = the_attr->schedpolicy; 46788: 226a 0014 moveal %a2@(20),%a1 schedparam = the_attr->schedparam; 4678c: 2e0e movel %fp,%d7 4678e: 2c0e movel %fp,%d6 46790: 0687 ffff ffe0 addil #-32,%d7 46796: 0686 ffff ffe4 addil #-28,%d6 4679c: 2047 moveal %d7,%a0 4679e: 2a0e movel %fp,%d5 467a0: 280e movel %fp,%d4 467a2: 0685 ffff ffe8 addil #-24,%d5 467a8: 0684 ffff ffec addil #-20,%d4 467ae: 47ee ffdc lea %fp@(-36),%a3 467b2: 4bee fff0 lea %fp@(-16),%a5 467b6: 49ee fff4 lea %fp@(-12),%a4 schedpolicy = api->schedpolicy; schedparam = api->schedparam; break; case PTHREAD_EXPLICIT_SCHED: schedpolicy = the_attr->schedpolicy; 467ba: 2d49 ffd8 movel %a1,%fp@(-40) schedparam = the_attr->schedparam; 467be: 2246 moveal %d6,%a1 467c0: 20aa 001c movel %a2@(28),%a0@ 467c4: 2045 moveal %d5,%a0 467c6: 22aa 0020 movel %a2@(32),%a1@ 467ca: 2244 moveal %d4,%a1 467cc: 26aa 0018 movel %a2@(24),%a3@ 467d0: 20aa 0024 movel %a2@(36),%a0@ 467d4: 22aa 0028 movel %a2@(40),%a1@ 467d8: 2aaa 002c movel %a2@(44),%a5@ 467dc: 28aa 0030 movel %a2@(48),%a4@ /* * Check the contentionscope since rtems only supports PROCESS wide * contention (i.e. no system wide contention). */ if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS ) return ENOTSUP; 467e0: 243c 0000 0086 movel #134,%d2 /* * Check the contentionscope since rtems only supports PROCESS wide * contention (i.e. no system wide contention). */ if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS ) 467e6: 4aaa 000c tstl %a2@(12) 467ea: 6688 bnes 46774 <== NEVER TAKEN return ENOTSUP; /* * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) 467ec: 2f2e ffdc movel %fp@(-36),%sp@- 467f0: 4eb9 0004 d0c8 jsr 4d0c8 <_POSIX_Priority_Is_valid> 467f6: 588f addql #4,%sp 467f8: 4a00 tstb %d0 467fa: 6700 ff76 beqw 46772 core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 467fe: 486e fff8 pea %fp@(-8) 46802: 486e fffc pea %fp@(-4) * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) return EINVAL; core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); 46806: 202e ffdc movel %fp@(-36),%d0 /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 4680a: 2f0b movel %a3,%sp@- 4680c: 2f2e ffd8 movel %fp@(-40),%sp@- RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 46810: 1239 0005 f846 moveb 5f846 ,%d1 * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) return EINVAL; core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); 46816: 2d40 ffd4 movel %d0,%fp@(-44) 4681a: 1d41 ffd3 moveb %d1,%fp@(-45) /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 4681e: 4eb9 0004 d0ec jsr 4d0ec <_POSIX_Thread_Translate_sched_param> schedpolicy, &schedparam, &budget_algorithm, &budget_callout ); if ( rc ) 46824: 4fef 0010 lea %sp@(16),%sp core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 46828: 2400 movel %d0,%d2 schedpolicy, &schedparam, &budget_algorithm, &budget_callout ); if ( rc ) 4682a: 6600 ff48 bnew 46774 #endif /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 4682e: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- 46834: 4eb9 0004 8268 jsr 48268 <_API_Mutex_Lock> * _POSIX_Threads_Allocate */ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information ); 4683a: 4879 0006 128a pea 6128a <_POSIX_Threads_Information> 46840: 4eb9 0004 8cf8 jsr 48cf8 <_Objects_Allocate> * Allocate the thread control block. * * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { 46846: 508f addql #8,%sp 46848: 2040 moveal %d0,%a0 4684a: 4a80 tstl %d0 4684c: 6700 01d4 beqw 46a22 /* * Initialize the core thread for this task. */ name.name_p = NULL; /* posix threads don't have a name by default */ status = _Thread_Initialize( 46850: 222e fffc movel %fp@(-4),%d1 static inline size_t _POSIX_Threads_Ensure_minimum_stack ( size_t size ) { if ( size >= PTHREAD_MINIMUM_STACK_SIZE ) 46854: 2039 0005 f842 movel 5f842 ,%d0 /* * Initialize the core thread for this task. */ name.name_p = NULL; /* posix threads don't have a name by default */ status = _Thread_Initialize( 4685a: 2d41 ffce movel %d1,%fp@(-50) 4685e: 226e fff8 moveal %fp@(-8),%a1 static inline size_t _POSIX_Threads_Ensure_minimum_stack ( size_t size ) { if ( size >= PTHREAD_MINIMUM_STACK_SIZE ) 46862: d080 addl %d0,%d0 /* * Initialize the core thread for this task. */ name.name_p = NULL; /* posix threads don't have a name by default */ status = _Thread_Initialize( 46864: 222a 0008 movel %a2@(8),%d1 46868: b280 cmpl %d0,%d1 4686a: 6302 blss 4686e 4686c: 2001 movel %d1,%d0 4686e: 42a7 clrl %sp@- 46870: 4281 clrl %d1 46872: 122e ffd3 moveb %fp@(-45),%d1 46876: 92ae ffd4 subl %fp@(-44),%d1 4687a: 42a7 clrl %sp@- 4687c: 2f09 movel %a1,%sp@- 4687e: 2f2e ffce movel %fp@(-50),%sp@- 46882: 4878 0001 pea 1 46886: 2f01 movel %d1,%sp@- 46888: 4878 0001 pea 1 4688c: 2f00 movel %d0,%sp@- 4688e: 2f2a 0004 movel %a2@(4),%sp@- 46892: 2f08 movel %a0,%sp@- 46894: 4879 0006 128a pea 6128a <_POSIX_Threads_Information> 4689a: 2d48 ffca movel %a0,%fp@(-54) 4689e: 4eb9 0004 9da8 jsr 49da8 <_Thread_Initialize> budget_callout, 0, /* isr level */ name /* posix threads don't have a name */ ); if ( !status ) { 468a4: 206e ffca moveal %fp@(-54),%a0 468a8: 4fef 002c lea %sp@(44),%sp 468ac: 4a00 tstb %d0 468ae: 6600 009c bnew 4694c RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 468b2: 2f08 movel %a0,%sp@- 468b4: 4879 0006 128a pea 6128a <_POSIX_Threads_Information> _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); return EAGAIN; 468ba: 740b moveq #11,%d2 468bc: 4eb9 0004 904c jsr 4904c <_Objects_Free> name /* posix threads don't have a name */ ); if ( !status ) { _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 468c2: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- 468c8: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> return EAGAIN; 468ce: 4fef 000c lea %sp@(12),%sp */ *thread = the_thread->Object.id; _RTEMS_Unlock_allocator(); return 0; } 468d2: 2002 movel %d2,%d0 468d4: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 468da: 4e5e unlk %fp 468dc: 4e75 rts * PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the * attributes structure. */ switch ( the_attr->inheritsched ) { case PTHREAD_INHERIT_SCHED: api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 468de: 2079 0006 1552 moveal 61552 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED schedpolicy = api->schedpolicy; schedparam = api->schedparam; 468e4: 47ee ffdc lea %fp@(-36),%a3 <== NOT EXECUTED 468e8: 2e0e movel %fp,%d7 <== NOT EXECUTED 468ea: 0687 ffff ffe0 addil #-32,%d7 <== NOT EXECUTED 468f0: 2247 moveal %d7,%a1 <== NOT EXECUTED 468f2: 2c0e movel %fp,%d6 <== NOT EXECUTED 468f4: 0686 ffff ffe4 addil #-28,%d6 <== NOT EXECUTED 468fa: 2a0e movel %fp,%d5 <== NOT EXECUTED 468fc: 0685 ffff ffe8 addil #-24,%d5 <== NOT EXECUTED 46902: 280e movel %fp,%d4 <== NOT EXECUTED 46904: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED 4690a: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED 4690e: 49ee fff4 lea %fp@(-12),%a4 <== NOT EXECUTED * PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the * attributes structure. */ switch ( the_attr->inheritsched ) { case PTHREAD_INHERIT_SCHED: api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 46912: 2028 0102 movel %a0@(258),%d0 <== NOT EXECUTED schedpolicy = api->schedpolicy; schedparam = api->schedparam; 46916: 2040 moveal %d0,%a0 <== NOT EXECUTED 46918: 41e8 0088 lea %a0@(136),%a0 <== NOT EXECUTED 4691c: 2698 movel %a0@+,%a3@ <== NOT EXECUTED 4691e: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46920: 2246 moveal %d6,%a1 <== NOT EXECUTED 46922: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46924: 2245 moveal %d5,%a1 <== NOT EXECUTED 46926: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46928: 2244 moveal %d4,%a1 <== NOT EXECUTED 4692a: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 4692c: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED 4692e: 2890 movel %a0@,%a4@ <== NOT EXECUTED * attributes structure. */ switch ( the_attr->inheritsched ) { case PTHREAD_INHERIT_SCHED: api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; schedpolicy = api->schedpolicy; 46930: 2040 moveal %d0,%a0 <== NOT EXECUTED 46932: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 46936: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED schedparam = api->schedparam; break; 4693a: 6000 fea4 braw 467e0 <== NOT EXECUTED struct sched_param schedparam; Objects_Name name; int rc; if ( !start_routine ) return EFAULT; 4693e: 740e moveq #14,%d2 */ *thread = the_thread->Object.id; _RTEMS_Unlock_allocator(); return 0; } 46940: 2002 movel %d2,%d0 46942: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 46948: 4e5e unlk %fp 4694a: 4e75 rts } /* * finish initializing the per API structure */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4694c: 2268 0102 moveal %a0@(258),%a1 api->Attributes = *the_attr; 46950: 4878 0040 pea 40 46954: 2f0a movel %a2,%sp@- 46956: 2d48 ffca movel %a0,%fp@(-54) 4695a: 2f09 movel %a1,%sp@- 4695c: 2d49 ffc6 movel %a1,%fp@(-58) 46960: 4eb9 0005 0198 jsr 50198 api->detachstate = the_attr->detachstate; 46966: 226e ffc6 moveal %fp@(-58),%a1 4696a: 236a 003c 0040 movel %a2@(60),%a1@(64) api->schedpolicy = schedpolicy; api->schedparam = schedparam; 46970: 45e9 0088 lea %a1@(136),%a2 46974: 24d3 movel %a3@,%a2@+ 46976: 2647 moveal %d7,%a3 46978: 24d3 movel %a3@,%a2@+ 4697a: 2646 moveal %d6,%a3 4697c: 24d3 movel %a3@,%a2@+ 4697e: 2645 moveal %d5,%a3 46980: 24d3 movel %a3@,%a2@+ 46982: 2644 moveal %d4,%a3 46984: 24d3 movel %a3@,%a2@+ 46986: 24d5 movel %a5@,%a2@+ */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; api->Attributes = *the_attr; api->detachstate = the_attr->detachstate; api->schedpolicy = schedpolicy; 46988: 202e ffd8 movel %fp@(-40),%d0 api->schedparam = schedparam; 4698c: 2494 movel %a4@,%a2@ /* * POSIX threads are allocated and started in one operation. */ status = _Thread_Start( 4698e: 206e ffca moveal %fp@(-54),%a0 */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; api->Attributes = *the_attr; api->detachstate = the_attr->detachstate; api->schedpolicy = schedpolicy; 46992: 2340 0084 movel %d0,%a1@(132) api->schedparam = schedparam; /* * POSIX threads are allocated and started in one operation. */ status = _Thread_Start( 46996: 42a7 clrl %sp@- 46998: 2f2e 0014 movel %fp@(20),%sp@- 4699c: 2f03 movel %d3,%sp@- 4699e: 4878 0001 pea 1 469a2: 2f08 movel %a0,%sp@- 469a4: 4eb9 0004 a7a4 jsr 4a7a4 <_Thread_Start> _RTEMS_Unlock_allocator(); return EINVAL; } #endif if ( schedpolicy == SCHED_SPORADIC ) { 469aa: 206e ffca moveal %fp@(-54),%a0 469ae: 4fef 0020 lea %sp@(32),%sp 469b2: 7204 moveq #4,%d1 469b4: 226e ffc6 moveal %fp@(-58),%a1 469b8: b2ae ffd8 cmpl %fp@(-40),%d1 469bc: 6722 beqs 469e0 <== NEVER TAKEN } /* * Return the id and indicate we successfully created the thread */ *thread = the_thread->Object.id; 469be: 226e 0008 moveal %fp@(8),%a1 469c2: 22a8 0008 movel %a0@(8),%a1@ _RTEMS_Unlock_allocator(); 469c6: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- 469cc: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> return 0; 469d2: 588f addql #4,%sp } 469d4: 2002 movel %d2,%d0 469d6: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 469dc: 4e5e unlk %fp 469de: 4e75 rts return EINVAL; } #endif if ( schedpolicy == SCHED_SPORADIC ) { _Watchdog_Insert_ticks( 469e0: 4869 0090 pea %a1@(144) <== NOT EXECUTED 469e4: 4eb9 0004 a9ac jsr 4a9ac <_Timespec_To_ticks> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 469ea: 226e ffc6 moveal %fp@(-58),%a1 <== NOT EXECUTED 469ee: 2340 00b4 movel %d0,%a1@(180) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 469f2: 4869 00a8 pea %a1@(168) <== NOT EXECUTED 469f6: 4879 0006 11a8 pea 611a8 <_Watchdog_Ticks_chain> <== NOT EXECUTED 469fc: 4eb9 0004 ad08 jsr 4ad08 <_Watchdog_Insert> <== NOT EXECUTED 46a02: 206e ffca moveal %fp@(-54),%a0 <== NOT EXECUTED 46a06: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } /* * Return the id and indicate we successfully created the thread */ *thread = the_thread->Object.id; 46a0a: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 46a0e: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED _RTEMS_Unlock_allocator(); 46a12: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46a18: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> <== NOT EXECUTED return 0; 46a1e: 588f addql #4,%sp <== NOT EXECUTED 46a20: 60b2 bras 469d4 <== NOT EXECUTED * * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { _RTEMS_Unlock_allocator(); 46a22: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED return EAGAIN; 46a28: 143c 000b moveb #11,%d2 <== NOT EXECUTED * * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { _RTEMS_Unlock_allocator(); 46a2c: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> <== NOT EXECUTED return EAGAIN; 46a32: 588f addql #4,%sp <== NOT EXECUTED */ *thread = the_thread->Object.id; _RTEMS_Unlock_allocator(); return 0; } 46a34: 2002 movel %d2,%d0 <== NOT EXECUTED 46a36: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED 46a3c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046754 : #include int pthread_detach( pthread_t thread ) { 46754: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 46758: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4675c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46760: 4879 0006 1d9a pea 61d9a <_POSIX_Threads_Information> <== NOT EXECUTED 46766: 4eb9 0004 8d18 jsr 48d18 <_Objects_Get> <== NOT EXECUTED register Thread_Control *the_thread; POSIX_API_Control *api; Objects_Locations location; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 4676c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46770: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46774: 6616 bnes 4678c <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; api->detachstate = PTHREAD_CREATE_DETACHED; 46776: 2240 moveal %d0,%a1 <== NOT EXECUTED 46778: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED 4677c: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED _Thread_Enable_dispatch(); 46780: 4eb9 0004 984a jsr 4984a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46786: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 46788: 4e5e unlk %fp <== NOT EXECUTED 4678a: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 4678c: 7003 moveq #3,%d0 <== NOT EXECUTED } 4678e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046a40 : int pthread_equal( pthread_t t1, pthread_t t2 ) { 46a40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * can to insure that both ids are valid. Otherwise, we will do the * cheapest possible thing to determine if they are equal. */ #ifndef RTEMS_DEBUG return _Objects_Are_ids_equal( t1, t2 ); 46a44: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46a48: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46a4c: 57c0 seq %d0 <== NOT EXECUTED break; } return status; #endif } 46a4e: 4e5e unlk %fp <== NOT EXECUTED * can to insure that both ids are valid. Otherwise, we will do the * cheapest possible thing to determine if they are equal. */ #ifndef RTEMS_DEBUG return _Objects_Are_ids_equal( t1, t2 ); 46a50: 49c0 extbl %d0 <== NOT EXECUTED break; } return status; #endif } 46a52: 4480 negl %d0 <== NOT EXECUTED ... =============================================================================== 0004e36c : } void pthread_exit( void *value_ptr ) { 4e36c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, value_ptr ); 4e370: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e374: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4e37a: 4eb9 0004 e2fc jsr 4e2fc <_POSIX_Thread_Exit> <== NOT EXECUTED 4e380: 508f addql #8,%sp <== NOT EXECUTED } 4e382: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046228 : int pthread_getcpuclockid( pthread_t pid, clockid_t *clock_id ) { 46228: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4622c: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 46232: 7258 moveq #88,%d1 <== NOT EXECUTED 46234: 2040 moveal %d0,%a0 <== NOT EXECUTED } 46236: 70ff moveq #-1,%d0 <== NOT EXECUTED 46238: 4e5e unlk %fp <== NOT EXECUTED int pthread_getcpuclockid( pthread_t pid, clockid_t *clock_id ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4623a: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00048bc4 : int pthread_getschedparam( pthread_t thread, int *policy, struct sched_param *param ) { 48bc4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48bc8: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 48bcc: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 48bd0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED Objects_Locations location; POSIX_API_Control *api; register Thread_Control *the_thread; if ( !policy || !param ) 48bd4: 4a8b tstl %a3 <== NOT EXECUTED 48bd6: 676e beqs 48c46 <== NOT EXECUTED 48bd8: 4a8a tstl %a2 <== NOT EXECUTED 48bda: 676a beqs 48c46 <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 48bdc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48be0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48be4: 4879 0006 518a pea 6518a <_POSIX_Threads_Information> <== NOT EXECUTED 48bea: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 48bf0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48bf4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48bf8: 6640 bnes 48c3a <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 48bfa: 2040 moveal %d0,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 48bfc: 4281 clrl %d1 <== NOT EXECUTED 48bfe: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED if ( policy ) *policy = api->schedpolicy; if ( param ) { *param = api->schedparam; 48c02: 204a moveal %a2,%a0 <== NOT EXECUTED 48c04: 43ec 0088 lea %a4@(136),%a1 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( policy ) *policy = api->schedpolicy; 48c08: 26ac 0084 movel %a4@(132),%a3@ <== NOT EXECUTED 48c0c: 1239 0006 36e6 moveb 636e6 ,%d1 <== NOT EXECUTED if ( param ) { *param = api->schedparam; 48c12: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c14: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c16: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c18: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c1a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c1c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c1e: 2091 movel %a1@,%a0@ <== NOT EXECUTED 48c20: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c22: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED 48c26: 2481 movel %d1,%a2@ <== NOT EXECUTED param->sched_priority = _POSIX_Priority_From_core( the_thread->current_priority ); } _Thread_Enable_dispatch(); 48c28: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED break; } return ESRCH; } 48c2e: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED *param = api->schedparam; param->sched_priority = _POSIX_Priority_From_core( the_thread->current_priority ); } _Thread_Enable_dispatch(); return 0; 48c34: 4280 clrl %d0 <== NOT EXECUTED break; } return ESRCH; } 48c36: 4e5e unlk %fp <== NOT EXECUTED 48c38: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 48c3a: 7003 moveq #3,%d0 <== NOT EXECUTED } 48c3c: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 48c42: 4e5e unlk %fp <== NOT EXECUTED 48c44: 4e75 rts <== NOT EXECUTED Objects_Locations location; POSIX_API_Control *api; register Thread_Control *the_thread; if ( !policy || !param ) return EINVAL; 48c46: 7016 moveq #22,%d0 <== NOT EXECUTED break; } return ESRCH; } 48c48: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 48c4e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046530 : */ void *pthread_getspecific( pthread_key_t key ) { 46530: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 46534: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46536: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_key_t id, Objects_Locations *location ) { return (POSIX_Keys_Control *) _Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location ); 46538: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4653c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46540: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 46546: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED uint32_t index; Objects_Locations location; void *key_data; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 4654c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46550: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46554: 6640 bnes 46596 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 46556: 2079 0006 20c2 moveal 620c2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 4655c: 7618 moveq #24,%d3 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); key_data = (void *) the_key->Values[ api ][ index ]; 4655e: 2240 moveal %d0,%a1 <== NOT EXECUTED the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 46560: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 46564: 2202 movel %d2,%d1 <== NOT EXECUTED 46566: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 46568: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 4656c: c283 andl %d3,%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); 4656e: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED key_data = (void *) the_key->Values[ api ][ index ]; 46574: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 46578: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED _Thread_Enable_dispatch(); 4657c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46580: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED return key_data; 46586: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return NULL; } 4658a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4658e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 46592: 4e5e unlk %fp <== NOT EXECUTED 46594: 4e75 rts <== NOT EXECUTED 46596: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return NULL; 4659a: 4280 clrl %d0 <== NOT EXECUTED } 4659c: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 465a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b844 : int pthread_join( pthread_t thread, void **value_ptr ) { 4b844: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4b848: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b84a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4b84e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b852: 4879 0006 8c76 pea 68c76 <_POSIX_Threads_Information> <== NOT EXECUTED 4b858: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4b85c: 4eb9 0004 de74 jsr 4de74 <_Objects_Get> <== NOT EXECUTED POSIX_API_Control *api; Objects_Locations location; void *return_pointer; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 4b862: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b866: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4b86a: 670a beqs 4b876 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b86c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 4b870: 7003 moveq #3,%d0 <== NOT EXECUTED } 4b872: 4e5e unlk %fp <== NOT EXECUTED 4b874: 4e75 rts <== NOT EXECUTED the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4b876: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b878: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { 4b87c: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 4b880: 6746 beqs 4b8c8 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Executing ); 4b882: 2279 0006 8f3e moveal 68f3e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED _Thread_Enable_dispatch(); return EINVAL; } if ( _Thread_Is_executing( the_thread ) ) { 4b888: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b88a: 674c beqs 4b8d8 <== NOT EXECUTED /* * Put ourself on the threads join list */ _Thread_Executing->Wait.return_argument = &return_pointer; 4b88c: 200e movel %fp,%d0 <== NOT EXECUTED 4b88e: 5180 subql #8,%d0 <== NOT EXECUTED 4b890: 2340 0028 movel %d0,%a1@(40) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4b894: 7001 moveq #1,%d0 <== NOT EXECUTED 4b896: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &api->Join_List ); _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT ); 4b89a: 4879 0004 f244 pea 4f244 <_Thread_queue_Timeout> <== NOT EXECUTED 4b8a0: 42a7 clrl %sp@- <== NOT EXECUTED 4b8a2: 4868 0044 pea %a0@(68) <== NOT EXECUTED 4b8a6: 4eb9 0004 ee80 jsr 4ee80 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 4b8ac: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( value_ptr ) 4b8b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b8b6: 4a8a tstl %a2 <== NOT EXECUTED 4b8b8: 672e beqs 4b8e8 <== NOT EXECUTED *value_ptr = return_pointer; 4b8ba: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED return 0; 4b8be: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8c0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4b8c4: 4e5e unlk %fp <== NOT EXECUTED 4b8c6: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { _Thread_Enable_dispatch(); 4b8c8: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8ce: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { _Thread_Enable_dispatch(); return EINVAL; 4b8d2: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8d4: 4e5e unlk %fp <== NOT EXECUTED 4b8d6: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); return EINVAL; } if ( _Thread_Is_executing( the_thread ) ) { _Thread_Enable_dispatch(); 4b8d8: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8de: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED return EINVAL; } if ( _Thread_Is_executing( the_thread ) ) { _Thread_Enable_dispatch(); return EDEADLK; 4b8e2: 702d moveq #45,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8e4: 4e5e unlk %fp <== NOT EXECUTED 4b8e6: 4e75 rts <== NOT EXECUTED 4b8e8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( value_ptr ) *value_ptr = return_pointer; return 0; 4b8ec: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4b8ee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000463ac : int pthread_key_create( pthread_key_t *key, void (*destructor)( void * ) ) { 463ac: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 463b0: 2039 0006 1c38 movel 61c38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 463b6: 5280 addql #1,%d0 <== NOT EXECUTED 463b8: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 463bc: 23c0 0006 1c38 movel %d0,61c38 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free keys control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) { return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information ); 463c2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 463c8: 4eb9 0004 893c jsr 4893c <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_key = _POSIX_Keys_Allocate(); if ( !the_key ) { 463ce: 588f addql #4,%sp <== NOT EXECUTED 463d0: 2840 moveal %d0,%a4 <== NOT EXECUTED 463d2: 4a80 tstl %d0 <== NOT EXECUTED 463d4: 677e beqs 46454 <== NOT EXECUTED _Thread_Enable_dispatch(); return EAGAIN; } the_key->destructor = destructor; 463d6: 45f9 0006 1bf8 lea 61bf8 <_Objects_Information_table+0x4>,%a2<== NOT EXECUTED int _EXFUN(pthread_once, (pthread_once_t *__once_control, void (*__init_routine)(void))); /* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */ int _EXFUN(pthread_key_create, 463dc: 47ec 0018 lea %a4@(24),%a3 <== NOT EXECUTED 463e0: 4bf9 0004 ac7a lea 4ac7a <_Workspace_Allocate>,%a5 <== NOT EXECUTED 463e6: 296e 000c 0010 movel %fp@(12),%a4@(16) <== NOT EXECUTED _Thread_Enable_dispatch(); return ENOMEM; } the_key->Values[ the_api ] = table; memset( table, '\0', bytes_to_allocate ); 463ec: 263c 0005 0024 movel #327716,%d3 <== NOT EXECUTED INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); 463f2: 205a moveal %a2@+,%a0 <== NOT EXECUTED 463f4: 4282 clrl %d2 <== NOT EXECUTED 463f6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 463fa: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED * APIs are optional. * * NOTE: Currently RTEMS Classic API tasks are always enabled. */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { the_key->Values[ the_api ] = NULL; 463fe: 4293 clrl %a3@ <== NOT EXECUTED INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); 46400: 5282 addql #1,%d2 <== NOT EXECUTED true, INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * 46402: e58a lsll #2,%d2 <== NOT EXECUTED (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 46404: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46406: 4e95 jsr %a5@ <== NOT EXECUTED if ( !table ) { 46408: 588f addql #4,%sp <== NOT EXECUTED 4640a: 4a80 tstl %d0 <== NOT EXECUTED 4640c: 6758 beqs 46466 <== NOT EXECUTED _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); return ENOMEM; } the_key->Values[ the_api ] = table; 4640e: 26c0 movel %d0,%a3@+ <== NOT EXECUTED memset( table, '\0', bytes_to_allocate ); 46410: 2043 moveal %d3,%a0 <== NOT EXECUTED 46412: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46414: 42a7 clrl %sp@- <== NOT EXECUTED 46416: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46418: 4e90 jsr %a0@ <== NOT EXECUTED * This is a bit more complex than one might initially expect because * APIs are optional. * * NOTE: Currently RTEMS Classic API tasks are always enabled. */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { 4641a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4641e: b5fc 0006 1c04 cmpal #400388,%a2 <== NOT EXECUTED 46424: 66cc bnes 463f2 <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46426: 202c 0008 movel %a4@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 4642a: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4642c: 2079 0006 1fc0 moveal 61fc0 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46432: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46434: 218c 1c00 movel %a4,%a0@(00000000,%d1:l:4) <== NOT EXECUTED the_key->Values[ the_api ] = table; memset( table, '\0', bytes_to_allocate ); } _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; 46438: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 4643c: 42ac 000c clrl %a4@(12) <== NOT EXECUTED 46440: 2080 movel %d0,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 46442: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 46448: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED } _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; _Thread_Enable_dispatch(); return 0; 4644e: 4280 clrl %d0 <== NOT EXECUTED } 46450: 4e5e unlk %fp <== NOT EXECUTED 46452: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); the_key = _POSIX_Keys_Allocate(); if ( !the_key ) { _Thread_Enable_dispatch(); 46454: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 4645a: 700b moveq #11,%d0 <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; _Thread_Enable_dispatch(); return 0; } 4645c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 46462: 4e5e unlk %fp <== NOT EXECUTED 46464: 4e75 rts <== NOT EXECUTED bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); if ( !table ) { _POSIX_Keys_Free_memory( the_key ); 46466: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46468: 4eb9 0004 64fc jsr 464fc <_POSIX_Keys_Free_memory> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 4646e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46470: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 46476: 4eb9 0004 8c90 jsr 48c90 <_Objects_Free> <== NOT EXECUTED _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); 4647c: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED return ENOMEM; 46482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46486: 700c moveq #12,%d0 <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; _Thread_Enable_dispatch(); return 0; } 46488: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4648e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046494 : * 17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */ int pthread_key_delete( pthread_key_t key ) { 46494: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46498: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_key_t id, Objects_Locations *location ) { return (POSIX_Keys_Control *) _Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location ); 4649a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4649e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 464a2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 464a8: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED POSIX_Keys_Control *the_key; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 464ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 464b2: 2400 movel %d0,%d2 <== NOT EXECUTED 464b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 464b8: 6638 bnes 464f2 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Keys_Information, &the_key->Object ); 464ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 464bc: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 464c2: 4eb9 0004 89cc jsr 489cc <_Objects_Close> <== NOT EXECUTED _POSIX_Keys_Free_memory( the_key ); 464c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464ca: 4eb9 0004 64fc jsr 464fc <_POSIX_Keys_Free_memory> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 464d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464d2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 464d8: 4eb9 0004 8c90 jsr 48c90 <_Objects_Free> <== NOT EXECUTED /* * NOTE: The destructor is not called and it is the responsibility * of the application to free the memory. */ _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); 464de: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 464e4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED * NOTE: The destructor is not called and it is the responsibility * of the application to free the memory. */ _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); return 0; 464e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 464ec: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 464ee: 4e5e unlk %fp <== NOT EXECUTED 464f0: 4e75 rts <== NOT EXECUTED 464f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 464f6: 7016 moveq #22,%d0 <== NOT EXECUTED } 464f8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005c518 : int pthread_kill( pthread_t thread, int sig ) { 5c518: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5c51c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5c520: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED POSIX_API_Control *api; Thread_Control *the_thread; Objects_Locations location; if ( !sig ) 5c524: 6700 0098 beqw 5c5be <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 5c528: 2602 movel %d2,%d3 <== NOT EXECUTED 5c52a: 5383 subql #1,%d3 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 5c52c: 701f moveq #31,%d0 <== NOT EXECUTED 5c52e: b083 cmpl %d3,%d0 <== NOT EXECUTED 5c530: 6500 008c bcsw 5c5be <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 5c534: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c538: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c53c: 4879 0005 fe3a pea 5fe3a <_POSIX_Threads_Information> <== NOT EXECUTED 5c542: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 5c548: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c54c: 2440 moveal %d0,%a2 <== NOT EXECUTED 5c54e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5c552: 6600 0082 bnew 5c5d6 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 5c556: 2202 movel %d2,%d1 <== NOT EXECUTED 5c558: 2002 movel %d2,%d0 <== NOT EXECUTED 5c55a: e589 lsll #2,%d1 <== NOT EXECUTED 5c55c: e988 lsll #4,%d0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * If sig == 0 then just validate arguments */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5c55e: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 5c562: 9081 subl %d1,%d0 <== NOT EXECUTED 5c564: 0680 0006 013c addil #393532,%d0 <== NOT EXECUTED 5c56a: 7201 moveq #1,%d1 <== NOT EXECUTED 5c56c: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c56e: b291 cmpl %a1@,%d1 <== NOT EXECUTED 5c570: 6728 beqs 5c59a <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 5c572: 7001 moveq #1,%d0 <== NOT EXECUTED 5c574: e7a8 lsll %d3,%d0 <== NOT EXECUTED return 0; } /* XXX critical section */ api->signals_pending |= signo_to_mask( sig ); 5c576: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); 5c57a: 42a7 clrl %sp@- <== NOT EXECUTED 5c57c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c57e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c580: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 5c586: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c58a: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c590: 6708 beqs 5c59a <== NOT EXECUTED 5c592: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c598: 6712 beqs 5c5ac <== NOT EXECUTED _Thread_Dispatch_necessary = true; } _Thread_Enable_dispatch(); 5c59a: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 5c5a0: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); } 5c5a2: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c5a8: 4e5e unlk %fp <== NOT EXECUTED 5c5aa: 4e75 rts <== NOT EXECUTED api->signals_pending |= signo_to_mask( sig ); (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; 5c5ac: 7001 moveq #1,%d0 <== NOT EXECUTED 5c5ae: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED } _Thread_Enable_dispatch(); 5c5b4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 5c5ba: 4280 clrl %d0 <== NOT EXECUTED 5c5bc: 60e4 bras 5c5a2 <== NOT EXECUTED if ( !sig ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) rtems_set_errno_and_return_minus_one( EINVAL ); 5c5be: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 5c5c4: 7416 moveq #22,%d2 <== NOT EXECUTED 5c5c6: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c5c8: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c5ca: 2082 movel %d2,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); } 5c5cc: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c5d2: 4e5e unlk %fp <== NOT EXECUTED 5c5d4: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); 5c5d6: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 5c5dc: 7203 moveq #3,%d1 <== NOT EXECUTED 5c5de: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c5e0: 70ff moveq #-1,%d0 <== NOT EXECUTED } 5c5e2: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); 5c5e8: 2081 movel %d1,%a0@ <== NOT EXECUTED } 5c5ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048240 : */ int pthread_mutex_destroy( pthread_mutex_t *mutex ) { 48240: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48244: 2f0a movel %a2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 48246: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4824a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4824e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 48254: 508f addql #8,%sp <== NOT EXECUTED ) { register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 48256: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 48258: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4825c: 670a beqs 48268 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4825e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 48262: 7016 moveq #22,%d0 <== NOT EXECUTED } 48264: 4e5e unlk %fp <== NOT EXECUTED 48266: 4e75 rts <== NOT EXECUTED /* * XXX: There is an error for the mutex being locked * or being in use by a condition variable. */ if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) { 48268: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED 4826c: 6610 bnes 4827e <== NOT EXECUTED _Thread_Enable_dispatch(); 4826e: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 48274: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED * or being in use by a condition variable. */ if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) { _Thread_Enable_dispatch(); return EBUSY; 48278: 7010 moveq #16,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4827a: 4e5e unlk %fp <== NOT EXECUTED 4827c: 4e75 rts <== NOT EXECUTED if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) { _Thread_Enable_dispatch(); return EBUSY; } _Objects_Close( &_POSIX_Mutex_Information, &the_mutex->Object ); 4827e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48280: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 48286: 4eb9 0004 ae04 jsr 4ae04 <_Objects_Close> <== NOT EXECUTED _CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL ); 4828c: 4878 0016 pea 16 <== NOT EXECUTED 48290: 42a7 clrl %sp@- <== NOT EXECUTED 48292: 486a 0014 pea %a2@(20) <== NOT EXECUTED 48296: 4eb9 0004 a37c jsr 4a37c <_CORE_mutex_Flush> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Free ( POSIX_Mutex_Control *the_mutex ) { _Objects_Free( &_POSIX_Mutex_Information, &the_mutex->Object ); 4829c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4829e: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED 482a4: 4eb9 0004 b0c8 jsr 4b0c8 <_Objects_Free> <== NOT EXECUTED _POSIX_Mutex_Free( the_mutex ); _Thread_Enable_dispatch(); 482aa: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 482b0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL ); _POSIX_Mutex_Free( the_mutex ); _Thread_Enable_dispatch(); return 0; 482b4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 482b8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 482ba: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000483b4 : int pthread_mutex_getprioceiling( pthread_mutex_t *mutex, int *prioceiling ) { 483b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 483b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483ba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; if ( !prioceiling ) 483be: 4a8a tstl %a2 <== NOT EXECUTED 483c0: 6736 beqs 483f8 <== NOT EXECUTED return EINVAL; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 483c2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 483c6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 483ca: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 483d0: 508f addql #8,%sp <== NOT EXECUTED 483d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 483d6: 6620 bnes 483f8 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 483d8: 4281 clrl %d1 <== NOT EXECUTED 483da: 1239 0006 36e6 moveb 636e6 ,%d1 <== NOT EXECUTED 483e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 483e2: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED 483e6: 2481 movel %d1,%a2@ <== NOT EXECUTED case OBJECTS_LOCAL: *prioceiling = _POSIX_Priority_From_core( the_mutex->Mutex.Attributes.priority_ceiling ); _Thread_Enable_dispatch(); 483e8: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 483ee: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_LOCAL: *prioceiling = _POSIX_Priority_From_core( the_mutex->Mutex.Attributes.priority_ceiling ); _Thread_Enable_dispatch(); return 0; 483f2: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 483f4: 4e5e unlk %fp <== NOT EXECUTED 483f6: 4e75 rts <== NOT EXECUTED 483f8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 483fc: 7016 moveq #22,%d0 <== NOT EXECUTED } 483fe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048404 : int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutexattr_t *attr ) { 48404: 4e56 fff0 linkw %fp,#-16 48408: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ 4840c: 266e 0008 moveal %fp@(8),%a3 48410: 246e 000c moveal %fp@(12),%a2 POSIX_Mutex_Control *the_mutex; CORE_mutex_Attributes *the_mutex_attr; const pthread_mutexattr_t *the_attr; CORE_mutex_Disciplines the_discipline; if ( attr ) the_attr = attr; 48414: 4a8a tstl %a2 48416: 6700 00f6 beqw 4850e else the_attr = &_POSIX_Mutex_Default_attributes; /* Check for NULL mutex */ if ( !mutex ) 4841a: 4a8b tstl %a3 4841c: 6700 00e4 beqw 48502 } } } #endif if ( !the_attr->is_initialized ) 48420: 4a92 tstl %a2@ 48422: 6700 00de beqw 48502 return EINVAL; /* * We only support process private mutexes. */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) 48426: 202a 0004 movel %a2@(4),%d0 4842a: 7201 moveq #1,%d1 4842c: b280 cmpl %d0,%d1 4842e: 6700 00ee beqw 4851e return ENOSYS; if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE ) 48432: 4a80 tstl %d0 48434: 6600 00cc bnew 48502 return EINVAL; /* * Determine the discipline of the mutex */ switch ( the_attr->protocol ) { 48438: 202a 000c movel %a2@(12),%d0 4843c: b280 cmpl %d0,%d1 4843e: 6700 00ea beqw 4852a 48442: 123c 0002 moveb #2,%d1 48446: b280 cmpl %d0,%d1 48448: 6700 00ce beqw 48518 4844c: 4a80 tstl %d0 4844e: 6600 00b2 bnew 48502 case PTHREAD_PRIO_NONE: the_discipline = CORE_MUTEX_DISCIPLINES_FIFO; 48452: 4282 clrl %d2 } /* * Validate the priority ceiling field -- should always be valid. */ if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) ) 48454: 2f2a 0008 movel %a2@(8),%sp@- 48458: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid> 4845e: 588f addql #4,%sp 48460: 4a00 tstb %d0 48462: 6700 009e beqw 48502 #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) /* * Validate the mutex type and set appropriate SuperCore mutex * attributes. */ switch ( the_attr->type ) { 48466: 7003 moveq #3,%d0 48468: b0aa 0010 cmpl %a2@(16),%d0 4846c: 6500 0094 bcsw 48502 48470: 2039 0006 4fc8 movel 64fc8 <_Thread_Dispatch_disable_level>,%d0 48476: 5280 addql #1,%d0 48478: 23c0 0006 4fc8 movel %d0,64fc8 <_Thread_Dispatch_disable_level> * _POSIX_Mutex_Allocate */ RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void ) { return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information ); 4847e: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> 48484: 4eb9 0004 ad74 jsr 4ad74 <_Objects_Allocate> */ _Thread_Disable_dispatch(); the_mutex = _POSIX_Mutex_Allocate(); if ( !the_mutex ) { 4848a: 588f addql #4,%sp 4848c: 2840 moveal %d0,%a4 4848e: 4a80 tstl %d0 48490: 6700 009e beqw 48530 the_mutex->process_shared = the_attr->process_shared; the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 48494: 4aaa 0014 tstl %a2@(20) 48498: 57c0 seq %d0 if ( !the_mutex ) { _Thread_Enable_dispatch(); return EAGAIN; } the_mutex->process_shared = the_attr->process_shared; 4849a: 296a 0004 0010 movel %a2@(4),%a4@(16) the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 484a0: 49c0 extbl %d0 484a2: 4480 negl %d0 else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = true; 484a4: 7201 moveq #1,%d1 the_mutex->process_shared = the_attr->process_shared; the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 484a6: 2940 0054 movel %d0,%a4@(84) RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 484aa: 4280 clrl %d0 else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = true; 484ac: 1941 0058 moveb %d1,%a4@(88) 484b0: 1039 0006 36e6 moveb 636e6 ,%d0 484b6: 90aa 0008 subl %a2@(8),%d0 the_mutex_attr->priority_ceiling = _POSIX_Priority_To_core( the_attr->prio_ceiling ); the_mutex_attr->discipline = the_discipline; 484ba: 2942 005a movel %d2,%a4@(90) 484be: 2940 005e movel %d0,%a4@(94) /* * Must be initialized to unlocked. */ _CORE_mutex_Initialize( 484c2: 4878 0001 pea 1 484c6: 486c 0054 pea %a4@(84) 484ca: 486c 0014 pea %a4@(20) 484ce: 4eb9 0004 a388 jsr 4a388 <_CORE_mutex_Initialize> uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 484d4: 202c 0008 movel %a4@(8),%d0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 484d8: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 484da: 2079 0006 52c4 moveal 652c4 <_POSIX_Mutex_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 484e0: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 484e2: 218c 1c00 movel %a4,%a0@(00000000,%d1:l:4) _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 484e6: 42ac 000c clrl %a4@(12) CORE_MUTEX_UNLOCKED ); _Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 ); *mutex = the_mutex->Object.id; 484ea: 2680 movel %d0,%a3@ _Thread_Enable_dispatch(); 484ec: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> return 0; 484f2: 4fef 000c lea %sp@(12),%sp 484f6: 4280 clrl %d0 } 484f8: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 484fe: 4e5e unlk %fp 48500: 4e75 rts case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_DEFAULT: break; default: return EINVAL; 48502: 7016 moveq #22,%d0 <== NOT EXECUTED *mutex = the_mutex->Object.id; _Thread_Enable_dispatch(); return 0; } 48504: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4850a: 4e5e unlk %fp <== NOT EXECUTED 4850c: 4e75 rts <== NOT EXECUTED CORE_mutex_Attributes *the_mutex_attr; const pthread_mutexattr_t *the_attr; CORE_mutex_Disciplines the_discipline; if ( attr ) the_attr = attr; else the_attr = &_POSIX_Mutex_Default_attributes; 4850e: 45f9 0006 5320 lea 65320 <_POSIX_Mutex_Default_attributes>,%a2 48514: 6000 ff04 braw 4841a break; case PTHREAD_PRIO_INHERIT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; break; case PTHREAD_PRIO_PROTECT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 48518: 7403 moveq #3,%d2 <== NOT EXECUTED break; 4851a: 6000 ff38 braw 48454 <== NOT EXECUTED /* * We only support process private mutexes. */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) return ENOSYS; 4851e: 7058 moveq #88,%d0 <== NOT EXECUTED *mutex = the_mutex->Object.id; _Thread_Enable_dispatch(); return 0; } 48520: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48526: 4e5e unlk %fp <== NOT EXECUTED 48528: 4e75 rts <== NOT EXECUTED switch ( the_attr->protocol ) { case PTHREAD_PRIO_NONE: the_discipline = CORE_MUTEX_DISCIPLINES_FIFO; break; case PTHREAD_PRIO_INHERIT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 4852a: 7402 moveq #2,%d2 <== NOT EXECUTED 4852c: 6000 ff26 braw 48454 <== NOT EXECUTED _Thread_Disable_dispatch(); the_mutex = _POSIX_Mutex_Allocate(); if ( !the_mutex ) { _Thread_Enable_dispatch(); 48530: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 48536: 700b moveq #11,%d0 <== NOT EXECUTED *mutex = the_mutex->Object.id; _Thread_Enable_dispatch(); return 0; } 48538: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4853e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048544 : */ int pthread_mutex_lock( pthread_mutex_t *mutex ) { 48544: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, true, THREAD_QUEUE_WAIT_FOREVER ); 48548: 42a7 clrl %sp@- <== NOT EXECUTED 4854a: 4878 0001 pea 1 <== NOT EXECUTED 4854e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48552: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 48558: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000485c8 : int pthread_mutex_setprioceiling( pthread_mutex_t *mutex, int prioceiling, int *old_ceiling ) { 485c8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 485cc: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 485d0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 485d4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 485d8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; Priority_Control the_priority; if ( !old_ceiling ) 485dc: 4a8a tstl %a2 <== NOT EXECUTED 485de: 670e beqs 485ee <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 485e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485e2: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 485e8: 588f addql #4,%sp <== NOT EXECUTED 485ea: 4a00 tstb %d0 <== NOT EXECUTED 485ec: 660c bnes 485fa <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 485ee: 7016 moveq #22,%d0 <== NOT EXECUTED } 485f0: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 485f6: 4e5e unlk %fp <== NOT EXECUTED 485f8: 4e75 rts <== NOT EXECUTED /* * Must acquire the mutex before we can change it's ceiling. * POSIX says block until we acquire it. */ (void) pthread_mutex_lock( mutex ); 485fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 485fc: 1839 0006 36e6 moveb 636e6 ,%d4 <== NOT EXECUTED 48602: 4eb9 0004 8544 jsr 48544 <== NOT EXECUTED * operations. * * NOTE: This makes it easier to get 100% binary coverage since the * bad Id case is handled by the switch. */ the_mutex = _POSIX_Mutex_Get( mutex, &location ); 48608: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4860c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4860e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 48614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48618: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4861c: 66d0 bnes 485ee <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4861e: 4281 clrl %d1 <== NOT EXECUTED 48620: 1239 0006 36e6 moveb 636e6 ,%d1 <== NOT EXECUTED 48626: 2040 moveal %d0,%a0 <== NOT EXECUTED 48628: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4862c: 0284 0000 00ff andil #255,%d4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 48632: 2481 movel %d1,%a2@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 48634: 9882 subl %d2,%d4 <== NOT EXECUTED 48636: 2144 005e movel %d4,%a0@(94) <== NOT EXECUTED ); the_mutex->Mutex.Attributes.priority_ceiling = the_priority; /* * We are required to unlock the mutex before we return. */ _CORE_mutex_Surrender( 4863a: 42a7 clrl %sp@- <== NOT EXECUTED 4863c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48640: 4868 0014 pea %a0@(20) <== NOT EXECUTED 48644: 4eb9 0004 a5b4 jsr 4a5b4 <_CORE_mutex_Surrender> <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 4864a: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 48650: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48654: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 48656: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 4865c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048660 : int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) { 48660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48664: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48666: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4866a: 2f02 movel %d2,%sp@- <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4866c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48670: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48674: 4eb9 0004 8774 jsr 48774 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) 4867a: 508f addql #8,%sp <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4867c: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) 4867e: 7003 moveq #3,%d0 <== NOT EXECUTED 48680: b082 cmpl %d2,%d0 <== NOT EXECUTED 48682: 673e beqs 486c2 <== NOT EXECUTED do_wait = false; lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks ); 48684: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48688: 42a7 clrl %sp@- <== NOT EXECUTED 4868a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4868c: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED * This service only gives us the option to block. We used a polling * attempt to lock if the abstime was not in the future. If we did * not obtain the mutex, then not look at the status immediately, * make sure the right reason is returned. */ if ( !do_wait && (lock_status == EBUSY) ) { 48692: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48696: 7210 moveq #16,%d1 <== NOT EXECUTED 48698: b280 cmpl %d0,%d1 <== NOT EXECUTED 4869a: 670c beqs 486a8 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return lock_status; } 4869c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 486a0: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486a4: 4e5e unlk %fp <== NOT EXECUTED 486a6: 4e75 rts <== NOT EXECUTED * attempt to lock if the abstime was not in the future. If we did * not obtain the mutex, then not look at the status immediately, * make sure the right reason is returned. */ if ( !do_wait && (lock_status == EBUSY) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 486a8: 4a82 tstl %d2 <== NOT EXECUTED 486aa: 6736 beqs 486e2 <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 486ac: 5382 subql #1,%d2 <== NOT EXECUTED 486ae: 7201 moveq #1,%d1 <== NOT EXECUTED 486b0: b282 cmpl %d2,%d1 <== NOT EXECUTED 486b2: 65e8 bcss 4869c <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return lock_status; } 486b4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED if ( !do_wait && (lock_status == EBUSY) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 486b8: 7074 moveq #116,%d0 <== NOT EXECUTED } return lock_status; } 486ba: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486be: 4e5e unlk %fp <== NOT EXECUTED 486c0: 4e75 rts <== NOT EXECUTED */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks ); 486c2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 486c6: 4878 0001 pea 1 <== NOT EXECUTED 486ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED 486cc: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return lock_status; } 486d2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks ); 486d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return lock_status; } 486da: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486de: 4e5e unlk %fp <== NOT EXECUTED 486e0: 4e75 rts <== NOT EXECUTED 486e2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED * not obtain the mutex, then not look at the status immediately, * make sure the right reason is returned. */ if ( !do_wait && (lock_status == EBUSY) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 486e6: 7016 moveq #22,%d0 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return lock_status; } 486e8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048708 : */ int pthread_mutex_trylock( pthread_mutex_t *mutex ) { 48708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER ); 4870c: 42a7 clrl %sp@- <== NOT EXECUTED 4870e: 42a7 clrl %sp@- <== NOT EXECUTED 48710: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48714: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 4871a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048720 : */ int pthread_mutex_unlock( pthread_mutex_t *mutex ) { 48720: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48724: 2f02 movel %d2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; CORE_mutex_Status status; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 48726: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4872a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4872e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 48734: 508f addql #8,%sp <== NOT EXECUTED 48736: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4873a: 662e bnes 4876a <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_mutex_Surrender( 4873c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4873e: 42a7 clrl %sp@- <== NOT EXECUTED 48740: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48744: 4868 0014 pea %a0@(20) <== NOT EXECUTED 48748: 4eb9 0004 a5b4 jsr 4a5b4 <_CORE_mutex_Surrender> <== NOT EXECUTED 4874e: 2400 movel %d0,%d2 <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 48750: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Mutex_Translate_core_mutex_return_code( status ); 48756: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48758: 4eb9 0004 86f0 jsr 486f0 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4875e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); return _POSIX_Mutex_Translate_core_mutex_return_code( status ); 48762: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 48766: 4e5e unlk %fp <== NOT EXECUTED 48768: 4e75 rts <== NOT EXECUTED 4876a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4876e: 7016 moveq #22,%d0 <== NOT EXECUTED } 48770: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000480cc : */ int pthread_mutexattr_destroy( pthread_mutexattr_t *attr ) { 480cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 480d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 480d4: 4a88 tstl %a0 <== NOT EXECUTED 480d6: 670c beqs 480e4 <== NOT EXECUTED 480d8: 4a90 tstl %a0@ <== NOT EXECUTED 480da: 6708 beqs 480e4 <== NOT EXECUTED return EINVAL; attr->is_initialized = false; return 0; 480dc: 4280 clrl %d0 <== NOT EXECUTED } 480de: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->is_initialized = false; 480e0: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 480e2: 4e75 rts <== NOT EXECUTED int pthread_mutexattr_destroy( pthread_mutexattr_t *attr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 480e4: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 480e6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000480ec : int pthread_mutexattr_getprioceiling( const pthread_mutexattr_t *attr, int *prioceiling ) { 480ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 480f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 480f4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !prioceiling ) 480f8: 4a88 tstl %a0 <== NOT EXECUTED 480fa: 6712 beqs 4810e <== NOT EXECUTED 480fc: 4a90 tstl %a0@ <== NOT EXECUTED 480fe: 670e beqs 4810e <== NOT EXECUTED 48100: 4a89 tstl %a1 <== NOT EXECUTED 48102: 670a beqs 4810e <== NOT EXECUTED return EINVAL; *prioceiling = attr->prio_ceiling; 48104: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED return 0; 48108: 4280 clrl %d0 <== NOT EXECUTED } 4810a: 4e5e unlk %fp <== NOT EXECUTED 4810c: 4e75 rts <== NOT EXECUTED const pthread_mutexattr_t *attr, int *prioceiling ) { if ( !attr || !attr->is_initialized || !prioceiling ) return EINVAL; 4810e: 7016 moveq #22,%d0 <== NOT EXECUTED *prioceiling = attr->prio_ceiling; return 0; } 48110: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048114 : int pthread_mutexattr_getprotocol( const pthread_mutexattr_t *attr, int *protocol ) { 48114: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48118: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4811c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !protocol ) 48120: 4a88 tstl %a0 <== NOT EXECUTED 48122: 6712 beqs 48136 <== NOT EXECUTED 48124: 4a90 tstl %a0@ <== NOT EXECUTED 48126: 670e beqs 48136 <== NOT EXECUTED 48128: 4a89 tstl %a1 <== NOT EXECUTED 4812a: 670a beqs 48136 <== NOT EXECUTED return EINVAL; *protocol = attr->protocol; 4812c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED return 0; 48130: 4280 clrl %d0 <== NOT EXECUTED } 48132: 4e5e unlk %fp <== NOT EXECUTED 48134: 4e75 rts <== NOT EXECUTED const pthread_mutexattr_t *attr, int *protocol ) { if ( !attr || !attr->is_initialized || !protocol ) return EINVAL; 48136: 7016 moveq #22,%d0 <== NOT EXECUTED *protocol = attr->protocol; return 0; } 48138: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004813c : int pthread_mutexattr_getpshared( const pthread_mutexattr_t *attr, int *pshared ) { 4813c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48140: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48144: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !pshared ) 48148: 4a88 tstl %a0 <== NOT EXECUTED 4814a: 6712 beqs 4815e <== NOT EXECUTED 4814c: 4a90 tstl %a0@ <== NOT EXECUTED 4814e: 670e beqs 4815e <== NOT EXECUTED 48150: 4a89 tstl %a1 <== NOT EXECUTED 48152: 670a beqs 4815e <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 48154: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 48158: 4280 clrl %d0 <== NOT EXECUTED } 4815a: 4e5e unlk %fp <== NOT EXECUTED 4815c: 4e75 rts <== NOT EXECUTED const pthread_mutexattr_t *attr, int *pshared ) { if ( !attr || !attr->is_initialized || !pshared ) return EINVAL; 4815e: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 48160: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046098 : #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) int pthread_mutexattr_gettype( const pthread_mutexattr_t *attr, int *type ) { 46098: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4609c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 460a0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr ) 460a4: 4a88 tstl %a0 <== NOT EXECUTED 460a6: 6712 beqs 460ba <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 460a8: 4a90 tstl %a0@ <== NOT EXECUTED 460aa: 670e beqs 460ba <== NOT EXECUTED return EINVAL; if ( !type ) 460ac: 4a89 tstl %a1 <== NOT EXECUTED 460ae: 670a beqs 460ba <== NOT EXECUTED return EINVAL; *type = attr->type; 460b0: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED return 0; 460b4: 4280 clrl %d0 <== NOT EXECUTED } 460b6: 4e5e unlk %fp <== NOT EXECUTED 460b8: 4e75 rts <== NOT EXECUTED if ( !attr->is_initialized ) return EINVAL; if ( !type ) return EINVAL; 460ba: 7016 moveq #22,%d0 <== NOT EXECUTED *type = attr->type; return 0; } 460bc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048164 : */ int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { 48164: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48168: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 4816c: 4a88 tstl %a0 <== NOT EXECUTED 4816e: 672a beqs 4819a <== NOT EXECUTED return EINVAL; *attr = _POSIX_Mutex_Default_attributes; 48170: 20f9 0006 5320 movel 65320 <_POSIX_Mutex_Default_attributes>,%a0@+<== NOT EXECUTED return 0; 48176: 4280 clrl %d0 <== NOT EXECUTED } 48178: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr ) return EINVAL; *attr = _POSIX_Mutex_Default_attributes; 4817a: 20f9 0006 5324 movel 65324 <_POSIX_Mutex_Default_attributes+0x4>,%a0@+<== NOT EXECUTED 48180: 20f9 0006 5328 movel 65328 <_POSIX_Mutex_Default_attributes+0x8>,%a0@+<== NOT EXECUTED 48186: 20f9 0006 532c movel 6532c <_POSIX_Mutex_Default_attributes+0xc>,%a0@+<== NOT EXECUTED 4818c: 20f9 0006 5330 movel 65330 <_POSIX_Mutex_Default_attributes+0x10>,%a0@+<== NOT EXECUTED 48192: 20b9 0006 5334 movel 65334 <_POSIX_Mutex_Default_attributes+0x14>,%a0@<== NOT EXECUTED return 0; } 48198: 4e75 rts <== NOT EXECUTED int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { if ( !attr ) return EINVAL; 4819a: 7016 moveq #22,%d0 <== NOT EXECUTED *attr = _POSIX_Mutex_Default_attributes; return 0; } 4819c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000481a0 : int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int prioceiling ) { 481a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 481a6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 481aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 481ac: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 481b0: 4a8a tstl %a2 <== NOT EXECUTED 481b2: 6704 beqs 481b8 <== NOT EXECUTED 481b4: 4a92 tstl %a2@ <== NOT EXECUTED 481b6: 660e bnes 481c6 <== NOT EXECUTED if ( !_POSIX_Priority_Is_valid( prioceiling ) ) return EINVAL; attr->prio_ceiling = prioceiling; return 0; } 481b8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED { if ( !attr || !attr->is_initialized ) return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) return EINVAL; 481bc: 7016 moveq #22,%d0 <== NOT EXECUTED attr->prio_ceiling = prioceiling; return 0; } 481be: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 481c2: 4e5e unlk %fp <== NOT EXECUTED 481c4: 4e75 rts <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 481c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 481c8: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 481ce: 588f addql #4,%sp <== NOT EXECUTED 481d0: 4a00 tstb %d0 <== NOT EXECUTED 481d2: 67e4 beqs 481b8 <== NOT EXECUTED return EINVAL; attr->prio_ceiling = prioceiling; 481d4: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED return 0; } 481d8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 481dc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if ( !_POSIX_Priority_Is_valid( prioceiling ) ) return EINVAL; attr->prio_ceiling = prioceiling; return 0; 481e0: 4280 clrl %d0 <== NOT EXECUTED } 481e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000481e8 : int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol ) { 481e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481ec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 481f0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 481f4: 4a88 tstl %a0 <== NOT EXECUTED 481f6: 670a beqs 48202 <== NOT EXECUTED 481f8: 4a90 tstl %a0@ <== NOT EXECUTED 481fa: 6706 beqs 48202 <== NOT EXECUTED return EINVAL; switch ( protocol ) { 481fc: 7202 moveq #2,%d1 <== NOT EXECUTED 481fe: b280 cmpl %d0,%d1 <== NOT EXECUTED 48200: 6406 bccs 48208 <== NOT EXECUTED case PTHREAD_PRIO_PROTECT: attr->protocol = protocol; return 0; default: return EINVAL; 48202: 7016 moveq #22,%d0 <== NOT EXECUTED } } 48204: 4e5e unlk %fp <== NOT EXECUTED 48206: 4e75 rts <== NOT EXECUTED switch ( protocol ) { case PTHREAD_PRIO_NONE: case PTHREAD_PRIO_INHERIT: case PTHREAD_PRIO_PROTECT: attr->protocol = protocol; 48208: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED return 0; 4820c: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 4820e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048214 : int pthread_mutexattr_setpshared( pthread_mutexattr_t *attr, int pshared ) { 48214: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48218: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4821c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 48220: 4a88 tstl %a0 <== NOT EXECUTED 48222: 670a beqs 4822e <== NOT EXECUTED 48224: 4a90 tstl %a0@ <== NOT EXECUTED 48226: 6706 beqs 4822e <== NOT EXECUTED return EINVAL; switch ( pshared ) { 48228: 7201 moveq #1,%d1 <== NOT EXECUTED 4822a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4822c: 6406 bccs 48234 <== NOT EXECUTED case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; return 0; default: return EINVAL; 4822e: 7016 moveq #22,%d0 <== NOT EXECUTED } } 48230: 4e5e unlk %fp <== NOT EXECUTED 48232: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( pshared ) { case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 48234: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 48238: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 4823a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000460fc : #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) int pthread_mutexattr_settype( pthread_mutexattr_t *attr, int type ) { 460fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46100: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46104: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 46108: 4a88 tstl %a0 <== NOT EXECUTED 4610a: 670a beqs 46116 <== NOT EXECUTED 4610c: 4a90 tstl %a0@ <== NOT EXECUTED 4610e: 6706 beqs 46116 <== NOT EXECUTED return EINVAL; switch ( type ) { 46110: 7203 moveq #3,%d1 <== NOT EXECUTED 46112: b280 cmpl %d0,%d1 <== NOT EXECUTED 46114: 6406 bccs 4611c <== NOT EXECUTED case PTHREAD_MUTEX_DEFAULT: attr->type = type; return 0; default: return EINVAL; 46116: 7016 moveq #22,%d0 <== NOT EXECUTED } } 46118: 4e5e unlk %fp <== NOT EXECUTED 4611a: 4e75 rts <== NOT EXECUTED switch ( type ) { case PTHREAD_MUTEX_NORMAL: case PTHREAD_MUTEX_RECURSIVE: case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_DEFAULT: attr->type = type; 4611c: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED return 0; 46120: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 46122: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ee8 : int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) { 46ee8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46eec: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 46ef0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46ef4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED if ( !once_control || !init_routine ) 46ef8: 4a8a tstl %a2 <== NOT EXECUTED 46efa: 6772 beqs 46f6e <== NOT EXECUTED 46efc: 4a8b tstl %a3 <== NOT EXECUTED 46efe: 676e beqs 46f6e <== NOT EXECUTED return EINVAL; if ( !once_control->init_executed ) { 46f00: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46f04: 670c beqs 46f12 <== NOT EXECUTED once_control->init_executed = true; (*init_routine)(); } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); } return 0; 46f06: 4280 clrl %d0 <== NOT EXECUTED } 46f08: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f0e: 4e5e unlk %fp <== NOT EXECUTED 46f10: 4e75 rts <== NOT EXECUTED if ( !once_control || !init_routine ) return EINVAL; if ( !once_control->init_executed ) { rtems_mode saveMode; rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 46f12: 240e movel %fp,%d2 <== NOT EXECUTED 46f14: 5982 subql #4,%d2 <== NOT EXECUTED 46f16: 49f9 0004 7bb0 lea 47bb0 ,%a4 <== NOT EXECUTED 46f1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f1e: 4878 0100 pea 100 <== NOT EXECUTED 46f22: 4878 0100 pea 100 <== NOT EXECUTED 46f26: 4e94 jsr %a4@ <== NOT EXECUTED if ( !once_control->init_executed ) { 46f28: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46f2c: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46f30: 671c beqs 46f4e <== NOT EXECUTED once_control->is_initialized = true; once_control->init_executed = true; (*init_routine)(); } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); 46f32: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f34: 4878 0100 pea 100 <== NOT EXECUTED 46f38: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 46f3c: 4e94 jsr %a4@ <== NOT EXECUTED 46f3e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } return 0; 46f42: 4280 clrl %d0 <== NOT EXECUTED } 46f44: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f4a: 4e5e unlk %fp <== NOT EXECUTED 46f4c: 4e75 rts <== NOT EXECUTED if ( !once_control->init_executed ) { rtems_mode saveMode; rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); if ( !once_control->init_executed ) { once_control->is_initialized = true; 46f4e: 7001 moveq #1,%d0 <== NOT EXECUTED 46f50: 2480 movel %d0,%a2@ <== NOT EXECUTED once_control->init_executed = true; 46f52: 7001 moveq #1,%d0 <== NOT EXECUTED 46f54: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED (*init_routine)(); 46f58: 4e93 jsr %a3@ <== NOT EXECUTED } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); 46f5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f5c: 4878 0100 pea 100 <== NOT EXECUTED 46f60: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 46f64: 4e94 jsr %a4@ <== NOT EXECUTED 46f66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } return 0; 46f6a: 4280 clrl %d0 <== NOT EXECUTED 46f6c: 60d6 bras 46f44 <== NOT EXECUTED pthread_once_t *once_control, void (*init_routine)(void) ) { if ( !once_control || !init_routine ) return EINVAL; 46f6e: 7016 moveq #22,%d0 <== NOT EXECUTED (*init_routine)(); } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); } return 0; } 46f70: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f76: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047494 : */ int pthread_rwlock_destroy( pthread_rwlock_t *rwlock ) { 47494: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47498: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4749c: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock = NULL; Objects_Locations location; if ( !rwlock ) 4749e: 4a88 tstl %a0 <== NOT EXECUTED 474a0: 673e beqs 474e0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 474a2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474a6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 474a8: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 474ae: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 474b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474b8: 2440 moveal %d0,%a2 <== NOT EXECUTED 474ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474be: 6620 bnes 474e0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * If there is at least one thread waiting, then do not delete it. */ if ( _Thread_queue_First( &the_rwlock->RWLock.Wait_queue ) != NULL ) { 474c0: 486a 0010 pea %a2@(16) <== NOT EXECUTED 474c4: 4eb9 0004 b744 jsr 4b744 <_Thread_queue_First> <== NOT EXECUTED 474ca: 588f addql #4,%sp <== NOT EXECUTED 474cc: 4a80 tstl %d0 <== NOT EXECUTED 474ce: 671a beqs 474ea <== NOT EXECUTED _Thread_Enable_dispatch(); 474d0: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 474d6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED /* * If there is at least one thread waiting, then do not delete it. */ if ( _Thread_queue_First( &the_rwlock->RWLock.Wait_queue ) != NULL ) { _Thread_Enable_dispatch(); return EBUSY; 474da: 7010 moveq #16,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 474dc: 4e5e unlk %fp <== NOT EXECUTED 474de: 4e75 rts <== NOT EXECUTED 474e0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 474e4: 7016 moveq #22,%d0 <== NOT EXECUTED } 474e6: 4e5e unlk %fp <== NOT EXECUTED 474e8: 4e75 rts <== NOT EXECUTED /* * POSIX doesn't require behavior when it is locked. */ _Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object ); 474ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474ec: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 474f2: 4eb9 0004 9f64 jsr 49f64 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free ( POSIX_RWLock_Control *the_RWLock ) { _Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object ); 474f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474fa: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 47500: 4eb9 0004 a228 jsr 4a228 <_Objects_Free> <== NOT EXECUTED _POSIX_RWLock_Free( the_rwlock ); _Thread_Enable_dispatch(); 47506: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4750c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object ); _POSIX_RWLock_Free( the_rwlock ); _Thread_Enable_dispatch(); return 0; 47510: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47514: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47516: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004751c : int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) { 4751c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 47520: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47524: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47528: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED const pthread_rwlockattr_t *the_attr; /* * Error check parameters */ if ( !rwlock ) 4752c: 4a8a tstl %a2 <== NOT EXECUTED 4752e: 6772 beqs 475a2 <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 47530: 4a82 tstl %d2 <== NOT EXECUTED 47532: 6700 008c beqw 475c0 <== NOT EXECUTED 47536: 2042 moveal %d2,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 47538: 4a90 tstl %a0@ <== NOT EXECUTED 4753a: 6766 beqs 475a2 <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 4753c: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 47540: 6660 bnes 475a2 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 47542: 2039 0006 2ddc movel 62ddc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47548: 5280 addql #1,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes( CORE_RWLock_Attributes *the_attributes ) { the_attributes->XXX = 0; 4754a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 4754e: 23c0 0006 2ddc movel %d0,62ddc <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free RWLock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void ) { return (POSIX_RWLock_Control *) _Objects_Allocate( &_POSIX_RWLock_Information ); 47554: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 4755a: 4eb9 0004 9ed4 jsr 49ed4 <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_rwlock = _POSIX_RWLock_Allocate(); if ( !the_rwlock ) { 47560: 588f addql #4,%sp <== NOT EXECUTED 47562: 2640 moveal %d0,%a3 <== NOT EXECUTED 47564: 4a80 tstl %d0 <== NOT EXECUTED 47566: 6746 beqs 475ae <== NOT EXECUTED _Thread_Enable_dispatch(); return EAGAIN; } _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes ); 47568: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4756c: 486b 0010 pea %a3@(16) <== NOT EXECUTED 47570: 4eb9 0004 95ec jsr 495ec <_CORE_RWLock_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 47576: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 4757a: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4757c: 2079 0006 2f7c moveal 62f7c <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 47582: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 47584: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 47588: 42ab 000c clrl %a3@(12) <== NOT EXECUTED &_POSIX_RWLock_Information, &the_rwlock->Object, 0 ); *rwlock = the_rwlock->Object.id; 4758c: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4758e: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 47594: 508f addql #8,%sp <== NOT EXECUTED 47596: 4280 clrl %d0 <== NOT EXECUTED } 47598: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 4759e: 4e5e unlk %fp <== NOT EXECUTED 475a0: 4e75 rts <== NOT EXECUTED switch ( the_attr->process_shared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 475a2: 7016 moveq #22,%d0 <== NOT EXECUTED *rwlock = the_rwlock->Object.id; _Thread_Enable_dispatch(); return 0; } 475a4: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 475aa: 4e5e unlk %fp <== NOT EXECUTED 475ac: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_rwlock = _POSIX_RWLock_Allocate(); if ( !the_rwlock ) { _Thread_Enable_dispatch(); 475ae: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 475b4: 700b moveq #11,%d0 <== NOT EXECUTED *rwlock = the_rwlock->Object.id; _Thread_Enable_dispatch(); return 0; } 475b6: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 475bc: 4e5e unlk %fp <== NOT EXECUTED 475be: 4e75 rts <== NOT EXECUTED * If the user passed in NULL, use the default attributes */ if ( attr ) { the_attr = attr; } else { (void) pthread_rwlockattr_init( &default_attr ); 475c0: 240e movel %fp,%d2 <== NOT EXECUTED 475c2: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 475c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475ca: 4eb9 0004 8068 jsr 48068 <== NOT EXECUTED 475d0: 588f addql #4,%sp <== NOT EXECUTED the_attr = &default_attr; 475d2: 2042 moveal %d2,%a0 <== NOT EXECUTED 475d4: 6000 ff62 braw 47538 <== NOT EXECUTED =============================================================================== 000475d8 : */ int pthread_rwlock_rdlock( pthread_rwlock_t *rwlock ) { 475d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 475dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475de: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 475e2: 4a8a tstl %a2 <== NOT EXECUTED 475e4: 6754 beqs 4763a <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 475e6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 475ea: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 475ec: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 475f2: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 475f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 475fc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47600: 6638 bnes 4763a <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 47602: 42a7 clrl %sp@- <== NOT EXECUTED 47604: 2040 moveal %d0,%a0 <== NOT EXECUTED 47606: 42a7 clrl %sp@- <== NOT EXECUTED 47608: 4878 0001 pea 1 <== NOT EXECUTED 4760c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4760e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47612: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED true, /* we are willing to wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 47618: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 4761e: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 47624: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 47628: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4762e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 47632: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47636: 4e5e unlk %fp <== NOT EXECUTED 47638: 4e75 rts <== NOT EXECUTED 4763a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4763e: 7016 moveq #22,%d0 <== NOT EXECUTED } 47640: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047644 : int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 47644: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47648: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4764c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait = true; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 47650: 4a8a tstl %a2 <== NOT EXECUTED 47652: 6700 0082 beqw 476d6 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 47656: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4765a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4765e: 4eb9 0004 e04c jsr 4e04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 47664: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47668: 2400 movel %d0,%d2 <== NOT EXECUTED 4766a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4766c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 47672: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 47678: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4767c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47680: 6654 bnes 476d6 <== NOT EXECUTED int _EXFUN(pthread_rwlock_init, (pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr)); int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedrdlock, 47682: 7203 moveq #3,%d1 <== NOT EXECUTED 47684: b282 cmpl %d2,%d1 <== NOT EXECUTED 47686: 57c3 seq %d3 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 47688: 42a7 clrl %sp@- <== NOT EXECUTED 4768a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4768e: 4483 negl %d3 <== NOT EXECUTED 47690: 4281 clrl %d1 <== NOT EXECUTED 47692: 1203 moveb %d3,%d1 <== NOT EXECUTED 47694: 2040 moveal %d0,%a0 <== NOT EXECUTED 47696: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47698: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4769a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4769e: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 476a4: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait ) { 476aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 476ae: 4a03 tstb %d3 <== NOT EXECUTED 476b0: 664a bnes 476fc <== NOT EXECUTED if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) { 476b2: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 476b8: 7202 moveq #2,%d1 <== NOT EXECUTED 476ba: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED 476be: b280 cmpl %d0,%d1 <== NOT EXECUTED 476c0: 6720 beqs 476e2 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( 476c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476c4: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 476ca: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 476cc: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 476d2: 4e5e unlk %fp <== NOT EXECUTED 476d4: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !do_wait ) { if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 476d6: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 476d8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 476de: 4e5e unlk %fp <== NOT EXECUTED 476e0: 4e75 rts <== NOT EXECUTED ); _Thread_Enable_dispatch(); if ( !do_wait ) { if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 476e2: 4a82 tstl %d2 <== NOT EXECUTED 476e4: 67f0 beqs 476d6 <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 476e6: 5382 subql #1,%d2 <== NOT EXECUTED 476e8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 476ec: b282 cmpl %d2,%d1 <== NOT EXECUTED 476ee: 65d2 bcss 476c2 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 476f0: 7074 moveq #116,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 476f2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 476f8: 4e5e unlk %fp <== NOT EXECUTED 476fa: 4e75 rts <== NOT EXECUTED ticks, NULL ); _Thread_Enable_dispatch(); if ( !do_wait ) { 476fc: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47702: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( 47706: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47708: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4770e: 588f addql #4,%sp <== NOT EXECUTED 47710: 60ba bras 476cc <== NOT EXECUTED ... =============================================================================== 00047714 : int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 47714: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47718: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4771c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait = true; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 47720: 4a8a tstl %a2 <== NOT EXECUTED 47722: 6700 0082 beqw 477a6 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 47726: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4772a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4772e: 4eb9 0004 e04c jsr 4e04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 47734: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47738: 2400 movel %d0,%d2 <== NOT EXECUTED 4773a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4773c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 47742: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 47748: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4774c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47750: 6654 bnes 477a6 <== NOT EXECUTED (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime)); int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedwrlock, 47752: 7203 moveq #3,%d1 <== NOT EXECUTED 47754: b282 cmpl %d2,%d1 <== NOT EXECUTED 47756: 57c3 seq %d3 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 47758: 42a7 clrl %sp@- <== NOT EXECUTED 4775a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4775e: 4483 negl %d3 <== NOT EXECUTED 47760: 4281 clrl %d1 <== NOT EXECUTED 47762: 1203 moveb %d3,%d1 <== NOT EXECUTED 47764: 2040 moveal %d0,%a0 <== NOT EXECUTED 47766: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47768: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4776a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4776e: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 47774: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait && 4777a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4777e: 4a03 tstb %d3 <== NOT EXECUTED 47780: 664a bnes 477cc <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { 47782: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED ticks, NULL ); _Thread_Enable_dispatch(); if ( !do_wait && 47788: 7202 moveq #2,%d1 <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { 4778a: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED ticks, NULL ); _Thread_Enable_dispatch(); if ( !do_wait && 4778e: b280 cmpl %d0,%d1 <== NOT EXECUTED 47790: 6720 beqs 477b2 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return _POSIX_RWLock_Translate_core_RWLock_return_code( 47792: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47794: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4779a: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4779c: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477a2: 4e5e unlk %fp <== NOT EXECUTED 477a4: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !do_wait && (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 477a6: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 477a8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477ae: 4e5e unlk %fp <== NOT EXECUTED 477b0: 4e75 rts <== NOT EXECUTED ); _Thread_Enable_dispatch(); if ( !do_wait && (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 477b2: 4a82 tstl %d2 <== NOT EXECUTED 477b4: 67f0 beqs 477a6 <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 477b6: 5382 subql #1,%d2 <== NOT EXECUTED 477b8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 477bc: b282 cmpl %d2,%d1 <== NOT EXECUTED 477be: 65d2 bcss 47792 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 477c0: 7074 moveq #116,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 477c2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477c8: 4e5e unlk %fp <== NOT EXECUTED 477ca: 4e75 rts <== NOT EXECUTED ticks, NULL ); _Thread_Enable_dispatch(); if ( !do_wait && 477cc: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 477d2: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return _POSIX_RWLock_Translate_core_RWLock_return_code( 477d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 477d8: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 477de: 588f addql #4,%sp <== NOT EXECUTED 477e0: 60ba bras 4779c <== NOT EXECUTED ... =============================================================================== 000477fc : */ int pthread_rwlock_tryrdlock( pthread_rwlock_t *rwlock ) { 477fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47800: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47802: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 47806: 4a8a tstl %a2 <== NOT EXECUTED 47808: 6752 beqs 4785c <== NOT EXECUTED 4780a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4780e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47810: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 47816: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 4781c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47820: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47824: 6636 bnes 4785c <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 47826: 42a7 clrl %sp@- <== NOT EXECUTED 47828: 2040 moveal %d0,%a0 <== NOT EXECUTED 4782a: 42a7 clrl %sp@- <== NOT EXECUTED 4782c: 42a7 clrl %sp@- <== NOT EXECUTED 4782e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47830: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47834: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); 4783a: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 47840: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 47846: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4784a: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47850: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 47854: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47858: 4e5e unlk %fp <== NOT EXECUTED 4785a: 4e75 rts <== NOT EXECUTED 4785c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47860: 7016 moveq #22,%d0 <== NOT EXECUTED } 47862: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047868 : */ int pthread_rwlock_trywrlock( pthread_rwlock_t *rwlock ) { 47868: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4786c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4786e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 47872: 4a8a tstl %a2 <== NOT EXECUTED 47874: 6752 beqs 478c8 <== NOT EXECUTED 47876: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4787a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4787c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 47882: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 47888: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4788c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47890: 6636 bnes 478c8 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 47892: 42a7 clrl %sp@- <== NOT EXECUTED 47894: 2040 moveal %d0,%a0 <== NOT EXECUTED 47896: 42a7 clrl %sp@- <== NOT EXECUTED 47898: 42a7 clrl %sp@- <== NOT EXECUTED 4789a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4789c: 4868 0010 pea %a0@(16) <== NOT EXECUTED 478a0: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED false, /* we are not willing to wait */ 0, NULL ); _Thread_Enable_dispatch(); 478a6: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 478ac: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 478b2: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 478b6: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 478bc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 478c0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 478c4: 4e5e unlk %fp <== NOT EXECUTED 478c6: 4e75 rts <== NOT EXECUTED 478c8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 478cc: 7016 moveq #22,%d0 <== NOT EXECUTED } 478ce: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000478d4 : */ int pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) { 478d4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 478d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 478dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; CORE_RWLock_Status status; if ( !rwlock ) 478de: 4a88 tstl %a0 <== NOT EXECUTED 478e0: 6742 beqs 47924 <== NOT EXECUTED 478e2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 478e6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 478e8: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 478ee: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 478f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 478f8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 478fc: 6626 bnes 47924 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_RWLock_Release( &the_rwlock->RWLock ); 478fe: 2040 moveal %d0,%a0 <== NOT EXECUTED 47900: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47904: 4eb9 0004 9770 jsr 49770 <_CORE_RWLock_Release> <== NOT EXECUTED 4790a: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 4790c: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( status ); 47912: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47914: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4791a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: status = _CORE_RWLock_Release( &the_rwlock->RWLock ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( status ); 4791e: 508f addql #8,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47920: 4e5e unlk %fp <== NOT EXECUTED 47922: 4e75 rts <== NOT EXECUTED 47924: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47928: 7016 moveq #22,%d0 <== NOT EXECUTED } 4792a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047930 : */ int pthread_rwlock_wrlock( pthread_rwlock_t *rwlock ) { 47930: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47934: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47936: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 4793a: 4a8a tstl %a2 <== NOT EXECUTED 4793c: 6754 beqs 47992 <== NOT EXECUTED 4793e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47942: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47944: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED 4794a: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 47950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47954: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47958: 6638 bnes 47992 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 4795a: 42a7 clrl %sp@- <== NOT EXECUTED 4795c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4795e: 42a7 clrl %sp@- <== NOT EXECUTED 47960: 4878 0001 pea 1 <== NOT EXECUTED 47964: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47966: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4796a: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED true, /* do not timeout -- wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 47970: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 47976: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 4797c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 47980: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 47986: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 4798a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4798e: 4e5e unlk %fp <== NOT EXECUTED 47990: 4e75 rts <== NOT EXECUTED 47992: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47996: 7016 moveq #22,%d0 <== NOT EXECUTED } 47998: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048024 : */ int pthread_rwlockattr_destroy( pthread_rwlockattr_t *attr ) { 48024: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48028: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 4802c: 4a88 tstl %a0 <== NOT EXECUTED 4802e: 670c beqs 4803c <== NOT EXECUTED 48030: 4a90 tstl %a0@ <== NOT EXECUTED 48032: 6708 beqs 4803c <== NOT EXECUTED return EINVAL; attr->is_initialized = false; return 0; 48034: 4280 clrl %d0 <== NOT EXECUTED } 48036: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr || attr->is_initialized == false ) return EINVAL; attr->is_initialized = false; 48038: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 4803a: 4e75 rts <== NOT EXECUTED int pthread_rwlockattr_destroy( pthread_rwlockattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 4803c: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 4803e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048044 : int pthread_rwlockattr_getpshared( const pthread_rwlockattr_t *attr, int *pshared ) { 48044: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48048: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 4804c: 4a88 tstl %a0 <== NOT EXECUTED 4804e: 6712 beqs 48062 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 48050: 4a90 tstl %a0@ <== NOT EXECUTED 48052: 670e beqs 48062 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 48054: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 48058: 4280 clrl %d0 <== NOT EXECUTED } 4805a: 4e5e unlk %fp <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) return EINVAL; *pshared = attr->process_shared; 4805c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; } 48060: 4e75 rts <== NOT EXECUTED { if ( !attr ) return EINVAL; if ( !attr->is_initialized ) return EINVAL; 48062: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 48064: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048068 : */ int pthread_rwlockattr_init( pthread_rwlockattr_t *attr ) { 48068: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4806c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 48070: 4a88 tstl %a0 <== NOT EXECUTED 48072: 670e beqs 48082 <== NOT EXECUTED return EINVAL; attr->is_initialized = true; 48074: 7001 moveq #1,%d0 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 48076: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = true; 48078: 2080 movel %d0,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; 4807a: 4280 clrl %d0 <== NOT EXECUTED { if ( !attr ) return EINVAL; attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; 4807c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED return 0; } 48080: 4e75 rts <== NOT EXECUTED int pthread_rwlockattr_init( pthread_rwlockattr_t *attr ) { if ( !attr ) return EINVAL; 48082: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 48084: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048088 : int pthread_rwlockattr_setpshared( pthread_rwlockattr_t *attr, int pshared ) { 48088: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4808c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48090: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 48094: 4a88 tstl %a0 <== NOT EXECUTED 48096: 670a beqs 480a2 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 48098: 4a90 tstl %a0@ <== NOT EXECUTED 4809a: 6706 beqs 480a2 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 4809c: 7201 moveq #1,%d1 <== NOT EXECUTED 4809e: b280 cmpl %d0,%d1 <== NOT EXECUTED 480a0: 6406 bccs 480a8 <== NOT EXECUTED case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; return 0; default: return EINVAL; 480a2: 7016 moveq #22,%d0 <== NOT EXECUTED } } 480a4: 4e5e unlk %fp <== NOT EXECUTED 480a6: 4e75 rts <== NOT EXECUTED return EINVAL; switch ( pshared ) { case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 480a8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 480ac: 4280 clrl %d0 <== NOT EXECUTED default: return EINVAL; } } 480ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045f9c : int pthread_setcancelstate( int state, int *oldstate ) { 45f9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45fa0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45fa4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED * Don't even think about deleting a resource from an ISR. * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) 45fa8: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED 45fae: 6610 bnes 45fc0 <== NOT EXECUTED return EPROTO; if ( !oldstate ) 45fb0: 4a88 tstl %a0 <== NOT EXECUTED 45fb2: 6706 beqs 45fba <== NOT EXECUTED return EINVAL; if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE ) 45fb4: 7201 moveq #1,%d1 <== NOT EXECUTED 45fb6: b280 cmpl %d0,%d1 <== NOT EXECUTED 45fb8: 640c bccs 45fc6 <== NOT EXECUTED return EINVAL; 45fba: 7016 moveq #22,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 45fbc: 4e5e unlk %fp <== NOT EXECUTED 45fbe: 4e75 rts <== NOT EXECUTED * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) return EPROTO; 45fc0: 7047 moveq #71,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 45fc2: 4e5e unlk %fp <== NOT EXECUTED 45fc4: 4e75 rts <== NOT EXECUTED return EINVAL; if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE ) return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45fc6: 2279 0006 08f6 moveal 608f6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45fcc: 2239 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 45fd2: 5281 addql #1,%d1 <== NOT EXECUTED 45fd4: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 45fd8: 23c1 0006 046c movel %d1,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); *oldstate = thread_support->cancelability_state; 45fde: 20a9 00d8 movel %a1@(216),%a0@ <== NOT EXECUTED thread_support->cancelability_state = state; 45fe2: 2340 00d8 movel %d0,%a1@(216) <== NOT EXECUTED _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing); 45fe6: 2f39 0006 08f6 movel 608f6 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 45fec: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; 45ff2: 588f addql #4,%sp <== NOT EXECUTED 45ff4: 4280 clrl %d0 <== NOT EXECUTED } 45ff6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045ffc : int pthread_setcanceltype( int type, int *oldtype ) { 45ffc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46000: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46004: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED * Don't even think about deleting a resource from an ISR. * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) 46008: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED 4600e: 6610 bnes 46020 <== NOT EXECUTED return EPROTO; if ( !oldtype ) 46010: 4a88 tstl %a0 <== NOT EXECUTED 46012: 6706 beqs 4601a <== NOT EXECUTED return EINVAL; if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS ) 46014: 7201 moveq #1,%d1 <== NOT EXECUTED 46016: b280 cmpl %d0,%d1 <== NOT EXECUTED 46018: 640c bccs 46026 <== NOT EXECUTED return EINVAL; 4601a: 7016 moveq #22,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 4601c: 4e5e unlk %fp <== NOT EXECUTED 4601e: 4e75 rts <== NOT EXECUTED * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) return EPROTO; 46020: 7047 moveq #71,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 46022: 4e5e unlk %fp <== NOT EXECUTED 46024: 4e75 rts <== NOT EXECUTED return EINVAL; if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS ) return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 46026: 2279 0006 08f6 moveal 608f6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4602c: 2239 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46032: 5281 addql #1,%d1 <== NOT EXECUTED 46034: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 46038: 23c1 0006 046c movel %d1,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); *oldtype = thread_support->cancelability_type; 4603e: 20a9 00dc movel %a1@(220),%a0@ <== NOT EXECUTED thread_support->cancelability_type = type; 46042: 2340 00dc movel %d0,%a1@(220) <== NOT EXECUTED _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing); 46046: 2f39 0006 08f6 movel 608f6 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4604c: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; 46052: 588f addql #4,%sp <== NOT EXECUTED 46054: 4280 clrl %d0 <== NOT EXECUTED } 46056: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004906c : int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) { 4906c: 4e56 ffe0 linkw %fp,#-32 49070: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 49074: 282e 000c movel %fp@(12),%d4 49078: 242e 0010 movel %fp@(16),%d2 int rc; /* * Check all the parameters */ if ( !param ) 4907c: 6700 00c4 beqw 49142 return EINVAL; rc = _POSIX_Thread_Translate_sched_param( 49080: 486e fff8 pea %fp@(-8) 49084: 486e fffc pea %fp@(-4) 49088: 2f02 movel %d2,%sp@- 4908a: 2f04 movel %d4,%sp@- 4908c: 4eb9 0004 f1fc jsr 4f1fc <_POSIX_Thread_Translate_sched_param> policy, param, &budget_algorithm, &budget_callout ); if ( rc ) 49092: 4fef 0010 lea %sp@(16),%sp * Check all the parameters */ if ( !param ) return EINVAL; rc = _POSIX_Thread_Translate_sched_param( 49096: 2600 movel %d0,%d3 policy, param, &budget_algorithm, &budget_callout ); if ( rc ) 49098: 670c beqs 490a6 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return ESRCH; } 4909a: 2003 movel %d3,%d0 <== NOT EXECUTED 4909c: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 490a2: 4e5e unlk %fp <== NOT EXECUTED 490a4: 4e75 rts <== NOT EXECUTED 490a6: 486e fff4 pea %fp@(-12) 490aa: 2f2e 0008 movel %fp@(8),%sp@- 490ae: 4879 0006 518a pea 6518a <_POSIX_Threads_Information> 490b4: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> /* * Actually change the scheduling policy and parameters */ the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 490ba: 4fef 000c lea %sp@(12),%sp 490be: 2440 moveal %d0,%a2 490c0: 4aae fff4 tstl %fp@(-12) 490c4: 6600 008a bnew 49150 case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 490c8: 266a 0102 moveal %a2@(258),%a3 if ( api->schedpolicy == SCHED_SPORADIC ) 490cc: 7004 moveq #4,%d0 490ce: b0ab 0084 cmpl %a3@(132),%d0 490d2: 6700 00b8 beqw 4918c (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; api->schedparam = *param; 490d6: 41eb 0088 lea %a3@(136),%a0 490da: 2242 moveal %d2,%a1 api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; 490dc: 2744 0084 movel %d4,%a3@(132) api->schedparam = *param; 490e0: 20d9 movel %a1@+,%a0@+ 490e2: 20d9 movel %a1@+,%a0@+ 490e4: 20d9 movel %a1@+,%a0@+ 490e6: 20d9 movel %a1@+,%a0@+ 490e8: 20d9 movel %a1@+,%a0@+ 490ea: 20d9 movel %a1@+,%a0@+ 490ec: 2091 movel %a1@,%a0@ the_thread->budget_algorithm = budget_algorithm; 490ee: 256e fffc 007a movel %fp@(-4),%a2@(122) the_thread->budget_callout = budget_callout; 490f4: 256e fff8 007e movel %fp@(-8),%a2@(126) switch ( api->schedpolicy ) { 490fa: 4a84 tstl %d4 490fc: 6d32 blts 49130 <== NEVER TAKEN 490fe: 7002 moveq #2,%d0 49100: b084 cmpl %d4,%d0 49102: 6d5a blts 4915e <== NEVER TAKEN 49104: 4280 clrl %d0 49106: 1039 0006 36e6 moveb 636e6 ,%d0 case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 4910c: 41f9 0006 4f80 lea 64f80 <_Thread_Ticks_per_timeslice>,%a0 49112: 90ab 0088 subl %a3@(136),%d0 49116: 2550 0076 movel %a0@,%a2@(118) the_thread->real_priority = 4911a: 2540 0018 movel %d0,%a2@(24) _POSIX_Priority_To_core( api->schedparam.sched_priority ); _Thread_Change_priority( 4911e: 4878 0001 pea 1 49122: 2f00 movel %d0,%sp@- 49124: 2f0a movel %a2,%sp@- 49126: 4eb9 0004 b870 jsr 4b870 <_Thread_Change_priority> the_thread, the_thread->real_priority, true ); break; 4912c: 4fef 000c lea %sp@(12),%sp _Watchdog_Remove( &api->Sporadic_timer ); _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread ); break; } _Thread_Enable_dispatch(); 49130: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> case OBJECTS_ERROR: break; } return ESRCH; } 49136: 2003 movel %d3,%d0 49138: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 4913e: 4e5e unlk %fp 49140: 4e75 rts /* * Check all the parameters */ if ( !param ) return EINVAL; 49142: 7616 moveq #22,%d3 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 49144: 2003 movel %d3,%d0 <== NOT EXECUTED 49146: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4914c: 4e5e unlk %fp <== NOT EXECUTED 4914e: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 49150: 7603 moveq #3,%d3 <== NOT EXECUTED } 49152: 2003 movel %d3,%d0 <== NOT EXECUTED 49154: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4915a: 4e5e unlk %fp <== NOT EXECUTED 4915c: 4e75 rts <== NOT EXECUTED api->schedpolicy = policy; api->schedparam = *param; the_thread->budget_algorithm = budget_algorithm; the_thread->budget_callout = budget_callout; switch ( api->schedpolicy ) { 4915e: 103c 0004 moveb #4,%d0 <== NOT EXECUTED 49162: b084 cmpl %d4,%d0 <== NOT EXECUTED 49164: 66ca bnes 49130 <== NOT EXECUTED true ); break; case SCHED_SPORADIC: api->ss_high_priority = api->schedparam.sched_priority; 49166: 276b 0088 00a4 movel %a3@(136),%a3@(164) <== NOT EXECUTED _Watchdog_Remove( &api->Sporadic_timer ); 4916c: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 49170: 4eb9 0004 cf90 jsr 4cf90 <_Watchdog_Remove> <== NOT EXECUTED _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread ); 49176: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49178: 42a7 clrl %sp@- <== NOT EXECUTED 4917a: 4eb9 0004 8f1c jsr 48f1c <_POSIX_Threads_Sporadic_budget_TSR><== NOT EXECUTED break; 49180: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); 49184: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED 4918a: 60aa bras 49136 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); 4918c: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 49190: 4eb9 0004 cf90 jsr 4cf90 <_Watchdog_Remove> <== NOT EXECUTED 49196: 588f addql #4,%sp <== NOT EXECUTED api->schedpolicy = policy; api->schedparam = *param; 49198: 41eb 0088 lea %a3@(136),%a0 <== NOT EXECUTED 4919c: 2242 moveal %d2,%a1 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; 4919e: 2744 0084 movel %d4,%a3@(132) <== NOT EXECUTED api->schedparam = *param; 491a2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491a4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491a6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491a8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491aa: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491ac: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491ae: 2091 movel %a1@,%a0@ <== NOT EXECUTED the_thread->budget_algorithm = budget_algorithm; 491b0: 256e fffc 007a movel %fp@(-4),%a2@(122) <== NOT EXECUTED the_thread->budget_callout = budget_callout; 491b6: 256e fff8 007e movel %fp@(-8),%a2@(126) <== NOT EXECUTED switch ( api->schedpolicy ) { 491bc: 4a84 tstl %d4 <== NOT EXECUTED 491be: 6c00 ff3e bgew 490fe <== NOT EXECUTED 491c2: 6000 ff6c braw 49130 <== NOT EXECUTED ... =============================================================================== 000465a4 : int pthread_setspecific( pthread_key_t key, const void *value ) { 465a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 465a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED 465b0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 465b4: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED 465ba: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED uint32_t api; uint32_t index; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 465c0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 465c4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 465c8: 663e bnes 46608 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 465ca: 2079 0006 20c2 moveal 620c2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 465d0: 7618 moveq #24,%d3 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); the_key->Values[ api ][ index ] = (void *) value; 465d2: 2240 moveal %d0,%a1 <== NOT EXECUTED the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 465d4: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 465d8: 2202 movel %d2,%d1 <== NOT EXECUTED 465da: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 465dc: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 465e0: c283 andl %d3,%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); 465e2: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED the_key->Values[ api ][ index ] = (void *) value; 465e8: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 465ec: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED 465f0: 2191 2c00 movel %a1@,%a0@(00000000,%d2:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 465f4: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 465fa: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); index = _Objects_Get_index( _Thread_Executing->Object.id ); the_key->Values[ api ][ index ] = (void *) value; _Thread_Enable_dispatch(); return 0; 465fe: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46600: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46604: 4e5e unlk %fp <== NOT EXECUTED 46606: 4e75 rts <== NOT EXECUTED 46608: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4660c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4660e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46612: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d318 : int pthread_sigmask( int how, const sigset_t *set, sigset_t *oset ) { 4d318: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d31c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4d320: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d322: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d326: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED POSIX_API_Control *api; if ( !set && !oset ) 4d32a: 4a89 tstl %a1 <== NOT EXECUTED 4d32c: 6700 0084 beqw 4d3b2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4d330: 2079 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d336: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED if ( oset ) 4d33a: 4a8a tstl %a2 <== NOT EXECUTED 4d33c: 6708 beqs 4d346 <== NOT EXECUTED *oset = api->signals_blocked; 4d33e: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED if ( !set ) 4d342: 4a89 tstl %a1 <== NOT EXECUTED 4d344: 673a beqs 4d380 <== NOT EXECUTED return 0; switch ( how ) { 4d346: 7201 moveq #1,%d1 <== NOT EXECUTED 4d348: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d34a: 675e beqs 4d3aa <== NOT EXECUTED 4d34c: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4d350: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d352: 6736 beqs 4d38a <== NOT EXECUTED 4d354: 4a80 tstl %d0 <== NOT EXECUTED 4d356: 663c bnes 4d394 <== NOT EXECUTED break; case SIG_UNBLOCK: api->signals_blocked &= ~*set; break; case SIG_SETMASK: api->signals_blocked = *set; 4d358: 2151 00d0 movel %a1@,%a0@(208) <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending) ) { 4d35c: 2039 0006 2368 movel 62368 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & 4d362: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED 4d366: 4681 notl %d1 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { 4d368: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & 4d36c: c081 andl %d1,%d0 <== NOT EXECUTED 4d36e: 6710 beqs 4d380 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); 4d370: 4eb9 0004 993c jsr 4993c <_Thread_Dispatch> <== NOT EXECUTED } return 0; } 4d376: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if ( ~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); } return 0; 4d37a: 4280 clrl %d0 <== NOT EXECUTED } 4d37c: 4e5e unlk %fp <== NOT EXECUTED 4d37e: 4e75 rts <== NOT EXECUTED 4d380: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if ( ~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); } return 0; 4d384: 4280 clrl %d0 <== NOT EXECUTED } 4d386: 4e5e unlk %fp <== NOT EXECUTED 4d388: 4e75 rts <== NOT EXECUTED switch ( how ) { case SIG_BLOCK: api->signals_blocked |= *set; break; case SIG_UNBLOCK: api->signals_blocked &= ~*set; 4d38a: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d38c: 4680 notl %d0 <== NOT EXECUTED 4d38e: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED break; 4d392: 60c8 bras 4d35c <== NOT EXECUTED case SIG_SETMASK: api->signals_blocked = *set; break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4d394: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); } return 0; } 4d39a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED break; case SIG_SETMASK: api->signals_blocked = *set; break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4d39e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d3a0: 7216 moveq #22,%d1 <== NOT EXECUTED 4d3a2: 70ff moveq #-1,%d0 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); } return 0; } 4d3a4: 4e5e unlk %fp <== NOT EXECUTED break; case SIG_SETMASK: api->signals_blocked = *set; break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4d3a6: 2081 movel %d1,%a0@ <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); } return 0; } 4d3a8: 4e75 rts <== NOT EXECUTED if ( !set ) return 0; switch ( how ) { case SIG_BLOCK: api->signals_blocked |= *set; 4d3aa: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d3ac: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED break; 4d3b0: 60aa bras 4d35c <== NOT EXECUTED sigset_t *oset ) { POSIX_API_Control *api; if ( !set && !oset ) 4d3b2: 4a8a tstl %a2 <== NOT EXECUTED 4d3b4: 67de beqs 4d394 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4d3b6: 2079 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d3bc: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED if ( oset ) *oset = api->signals_blocked; 4d3c0: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED if ( !set ) 4d3c4: 4a89 tstl %a1 <== NOT EXECUTED 4d3c6: 6600 ff7e bnew 4d346 <== NOT EXECUTED 4d3ca: 60b4 bras 4d380 <== NOT EXECUTED =============================================================================== 00046594 : */ int pthread_spin_destroy( pthread_spinlock_t *spinlock ) { 46594: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 46598: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; if ( !spinlock ) 4659c: 4a88 tstl %a0 <== NOT EXECUTED 4659e: 6730 beqs 465d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 465a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 465a4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 465a6: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 465ac: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 465b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 465b6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 465ba: 6614 bnes 465d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( CORE_spinlock_Control *the_spinlock ) { return (the_spinlock->users != 0); 465bc: 2040 moveal %d0,%a0 <== NOT EXECUTED 465be: 2228 0018 movel %a0@(24),%d1 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) { 465c2: 6712 beqs 465d6 <== NOT EXECUTED _Thread_Enable_dispatch(); 465c4: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return EBUSY; 465ca: 7010 moveq #16,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 465cc: 4e5e unlk %fp <== NOT EXECUTED 465ce: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 465d0: 7016 moveq #22,%d0 <== NOT EXECUTED } 465d2: 4e5e unlk %fp <== NOT EXECUTED 465d4: 4e75 rts <== NOT EXECUTED if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) { _Thread_Enable_dispatch(); return EBUSY; } _Objects_Close( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 465d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465d8: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 465de: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 465e2: 4eb9 0004 8504 jsr 48504 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free ( POSIX_Spinlock_Control *the_spinlock ) { _Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 465e8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 465ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465ee: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 465f4: 4eb9 0004 87c8 jsr 487c8 <_Objects_Free> <== NOT EXECUTED _POSIX_Spinlock_Free( the_spinlock ); _Thread_Enable_dispatch(); 465fa: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46600: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46604: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46606: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004660c : int pthread_spin_init( pthread_spinlock_t *spinlock, int pshared ) { 4660c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46610: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46612: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46614: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock; CORE_spinlock_Attributes attributes; if ( !spinlock ) 46618: 4a8a tstl %a2 <== NOT EXECUTED 4661a: 6766 beqs 46682 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 4661c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 46620: 6660 bnes 46682 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46622: 2039 0006 0e08 movel 60e08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46628: 5280 addql #1,%d0 <== NOT EXECUTED 4662a: 23c0 0006 0e08 movel %d0,60e08 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free spinlock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void ) { return (POSIX_Spinlock_Control *) _Objects_Allocate( &_POSIX_Spinlock_Information ); 46630: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 46636: 4eb9 0004 8474 jsr 48474 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_spinlock = _POSIX_Spinlock_Allocate(); if ( !the_spinlock ) { 4663c: 588f addql #4,%sp <== NOT EXECUTED 4663e: 2640 moveal %d0,%a3 <== NOT EXECUTED 46640: 4a80 tstl %d0 <== NOT EXECUTED 46642: 674c beqs 46690 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes( CORE_spinlock_Attributes *the_attributes ) { the_attributes->XXX = 0; 46644: 204e moveal %fp,%a0 <== NOT EXECUTED 46646: 42a0 clrl %a0@- <== NOT EXECUTED return EAGAIN; } _CORE_spinlock_Initialize_attributes( &attributes ); _CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes ); 46648: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4664a: 486b 0010 pea %a3@(16) <== NOT EXECUTED 4664e: 4eb9 0004 7db8 jsr 47db8 <_CORE_spinlock_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46654: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46658: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4665a: 2079 0006 101c moveal 6101c <_POSIX_Spinlock_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46660: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46662: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 46666: 42ab 000c clrl %a3@(12) <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 ); *spinlock = the_spinlock->Object.id; 4666a: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4666c: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 46672: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 ); *spinlock = the_spinlock->Object.id; _Thread_Enable_dispatch(); return 0; 46676: 508f addql #8,%sp <== NOT EXECUTED 46678: 4280 clrl %d0 <== NOT EXECUTED } 4667a: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4667e: 4e5e unlk %fp <== NOT EXECUTED 46680: 4e75 rts <== NOT EXECUTED 46682: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED switch ( pshared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 46686: 7016 moveq #22,%d0 <== NOT EXECUTED *spinlock = the_spinlock->Object.id; _Thread_Enable_dispatch(); return 0; } 46688: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4668c: 4e5e unlk %fp <== NOT EXECUTED 4668e: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_spinlock = _POSIX_Spinlock_Allocate(); if ( !the_spinlock ) { _Thread_Enable_dispatch(); 46690: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED *spinlock = the_spinlock->Object.id; _Thread_Enable_dispatch(); return 0; } 46696: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED the_spinlock = _POSIX_Spinlock_Allocate(); if ( !the_spinlock ) { _Thread_Enable_dispatch(); return EAGAIN; 4669a: 700b moveq #11,%d0 <== NOT EXECUTED *spinlock = the_spinlock->Object.id; _Thread_Enable_dispatch(); return 0; } 4669c: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 466a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000466a4 : */ int pthread_spin_lock( pthread_spinlock_t *spinlock ) { 466a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 466a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 466ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 466ae: 4a88 tstl %a0 <== NOT EXECUTED 466b0: 674a beqs 466fc <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 466b2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 466b6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 466b8: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 466be: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 466c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 466c8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 466cc: 662e bnes 466fc <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 ); 466ce: 42a7 clrl %sp@- <== NOT EXECUTED 466d0: 4878 0001 pea 1 <== NOT EXECUTED 466d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 466d6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 466da: 4eb9 0004 7e30 jsr 47e30 <_CORE_spinlock_Wait> <== NOT EXECUTED 466e0: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 466e2: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 466e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 466ea: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 466f0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 ); _Thread_Enable_dispatch(); return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 466f4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 466f8: 4e5e unlk %fp <== NOT EXECUTED 466fa: 4e75 rts <== NOT EXECUTED 466fc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46700: 7016 moveq #22,%d0 <== NOT EXECUTED } 46702: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046720 : */ int pthread_spin_trylock( pthread_spinlock_t *spinlock ) { 46720: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46724: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46728: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 4672a: 4a88 tstl %a0 <== NOT EXECUTED 4672c: 6748 beqs 46776 <== NOT EXECUTED 4672e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46732: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46734: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 4673a: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 46740: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46744: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46748: 662c bnes 46776 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 ); 4674a: 42a7 clrl %sp@- <== NOT EXECUTED 4674c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4674e: 42a7 clrl %sp@- <== NOT EXECUTED 46750: 4868 0010 pea %a0@(16) <== NOT EXECUTED 46754: 4eb9 0004 7e30 jsr 47e30 <_CORE_spinlock_Wait> <== NOT EXECUTED 4675a: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 4675c: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 46762: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46764: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4676a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 ); _Thread_Enable_dispatch(); return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 4676e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46772: 4e5e unlk %fp <== NOT EXECUTED 46774: 4e75 rts <== NOT EXECUTED 46776: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4677a: 7016 moveq #22,%d0 <== NOT EXECUTED } 4677c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046780 : */ int pthread_spin_unlock( pthread_spinlock_t *spinlock ) { 46780: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46784: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46788: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 4678a: 4a88 tstl %a0 <== NOT EXECUTED 4678c: 6742 beqs 467d0 <== NOT EXECUTED 4678e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46792: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46794: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED 4679a: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 467a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 467a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 467a8: 6626 bnes 467d0 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Release( &the_spinlock->Spinlock ); 467aa: 2040 moveal %d0,%a0 <== NOT EXECUTED 467ac: 4868 0010 pea %a0@(16) <== NOT EXECUTED 467b0: 4eb9 0004 7dd8 jsr 47dd8 <_CORE_spinlock_Release> <== NOT EXECUTED 467b6: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 467b8: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 467be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 467c0: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 467c6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: status = _CORE_spinlock_Release( &the_spinlock->Spinlock ); _Thread_Enable_dispatch(); return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 467ca: 508f addql #8,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 467cc: 4e5e unlk %fp <== NOT EXECUTED 467ce: 4e75 rts <== NOT EXECUTED 467d0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 467d4: 7016 moveq #22,%d0 <== NOT EXECUTED } 467d6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046b98 : * * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) { 46b98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * Don't even think about deleting a resource from an ISR. * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) 46b9c: 4ab9 0006 1318 tstl 61318 <_Per_CPU_Information+0x8> <== NOT EXECUTED 46ba2: 663c bnes 46be0 <== NOT EXECUTED return; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 46ba4: 2079 0006 131c moveal 6131c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46baa: 2039 0006 0e92 movel 60e92 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46bb0: 5280 addql #1,%d0 <== NOT EXECUTED 46bb2: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 46bb6: 23c0 0006 0e92 movel %d0,60e92 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 46bbc: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 46bc0: 6622 bnes 46be4 <== NOT EXECUTED 46bc2: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 46bc6: 671c beqs 46be4 <== NOT EXECUTED thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 46bc8: 4eb9 0004 96b6 jsr 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); 46bce: 4878 ffff pea ffffffff <== NOT EXECUTED 46bd2: 2f39 0006 131c movel 6131c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 46bd8: 4eb9 0004 cc44 jsr 4cc44 <_POSIX_Thread_Exit> <== NOT EXECUTED 46bde: 508f addql #8,%sp <== NOT EXECUTED } 46be0: 4e5e unlk %fp <== NOT EXECUTED 46be2: 4e75 rts <== NOT EXECUTED 46be4: 4e5e unlk %fp <== NOT EXECUTED _Thread_Disable_dispatch(); if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 46be6: 4ef9 0004 96b6 jmp 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 0004766c : * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) { 4766c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 47670: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 47674: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 4767a: 47f9 0004 80d8 lea 480d8 ,%a3 <== NOT EXECUTED * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) { 47680: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 47684: 4e93 jsr %a3@ <== NOT EXECUTED if (result != 0) { 47686: 588f addql #4,%sp <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 47688: 2400 movel %d0,%d2 <== NOT EXECUTED if (result != 0) { 4768a: 6600 00ba bnew 47746 <== NOT EXECUTED return result; } /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); 4768e: 49f9 0004 8a98 lea 48a98 ,%a4 <== NOT EXECUTED 47694: 4e94 jsr %a4@ <== NOT EXECUTED 47696: 486e ffdc pea %fp@(-36) <== NOT EXECUTED 4769a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4769e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476a0: 4eb9 0004 8604 jsr 48604 <== NOT EXECUTED req->caller_thread = pthread_self (); 476a6: 4e94 jsr %a4@ <== NOT EXECUTED req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 476a8: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED req->policy = policy; req->aiocbp->error_code = EINPROGRESS; req->aiocbp->return_value = 0; if ((aio_request_queue.idle_threads == 0) && 476ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); req->caller_thread = pthread_self (); req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 476b0: 222e ffdc movel %fp@(-36),%d1 <== NOT EXECUTED 476b4: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED req->policy = policy; 476b8: 256e fff8 0008 movel %fp@(-8),%a2@(8) <== NOT EXECUTED /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); req->caller_thread = pthread_self (); 476be: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED req->priority = param.sched_priority - req->aiocbp->aio_reqprio; req->policy = policy; req->aiocbp->error_code = EINPROGRESS; 476c2: 7077 moveq #119,%d0 <== NOT EXECUTED /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); req->caller_thread = pthread_self (); req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 476c4: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED req->policy = policy; req->aiocbp->error_code = EINPROGRESS; 476c8: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED req->aiocbp->return_value = 0; 476cc: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED if ((aio_request_queue.idle_threads == 0) && 476d0: 4ab9 0006 2e00 tstl 62e00 <== NOT EXECUTED 476d6: 660a bnes 476e2 <== NOT EXECUTED 476d8: 7204 moveq #4,%d1 <== NOT EXECUTED 476da: b2b9 0006 2dfc cmpl 62dfc ,%d1 <== NOT EXECUTED 476e0: 6c7a bges 4775c <== NOT EXECUTED else { /* the maximum number of threads has been already created even though some of them might be idle. The request belongs to one of the active fd chain */ r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, 476e2: 42a7 clrl %sp@- <== NOT EXECUTED 476e4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 476e6: 4bf9 0004 71d6 lea 471d6 ,%a5 <== NOT EXECUTED 476ec: 4879 0006 2de0 pea 62de0 <== NOT EXECUTED 476f2: 4e95 jsr %a5@ <== NOT EXECUTED req->aiocbp->aio_fildes, 0); if (r_chain != NULL) 476f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED else { /* the maximum number of threads has been already created even though some of them might be idle. The request belongs to one of the active fd chain */ r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, 476f8: 2840 moveal %d0,%a4 <== NOT EXECUTED req->aiocbp->aio_fildes, 0); if (r_chain != NULL) 476fa: 4a80 tstl %d0 <== NOT EXECUTED 476fc: 6700 00e0 beqw 477de <== NOT EXECUTED { pthread_mutex_lock (&r_chain->mutex); 47700: 260c movel %a4,%d3 <== NOT EXECUTED 47702: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED rtems_aio_insert_prio (&r_chain->perfd, req); pthread_cond_signal (&r_chain->cond); pthread_mutex_unlock (&r_chain->mutex); 47708: 4bf9 0004 8174 lea 48174 ,%a5 <== NOT EXECUTED The request belongs to one of the active fd chain */ r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, req->aiocbp->aio_fildes, 0); if (r_chain != NULL) { pthread_mutex_lock (&r_chain->mutex); 4770e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47710: 4e93 jsr %a3@ <== NOT EXECUTED rtems_aio_insert_prio (&r_chain->perfd, req); 47712: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47714: 486c 0008 pea %a4@(8) <== NOT EXECUTED 47718: 4eb9 0004 7538 jsr 47538 <== NOT EXECUTED pthread_cond_signal (&r_chain->cond); 4771e: 486c 0020 pea %a4@(32) <== NOT EXECUTED 47722: 4eb9 0004 7c60 jsr 47c60 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 47728: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4772a: 4e95 jsr %a5@ <== NOT EXECUTED 4772c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); } } pthread_mutex_unlock (&aio_request_queue.mutex); 47730: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 47736: 4e95 jsr %a5@ <== NOT EXECUTED return 0; 47738: 588f addql #4,%sp <== NOT EXECUTED } 4773a: 2002 movel %d2,%d0 <== NOT EXECUTED 4773c: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47742: 4e5e unlk %fp <== NOT EXECUTED 47744: 4e75 rts <== NOT EXECUTED /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); if (result != 0) { free (req); 47746: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47748: 4eb9 0004 3978 jsr 43978 <== NOT EXECUTED return result; 4774e: 588f addql #4,%sp <== NOT EXECUTED } } pthread_mutex_unlock (&aio_request_queue.mutex); return 0; } 47750: 2002 movel %d2,%d0 <== NOT EXECUTED 47752: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47758: 4e5e unlk %fp <== NOT EXECUTED 4775a: 4e75 rts <== NOT EXECUTED if ((aio_request_queue.idle_threads == 0) && aio_request_queue.active_threads < AIO_MAX_THREADS) /* we still have empty places on the active_threads chain */ { chain = &aio_request_queue.work_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 4775c: 4878 0001 pea 1 <== NOT EXECUTED 47760: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 47762: 4879 0006 2de0 pea 62de0 <== NOT EXECUTED 47768: 4eb9 0004 71d6 jsr 471d6 <== NOT EXECUTED if (r_chain->new_fd == 1) { 4776e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ((aio_request_queue.idle_threads == 0) && aio_request_queue.active_threads < AIO_MAX_THREADS) /* we still have empty places on the active_threads chain */ { chain = &aio_request_queue.work_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 47772: 2840 moveal %d0,%a4 <== NOT EXECUTED if (r_chain->new_fd == 1) { 47774: 7001 moveq #1,%d0 <== NOT EXECUTED 47776: b0ac 0018 cmpl %a4@(24),%d0 <== NOT EXECUTED 4777a: 6684 bnes 47700 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert(_Chain_Head(the_chain), the_node); 4777c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4777e: 486c 0008 pea %a4@(8) <== NOT EXECUTED 47782: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED rtems_chain_prepend (&r_chain->perfd, &req->next_prio); r_chain->new_fd = 0; 47788: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED pthread_mutex_init (&r_chain->mutex, NULL); 4778c: 42a7 clrl %sp@- <== NOT EXECUTED 4778e: 486c 001c pea %a4@(28) <== NOT EXECUTED 47792: 4eb9 0004 7f98 jsr 47f98 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); 47798: 42a7 clrl %sp@- <== NOT EXECUTED 4779a: 486c 0020 pea %a4@(32) <== NOT EXECUTED 4779e: 4eb9 0004 7ba0 jsr 47ba0 <== NOT EXECUTED AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, 477a4: 2f0c movel %a4,%sp@- <== NOT EXECUTED 477a6: 487a faec pea %pc@(47294 ) <== NOT EXECUTED 477aa: 4879 0006 2da0 pea 62da0 <== NOT EXECUTED 477b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477b4: 4eb9 0004 82f4 jsr 482f4 <== NOT EXECUTED rtems_aio_handle, (void *) r_chain); if (result != 0) { 477ba: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 477be: 4a80 tstl %d0 <== NOT EXECUTED 477c0: 6600 00b0 bnew 47872 <== NOT EXECUTED /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); } } pthread_mutex_unlock (&aio_request_queue.mutex); 477c4: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED rtems_aio_handle, (void *) r_chain); if (result != 0) { pthread_mutex_unlock (&aio_request_queue.mutex); return result; } ++aio_request_queue.active_threads; 477ca: 52b9 0006 2dfc addql #1,62dfc <== NOT EXECUTED 477d0: 4bf9 0004 8174 lea 48174 ,%a5 <== NOT EXECUTED /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); } } pthread_mutex_unlock (&aio_request_queue.mutex); 477d6: 4e95 jsr %a5@ <== NOT EXECUTED return 0; 477d8: 588f addql #4,%sp <== NOT EXECUTED 477da: 6000 ff5e braw 4773a <== NOT EXECUTED } else { /* or to the idle chain */ chain = &aio_request_queue.idle_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 477de: 4878 0001 pea 1 <== NOT EXECUTED 477e2: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 477e6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 477e8: 4879 0006 2dec pea 62dec <== NOT EXECUTED 477ee: 4e95 jsr %a5@ <== NOT EXECUTED if (r_chain->new_fd == 1) { 477f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 477f4: 7201 moveq #1,%d1 <== NOT EXECUTED } else { /* or to the idle chain */ chain = &aio_request_queue.idle_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 477f6: 2640 moveal %d0,%a3 <== NOT EXECUTED if (r_chain->new_fd == 1) { 477f8: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED 477fc: 6722 beqs 47820 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); pthread_cond_signal (&aio_request_queue.new_req); ++aio_request_queue.idle_threads; } else /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); 477fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47800: 486b 0008 pea %a3@(8) <== NOT EXECUTED 47804: 4bf9 0004 8174 lea 48174 ,%a5 <== NOT EXECUTED 4780a: 4eb9 0004 7538 jsr 47538 <== NOT EXECUTED 47810: 508f addql #8,%sp <== NOT EXECUTED } } pthread_mutex_unlock (&aio_request_queue.mutex); 47812: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 47818: 4e95 jsr %a5@ <== NOT EXECUTED return 0; 4781a: 588f addql #4,%sp <== NOT EXECUTED 4781c: 6000 ff1c braw 4773a <== NOT EXECUTED 47820: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47822: 486b 0008 pea %a3@(8) <== NOT EXECUTED 47826: 4bf9 0004 8174 lea 48174 ,%a5 <== NOT EXECUTED 4782c: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED if (r_chain->new_fd == 1) { /* If this is a new fd chain we signal the idle threads that might be waiting for requests */ AIO_printf (" New chain on waiting queue \n "); rtems_chain_prepend (&r_chain->perfd, &req->next_prio); r_chain->new_fd = 0; 47832: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED pthread_mutex_init (&r_chain->mutex, NULL); 47836: 42a7 clrl %sp@- <== NOT EXECUTED 47838: 486b 001c pea %a3@(28) <== NOT EXECUTED 4783c: 4eb9 0004 7f98 jsr 47f98 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); 47842: 42a7 clrl %sp@- <== NOT EXECUTED 47844: 486b 0020 pea %a3@(32) <== NOT EXECUTED 47848: 4eb9 0004 7ba0 jsr 47ba0 <== NOT EXECUTED pthread_cond_signal (&aio_request_queue.new_req); 4784e: 4879 0006 2d9c pea 62d9c <== NOT EXECUTED 47854: 4eb9 0004 7c60 jsr 47c60 <== NOT EXECUTED ++aio_request_queue.idle_threads; 4785a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4785e: 52b9 0006 2e00 addql #1,62e00 <== NOT EXECUTED /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); } } pthread_mutex_unlock (&aio_request_queue.mutex); 47864: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 4786a: 4e95 jsr %a5@ <== NOT EXECUTED return 0; 4786c: 588f addql #4,%sp <== NOT EXECUTED 4786e: 6000 feca braw 4773a <== NOT EXECUTED AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, rtems_aio_handle, (void *) r_chain); if (result != 0) { pthread_mutex_unlock (&aio_request_queue.mutex); 47872: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED return result; 47878: 2400 movel %d0,%d2 <== NOT EXECUTED AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, rtems_aio_handle, (void *) r_chain); if (result != 0) { pthread_mutex_unlock (&aio_request_queue.mutex); 4787a: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED return result; 47880: 588f addql #4,%sp <== NOT EXECUTED } } pthread_mutex_unlock (&aio_request_queue.mutex); return 0; } 47882: 2002 movel %d2,%d0 <== NOT EXECUTED 47884: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4788a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047294 : * NULL - if error */ static void * rtems_aio_handle (void *arg) { 47294: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED 47298: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED rtems_aio_request_chain *r_chain = arg; 4729c: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 472a0: 260e movel %fp,%d3 <== NOT EXECUTED 472a2: 240c movel %a4,%d2 <== NOT EXECUTED 472a4: 2e0e movel %fp,%d7 <== NOT EXECUTED 472a6: 4bf9 0004 80d8 lea 480d8 ,%a5 <== NOT EXECUTED 472ac: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED wait for a signal on chain, this will unlock the queue. The fd chain is already unlocked */ struct timespec timeout; pthread_mutex_unlock (&r_chain->mutex); 472b2: 2a3c 0004 8174 movel #295284,%d5 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 472b8: 2c3c 0004 9d28 movel #302376,%d6 <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 472be: 0683 ffff ffd8 addil #-40,%d3 <== NOT EXECUTED 472c4: 5987 subql #4,%d7 <== NOT EXECUTED /* acquire the mutex of the current fd chain. we don't need to lock the queue mutex since we can add requests to idle fd chains or even active ones if the working request has been extracted from the chain */ result = pthread_mutex_lock (&r_chain->mutex); 472c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 472c8: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) 472ca: 588f addql #4,%sp <== NOT EXECUTED 472cc: 4a80 tstl %d0 <== NOT EXECUTED 472ce: 6600 008c bnew 4735c <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 472d2: 200c movel %a4,%d0 <== NOT EXECUTED 472d4: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 472da: 246c 0008 moveal %a4@(8),%a2 <== NOT EXECUTED /* If the locked chain is not empty, take the first request extract it, unlock the chain and process the request, in this way the user can supply more requests to this fd chain */ if (!rtems_chain_is_empty (chain)) { 472de: b08a cmpl %a2,%d0 <== NOT EXECUTED 472e0: 6700 00e4 beqw 473c6 <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 472e4: 47f9 0004 8a98 lea 48a98 ,%a3 <== NOT EXECUTED 472ea: 4e93 jsr %a3@ <== NOT EXECUTED 472ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED 472ee: 2f07 movel %d7,%sp@- <== NOT EXECUTED 472f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472f2: 4eb9 0004 8604 jsr 48604 <== NOT EXECUTED param.sched_priority = req->priority; 472f8: 2d6a 000c ffd8 movel %a2@(12),%fp@(-40) <== NOT EXECUTED pthread_setschedparam (pthread_self(), req->policy, ¶m); 472fe: 282a 0008 movel %a2@(8),%d4 <== NOT EXECUTED 47302: 4e93 jsr %a3@ <== NOT EXECUTED 47304: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47306: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47308: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4730a: 4eb9 0004 8aac jsr 48aac <== NOT EXECUTED 47310: 2046 moveal %d6,%a0 <== NOT EXECUTED 47312: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47314: 4e90 jsr %a0@ <== NOT EXECUTED rtems_chain_extract (node); pthread_mutex_unlock (&r_chain->mutex); 47316: 2045 moveal %d5,%a0 <== NOT EXECUTED 47318: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4731a: 4e90 jsr %a0@ <== NOT EXECUTED switch (req->aiocbp->aio_lio_opcode) { 4731c: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED 47320: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 47324: 7202 moveq #2,%d1 <== NOT EXECUTED 47326: 202b 002c movel %a3@(44),%d0 <== NOT EXECUTED 4732a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4732c: 677a beqs 473a8 <== NOT EXECUTED 4732e: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 47332: b280 cmpl %d0,%d1 <== NOT EXECUTED 47334: 6766 beqs 4739c <== NOT EXECUTED 47336: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4733a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4733c: 672a beqs 47368 <== NOT EXECUTED default: result = -1; } if (result == -1) { req->aiocbp->return_value = -1; 4733e: 70ff moveq #-1,%d0 <== NOT EXECUTED 47340: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED req->aiocbp->error_code = errno; 47344: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED 4734a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4734c: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED /* acquire the mutex of the current fd chain. we don't need to lock the queue mutex since we can add requests to idle fd chains or even active ones if the working request has been extracted from the chain */ result = pthread_mutex_lock (&r_chain->mutex); 47350: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47352: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) 47354: 588f addql #4,%sp <== NOT EXECUTED 47356: 4a80 tstl %d0 <== NOT EXECUTED 47358: 6700 ff78 beqw 472d2 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4735c: 4280 clrl %d0 <== NOT EXECUTED 4735e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47364: 4e5e unlk %fp <== NOT EXECUTED 47366: 4e75 rts <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); switch (req->aiocbp->aio_lio_opcode) { case LIO_READ: result = pread (req->aiocbp->aio_fildes, 47368: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 4736c: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 47370: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 47374: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 47378: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4737a: 4eb9 0005 216a jsr 5216a <== NOT EXECUTED (void *) req->aiocbp->aio_buf, req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; 47380: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED break; default: result = -1; } if (result == -1) { 47384: 72ff moveq #-1,%d1 <== NOT EXECUTED 47386: b280 cmpl %d0,%d1 <== NOT EXECUTED 47388: 6700 017a beqw 47504 <== NOT EXECUTED req->aiocbp->return_value = -1; req->aiocbp->error_code = errno; } else { req->aiocbp->return_value = result; 4738c: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47390: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED req->aiocbp->error_code = 0; 47394: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED 47398: 6000 ff2c braw 472c6 <== NOT EXECUTED (void *) req->aiocbp->aio_buf, req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; case LIO_SYNC: result = fsync (req->aiocbp->aio_fildes); 4739c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4739e: 4eb9 0004 e20c jsr 4e20c <== NOT EXECUTED break; 473a4: 588f addql #4,%sp <== NOT EXECUTED 473a6: 60dc bras 47384 <== NOT EXECUTED (void *) req->aiocbp->aio_buf, req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; case LIO_WRITE: result = pwrite (req->aiocbp->aio_fildes, 473a8: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 473ac: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 473b0: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 473b4: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 473b8: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 473ba: 4eb9 0005 2232 jsr 52232 <== NOT EXECUTED (void *) req->aiocbp->aio_buf, req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; 473c0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 473c4: 60be bras 47384 <== NOT EXECUTED wait for a signal on chain, this will unlock the queue. The fd chain is already unlocked */ struct timespec timeout; pthread_mutex_unlock (&r_chain->mutex); 473c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 473c8: 2045 moveal %d5,%a0 <== NOT EXECUTED 473ca: 4e90 jsr %a0@ <== NOT EXECUTED pthread_mutex_lock (&aio_request_queue.mutex); 473cc: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 473d2: 4eb9 0004 80d8 jsr 480d8 <== NOT EXECUTED if (rtems_chain_is_empty (chain)) 473d8: 508f addql #8,%sp <== NOT EXECUTED 473da: b5ec 0008 cmpal %a4@(8),%a2 <== NOT EXECUTED 473de: 6600 fee6 bnew 472c6 <== NOT EXECUTED { clock_gettime (CLOCK_REALTIME, &timeout); 473e2: 486e fff4 pea %fp@(-12) <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 473e6: 280c movel %a4,%d4 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); 473e8: 4878 0001 pea 1 <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 473ec: 0684 0000 0020 addil #32,%d4 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); 473f2: 4eb9 0004 7a30 jsr 47a30 <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 473f8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; 473fc: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 47400: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; timeout.tv_nsec = 0; 47406: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED result = pthread_cond_timedwait (&r_chain->cond, 4740a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4740c: 4eb9 0004 7cdc jsr 47cdc <== NOT EXECUTED &aio_request_queue.mutex, &timeout); /* If no requests were added to the chain we delete the fd chain from the queue and start working with idle fd chains */ if (result == ETIMEDOUT) { 47412: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 47416: 7274 moveq #116,%d1 <== NOT EXECUTED 47418: b280 cmpl %d0,%d1 <== NOT EXECUTED 4741a: 6600 feaa bnew 472c6 <== NOT EXECUTED 4741e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47420: 2046 moveal %d6,%a0 <== NOT EXECUTED 47422: 4e90 jsr %a0@ <== NOT EXECUTED rtems_chain_extract (&r_chain->next_fd); pthread_mutex_destroy (&r_chain->mutex); 47424: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47426: 4eb9 0004 7e24 jsr 47e24 <== NOT EXECUTED pthread_cond_destroy (&r_chain->cond); 4742c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4742e: 4eb9 0004 7ab0 jsr 47ab0 <== NOT EXECUTED free (r_chain); 47434: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47436: 4eb9 0004 3978 jsr 43978 <== NOT EXECUTED /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { 4743c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47440: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED 47446: b0b9 0006 2dec cmpl 62dec ,%d0 <== NOT EXECUTED 4744c: 6710 beqs 4745e <== NOT EXECUTED r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd; } else /* If there was a request added in the initial fd chain then release the mutex and process it */ pthread_mutex_unlock (&aio_request_queue.mutex); 4744e: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 47454: 2045 moveal %d5,%a0 <== NOT EXECUTED 47456: 4e90 jsr %a0@ <== NOT EXECUTED 47458: 588f addql #4,%sp <== NOT EXECUTED 4745a: 6000 fe6a braw 472c6 <== NOT EXECUTED /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { ++aio_request_queue.idle_threads; clock_gettime (CLOCK_REALTIME, &timeout); 4745e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED free (r_chain); /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { ++aio_request_queue.idle_threads; 47462: 52b9 0006 2e00 addql #1,62e00 <== NOT EXECUTED clock_gettime (CLOCK_REALTIME, &timeout); 47468: 4878 0001 pea 1 <== NOT EXECUTED 4746c: 4eb9 0004 7a30 jsr 47a30 <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&aio_request_queue.new_req, 47472: 486e fff4 pea %fp@(-12) <== NOT EXECUTED /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { ++aio_request_queue.idle_threads; clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; 47476: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED timeout.tv_nsec = 0; result = pthread_cond_timedwait (&aio_request_queue.new_req, 4747a: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 47480: 4879 0006 2d9c pea 62d9c <== NOT EXECUTED signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { ++aio_request_queue.idle_threads; clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; timeout.tv_nsec = 0; 47486: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED result = pthread_cond_timedwait (&aio_request_queue.new_req, 4748a: 4eb9 0004 7cdc jsr 47cdc <== NOT EXECUTED &aio_request_queue.mutex, &timeout); /* If no new fd chain was added in the idle requests then this thread is finished */ if (result == ETIMEDOUT) { 47490: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 47494: 7274 moveq #116,%d1 <== NOT EXECUTED 47496: b280 cmpl %d0,%d1 <== NOT EXECUTED 47498: 6700 0084 beqw 4751e <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4749c: 2479 0006 2dec moveal 62dec ,%a2 <== NOT EXECUTED return NULL; } /* Otherwise move this chain to the working chain and start the loop all over again */ --aio_request_queue.idle_threads; 474a2: 53b9 0006 2e00 subql #1,62e00 <== NOT EXECUTED 474a8: 2046 moveal %d6,%a0 <== NOT EXECUTED 474aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474ac: 4e90 jsr %a0@ <== NOT EXECUTED node = rtems_chain_first (&aio_request_queue.idle_req); rtems_chain_extract (node); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, 474ae: 4878 0001 pea 1 <== NOT EXECUTED 474b2: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED 474b6: 4879 0006 2de0 pea 62de0 <== NOT EXECUTED 474bc: 4eb9 0004 71d6 jsr 471d6 <== NOT EXECUTED 474c2: 2840 moveal %d0,%a4 <== NOT EXECUTED ((rtems_aio_request_chain *)node)->fildes, 1); r_chain->new_fd = 0; pthread_mutex_init (&r_chain->mutex, NULL); 474c4: 2400 movel %d0,%d2 <== NOT EXECUTED 474c6: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED node = rtems_chain_first (&aio_request_queue.idle_req); rtems_chain_extract (node); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, ((rtems_aio_request_chain *)node)->fildes, 1); r_chain->new_fd = 0; 474cc: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED pthread_mutex_init (&r_chain->mutex, NULL); 474d0: 42a7 clrl %sp@- <== NOT EXECUTED 474d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474d4: 4eb9 0004 7f98 jsr 47f98 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); 474da: 42a7 clrl %sp@- <== NOT EXECUTED 474dc: 486c 0020 pea %a4@(32) <== NOT EXECUTED 474e0: 4eb9 0004 7ba0 jsr 47ba0 <== NOT EXECUTED r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd; 474e6: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 474ea: 4878 000c pea c <== NOT EXECUTED 474ee: 486a 0008 pea %a2@(8) <== NOT EXECUTED 474f2: 486c 0008 pea %a4@(8) <== NOT EXECUTED 474f6: 4eb9 0005 1ff0 jsr 51ff0 <== NOT EXECUTED 474fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47500: 6000 fdc4 braw 472c6 <== NOT EXECUTED break; default: result = -1; } if (result == -1) { 47504: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED req->aiocbp->return_value = -1; 47508: 70ff moveq #-1,%d0 <== NOT EXECUTED 4750a: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED req->aiocbp->error_code = errno; 4750e: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED 47514: 2040 moveal %d0,%a0 <== NOT EXECUTED 47516: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED 4751a: 6000 fe34 braw 47350 <== NOT EXECUTED &timeout); /* If no new fd chain was added in the idle requests then this thread is finished */ if (result == ETIMEDOUT) { pthread_mutex_unlock (&aio_request_queue.mutex); 4751e: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 47524: 4eb9 0004 8174 jsr 48174 <== NOT EXECUTED return NULL; 4752a: 588f addql #4,%sp <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4752c: 4280 clrl %d0 <== NOT EXECUTED 4752e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47534: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047058 : * 0 - if initialization succeeded */ int rtems_aio_init (void) { 47058: 4e56 0000 linkw %fp,#0 4705c: 2f02 movel %d2,%sp@- int result = 0; result = pthread_attr_init (&aio_request_queue.attr); 4705e: 4879 0006 2da0 pea 62da0 47064: 4eb9 0004 829c jsr 4829c if (result != 0) 4706a: 588f addql #4,%sp int rtems_aio_init (void) { int result = 0; result = pthread_attr_init (&aio_request_queue.attr); 4706c: 2400 movel %d0,%d2 if (result != 0) 4706e: 670a beqs 4707a <== ALWAYS TAKEN aio_request_queue.active_threads = 0; aio_request_queue.idle_threads = 0; aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; return result; } 47070: 2002 movel %d2,%d0 <== NOT EXECUTED 47072: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 47076: 4e5e unlk %fp <== NOT EXECUTED 47078: 4e75 rts <== NOT EXECUTED result = pthread_attr_init (&aio_request_queue.attr); if (result != 0) return result; result = 4707a: 42a7 clrl %sp@- 4707c: 4879 0006 2da0 pea 62da0 47082: 4eb9 0004 82c8 jsr 482c8 pthread_attr_setdetachstate (&aio_request_queue.attr, PTHREAD_CREATE_DETACHED); if (result != 0) 47088: 508f addql #8,%sp 4708a: 4a80 tstl %d0 4708c: 6600 0122 bnew 471b0 pthread_attr_destroy (&aio_request_queue.attr); result = pthread_mutex_init (&aio_request_queue.mutex, NULL); 47090: 42a7 clrl %sp@- 47092: 4879 0006 2d98 pea 62d98 47098: 4eb9 0004 7f98 jsr 47f98 if (result != 0) 4709e: 508f addql #8,%sp 470a0: 4a80 tstl %d0 470a2: 6600 00e4 bnew 47188 pthread_attr_destroy (&aio_request_queue.attr); result = pthread_cond_init (&aio_request_queue.new_req, NULL); 470a6: 42a7 clrl %sp@- 470a8: 4879 0006 2d9c pea 62d9c 470ae: 4eb9 0004 7ba0 jsr 47ba0 if (result != 0) { 470b4: 508f addql #8,%sp result = pthread_mutex_init (&aio_request_queue.mutex, NULL); if (result != 0) pthread_attr_destroy (&aio_request_queue.attr); result = pthread_cond_init (&aio_request_queue.new_req, NULL); 470b6: 2400 movel %d0,%d2 if (result != 0) { 470b8: 665e bnes 47118 <== NEVER TAKEN { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 470ba: 42b9 0006 2de4 clrl 62de4 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 470c0: 203c 0006 2de4 movel #404964,%d0 470c6: 23c0 0006 2de0 movel %d0,62de0 head->previous = NULL; tail->previous = head; 470cc: 203c 0006 2de0 movel #404960,%d0 470d2: 23c0 0006 2de8 movel %d0,62de8 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 470d8: 203c 0006 2df0 movel #404976,%d0 470de: 23c0 0006 2dec movel %d0,62dec head->previous = NULL; tail->previous = head; 470e4: 203c 0006 2dec movel #404972,%d0 470ea: 23c0 0006 2df4 movel %d0,62df4 rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; aio_request_queue.idle_threads = 0; aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 470f0: 203c 0000 b00b movel #45067,%d0 { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 470f6: 42b9 0006 2df0 clrl 62df0 } rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; 470fc: 42b9 0006 2dfc clrl 62dfc aio_request_queue.idle_threads = 0; 47102: 42b9 0006 2e00 clrl 62e00 aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 47108: 23c0 0006 2df8 movel %d0,62df8 return result; } 4710e: 2002 movel %d2,%d0 47110: 242e fffc movel %fp@(-4),%d2 47114: 4e5e unlk %fp 47116: 4e75 rts pthread_attr_destroy (&aio_request_queue.attr); result = pthread_cond_init (&aio_request_queue.new_req, NULL); if (result != 0) { pthread_mutex_destroy (&aio_request_queue.mutex); 47118: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 4711e: 4eb9 0004 7e24 jsr 47e24 <== NOT EXECUTED pthread_attr_destroy (&aio_request_queue.attr); 47124: 4879 0006 2da0 pea 62da0 <== NOT EXECUTED 4712a: 4eb9 0004 827c jsr 4827c <== NOT EXECUTED 47130: 508f addql #8,%sp <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 47132: 203c 0006 2de4 movel #404964,%d0 <== NOT EXECUTED 47138: 23c0 0006 2de0 movel %d0,62de0 <== NOT EXECUTED head->previous = NULL; tail->previous = head; 4713e: 203c 0006 2de0 movel #404960,%d0 <== NOT EXECUTED 47144: 23c0 0006 2de8 movel %d0,62de8 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 4714a: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED 47150: 23c0 0006 2dec movel %d0,62dec <== NOT EXECUTED head->previous = NULL; tail->previous = head; 47156: 203c 0006 2dec movel #404972,%d0 <== NOT EXECUTED 4715c: 23c0 0006 2df4 movel %d0,62df4 <== NOT EXECUTED rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; aio_request_queue.idle_threads = 0; aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 47162: 203c 0000 b00b movel #45067,%d0 <== NOT EXECUTED { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 47168: 42b9 0006 2de4 clrl 62de4 <== NOT EXECUTED 4716e: 42b9 0006 2df0 clrl 62df0 <== NOT EXECUTED } rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; 47174: 42b9 0006 2dfc clrl 62dfc <== NOT EXECUTED aio_request_queue.idle_threads = 0; 4717a: 42b9 0006 2e00 clrl 62e00 <== NOT EXECUTED aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 47180: 23c0 0006 2df8 movel %d0,62df8 <== NOT EXECUTED 47186: 6086 bras 4710e <== NOT EXECUTED pthread_attr_destroy (&aio_request_queue.attr); result = pthread_mutex_init (&aio_request_queue.mutex, NULL); if (result != 0) pthread_attr_destroy (&aio_request_queue.attr); 47188: 4879 0006 2da0 pea 62da0 <== NOT EXECUTED 4718e: 4eb9 0004 827c jsr 4827c <== NOT EXECUTED 47194: 588f addql #4,%sp <== NOT EXECUTED result = pthread_cond_init (&aio_request_queue.new_req, NULL); 47196: 42a7 clrl %sp@- <== NOT EXECUTED 47198: 4879 0006 2d9c pea 62d9c <== NOT EXECUTED 4719e: 4eb9 0004 7ba0 jsr 47ba0 <== NOT EXECUTED if (result != 0) { 471a4: 508f addql #8,%sp <== NOT EXECUTED result = pthread_mutex_init (&aio_request_queue.mutex, NULL); if (result != 0) pthread_attr_destroy (&aio_request_queue.attr); result = pthread_cond_init (&aio_request_queue.new_req, NULL); 471a6: 2400 movel %d0,%d2 <== NOT EXECUTED if (result != 0) { 471a8: 6700 ff10 beqw 470ba <== NOT EXECUTED 471ac: 6000 ff6a braw 47118 <== NOT EXECUTED result = pthread_attr_setdetachstate (&aio_request_queue.attr, PTHREAD_CREATE_DETACHED); if (result != 0) pthread_attr_destroy (&aio_request_queue.attr); 471b0: 4879 0006 2da0 pea 62da0 <== NOT EXECUTED 471b6: 4eb9 0004 827c jsr 4827c <== NOT EXECUTED 471bc: 588f addql #4,%sp <== NOT EXECUTED result = pthread_mutex_init (&aio_request_queue.mutex, NULL); 471be: 42a7 clrl %sp@- <== NOT EXECUTED 471c0: 4879 0006 2d98 pea 62d98 <== NOT EXECUTED 471c6: 4eb9 0004 7f98 jsr 47f98 <== NOT EXECUTED if (result != 0) 471cc: 508f addql #8,%sp <== NOT EXECUTED 471ce: 4a80 tstl %d0 <== NOT EXECUTED 471d0: 6700 fed4 beqw 470a6 <== NOT EXECUTED 471d4: 60b2 bras 47188 <== NOT EXECUTED =============================================================================== 00047538 : * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) { 47538: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4753c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 47540: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 47544: 2640 moveal %d0,%a3 <== NOT EXECUTED * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) { 47546: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4754a: 225b moveal %a3@+,%a1 <== NOT EXECUTED rtems_chain_node *node; AIO_printf ("FD exists \n"); node = rtems_chain_first (chain); if (rtems_chain_is_empty (chain)) { 4754c: b7c9 cmpal %a1,%a3 <== NOT EXECUTED 4754e: 6730 beqs 47580 <== NOT EXECUTED rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && 47550: 246c 0014 moveal %a4@(20),%a2 <== NOT EXECUTED if (rtems_chain_is_empty (chain)) { AIO_printf ("First in chain \n"); rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; 47554: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED while (req->aiocbp->aio_reqprio > prio && 47558: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4755c: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 47560: 6f2a bles 4758c <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 47562: 2051 moveal %a1@,%a0 <== NOT EXECUTED rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && 47564: 2248 moveal %a0,%a1 <== NOT EXECUTED !rtems_chain_is_tail (chain, node)) { node = rtems_chain_next (node); prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; 47566: 2468 0014 moveal %a0@(20),%a2 <== NOT EXECUTED rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && 4756a: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4756e: 6f06 bles 47576 <== NOT EXECUTED 47570: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 47572: 66ee bnes 47562 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 47574: 204b moveal %a3,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *the_node ) { _Chain_Insert( after_node, the_node ); 47576: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED 4757a: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED } rtems_chain_insert (node->previous, &req->next_prio); } } 47580: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 47584: 4e5e unlk %fp <== NOT EXECUTED 47586: 4ef9 0004 9d8c jmp 49d8c <_Chain_Insert> <== NOT EXECUTED rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && 4758c: 2049 moveal %a1,%a0 <== NOT EXECUTED 4758e: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED 47592: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED 47598: 60e6 bras 47580 <== NOT EXECUTED =============================================================================== 0004759a : * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) { 4759a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4759e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 475a2: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 475a6: 2608 movel %a0,%d3 <== NOT EXECUTED 475a8: 0683 0000 000c addil #12,%d3 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 475ae: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED rtems_chain_control *chain; rtems_chain_node *node; chain = &r_chain->perfd; node = rtems_chain_first (chain); while (!rtems_chain_is_tail (chain, node)) 475b2: b68a cmpl %a2,%d3 <== NOT EXECUTED 475b4: 6732 beqs 475e8 <== NOT EXECUTED 475b6: 49f9 0004 9d28 lea 49d28 <_Chain_Extract>,%a4 <== NOT EXECUTED 475bc: 47f9 0004 3978 lea 43978 ,%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 475c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475c4: 4e94 jsr %a4@ <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 475c6: 2412 movel %a2@,%d2 <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node)) { rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); req->aiocbp->error_code = ECANCELED; 475c8: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 475ce: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 475d2: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED req->aiocbp->return_value = -1; 475d6: 70ff moveq #-1,%d0 <== NOT EXECUTED 475d8: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED free (req); 475dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node)) { rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); 475de: 2442 moveal %d2,%a2 <== NOT EXECUTED req->aiocbp->error_code = ECANCELED; req->aiocbp->return_value = -1; free (req); 475e0: 4e93 jsr %a3@ <== NOT EXECUTED rtems_chain_control *chain; rtems_chain_node *node; chain = &r_chain->perfd; node = rtems_chain_first (chain); while (!rtems_chain_is_tail (chain, node)) 475e2: 508f addql #8,%sp <== NOT EXECUTED 475e4: b682 cmpl %d2,%d3 <== NOT EXECUTED 475e6: 66da bnes 475c2 <== NOT EXECUTED node = rtems_chain_next (node); req->aiocbp->error_code = ECANCELED; req->aiocbp->return_value = -1; free (req); } } 475e8: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 475ee: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000475f2 : * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { 475f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 475f6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { 475fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475fc: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 47600: 2059 moveal %a1@+,%a0 <== NOT EXECUTED * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { if (rtems_chain_is_empty (chain)) 47602: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 47604: 675c beqs 47662 <== NOT EXECUTED return AIO_ALLDONE; rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; 47606: 2448 moveal %a0,%a2 <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 47608: b2a8 0014 cmpl %a0@(20),%d1 <== NOT EXECUTED 4760c: 6722 beqs 47630 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4760e: 2010 movel %a0@,%d0 <== NOT EXECUTED current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { node = rtems_chain_next (node); current = (rtems_aio_request *) node; 47610: 2440 moveal %d0,%a2 <== NOT EXECUTED rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 47612: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 47614: 6710 beqs 47626 <== NOT EXECUTED 47616: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED 4761a: 6716 beqs 47632 <== NOT EXECUTED 4761c: 2040 moveal %d0,%a0 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 4761e: 2010 movel %a0@,%d0 <== NOT EXECUTED current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { node = rtems_chain_next (node); current = (rtems_aio_request *) node; 47620: 2440 moveal %d0,%a2 <== NOT EXECUTED rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 47622: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 47624: 66f0 bnes 47616 <== NOT EXECUTED current->aiocbp->return_value = -1; free (current); } return AIO_CANCELED; } 47626: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED node = rtems_chain_next (node); current = (rtems_aio_request *) node; } if (rtems_chain_is_tail (chain, node)) return AIO_NOTCANCELED; 4762a: 7001 moveq #1,%d0 <== NOT EXECUTED current->aiocbp->return_value = -1; free (current); } return AIO_CANCELED; } 4762c: 4e5e unlk %fp <== NOT EXECUTED 4762e: 4e75 rts <== NOT EXECUTED rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 47630: 2008 movel %a0,%d0 <== NOT EXECUTED 47632: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47634: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED if (rtems_chain_is_tail (chain, node)) return AIO_NOTCANCELED; else { rtems_chain_extract (node); current->aiocbp->error_code = ECANCELED; 4763a: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 4763e: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 47644: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED current->aiocbp->return_value = -1; 47648: 70ff moveq #-1,%d0 <== NOT EXECUTED 4764a: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED free (current); 4764e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47650: 4eb9 0004 3978 jsr 43978 <== NOT EXECUTED } return AIO_CANCELED; } 47656: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED current->aiocbp->error_code = ECANCELED; current->aiocbp->return_value = -1; free (current); } return AIO_CANCELED; 4765a: 508f addql #8,%sp <== NOT EXECUTED 4765c: 4280 clrl %d0 <== NOT EXECUTED } 4765e: 4e5e unlk %fp <== NOT EXECUTED 47660: 4e75 rts <== NOT EXECUTED 47662: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { if (rtems_chain_is_empty (chain)) return AIO_ALLDONE; 47666: 7002 moveq #2,%d0 <== NOT EXECUTED current->aiocbp->return_value = -1; free (current); } return AIO_CANCELED; } 47668: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000471d6 : * */ rtems_aio_request_chain * rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create) { 471d6: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 471da: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 471de: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 471e2: 2852 moveal %a2@,%a4 <== NOT EXECUTED * */ rtems_aio_request_chain * rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create) { 471e4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 471e8: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED 471ec: b082 cmpl %d2,%d0 <== NOT EXECUTED 471ee: 6c12 bges 47202 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 471f0: 220a movel %a2,%d1 <== NOT EXECUTED 471f2: 5881 addql #4,%d1 <== NOT EXECUTED 471f4: b28c cmpl %a4,%d1 <== NOT EXECUTED 471f6: 6720 beqs 47218 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 471f8: 2854 moveal %a4@,%a4 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 471fa: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED 471fe: b480 cmpl %d0,%d2 <== NOT EXECUTED 47200: 6ef2 bgts 471f4 <== NOT EXECUTED } AIO_printf ("Thread finished\n"); return NULL; } 47202: 264c moveal %a4,%a3 <== NOT EXECUTED while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { node = rtems_chain_next (node); r_chain = (rtems_aio_request_chain *) node; } if (r_chain->fildes == fildes) 47204: b082 cmpl %d2,%d0 <== NOT EXECUTED 47206: 6612 bnes 4721a <== NOT EXECUTED r_chain->new_fd = 1; r_chain->fildes = fildes; } } return r_chain; } 47208: 200c movel %a4,%d0 <== NOT EXECUTED node = rtems_chain_next (node); r_chain = (rtems_aio_request_chain *) node; } if (r_chain->fildes == fildes) r_chain->new_fd = 0; 4720a: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED r_chain->new_fd = 1; r_chain->fildes = fildes; } } return r_chain; } 4720e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 47214: 4e5e unlk %fp <== NOT EXECUTED 47216: 4e75 rts <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 47218: 264c moveal %a4,%a3 <== NOT EXECUTED } if (r_chain->fildes == fildes) r_chain->new_fd = 0; else { if (create == 0) 4721a: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 4721e: 660e bnes 4722e <== NOT EXECUTED r_chain = NULL; 47220: 99cc subal %a4,%a4 <== NOT EXECUTED r_chain->new_fd = 1; r_chain->fildes = fildes; } } return r_chain; } 47222: 200c movel %a4,%d0 <== NOT EXECUTED 47224: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4722a: 4e5e unlk %fp <== NOT EXECUTED 4722c: 4e75 rts <== NOT EXECUTED r_chain->new_fd = 0; else { if (create == 0) r_chain = NULL; else { r_chain = malloc (sizeof (rtems_aio_request_chain)); 4722e: 4878 0024 pea 24 <== NOT EXECUTED 47232: 4eb9 0004 3f84 jsr 43f84 <== NOT EXECUTED rtems_chain_initialize_empty (&r_chain->perfd); if (rtems_chain_is_empty (chain)) 47238: 588f addql #4,%sp <== NOT EXECUTED r_chain->new_fd = 0; else { if (create == 0) r_chain = NULL; else { r_chain = malloc (sizeof (rtems_aio_request_chain)); 4723a: 2a40 moveal %d0,%a5 <== NOT EXECUTED 4723c: 2840 moveal %d0,%a4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4723e: 5080 addql #8,%d0 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); 47240: 41ed 000c lea %a5@(12),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 47244: 2b40 0010 movel %d0,%a5@(16) <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 47248: 200a movel %a2,%d0 <== NOT EXECUTED 4724a: 5880 addql #4,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4724c: 2b48 0008 movel %a0,%a5@(8) <== NOT EXECUTED head->next = tail; head->previous = NULL; 47250: 42ad 000c clrl %a5@(12) <== NOT EXECUTED rtems_chain_initialize_empty (&r_chain->perfd); if (rtems_chain_is_empty (chain)) 47254: b092 cmpl %a2@,%d0 <== NOT EXECUTED 47256: 6724 beqs 4727c <== NOT EXECUTED RTEMS_INLINE_ROUTINE void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *the_node ) { _Chain_Insert( after_node, the_node ); 47258: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4725a: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 4725e: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED 47264: 508f addql #8,%sp <== NOT EXECUTED rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 47266: 7001 moveq #1,%d0 <== NOT EXECUTED r_chain->fildes = fildes; 47268: 2b42 0014 movel %d2,%a5@(20) <== NOT EXECUTED if (rtems_chain_is_empty (chain)) rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 4726c: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED r_chain->fildes = fildes; } } return r_chain; } 47270: 200c movel %a4,%d0 <== NOT EXECUTED 47272: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 47278: 4e5e unlk %fp <== NOT EXECUTED 4727a: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert(_Chain_Head(the_chain), the_node); 4727c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4727e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47280: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED 47286: 508f addql #8,%sp <== NOT EXECUTED if (rtems_chain_is_empty (chain)) rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 47288: 7001 moveq #1,%d0 <== NOT EXECUTED r_chain->fildes = fildes; 4728a: 2b42 0014 movel %d2,%a5@(20) <== NOT EXECUTED if (rtems_chain_is_empty (chain)) rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 4728e: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED 47292: 60dc bras 47270 <== NOT EXECUTED =============================================================================== 0004edb4 : rtems_name name, rtems_attribute attribute_set, uint32_t maximum_waiters, rtems_id *id ) { 4edb4: 4e56 ffe8 linkw %fp,#-24 4edb8: 202e 0010 movel %fp@(16),%d0 4edbc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4edc0: 242e 0008 movel %fp@(8),%d2 4edc4: 262e 000c movel %fp@(12),%d3 4edc8: 246e 0014 moveal %fp@(20),%a2 Barrier_Control *the_barrier; CORE_barrier_Attributes the_attributes; if ( !rtems_is_name_valid( name ) ) 4edcc: 4a82 tstl %d2 4edce: 677a beqs 4ee4a <== NEVER TAKEN return RTEMS_INVALID_NAME; if ( !id ) 4edd0: 4a8a tstl %a2 4edd2: 6700 00cc beqw 4eea0 return RTEMS_INVALID_ADDRESS; /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { 4edd6: 0803 0004 btst #4,%d3 4edda: 677a beqs 4ee56 <== NEVER TAKEN the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 4eddc: 42ae fff8 clrl %fp@(-8) if ( maximum_waiters == 0 ) 4ede0: 4a80 tstl %d0 4ede2: 6700 00b0 beqw 4ee94 4ede6: 2239 0006 265c movel 6265c <_Thread_Dispatch_disable_level>,%d1 4edec: 5281 addql #1,%d1 return RTEMS_INVALID_NUMBER; } else the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE; the_attributes.maximum_count = maximum_waiters; 4edee: 2d40 fffc movel %d0,%fp@(-4) 4edf2: 23c1 0006 265c movel %d1,6265c <_Thread_Dispatch_disable_level> * This function allocates a barrier control block from * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Allocate( void ) { return (Barrier_Control *) _Objects_Allocate( &_Barrier_Information ); 4edf8: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> 4edfe: 4eb9 0004 9c18 jsr 49c18 <_Objects_Allocate> _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _Barrier_Allocate(); if ( !the_barrier ) { 4ee04: 588f addql #4,%sp 4ee06: 2640 moveal %d0,%a3 4ee08: 4a80 tstl %d0 4ee0a: 6776 beqs 4ee82 <== NEVER TAKEN _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_barrier->attribute_set = attribute_set; 4ee0c: 2743 0010 movel %d3,%a3@(16) _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 4ee10: 486e fff8 pea %fp@(-8) 4ee14: 486b 0014 pea %a3@(20) 4ee18: 4eb9 0004 f664 jsr 4f664 <_CORE_barrier_Initialize> Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4ee1e: 202b 0008 movel %a3@(8),%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ee22: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ee24: 2079 0006 2ed0 moveal 62ed0 <_Barrier_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ee2a: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ee2c: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4ee30: 2742 000c movel %d2,%a3@(12) &_Barrier_Information, &the_barrier->Object, (Objects_Name) name ); *id = the_barrier->Object.id; 4ee34: 2480 movel %d0,%a2@ _Thread_Enable_dispatch(); 4ee36: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 4ee3c: 508f addql #8,%sp 4ee3e: 4280 clrl %d0 } 4ee40: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 4ee46: 4e5e unlk %fp 4ee48: 4e75 rts { Barrier_Control *the_barrier; CORE_barrier_Attributes the_attributes; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4ee4a: 7003 moveq #3,%d0 <== NOT EXECUTED *id = the_barrier->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ee4c: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4ee52: 4e5e unlk %fp <== NOT EXECUTED 4ee54: 4e75 rts <== NOT EXECUTED if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; if ( maximum_waiters == 0 ) return RTEMS_INVALID_NUMBER; } else the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE; 4ee56: 7201 moveq #1,%d1 <== NOT EXECUTED 4ee58: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED 4ee5c: 2239 0006 265c movel 6265c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 4ee62: 5281 addql #1,%d1 <== NOT EXECUTED the_attributes.maximum_count = maximum_waiters; 4ee64: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4ee68: 23c1 0006 265c movel %d1,6265c <_Thread_Dispatch_disable_level><== NOT EXECUTED 4ee6e: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4ee74: 4eb9 0004 9c18 jsr 49c18 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _Barrier_Allocate(); if ( !the_barrier ) { 4ee7a: 588f addql #4,%sp <== NOT EXECUTED 4ee7c: 2640 moveal %d0,%a3 <== NOT EXECUTED 4ee7e: 4a80 tstl %d0 <== NOT EXECUTED 4ee80: 668a bnes 4ee0c <== NOT EXECUTED _Thread_Enable_dispatch(); 4ee82: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 4ee88: 7005 moveq #5,%d0 <== NOT EXECUTED *id = the_barrier->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ee8a: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4ee90: 4e5e unlk %fp <== NOT EXECUTED 4ee92: 4e75 rts <== NOT EXECUTED /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; if ( maximum_waiters == 0 ) return RTEMS_INVALID_NUMBER; 4ee94: 700a moveq #10,%d0 <== NOT EXECUTED *id = the_barrier->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ee96: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4ee9c: 4e5e unlk %fp <== NOT EXECUTED 4ee9e: 4e75 rts <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; 4eea0: 7009 moveq #9,%d0 <== NOT EXECUTED *id = the_barrier->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4eea2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eea8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004eeac : */ rtems_status_code rtems_barrier_delete( rtems_id id ) { 4eeac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4eeb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) _Objects_Get( &_Barrier_Information, id, location ); 4eeb2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4eeb6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4eeba: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4eec0: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4eec6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4eeca: 2440 moveal %d0,%a2 <== NOT EXECUTED 4eecc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4eed0: 6640 bnes 4ef12 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Flush( 4eed2: 4878 0002 pea 2 <== NOT EXECUTED 4eed6: 42a7 clrl %sp@- <== NOT EXECUTED 4eed8: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4eedc: 4eb9 0004 b390 jsr 4b390 <_Thread_queue_Flush> <== NOT EXECUTED &the_barrier->Barrier, NULL, CORE_BARRIER_WAS_DELETED ); _Objects_Close( &_Barrier_Information, &the_barrier->Object ); 4eee2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4eee4: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4eeea: 4eb9 0004 9ca8 jsr 49ca8 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Barrier_Free ( Barrier_Control *the_barrier ) { _Objects_Free( &_Barrier_Information, &the_barrier->Object ); 4eef0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4eef2: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4eef8: 4eb9 0004 9f6c jsr 49f6c <_Objects_Free> <== NOT EXECUTED _Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 4eefe: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef04: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Objects_Close( &_Barrier_Information, &the_barrier->Object ); _Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4ef08: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4ef0c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef0e: 4e5e unlk %fp <== NOT EXECUTED 4ef10: 4e75 rts <== NOT EXECUTED 4ef12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ef16: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ef18: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047324 : rtems_status_code rtems_barrier_ident( rtems_name name, rtems_id *id ) { 47324: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 47328: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4732c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 47332: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47336: 4879 0006 1968 pea 61968 <_Barrier_Information> <== NOT EXECUTED 4733c: 4eb9 0004 9710 jsr 49710 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; 47342: 41f9 0005 f26e lea 5f26e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 47348: 4e5e unlk %fp <== NOT EXECUTED 4734a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 0004ef4c : rtems_status_code rtems_barrier_release( rtems_id id, uint32_t *released ) { 4ef4c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef50: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef52: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4ef56: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef58: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; if ( !released ) 4ef5c: 4a8a tstl %a2 <== NOT EXECUTED 4ef5e: 6754 beqs 4efb4 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) _Objects_Get( &_Barrier_Information, id, location ); 4ef60: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef64: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef66: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4ef6c: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4ef72: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef76: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef7a: 662a bnes 4efa6 <== NOT EXECUTED case OBJECTS_LOCAL: *released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL ); 4ef7c: 42a7 clrl %sp@- <== NOT EXECUTED 4ef7e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef80: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef82: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ef86: 4eb9 0004 f6a0 jsr 4f6a0 <_CORE_barrier_Release> <== NOT EXECUTED 4ef8c: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4ef8e: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef94: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: *released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4ef98: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef9c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef9e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4efa2: 4e5e unlk %fp <== NOT EXECUTED 4efa4: 4e75 rts <== NOT EXECUTED 4efa6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4efaa: 7004 moveq #4,%d0 <== NOT EXECUTED } 4efac: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4efb0: 4e5e unlk %fp <== NOT EXECUTED 4efb2: 4e75 rts <== NOT EXECUTED 4efb4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED { Barrier_Control *the_barrier; Objects_Locations location; if ( !released ) return RTEMS_INVALID_ADDRESS; 4efb8: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4efba: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4efbe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004efc4 : rtems_status_code rtems_barrier_wait( rtems_id id, rtems_interval timeout ) { 4efc4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4efc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4efce: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4efd2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efd4: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED 4efda: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4efe0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4efe4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4efe8: 663a bnes 4f024 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 4efea: 42a7 clrl %sp@- <== NOT EXECUTED 4efec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4eff0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4eff2: 4878 0001 pea 1 <== NOT EXECUTED 4eff6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4eff8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4effc: 4eb9 0004 f6dc jsr 4f6dc <_CORE_barrier_Wait> <== NOT EXECUTED id, true, timeout, NULL ); _Thread_Enable_dispatch(); 4f002: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED return _Barrier_Translate_core_barrier_return_code( _Thread_Executing->Wait.return_code ); 4f008: 2079 0006 2ae6 moveal 62ae6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED true, timeout, NULL ); _Thread_Enable_dispatch(); return _Barrier_Translate_core_barrier_return_code( 4f00e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4f012: 4eb9 0005 0af4 jsr 50af4 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f018: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED true, timeout, NULL ); _Thread_Enable_dispatch(); return _Barrier_Translate_core_barrier_return_code( 4f01c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f020: 4e5e unlk %fp <== NOT EXECUTED 4f022: 4e75 rts <== NOT EXECUTED 4f024: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4f028: 7004 moveq #4,%d0 <== NOT EXECUTED } 4f02a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047df8 : uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47df8: 7218 moveq #24,%d1 <== NOT EXECUTED uint32_t api, uint32_t class, uint32_t node, uint32_t index ) { 47dfa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47dfe: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 47e02: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47e04: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47e08: e3aa lsll %d1,%d2 <== NOT EXECUTED (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 47e0a: 123c 001b moveb #27,%d1 <== NOT EXECUTED 47e0e: e3a8 lsll %d1,%d0 <== NOT EXECUTED 47e10: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 47e14: 8082 orl %d2,%d0 <== NOT EXECUTED (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | #if !defined(RTEMS_USE_16_BIT_OBJECT) (( (Objects_Id) node ) << OBJECTS_NODE_START_BIT) | 47e16: 4841 swap %d1 <== NOT EXECUTED 47e18: 4241 clrw %d1 <== NOT EXECUTED return _Objects_Build_id( api, class, node, index ); } 47e1a: 241f movel %sp@+,%d2 <== NOT EXECUTED uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 47e1c: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED 47e20: 4e5e unlk %fp <== NOT EXECUTED 47e22: 8081 orl %d1,%d0 <== NOT EXECUTED ... =============================================================================== 00047e28 : char C1, char C2, char C3, char C4 ) { 47e28: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); 47e2c: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED char C1, char C2, char C3, char C4 ) { 47e30: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); 47e34: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED 47e38: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED 47e3c: 7818 moveq #24,%d4 <== NOT EXECUTED 47e3e: 49c0 extbl %d0 <== NOT EXECUTED 47e40: 49c2 extbl %d2 <== NOT EXECUTED 47e42: 49c1 extbl %d1 <== NOT EXECUTED 47e44: e9aa lsll %d4,%d2 <== NOT EXECUTED 47e46: 4840 swap %d0 <== NOT EXECUTED 47e48: 4240 clrw %d0 <== NOT EXECUTED 47e4a: e189 lsll #8,%d1 <== NOT EXECUTED 47e4c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED 47e50: 8082 orl %d2,%d0 <== NOT EXECUTED 47e52: 49c3 extbl %d3 <== NOT EXECUTED 47e54: 8081 orl %d1,%d0 <== NOT EXECUTED } 47e56: 8083 orl %d3,%d0 <== NOT EXECUTED 47e58: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 47e5c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047010 : rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) { 47010: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47014: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47016: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 4701a: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_append_with_empty_check( rtems_chain_control *chain, rtems_chain_node *node ) { return _Chain_Append_with_empty_check( chain, node ); 4701c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47020: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47024: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 47028: 4eb9 0004 75d4 jsr 475d4 <_Chain_Append_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { 4702e: 508f addql #8,%sp <== NOT EXECUTED 47030: 4a00 tstb %d0 <== NOT EXECUTED 47032: 660e bnes 47042 <== NOT EXECUTED sc = rtems_event_send( task, events ); } return sc; } 47034: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47038: 4280 clrl %d0 <== NOT EXECUTED 4703a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4703e: 4e5e unlk %fp <== NOT EXECUTED 47040: 4e75 rts <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { sc = rtems_event_send( task, events ); 47042: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 47046: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { sc = rtems_event_send( task, events ); 4704a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 4704e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47052: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { sc = rtems_event_send( task, events ); 47054: 4ef9 0004 6540 jmp 46540 <== NOT EXECUTED ... =============================================================================== 0004705c : rtems_chain_control *chain, rtems_id task, rtems_event_set events, rtems_chain_node **node ) { 4705c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47060: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47062: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 47066: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_get_with_empty_check( rtems_chain_control *chain, rtems_chain_node **node ) { return _Chain_Get_with_empty_check( chain, node ); 47068: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4706c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47070: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 47074: 4eb9 0004 7674 jsr 47674 <_Chain_Get_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { 4707a: 508f addql #8,%sp <== NOT EXECUTED 4707c: 4a00 tstb %d0 <== NOT EXECUTED 4707e: 660e bnes 4708e <== NOT EXECUTED sc = rtems_event_send( task, events ); } return sc; } 47080: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47084: 4280 clrl %d0 <== NOT EXECUTED 47086: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4708a: 4e5e unlk %fp <== NOT EXECUTED 4708c: 4e75 rts <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { sc = rtems_event_send( task, events ); 4708e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 47092: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { sc = rtems_event_send( task, events ); 47096: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 4709a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4709e: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { sc = rtems_event_send( task, events ); 470a0: 4ef9 0004 6540 jmp 46540 <== NOT EXECUTED ... =============================================================================== 000470a8 : rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) { 470a8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 470ac: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL ) { rtems_event_set out; sc = rtems_event_receive( 470b0: 2c0e movel %fp,%d6 <== NOT EXECUTED 470b2: 45f9 0004 76c4 lea 476c4 <_Chain_Get>,%a2 <== NOT EXECUTED 470b8: 5986 subql #4,%d6 <== NOT EXECUTED 470ba: 47f9 0004 6398 lea 46398 ,%a3 <== NOT EXECUTED rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) { 470c0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 470c4: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 470c8: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get( rtems_chain_control *the_chain ) { return _Chain_Get( the_chain ); 470cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 470ce: 4e92 jsr %a2@ <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_chain_node *node = NULL; while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL 470d0: 588f addql #4,%sp <== NOT EXECUTED 470d2: 2400 movel %d0,%d2 <== NOT EXECUTED 470d4: 6622 bnes 470f8 <== NOT EXECUTED ) { rtems_event_set out; sc = rtems_event_receive( 470d6: 2f06 movel %d6,%sp@- <== NOT EXECUTED 470d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 470da: 42a7 clrl %sp@- <== NOT EXECUTED 470dc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 470de: 4e93 jsr %a3@ <== NOT EXECUTED ) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_chain_node *node = NULL; while ( 470e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 470e4: 4a80 tstl %d0 <== NOT EXECUTED 470e6: 67e4 beqs 470cc <== NOT EXECUTED timeout, &out ); } *node_ptr = node; 470e8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 470ec: 2082 movel %d2,%a0@ <== NOT EXECUTED return sc; } 470ee: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 470f4: 4e5e unlk %fp <== NOT EXECUTED 470f6: 4e75 rts <== NOT EXECUTED timeout, &out ); } *node_ptr = node; 470f8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_chain_node *node = NULL; while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL 470fc: 4280 clrl %d0 <== NOT EXECUTED timeout, &out ); } *node_ptr = node; 470fe: 2082 movel %d2,%a0@ <== NOT EXECUTED return sc; } 47100: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 47106: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004710c : rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) { 4710c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47110: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47112: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 47116: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_prepend_with_empty_check( rtems_chain_control *chain, rtems_chain_node *node ) { return _Chain_Prepend_with_empty_check( chain, node ); 47118: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4711c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47120: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 47124: 4eb9 0004 7730 jsr 47730 <_Chain_Prepend_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { 4712a: 508f addql #8,%sp <== NOT EXECUTED 4712c: 4a00 tstb %d0 <== NOT EXECUTED 4712e: 660e bnes 4713e <== NOT EXECUTED sc = rtems_event_send( task, events ); } return sc; } 47130: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47134: 4280 clrl %d0 <== NOT EXECUTED 47136: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4713a: 4e5e unlk %fp <== NOT EXECUTED 4713c: 4e75 rts <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { sc = rtems_event_send( task, events ); 4713e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 47142: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { sc = rtems_event_send( task, events ); 47146: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 4714a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4714e: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { sc = rtems_event_send( task, events ); 47150: 4ef9 0004 6540 jmp 46540 <== NOT EXECUTED ... =============================================================================== 00055798 : rtems_status_code rtems_clock_get( rtems_clock_get_options option, void *time_buffer ) { 55798: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5579c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 557a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 557a2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED if ( !time_buffer ) 557a6: 4a8a tstl %a2 <== NOT EXECUTED 557a8: 6748 beqs 557f2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( option == RTEMS_CLOCK_GET_TOD ) 557aa: 4a80 tstl %d0 <== NOT EXECUTED 557ac: 6734 beqs 557e2 <== NOT EXECUTED return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH ) 557ae: 7201 moveq #1,%d1 <== NOT EXECUTED 557b0: b280 cmpl %d0,%d1 <== NOT EXECUTED 557b2: 674a beqs 557fe <== NOT EXECUTED return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) { 557b4: 7202 moveq #2,%d1 <== NOT EXECUTED 557b6: b280 cmpl %d0,%d1 <== NOT EXECUTED 557b8: 6754 beqs 5580e <== NOT EXECUTED *interval = rtems_clock_get_ticks_since_boot(); return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) { 557ba: 7203 moveq #3,%d1 <== NOT EXECUTED 557bc: b280 cmpl %d0,%d1 <== NOT EXECUTED 557be: 6762 beqs 55822 <== NOT EXECUTED *interval = rtems_clock_get_ticks_per_second(); return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) 557c0: 7204 moveq #4,%d1 <== NOT EXECUTED 557c2: b280 cmpl %d0,%d1 <== NOT EXECUTED 557c4: 670c beqs 557d2 <== NOT EXECUTED return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 557c6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; 557ca: 720a moveq #10,%d1 <== NOT EXECUTED } 557cc: 2001 movel %d1,%d0 <== NOT EXECUTED 557ce: 4e5e unlk %fp <== NOT EXECUTED 557d0: 4e75 rts <== NOT EXECUTED *interval = rtems_clock_get_ticks_per_second(); return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 557d2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED return RTEMS_INVALID_NUMBER; } 557d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 557da: 4e5e unlk %fp <== NOT EXECUTED *interval = rtems_clock_get_ticks_per_second(); return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 557dc: 4ef9 0005 5950 jmp 55950 <== NOT EXECUTED { if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 557e2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 557e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 557ea: 4e5e unlk %fp <== NOT EXECUTED { if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 557ec: 4ef9 0005 588c jmp 5588c <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 557f2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_clock_get_options option, void *time_buffer ) { if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 557f6: 7209 moveq #9,%d1 <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 557f8: 2001 movel %d1,%d0 <== NOT EXECUTED 557fa: 4e5e unlk %fp <== NOT EXECUTED 557fc: 4e75 rts <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH ) return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 557fe: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 55802: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 55806: 4e5e unlk %fp <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH ) return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 55808: 4ef9 0005 5838 jmp 55838 <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_since_boot(); 5580e: 4eb9 0005 587c jsr 5587c <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55814: 4281 clrl %d1 <== NOT EXECUTED return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_since_boot(); 55816: 2480 movel %d0,%a2@ <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 55818: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5581c: 2001 movel %d1,%d0 <== NOT EXECUTED 5581e: 4e5e unlk %fp <== NOT EXECUTED 55820: 4e75 rts <== NOT EXECUTED } if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_per_second(); 55822: 4eb9 0005 5864 jsr 55864 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55828: 4281 clrl %d1 <== NOT EXECUTED } if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_per_second(); 5582a: 2480 movel %d0,%a2@ <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 5582c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 55830: 2001 movel %d1,%d0 <== NOT EXECUTED 55832: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047064 : #include rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ) { 47064: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47068: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !the_interval ) 4706c: 4a88 tstl %a0 <== NOT EXECUTED 4706e: 671a beqs 4708a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 47070: 4a39 0006 a228 tstb 6a228 <_TOD_Is_set> <== NOT EXECUTED 47076: 670c beqs 47084 <== NOT EXECUTED return RTEMS_NOT_DEFINED; *the_interval = _TOD_Seconds_since_epoch(); 47078: 20b9 0006 a2c2 movel 6a2c2 <_TOD_Now>,%a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4707e: 4280 clrl %d0 <== NOT EXECUTED } 47080: 4e5e unlk %fp <== NOT EXECUTED 47082: 4e75 rts <== NOT EXECUTED { if ( !the_interval ) return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 47084: 700b moveq #11,%d0 <== NOT EXECUTED *the_interval = _TOD_Seconds_since_epoch(); return RTEMS_SUCCESSFUL; } 47086: 4e5e unlk %fp <== NOT EXECUTED 47088: 4e75 rts <== NOT EXECUTED rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ) { if ( !the_interval ) return RTEMS_INVALID_ADDRESS; 4708a: 7009 moveq #9,%d0 <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; *the_interval = _TOD_Seconds_since_epoch(); return RTEMS_SUCCESSFUL; } 4708c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d1c : rtems_interval rtems_clock_get_ticks_per_second(void) { return TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); } 45d1c: 41f9 0005 e3d0 lea 5e3d0 ,%a0 <== NOT EXECUTED #include #include #include rtems_interval rtems_clock_get_ticks_per_second(void) { 45d22: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); } 45d26: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 45d2c: 4e5e unlk %fp <== NOT EXECUTED 45d2e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED =============================================================================== 00045d34 : #include #include #include rtems_interval rtems_clock_get_ticks_since_boot(void) { 45d34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Watchdog_Ticks_since_boot; 45d38: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED } 45d3e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000470b8 : #include rtems_status_code rtems_clock_get_tod( rtems_time_of_day *time_buffer ) { 470b8: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 470bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470be: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 470c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED rtems_time_of_day *tmbuf = time_buffer; struct tm time; struct timeval now; if ( !time_buffer ) 470c4: 4a8a tstl %a2 <== NOT EXECUTED 470c6: 6700 00a6 beqw 4716e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 470ca: 4a39 0006 a228 tstb 6a228 <_TOD_Is_set> <== NOT EXECUTED 470d0: 660e bnes 470e0 <== NOT EXECUTED tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; } 470d2: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 470d6: 700b moveq #11,%d0 <== NOT EXECUTED tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; } 470d8: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 470dc: 4e5e unlk %fp <== NOT EXECUTED 470de: 4e75 rts <== NOT EXECUTED { ISR_Level level; struct timespec now; suseconds_t useconds; _ISR_Disable(level); 470e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 470e6: 40c2 movew %sr,%d2 <== NOT EXECUTED 470e8: 8082 orl %d2,%d0 <== NOT EXECUTED 470ea: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 470ec: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 470f0: 4eb9 0004 8bf4 jsr 48bf4 <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 470f6: 46c2 movew %d2,%sr <== NOT EXECUTED useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 470f8: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED /* Obtain the current time */ _TOD_Get_timeval( &now ); /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); 470fe: 486e ffcc pea %fp@(-52) <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; 47102: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 47106: 486e fff8 pea %fp@(-8) <== NOT EXECUTED useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; 4710a: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED time->tv_usec = useconds; 47110: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED 47114: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47118: 4eb9 0005 0bf8 jsr 50bf8 <== NOT EXECUTED /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; tmbuf->month = time.tm_mon + 1; 4711e: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED 47122: 5288 addql #1,%a0 <== NOT EXECUTED tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; 47124: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47128: 4280 clrl %d0 <== NOT EXECUTED /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; tmbuf->month = time.tm_mon + 1; 4712a: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; 4712e: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 47132: 41e8 076c lea %a0@(1900),%a0 <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; tmbuf->hour = time.tm_hour; tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / 47136: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; 4713a: 2488 movel %a0,%a2@ <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; tmbuf->hour = time.tm_hour; tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / 4713c: 41f9 0006 0bb0 lea 60bb0 ,%a0 <== NOT EXECUTED 47142: 4c50 2002 remul %a0@,%d2,%d2 <== NOT EXECUTED gmtime_r( &now.tv_sec, &time ); /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; 47146: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED tmbuf->hour = time.tm_hour; 4714c: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED tmbuf->minute = time.tm_min; 47152: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED tmbuf->second = time.tm_sec; 47158: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED tmbuf->ticks = now.tv_usec / 4715e: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; } 47162: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED 47166: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 4716a: 4e5e unlk %fp <== NOT EXECUTED 4716c: 4e75 rts <== NOT EXECUTED 4716e: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED rtems_time_of_day *tmbuf = time_buffer; struct tm time; struct timeval now; if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 47172: 7009 moveq #9,%d0 <== NOT EXECUTED tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; } 47174: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 47178: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00055950 : #include rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ) { 55950: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 55954: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 55958: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !time ) 5595c: 4a8a tstl %a2 <== NOT EXECUTED 5595e: 6750 beqs 559b0 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 55960: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED 55966: 660c bnes 55974 <== NOT EXECUTED return RTEMS_NOT_DEFINED; 55968: 700b moveq #11,%d0 <== NOT EXECUTED _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; } 5596a: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 55970: 4e5e unlk %fp <== NOT EXECUTED 55972: 4e75 rts <== NOT EXECUTED { ISR_Level level; struct timespec now; suseconds_t useconds; _ISR_Disable(level); 55974: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5597a: 40c2 movew %sr,%d2 <== NOT EXECUTED 5597c: 8082 orl %d2,%d0 <== NOT EXECUTED 5597e: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 55980: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 55984: 4eb9 0005 a5a8 jsr 5a5a8 <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 5598a: 46c2 movew %d2,%sr <== NOT EXECUTED useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 5598c: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; 55992: 588f addql #4,%sp <== NOT EXECUTED 55994: 4280 clrl %d0 <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; 55996: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 5599a: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; 5599e: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED time->tv_usec = useconds; 559a2: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED } 559a6: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 559ac: 4e5e unlk %fp <== NOT EXECUTED 559ae: 4e75 rts <== NOT EXECUTED rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ) { if ( !time ) return RTEMS_INVALID_ADDRESS; 559b0: 7009 moveq #9,%d0 <== NOT EXECUTED return RTEMS_NOT_DEFINED; _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; } 559b2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 559b8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045f18 : * error code - if unsuccessful */ rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ) { 45f18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f1c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !uptime ) 45f20: 6710 beqs 45f32 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _TOD_Get_uptime_as_timespec( uptime ); 45f22: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45f24: 4eb9 0004 7778 jsr 47778 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45f2a: 588f addql #4,%sp <== NOT EXECUTED 45f2c: 4280 clrl %d0 <== NOT EXECUTED } 45f2e: 4e5e unlk %fp <== NOT EXECUTED 45f30: 4e75 rts <== NOT EXECUTED rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ) { if ( !uptime ) return RTEMS_INVALID_ADDRESS; 45f32: 7009 moveq #9,%d0 <== NOT EXECUTED _TOD_Get_uptime_as_timespec( uptime ); return RTEMS_SUCCESSFUL; } 45f34: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047198 : */ rtems_status_code rtems_clock_set( rtems_time_of_day *time_buffer ) { 47198: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4719c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4719e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 471a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED struct timespec newtime; if ( !time_buffer ) 471a4: 4a8a tstl %a2 <== NOT EXECUTED 471a6: 6772 beqs 4721a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { 471a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471aa: 4eb9 0004 7370 jsr 47370 <_TOD_Validate> <== NOT EXECUTED 471b0: 588f addql #4,%sp <== NOT EXECUTED 471b2: 4a00 tstb %d0 <== NOT EXECUTED 471b4: 660e bnes 471c4 <== NOT EXECUTED _TOD_Set( &newtime ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; } 471b6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( &newtime ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; 471ba: 7014 moveq #20,%d0 <== NOT EXECUTED } 471bc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 471c0: 4e5e unlk %fp <== NOT EXECUTED 471c2: 4e75 rts <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { newtime.tv_sec = _TOD_To_seconds( time_buffer ); 471c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471c6: 4eb9 0004 7268 jsr 47268 <_TOD_To_seconds> <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * 471cc: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED 471d0: 41f9 0006 0bb0 lea 60bb0 ,%a0 <== NOT EXECUTED 471d6: 4c10 2800 mulsl %a0@,%d2 <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { newtime.tv_sec = _TOD_To_seconds( time_buffer ); 471da: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * 471de: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 471e4: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 471e8: 2239 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 471ee: 5281 addql #1,%d1 <== NOT EXECUTED 471f0: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 471f4: 23c1 0006 a218 movel %d1,6a218 <_Thread_Dispatch_disable_level><== NOT EXECUTED rtems_configuration_get_nanoseconds_per_tick(); _Thread_Disable_dispatch(); _TOD_Set( &newtime ); 471fa: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 471fe: 4eb9 0004 8cec jsr 48cec <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 47204: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; } 4720a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED rtems_configuration_get_nanoseconds_per_tick(); _Thread_Disable_dispatch(); _TOD_Set( &newtime ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4720e: 508f addql #8,%sp <== NOT EXECUTED 47210: 4280 clrl %d0 <== NOT EXECUTED } return RTEMS_INVALID_CLOCK; } 47212: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 47216: 4e5e unlk %fp <== NOT EXECUTED 47218: 4e75 rts <== NOT EXECUTED 4721a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED ) { struct timespec newtime; if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 4721e: 7009 moveq #9,%d0 <== NOT EXECUTED _TOD_Set( &newtime ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; } 47220: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 47224: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d44 : * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) { 45d44: 4e56 0000 linkw %fp,#0 45d48: 202e 0008 movel %fp@(8),%d0 if ( !routine ) 45d4c: 670c beqs 45d5a <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; _Watchdog_Nanoseconds_since_tick_handler = routine; 45d4e: 23c0 0005 e534 movel %d0,5e534 <_Watchdog_Nanoseconds_since_tick_handler> return RTEMS_SUCCESSFUL; 45d54: 4280 clrl %d0 } 45d56: 4e5e unlk %fp 45d58: 4e75 rts rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) { if ( !routine ) return RTEMS_INVALID_ADDRESS; 45d5a: 7009 moveq #9,%d0 <== NOT EXECUTED _Watchdog_Nanoseconds_since_tick_handler = routine; return RTEMS_SUCCESSFUL; } 45d5c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d60 : * * NOTE: This routine only works for leap-years through 2099. */ rtems_status_code rtems_clock_tick( void ) { 45d60: 4e56 0000 linkw %fp,#0 _TOD_Tickle_ticks(); 45d64: 4eb9 0004 73dc jsr 473dc <_TOD_Tickle_ticks> */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void ) { _Watchdog_Tickle( &_Watchdog_Ticks_chain ); 45d6a: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 45d70: 4eb9 0004 9a70 jsr 49a70 <_Watchdog_Tickle> <== NOT EXECUTED _Watchdog_Tickle_ticks(); _Thread_Tickle_timeslice(); 45d76: 4eb9 0004 94a4 jsr 494a4 <_Thread_Tickle_timeslice> <== NOT EXECUTED if ( _Thread_Is_context_switch_necessary() && 45d7c: 588f addql #4,%sp <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void ) { return ( _Thread_Dispatch_necessary ); 45d7e: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED 45d84: 6708 beqs 45d8e <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void ) { return ( _Thread_Dispatch_disable_level == 0 ); 45d86: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45d8c: 6706 beqs 45d94 <== NOT EXECUTED _Thread_Is_dispatching_enabled() ) _Thread_Dispatch(); return RTEMS_SUCCESSFUL; } 45d8e: 4280 clrl %d0 <== NOT EXECUTED 45d90: 4e5e unlk %fp <== NOT EXECUTED 45d92: 4e75 rts <== NOT EXECUTED _Thread_Tickle_timeslice(); if ( _Thread_Is_context_switch_necessary() && _Thread_Is_dispatching_enabled() ) _Thread_Dispatch(); 45d94: 4eb9 0004 87d4 jsr 487d4 <_Thread_Dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 45d9a: 4280 clrl %d0 <== NOT EXECUTED 45d9c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c364 : * rtems_debug_disable */ void rtems_debug_disable ( rtems_debug_control to_be_disabled ) { 4c364: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Debug_Level &= ~to_be_disabled; 4c368: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c36c: 4680 notl %d0 <== NOT EXECUTED } 4c36e: 4e5e unlk %fp <== NOT EXECUTED */ void rtems_debug_disable ( rtems_debug_control to_be_disabled ) { _Debug_Level &= ~to_be_disabled; 4c370: c1b9 0005 fd40 andl %d0,5fd40 <_Debug_Level> <== NOT EXECUTED } =============================================================================== 0004c352 : * rtems_debug_enable */ void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { 4c352: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Debug_Level |= to_be_enabled; 4c356: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4c35a: 4e5e unlk %fp <== NOT EXECUTED */ void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { _Debug_Level |= to_be_enabled; 4c35c: 81b9 0005 fd40 orl %d0,5fd40 <_Debug_Level> <== NOT EXECUTED } =============================================================================== 0004c378 : * rtems_debug_is_enabled */ bool rtems_debug_is_enabled( rtems_debug_control level ) { 4c378: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (_Debug_Level & level) ? true : false; 4c37c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4c380: 4e5e unlk %fp <== NOT EXECUTED */ bool rtems_debug_is_enabled( rtems_debug_control level ) { return (_Debug_Level & level) ? true : false; 4c382: c0b9 0005 fd40 andl 5fd40 <_Debug_Level>,%d0 <== NOT EXECUTED 4c388: 56c0 sne %d0 <== NOT EXECUTED } 4c38a: 4480 negl %d0 <== NOT EXECUTED ... =============================================================================== 00045da0 : rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 45da0: 4e56 0000 linkw %fp,#0 45da4: 202e 0008 movel %fp@(8),%d0 45da8: 206e 0014 moveal %fp@(20),%a0 RTEMS_API_Control *api; if ( !event_out ) 45dac: 4a88 tstl %a0 45dae: 674c beqs 45dfc <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; 45db0: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1 45db6: 2269 00fe moveal %a1@(254),%a1 if ( _Event_sets_Is_empty( event_in ) ) { 45dba: 4a80 tstl %d0 45dbc: 6606 bnes 45dc4 <== ALWAYS TAKEN *event_out = api->pending_events; 45dbe: 2091 movel %a1@,%a0@ <== NOT EXECUTED _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); _Thread_Enable_dispatch(); return( _Thread_Executing->Wait.return_code ); } 45dc0: 4e5e unlk %fp <== NOT EXECUTED 45dc2: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45dc4: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1 45dca: 5281 addql #1,%d1 45dcc: 23c1 0005 fc78 movel %d1,5fc78 <_Thread_Dispatch_disable_level> *event_out = api->pending_events; return RTEMS_SUCCESSFUL; } _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); 45dd2: 2f08 movel %a0,%sp@- 45dd4: 2f2e 0010 movel %fp@(16),%sp@- 45dd8: 2f2e 000c movel %fp@(12),%sp@- 45ddc: 2f00 movel %d0,%sp@- 45dde: 4eb9 0004 5e04 jsr 45e04 <_Event_Seize> _Thread_Enable_dispatch(); 45de4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return( _Thread_Executing->Wait.return_code ); 45dea: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 45df0: 4fef 0010 lea %sp@(16),%sp } 45df4: 4e5e unlk %fp } _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); _Thread_Enable_dispatch(); return( _Thread_Executing->Wait.return_code ); 45df6: 2028 0034 movel %a0@(52),%d0 } 45dfa: 4e75 rts ) { RTEMS_API_Control *api; if ( !event_out ) return RTEMS_INVALID_ADDRESS; 45dfc: 7009 moveq #9,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); _Thread_Enable_dispatch(); return( _Thread_Executing->Wait.return_code ); } 45dfe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045f48 : rtems_status_code rtems_event_send( rtems_id id, rtems_event_set event_in ) { 45f48: 4e56 fffc linkw %fp,#-4 45f4c: 2f02 movel %d2,%sp@- register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; the_thread = _Thread_Get( id, &location ); 45f4e: 486e fffc pea %fp@(-4) 45f52: 2f2e 0008 movel %fp@(8),%sp@- 45f56: 4eb9 0004 8964 jsr 48964 <_Thread_Get> switch ( location ) { 45f5c: 508f addql #8,%sp 45f5e: 4aae fffc tstl %fp@(-4) 45f62: 6634 bnes 45f98 <== NEVER TAKEN case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 45f64: 2240 moveal %d0,%a1 rtems_event_set *the_event_set ) { ISR_Level level; _ISR_Disable( level ); 45f66: 223c 0000 0700 movel #1792,%d1 45f6c: 2069 00fe moveal %a1@(254),%a0 45f70: 40c2 movew %sr,%d2 45f72: 8282 orl %d2,%d1 45f74: 46c1 movew %d1,%sr *the_event_set |= the_new_events; 45f76: 222e 000c movel %fp@(12),%d1 45f7a: 8390 orl %d1,%a0@ _ISR_Enable( level ); 45f7c: 46c2 movew %d2,%sr _Event_sets_Post( event_in, &api->pending_events ); _Event_Surrender( the_thread ); 45f7e: 2f00 movel %d0,%sp@- 45f80: 4eb9 0004 5fa4 jsr 45fa4 <_Event_Surrender> _Thread_Enable_dispatch(); 45f86: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 45f8c: 242e fff8 movel %fp@(-8),%d2 case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; _Event_sets_Post( event_in, &api->pending_events ); _Event_Surrender( the_thread ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 45f90: 588f addql #4,%sp 45f92: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 45f94: 4e5e unlk %fp 45f96: 4e75 rts 45f98: 242e fff8 movel %fp@(-8),%d2 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45f9c: 7004 moveq #4,%d0 <== NOT EXECUTED } 45f9e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048368 : rtems_status_code rtems_extension_create( rtems_name name, const rtems_extensions_table *extension_table, rtems_id *id ) { 48368: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4836c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 48370: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48374: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED Extension_Control *the_extension; if ( !id ) 48378: 4a8a tstl %a2 <== NOT EXECUTED 4837a: 6700 00a0 beqw 4841c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 4837e: 4a82 tstl %d2 <== NOT EXECUTED 48380: 660c bnes 4838e <== NOT EXECUTED return RTEMS_INVALID_NAME; 48382: 7003 moveq #3,%d0 <== NOT EXECUTED ); *id = the_extension->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 48384: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4838a: 4e5e unlk %fp <== NOT EXECUTED 4838c: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4838e: 2039 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48394: 5280 addql #1,%d0 <== NOT EXECUTED 48396: 23c0 0006 a218 movel %d0,6a218 <_Thread_Dispatch_disable_level><== NOT EXECUTED #ifndef __EXTENSION_MANAGER_inl #define __EXTENSION_MANAGER_inl RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void ) { return (Extension_Control *) _Objects_Allocate( &_Extension_Information ); 4839c: 4879 0006 a3a0 pea 6a3a0 <_Extension_Information> <== NOT EXECUTED 483a2: 4eb9 0004 92cc jsr 492cc <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_extension = _Extension_Allocate(); if ( !the_extension ) { 483a8: 588f addql #4,%sp <== NOT EXECUTED 483aa: 2640 moveal %d0,%a3 <== NOT EXECUTED 483ac: 4a80 tstl %d0 <== NOT EXECUTED 483ae: 675a beqs 4840a <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table( User_extensions_Control *extension, const User_extensions_Table *extension_table ) { extension->Callouts = *extension_table; 483b0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 483b4: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED 483b8: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED 483bc: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED 483c0: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED 483c4: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED 483c8: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED 483cc: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED 483d0: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED _User_extensions_Add_set( extension ); 483d4: 486b 0010 pea %a3@(16) <== NOT EXECUTED 483d8: 4eb9 0004 b17c jsr 4b17c <_User_extensions_Add_set> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 483de: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 483e2: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 483e4: 2079 0006 a3b8 moveal 6a3b8 <_Extension_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 483ea: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 483ec: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 483f0: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED &_Extension_Information, &the_extension->Object, (Objects_Name) name ); *id = the_extension->Object.id; 483f4: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 483f6: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 483fc: 588f addql #4,%sp <== NOT EXECUTED 483fe: 4280 clrl %d0 <== NOT EXECUTED } 48400: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48406: 4e5e unlk %fp <== NOT EXECUTED 48408: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_extension = _Extension_Allocate(); if ( !the_extension ) { _Thread_Enable_dispatch(); 4840a: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 48410: 7005 moveq #5,%d0 <== NOT EXECUTED ); *id = the_extension->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 48412: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48418: 4e5e unlk %fp <== NOT EXECUTED 4841a: 4e75 rts <== NOT EXECUTED ) { Extension_Control *the_extension; if ( !id ) return RTEMS_INVALID_ADDRESS; 4841c: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_extension->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4841e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48424: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048200 : #include rtems_status_code rtems_extension_delete( rtems_id id ) { 48200: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48204: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Extension_Control *) _Objects_Get( &_Extension_Information, id, location ); 48206: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4820a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4820e: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED 48214: 4eb9 0004 9514 jsr 49514 <_Objects_Get> <== NOT EXECUTED Extension_Control *the_extension; Objects_Locations location; the_extension = _Extension_Get( id, &location ); switch ( location ) { 4821a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4821e: 2440 moveal %d0,%a2 <== NOT EXECUTED 48220: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48224: 663a bnes 48260 <== NOT EXECUTED case OBJECTS_LOCAL: _User_extensions_Remove_set( &the_extension->Extension ); 48226: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4822a: 4eb9 0004 ae24 jsr 4ae24 <_User_extensions_Remove_set> <== NOT EXECUTED _Objects_Close( &_Extension_Information, &the_extension->Object ); 48230: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48232: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED 48238: 4eb9 0004 90e4 jsr 490e4 <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Extension_Free ( Extension_Control *the_extension ) { _Objects_Free( &_Extension_Information, &the_extension->Object ); 4823e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48240: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED 48246: 4eb9 0004 93a8 jsr 493a8 <_Objects_Free> <== NOT EXECUTED _Extension_Free( the_extension ); _Thread_Enable_dispatch(); 4824c: 4eb9 0004 a046 jsr 4a046 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48252: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_LOCAL: _User_extensions_Remove_set( &the_extension->Extension ); _Objects_Close( &_Extension_Information, &the_extension->Object ); _Extension_Free( the_extension ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 48256: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4825a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4825c: 4e5e unlk %fp <== NOT EXECUTED 4825e: 4e75 rts <== NOT EXECUTED 48260: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 48264: 7004 moveq #4,%d0 <== NOT EXECUTED } 48266: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000492fc : rtems_status_code rtems_extension_ident( rtems_name name, rtems_id *id ) { 492fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 49300: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49304: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4930a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4930e: 4879 0006 35a0 pea 635a0 <_Extension_Information> <== NOT EXECUTED 49314: 4eb9 0004 a6e8 jsr 4a6e8 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; 4931a: 41f9 0006 0a0a lea 60a0a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 49320: 4e5e unlk %fp <== NOT EXECUTED 49322: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00048b4c : #endif #include const char *rtems_get_version_string(void) { 48b4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _RTEMS_version; } 48b50: 203c 0006 132a movel #398122,%d0 <== NOT EXECUTED 48b56: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046178 : rtems_status_code rtems_interrupt_catch( rtems_isr_entry new_isr_handler, rtems_vector_number vector, rtems_isr_entry *old_isr_handler ) { 46178: 4e56 0000 linkw %fp,#0 4617c: 222e 0008 movel %fp@(8),%d1 46180: 202e 000c movel %fp@(12),%d0 46184: 206e 0010 moveal %fp@(16),%a0 if ( !_ISR_Is_vector_number_valid( vector ) ) 46188: 0c80 0000 00ff cmpil #255,%d0 4618e: 621e bhis 461ae <== NEVER TAKEN return RTEMS_INVALID_NUMBER; if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) 46190: 4a81 tstl %d1 46192: 6720 beqs 461b4 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) 46194: 4a88 tstl %a0 46196: 671c beqs 461b4 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; _ISR_Install_vector( 46198: 2f08 movel %a0,%sp@- 4619a: 2f01 movel %d1,%sp@- 4619c: 2f00 movel %d0,%sp@- 4619e: 4eb9 0004 9caa jsr 49caa <_CPU_ISR_install_vector> vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; 461a4: 4fef 000c lea %sp@(12),%sp 461a8: 4280 clrl %d0 } 461aa: 4e5e unlk %fp 461ac: 4e75 rts rtems_vector_number vector, rtems_isr_entry *old_isr_handler ) { if ( !_ISR_Is_vector_number_valid( vector ) ) return RTEMS_INVALID_NUMBER; 461ae: 700a moveq #10,%d0 <== NOT EXECUTED _ISR_Install_vector( vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; } 461b0: 4e5e unlk %fp <== NOT EXECUTED 461b2: 4e75 rts <== NOT EXECUTED if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) return RTEMS_INVALID_ADDRESS; if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) return RTEMS_INVALID_ADDRESS; 461b4: 7009 moveq #9,%d0 <== NOT EXECUTED _ISR_Install_vector( vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; } 461b6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000471c0 : rtems_interrupt_level rtems_interrupt_disable( void ) { rtems_interrupt_level previous_level; _ISR_Disable( previous_level ); 471c0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ #undef rtems_interrupt_disable rtems_interrupt_level rtems_interrupt_disable( void ) { 471c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_interrupt_level previous_level; _ISR_Disable( previous_level ); 471ca: 40c0 movew %sr,%d0 <== NOT EXECUTED 471cc: 8280 orl %d0,%d1 <== NOT EXECUTED 471ce: 46c1 movew %d1,%sr <== NOT EXECUTED return previous_level; } 471d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000471d4 : #undef rtems_interrupt_enable void rtems_interrupt_enable( rtems_interrupt_level previous_level ) { 471d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Enable( previous_level ); 471d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 471dc: 46c0 movew %d0,%sr <== NOT EXECUTED } 471de: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000471e2 : #undef rtems_interrupt_flash void rtems_interrupt_flash( rtems_interrupt_level previous_level ) { 471e2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Flash( previous_level ); 471e6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 471ea: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 471f0: 46c1 movew %d1,%sr <== NOT EXECUTED 471f2: 8081 orl %d1,%d0 <== NOT EXECUTED 471f4: 46c0 movew %d0,%sr <== NOT EXECUTED } 471f6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000471fa : */ #undef rtems_interrupt_is_in_progress bool rtems_interrupt_is_in_progress( void ) { 471fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _ISR_Is_in_progress(); 471fe: 4ab9 0006 182e tstl 6182e <_Per_CPU_Information+0x8> <== NOT EXECUTED 47204: 56c0 sne %d0 <== NOT EXECUTED } 47206: 4e5e unlk %fp <== NOT EXECUTED 47208: 4480 negl %d0 <== NOT EXECUTED =============================================================================== 00046b2c : rtems_attribute rtems_interrupt_level_attribute( uint32_t level ) { return RTEMS_INTERRUPT_LEVEL(level); } 46b2c: 7007 moveq #7,%d0 <== NOT EXECUTED uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK; rtems_attribute rtems_interrupt_level_attribute( uint32_t level ) { 46b2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return RTEMS_INTERRUPT_LEVEL(level); } 46b32: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED 46b36: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e508 : rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4e508: 4e56 0000 linkw %fp,#0 4e50c: 202e 0008 movel %fp@(8),%d0 4e510: 2f03 movel %d3,%sp@- 4e512: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4e514: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 4e51a: 6420 bccs 4e53c <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; 4e51c: 2600 movel %d0,%d3 4e51e: 2400 movel %d0,%d2 4e520: e78b lsll #3,%d3 4e522: eb8a lsll #5,%d2 4e524: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 4e52a: 9483 subl %d3,%d2 4e52c: 2271 2808 moveal %a1@(00000008,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e530: 4a89 tstl %a1 4e532: 6712 beqs 4e546 <== NEVER TAKEN } 4e534: 241f movel %sp@+,%d2 4e536: 261f movel %sp@+,%d3 4e538: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e53a: 4ed1 jmp %a1@ } 4e53c: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4e53e: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].close_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4e540: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e542: 4e5e unlk %fp <== NOT EXECUTED 4e544: 4e75 rts <== NOT EXECUTED 4e546: 241f movel %sp@+,%d2 <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e548: 4280 clrl %d0 <== NOT EXECUTED } 4e54a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e54c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e550 : rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4e550: 4e56 0000 linkw %fp,#0 4e554: 202e 0008 movel %fp@(8),%d0 4e558: 2f03 movel %d3,%sp@- 4e55a: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4e55c: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 4e562: 6420 bccs 4e584 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; 4e564: 2600 movel %d0,%d3 4e566: 2400 movel %d0,%d2 4e568: e78b lsll #3,%d3 4e56a: eb8a lsll #5,%d2 4e56c: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 4e572: 9483 subl %d3,%d2 4e574: 2271 2814 moveal %a1@(00000014,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e578: 4a89 tstl %a1 4e57a: 6712 beqs 4e58e <== NEVER TAKEN } 4e57c: 241f movel %sp@+,%d2 4e57e: 261f movel %sp@+,%d3 4e580: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e582: 4ed1 jmp %a1@ } 4e584: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4e586: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].control_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4e588: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e58a: 4e5e unlk %fp <== NOT EXECUTED 4e58c: 4e75 rts <== NOT EXECUTED 4e58e: 241f movel %sp@+,%d2 <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e590: 4280 clrl %d0 <== NOT EXECUTED } 4e592: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e594: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c390 : rtems_status_code rtems_io_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c390: 4e56 0000 linkw %fp,#0 4c394: 202e 0008 movel %fp@(8),%d0 4c398: 2f03 movel %d3,%sp@- 4c39a: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c39c: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 4c3a2: 6420 bccs 4c3c4 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; 4c3a4: 2600 movel %d0,%d3 4c3a6: 2400 movel %d0,%d2 4c3a8: e78b lsll #3,%d3 4c3aa: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 4c3b0: 93c3 subal %d3,%a1 4c3b2: eb8a lsll #5,%d2 4c3b4: 2271 2800 moveal %a1@(00000000,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c3b8: 4a89 tstl %a1 4c3ba: 6712 beqs 4c3ce } 4c3bc: 241f movel %sp@+,%d2 4c3be: 261f movel %sp@+,%d3 4c3c0: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c3c2: 4ed1 jmp %a1@ } 4c3c4: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c3c6: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].initialization_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4c3c8: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c3ca: 4e5e unlk %fp <== NOT EXECUTED 4c3cc: 4e75 rts <== NOT EXECUTED 4c3ce: 241f movel %sp@+,%d2 if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c3d0: 4280 clrl %d0 } 4c3d2: 261f movel %sp@+,%d3 4c3d4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e598 : rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4e598: 4e56 0000 linkw %fp,#0 4e59c: 202e 0008 movel %fp@(8),%d0 4e5a0: 2f03 movel %d3,%sp@- 4e5a2: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4e5a4: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 4e5aa: 6420 bccs 4e5cc <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; 4e5ac: 2600 movel %d0,%d3 4e5ae: 2400 movel %d0,%d2 4e5b0: e78b lsll #3,%d3 4e5b2: eb8a lsll #5,%d2 4e5b4: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 4e5ba: 9483 subl %d3,%d2 4e5bc: 2271 2804 moveal %a1@(00000004,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e5c0: 4a89 tstl %a1 4e5c2: 6712 beqs 4e5d6 <== NEVER TAKEN } 4e5c4: 241f movel %sp@+,%d2 4e5c6: 261f movel %sp@+,%d3 4e5c8: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e5ca: 4ed1 jmp %a1@ } 4e5cc: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4e5ce: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].open_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4e5d0: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5d2: 4e5e unlk %fp <== NOT EXECUTED 4e5d4: 4e75 rts <== NOT EXECUTED 4e5d6: 241f movel %sp@+,%d2 <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e5d8: 4280 clrl %d0 <== NOT EXECUTED } 4e5da: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5dc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e5e0 : rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4e5e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e5e4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4e5e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e5ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4e5ec: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 4e5f2: 6420 bccs 4e614 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; 4e5f4: 2600 movel %d0,%d3 <== NOT EXECUTED 4e5f6: 2400 movel %d0,%d2 <== NOT EXECUTED 4e5f8: e78b lsll #3,%d3 <== NOT EXECUTED 4e5fa: eb8a lsll #5,%d2 <== NOT EXECUTED 4e5fc: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 <== NOT EXECUTED 4e602: 9483 subl %d3,%d2 <== NOT EXECUTED 4e604: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e608: 4a89 tstl %a1 <== NOT EXECUTED 4e60a: 6712 beqs 4e61e <== NOT EXECUTED } 4e60c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e60e: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e610: 4e5e unlk %fp <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e612: 4ed1 jmp %a1@ <== NOT EXECUTED } 4e614: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4e616: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].read_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4e618: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e61a: 4e5e unlk %fp <== NOT EXECUTED 4e61c: 4e75 rts <== NOT EXECUTED 4e61e: 241f movel %sp@+,%d2 <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e620: 4280 clrl %d0 <== NOT EXECUTED } 4e622: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e624: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048080 : rtems_status_code rtems_io_register_driver( rtems_device_major_number major, const rtems_driver_address_table *driver_table, rtems_device_major_number *registered_major ) { 48080: 4e56 fff4 linkw %fp,#-12 48084: 226e 000c moveal %fp@(12),%a1 48088: 48d7 040c moveml %d2-%d3/%a2,%sp@ 4808c: 242e 0008 movel %fp@(8),%d2 48090: 246e 0010 moveal %fp@(16),%a2 rtems_device_major_number major_limit = _IO_Number_of_drivers; 48094: 2039 0006 476a movel 6476a <_IO_Number_of_drivers>,%d0 if ( rtems_interrupt_is_in_progress() ) 4809a: 4ab9 0006 4356 tstl 64356 <_Per_CPU_Information+0x8> 480a0: 6600 009c bnew 4813e return RTEMS_CALLED_FROM_ISR; if ( registered_major == NULL ) 480a4: 4a8a tstl %a2 480a6: 6700 00ea beqw 48192 return RTEMS_INVALID_ADDRESS; /* Set it to an invalid value */ *registered_major = major_limit; 480aa: 2480 movel %d0,%a2@ if ( driver_table == NULL ) 480ac: 4a89 tstl %a1 480ae: 6700 00e2 beqw 48192 static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 480b2: 4a91 tstl %a1@ 480b4: 6700 00d4 beqw 4818a return RTEMS_INVALID_ADDRESS; if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; if ( major >= major_limit ) 480b8: b480 cmpl %d0,%d2 480ba: 6476 bccs 48132 <== NEVER TAKEN rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 480bc: 2039 0006 3ed0 movel 63ed0 <_Thread_Dispatch_disable_level>,%d0 480c2: 5280 addql #1,%d0 480c4: 23c0 0006 3ed0 movel %d0,63ed0 <_Thread_Dispatch_disable_level> return RTEMS_INVALID_NUMBER; _Thread_Disable_dispatch(); if ( major == 0 ) { 480ca: 4a82 tstl %d2 480cc: 667c bnes 4814a <== NEVER TAKEN static rtems_status_code rtems_io_obtain_major_number( rtems_device_major_number *major ) { rtems_device_major_number n = _IO_Number_of_drivers; 480ce: 2039 0006 476a movel 6476a <_IO_Number_of_drivers>,%d0 rtems_device_major_number m = 0; /* major is error checked by caller */ for ( m = 0; m < n; ++m ) { 480d4: 6700 0106 beqw 481dc 480d8: 2239 0006 476e movel 6476e <_IO_Driver_address_table>,%d1 480de: 2041 moveal %d1,%a0 static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 480e0: 4a90 tstl %a0@ 480e2: 6700 008e beqw 48172 rtems_device_major_number n = _IO_Number_of_drivers; rtems_device_major_number m = 0; /* major is error checked by caller */ for ( m = 0; m < n; ++m ) { 480e6: 5282 addql #1,%d2 480e8: 41e8 0018 lea %a0@(24),%a0 480ec: b480 cmpl %d0,%d2 480ee: 65f0 bcss 480e0 <== ALWAYS TAKEN if ( rtems_io_is_empty_table( table ) ) break; } /* Assigns invalid value in case of failure */ *major = m; 480f0: 2482 movel %d2,%a2@ if ( m != n ) 480f2: b480 cmpl %d0,%d2 480f4: 6700 00e8 beqw 481de 480f8: 2602 movel %d2,%d3 480fa: 2002 movel %d2,%d0 } *registered_major = major; } _IO_Driver_address_table [major] = *driver_table; 480fc: 2041 moveal %d1,%a0 } /* Assigns invalid value in case of failure */ *major = m; if ( m != n ) 480fe: e78b lsll #3,%d3 48100: eb88 lsll #5,%d0 48102: 9083 subl %d3,%d0 } *registered_major = major; } _IO_Driver_address_table [major] = *driver_table; 48104: d1c0 addal %d0,%a0 48106: 20d9 movel %a1@+,%a0@+ 48108: 20d9 movel %a1@+,%a0@+ 4810a: 20d9 movel %a1@+,%a0@+ 4810c: 20d9 movel %a1@+,%a0@+ 4810e: 20d9 movel %a1@+,%a0@+ 48110: 2091 movel %a1@,%a0@ _Thread_Enable_dispatch(); 48112: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> return rtems_io_initialize( major, 0, NULL ); 48118: 2d42 0008 movel %d2,%fp@(8) } 4811c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 48122: 42ae 0010 clrl %fp@(16) 48126: 42ae 000c clrl %fp@(12) } 4812a: 4e5e unlk %fp _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 4812c: 4ef9 0005 0740 jmp 50740 if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; if ( major >= major_limit ) return RTEMS_INVALID_NUMBER; 48132: 700a moveq #10,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 48134: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4813a: 4e5e unlk %fp <== NOT EXECUTED 4813c: 4e75 rts <== NOT EXECUTED ) { rtems_device_major_number major_limit = _IO_Number_of_drivers; if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; 4813e: 7012 moveq #18,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 48140: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48146: 4e5e unlk %fp <== NOT EXECUTED 48148: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); return sc; } major = *registered_major; } else { rtems_driver_address_table *const table = _IO_Driver_address_table + major; 4814a: 2202 movel %d2,%d1 <== NOT EXECUTED 4814c: 2002 movel %d2,%d0 <== NOT EXECUTED 4814e: e789 lsll #3,%d1 <== NOT EXECUTED 48150: eb88 lsll #5,%d0 <== NOT EXECUTED 48152: 2079 0006 476e moveal 6476e <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 48158: 9081 subl %d1,%d0 <== NOT EXECUTED 4815a: d1c0 addal %d0,%a0 <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 4815c: 4a90 tstl %a0@ <== NOT EXECUTED 4815e: 673e beqs 4819e <== NOT EXECUTED major = *registered_major; } else { rtems_driver_address_table *const table = _IO_Driver_address_table + major; if ( !rtems_io_is_empty_table( table ) ) { _Thread_Enable_dispatch(); 48160: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; 48166: 700c moveq #12,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 48168: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4816e: 4e5e unlk %fp <== NOT EXECUTED 48170: 4e75 rts <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 48172: 4aa8 0004 tstl %a0@(4) 48176: 6700 ff78 beqw 480f0 rtems_device_major_number n = _IO_Number_of_drivers; rtems_device_major_number m = 0; /* major is error checked by caller */ for ( m = 0; m < n; ++m ) { 4817a: 5282 addql #1,%d2 4817c: 41e8 0018 lea %a0@(24),%a0 48180: b480 cmpl %d0,%d2 48182: 6500 ff5c bcsw 480e0 48186: 6000 ff68 braw 480f0 <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 4818a: 4aa9 0004 tstl %a1@(4) 4818e: 6600 ff28 bnew 480b8 if ( driver_table == NULL ) return RTEMS_INVALID_ADDRESS; if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; 48192: 7009 moveq #9,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 48194: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4819a: 4e5e unlk %fp <== NOT EXECUTED 4819c: 4e75 rts <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 4819e: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 481a2: 66bc bnes 48160 <== NOT EXECUTED 481a4: 2239 0006 476e movel 6476e <_IO_Driver_address_table>,%d1 <== NOT EXECUTED } *registered_major = major; } _IO_Driver_address_table [major] = *driver_table; 481aa: 2041 moveal %d1,%a0 <== NOT EXECUTED 481ac: d1c0 addal %d0,%a0 <== NOT EXECUTED if ( !rtems_io_is_empty_table( table ) ) { _Thread_Enable_dispatch(); return RTEMS_RESOURCE_IN_USE; } *registered_major = major; 481ae: 2482 movel %d2,%a2@ <== NOT EXECUTED } _IO_Driver_address_table [major] = *driver_table; 481b0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481b2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481b4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481b6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481b8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481ba: 2091 movel %a1@,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 481bc: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED return rtems_io_initialize( major, 0, NULL ); 481c2: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 481c6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 481cc: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 481d0: 42ae 000c clrl %fp@(12) <== NOT EXECUTED } 481d4: 4e5e unlk %fp <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 481d6: 4ef9 0005 0740 jmp 50740 <== NOT EXECUTED if ( rtems_io_is_empty_table( table ) ) break; } /* Assigns invalid value in case of failure */ *major = m; 481dc: 4292 clrl %a2@ <== NOT EXECUTED if ( major == 0 ) { rtems_status_code sc = rtems_io_obtain_major_number( registered_major ); if ( sc != RTEMS_SUCCESSFUL ) { _Thread_Enable_dispatch(); 481de: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED *major = m; if ( m != n ) return RTEMS_SUCCESSFUL; return RTEMS_TOO_MANY; 481e4: 7005 moveq #5,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 481e6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 481ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000481f0 : */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) { 481f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481f4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) 481f8: 4ab9 0006 4356 tstl 64356 <_Per_CPU_Information+0x8> <== NOT EXECUTED 481fe: 6644 bnes 48244 <== NOT EXECUTED return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { 48200: b0b9 0006 476a cmpl 6476a <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 48206: 6506 bcss 4820e <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_UNSATISFIED; 48208: 700d moveq #13,%d0 <== NOT EXECUTED } 4820a: 4e5e unlk %fp <== NOT EXECUTED 4820c: 4e75 rts <== NOT EXECUTED 4820e: 2239 0006 3ed0 movel 63ed0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 48214: 5281 addql #1,%d1 <== NOT EXECUTED 48216: 23c1 0006 3ed0 movel %d1,63ed0 <_Thread_Dispatch_disable_level><== NOT EXECUTED return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( &_IO_Driver_address_table[major], 4821c: 2200 movel %d0,%d1 <== NOT EXECUTED 4821e: eb88 lsll #5,%d0 <== NOT EXECUTED 48220: e789 lsll #3,%d1 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( 48222: 2079 0006 476e moveal 6476e <_IO_Driver_address_table>,%a0 <== NOT EXECUTED &_IO_Driver_address_table[major], 48228: 9081 subl %d1,%d0 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( 4822a: d1c0 addal %d0,%a0 <== NOT EXECUTED 4822c: 4298 clrl %a0@+ <== NOT EXECUTED 4822e: 4298 clrl %a0@+ <== NOT EXECUTED 48230: 4298 clrl %a0@+ <== NOT EXECUTED 48232: 4298 clrl %a0@+ <== NOT EXECUTED 48234: 4298 clrl %a0@+ <== NOT EXECUTED 48236: 4290 clrl %a0@ <== NOT EXECUTED &_IO_Driver_address_table[major], 0, sizeof( rtems_driver_address_table ) ); _Thread_Enable_dispatch(); 48238: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4823e: 4280 clrl %d0 <== NOT EXECUTED } return RTEMS_UNSATISFIED; } 48240: 4e5e unlk %fp <== NOT EXECUTED 48242: 4e75 rts <== NOT EXECUTED rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) { if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; 48244: 7012 moveq #18,%d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } return RTEMS_UNSATISFIED; } 48246: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e628 : rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4e628: 4e56 0000 linkw %fp,#0 4e62c: 202e 0008 movel %fp@(8),%d0 4e630: 2f03 movel %d3,%sp@- 4e632: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4e634: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 4e63a: 6420 bccs 4e65c <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; 4e63c: 2600 movel %d0,%d3 4e63e: 2400 movel %d0,%d2 4e640: e78b lsll #3,%d3 4e642: eb8a lsll #5,%d2 4e644: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 4e64a: 9483 subl %d3,%d2 4e64c: 2271 2810 moveal %a1@(00000010,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e650: 4a89 tstl %a1 4e652: 6712 beqs 4e666 <== NEVER TAKEN } 4e654: 241f movel %sp@+,%d2 4e656: 261f movel %sp@+,%d3 4e658: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e65a: 4ed1 jmp %a1@ } 4e65c: 241f movel %sp@+,%d2 <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4e65e: 700a moveq #10,%d0 <== NOT EXECUTED callout = _IO_Driver_address_table[major].write_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; } 4e660: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e662: 4e5e unlk %fp <== NOT EXECUTED 4e664: 4e75 rts <== NOT EXECUTED 4e666: 241f movel %sp@+,%d2 <== NOT EXECUTED if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4e668: 4280 clrl %d0 <== NOT EXECUTED } 4e66a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e66c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049274 : #include #include void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) { 49274: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 49278: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 4927c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED uint32_t i; uint32_t api_index; Thread_Control *the_thread; Objects_Information *information; if ( !routine ) 49280: 4a8b tstl %a3 <== NOT EXECUTED 49282: 673e beqs 492c2 <== NOT EXECUTED 49284: 49f9 0006 a1d8 lea 6a1d8 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG) if ( !_Objects_Information_table[ api_index ] ) continue; #endif information = _Objects_Information_table[ api_index ][ 1 ]; 4928a: 205c moveal %a4@+,%a0 <== NOT EXECUTED 4928c: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED if ( !information ) 49290: 4a8a tstl %a2 <== NOT EXECUTED 49292: 6726 beqs 492ba <== NOT EXECUTED continue; for ( i=1 ; i <= information->maximum ; i++ ) { 49294: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED 49298: 6720 beqs 492ba <== NOT EXECUTED 4929a: 7401 moveq #1,%d2 <== NOT EXECUTED the_thread = (Thread_Control *)information->local_table[ i ]; 4929c: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED 492a0: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED information = _Objects_Information_table[ api_index ][ 1 ]; if ( !information ) continue; for ( i=1 ; i <= information->maximum ; i++ ) { 492a4: 5282 addql #1,%d2 <== NOT EXECUTED the_thread = (Thread_Control *)information->local_table[ i ]; if ( !the_thread ) 492a6: 4a80 tstl %d0 <== NOT EXECUTED 492a8: 6706 beqs 492b0 <== NOT EXECUTED continue; (*routine)(the_thread); 492aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 492ac: 4e93 jsr %a3@ <== NOT EXECUTED 492ae: 588f addql #4,%sp <== NOT EXECUTED information = _Objects_Information_table[ api_index ][ 1 ]; if ( !information ) continue; for ( i=1 ; i <= information->maximum ; i++ ) { 492b0: 4280 clrl %d0 <== NOT EXECUTED 492b2: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 492b6: b480 cmpl %d0,%d2 <== NOT EXECUTED 492b8: 63e2 blss 4929c <== NOT EXECUTED Objects_Information *information; if ( !routine ) return; for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) { 492ba: b9fc 0006 a1e4 cmpal #434660,%a4 <== NOT EXECUTED 492c0: 66c8 bnes 4928a <== NOT EXECUTED (*routine)(the_thread); } } } 492c2: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 492c8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000562bc : rtems_id id, const void *buffer, size_t size, uint32_t *count ) { 562bc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 562c0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 562c4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 562c8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 562cc: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status core_status; if ( !buffer ) 562d0: 4a82 tstl %d2 <== NOT EXECUTED 562d2: 6762 beqs 56336 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !count ) 562d4: 4a83 tstl %d3 <== NOT EXECUTED 562d6: 675e beqs 56336 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 562d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 562dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 562de: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 562e4: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 562ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 562ee: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 562f2: 6636 bnes 5632a <== NOT EXECUTED case OBJECTS_LOCAL: core_status = _CORE_message_queue_Broadcast( 562f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 562f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 562f8: 42a7 clrl %sp@- <== NOT EXECUTED 562fa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 562fc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 56300: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56302: 4868 0014 pea %a0@(20) <== NOT EXECUTED 56306: 4eb9 0005 9d3c jsr 59d3c <_CORE_message_queue_Broadcast> <== NOT EXECUTED 5630c: 2400 movel %d0,%d2 <== NOT EXECUTED NULL, #endif count ); _Thread_Enable_dispatch(); 5630e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return 56314: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56316: 4eb9 0005 66c0 jsr 566c0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 5631c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56320: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 56326: 4e5e unlk %fp <== NOT EXECUTED 56328: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 5632a: 7004 moveq #4,%d0 <== NOT EXECUTED } 5632c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 56332: 4e5e unlk %fp <== NOT EXECUTED 56334: 4e75 rts <== NOT EXECUTED if ( !buffer ) return RTEMS_INVALID_ADDRESS; if ( !count ) return RTEMS_INVALID_ADDRESS; 56336: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56338: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5633e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ed40 : uint32_t count, size_t max_message_size, rtems_attribute attribute_set, rtems_id *id ) { 4ed40: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4ed44: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4ed48: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ed4c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4ed50: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4ed54: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED CORE_message_queue_Attributes the_msgq_attributes; #if defined(RTEMS_MULTIPROCESSING) bool is_global; #endif if ( !rtems_is_name_valid( name ) ) 4ed58: 4a82 tstl %d2 <== NOT EXECUTED 4ed5a: 6726 beqs 4ed82 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4ed5c: 4a8a tstl %a2 <== NOT EXECUTED 4ed5e: 6700 009c beqw 4edfc <== NOT EXECUTED if ( (is_global = _Attributes_Is_global( attribute_set ) ) && !_System_state_Is_multiprocessing ) return RTEMS_MP_NOT_CONFIGURED; #endif if ( count == 0 ) 4ed62: 4a83 tstl %d3 <== NOT EXECUTED 4ed64: 6710 beqs 4ed76 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( max_message_size == 0 ) 4ed66: 4a84 tstl %d4 <== NOT EXECUTED 4ed68: 6624 bnes 4ed8e <== NOT EXECUTED return RTEMS_INVALID_SIZE; 4ed6a: 7008 moveq #8,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ed6c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed72: 4e5e unlk %fp <== NOT EXECUTED 4ed74: 4e75 rts <== NOT EXECUTED !_System_state_Is_multiprocessing ) return RTEMS_MP_NOT_CONFIGURED; #endif if ( count == 0 ) return RTEMS_INVALID_NUMBER; 4ed76: 700a moveq #10,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ed78: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed7e: 4e5e unlk %fp <== NOT EXECUTED 4ed80: 4e75 rts <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) bool is_global; #endif if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4ed82: 7003 moveq #3,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ed84: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed8a: 4e5e unlk %fp <== NOT EXECUTED 4ed8c: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4ed8e: 2039 0006 9c90 movel 69c90 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4ed94: 5280 addql #1,%d0 <== NOT EXECUTED 4ed96: 23c0 0006 9c90 movel %d0,69c90 <_Thread_Dispatch_disable_level><== NOT EXECUTED #endif #endif _Thread_Disable_dispatch(); /* protects object pointer */ the_message_queue = _Message_queue_Allocate(); 4ed9c: 4eb9 0005 5598 jsr 55598 <_Message_queue_Allocate> <== NOT EXECUTED 4eda2: 2640 moveal %d0,%a3 <== NOT EXECUTED if ( !the_message_queue ) { 4eda4: 4a80 tstl %d0 <== NOT EXECUTED 4eda6: 6700 008a beqw 4ee32 <== NOT EXECUTED #endif the_message_queue->attribute_set = attribute_set; if (_Attributes_Is_priority( attribute_set ) ) the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; 4edaa: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 4edae: 204e moveal %fp,%a0 <== NOT EXECUTED 4edb0: 44c0 movew %d0,%ccr <== NOT EXECUTED 4edb2: 56c0 sne %d0 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_message_queue->attribute_set = attribute_set; 4edb4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED if (_Attributes_Is_priority( attribute_set ) ) the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; 4edb8: 49c0 extbl %d0 <== NOT EXECUTED 4edba: 5280 addql #1,%d0 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_message_queue->attribute_set = attribute_set; 4edbc: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED if (_Attributes_Is_priority( attribute_set ) ) the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; 4edc0: 2100 movel %d0,%a0@- <== NOT EXECUTED else the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; if ( ! _CORE_message_queue_Initialize( 4edc2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4edc4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4edc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4edc8: 486b 0014 pea %a3@(20) <== NOT EXECUTED 4edcc: 4eb9 0005 0154 jsr 50154 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4edd2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4edd6: 4a00 tstb %d0 <== NOT EXECUTED 4edd8: 662e bnes 4ee08 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Message_queue_Free ( Message_queue_Control *the_message_queue ) { _Objects_Free( &_Message_queue_Information, &the_message_queue->Object ); 4edda: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4eddc: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED 4ede2: 4eb9 0005 1140 jsr 51140 <_Objects_Free> <== NOT EXECUTED _Objects_MP_Close( &_Message_queue_Information, the_message_queue->Object.id); #endif _Message_queue_Free( the_message_queue ); _Thread_Enable_dispatch(); 4ede8: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_UNSATISFIED; 4edee: 508f addql #8,%sp <== NOT EXECUTED 4edf0: 700d moveq #13,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4edf2: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4edf8: 4e5e unlk %fp <== NOT EXECUTED 4edfa: 4e75 rts <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; 4edfc: 7009 moveq #9,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4edfe: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee04: 4e5e unlk %fp <== NOT EXECUTED 4ee06: 4e75 rts <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4ee08: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ee0c: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ee0e: 2079 0006 a508 moveal 6a508 <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ee14: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ee16: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4ee1a: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED &_Message_queue_Information, &the_message_queue->Object, (Objects_Name) name ); *id = the_message_queue->Object.id; 4ee1e: 2480 movel %d0,%a2@ <== NOT EXECUTED name, 0 ); #endif _Thread_Enable_dispatch(); 4ee20: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4ee26: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 0 ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4ee2c: 4280 clrl %d0 <== NOT EXECUTED } 4ee2e: 4e5e unlk %fp <== NOT EXECUTED 4ee30: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* protects object pointer */ the_message_queue = _Message_queue_Allocate(); if ( !the_message_queue ) { _Thread_Enable_dispatch(); 4ee32: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 4ee38: 7005 moveq #5,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4ee3a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee40: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00056448 : */ rtems_status_code rtems_message_queue_delete( rtems_id id ) { 56448: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5644c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 5644e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56452: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56456: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 5645c: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 56462: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56466: 2440 moveal %d0,%a2 <== NOT EXECUTED 56468: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5646c: 6640 bnes 564ae <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Message_queue_Information, 5646e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 56470: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 56476: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED &the_message_queue->Object ); _CORE_message_queue_Close( 5647c: 4878 0005 pea 5 <== NOT EXECUTED 56480: 42a7 clrl %sp@- <== NOT EXECUTED 56482: 486a 0014 pea %a2@(20) <== NOT EXECUTED 56486: 4eb9 0005 9dc8 jsr 59dc8 <_CORE_message_queue_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Message_queue_Free ( Message_queue_Control *the_message_queue ) { _Objects_Free( &_Message_queue_Information, &the_message_queue->Object ); 5648c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5648e: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 56494: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED 0, /* Not used */ 0 ); } #endif _Thread_Enable_dispatch(); 5649a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 564a0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 0 ); } #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 564a4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 564a8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 564aa: 4e5e unlk %fp <== NOT EXECUTED 564ac: 4e75 rts <== NOT EXECUTED 564ae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 564b2: 7004 moveq #4,%d0 <== NOT EXECUTED } 564b4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000564b8 : rtems_status_code rtems_message_queue_flush( rtems_id id, uint32_t *count ) { 564b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 564bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 564be: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 564c2: 4a8a tstl %a2 <== NOT EXECUTED 564c4: 6748 beqs 5650e <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 564c6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 564ca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 564ce: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 564d4: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 564da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 564de: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 564e2: 6620 bnes 56504 <== NOT EXECUTED case OBJECTS_LOCAL: *count = _CORE_message_queue_Flush( &the_message_queue->message_queue ); 564e4: 2040 moveal %d0,%a0 <== NOT EXECUTED 564e6: 4868 0014 pea %a0@(20) <== NOT EXECUTED 564ea: 4eb9 0005 9e1c jsr 59e1c <_CORE_message_queue_Flush> <== NOT EXECUTED 564f0: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 564f2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 564f8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: *count = _CORE_message_queue_Flush( &the_message_queue->message_queue ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 564fc: 588f addql #4,%sp <== NOT EXECUTED 564fe: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56500: 4e5e unlk %fp <== NOT EXECUTED 56502: 4e75 rts <== NOT EXECUTED 56504: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 56508: 7004 moveq #4,%d0 <== NOT EXECUTED } 5650a: 4e5e unlk %fp <== NOT EXECUTED 5650c: 4e75 rts <== NOT EXECUTED 5650e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED { register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) return RTEMS_INVALID_ADDRESS; 56512: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56514: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00056518 : rtems_status_code rtems_message_queue_get_number_pending( rtems_id id, uint32_t *count ) { 56518: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5651c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5651e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 56522: 4a8a tstl %a2 <== NOT EXECUTED 56524: 673e beqs 56564 <== NOT EXECUTED 56526: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5652a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5652e: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 56534: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 5653a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5653e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56542: 6616 bnes 5655a <== NOT EXECUTED case OBJECTS_LOCAL: *count = the_message_queue->message_queue.number_of_pending_messages; 56544: 2040 moveal %d0,%a0 <== NOT EXECUTED 56546: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 5654a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56550: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: *count = the_message_queue->message_queue.number_of_pending_messages; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 56554: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56556: 4e5e unlk %fp <== NOT EXECUTED 56558: 4e75 rts <== NOT EXECUTED 5655a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 5655e: 7004 moveq #4,%d0 <== NOT EXECUTED } 56560: 4e5e unlk %fp <== NOT EXECUTED 56562: 4e75 rts <== NOT EXECUTED 56564: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED { register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) return RTEMS_INVALID_ADDRESS; 56568: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5656a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ee44 : rtems_status_code rtems_message_queue_ident( rtems_name name, uint32_t node, rtems_id *id ) { 4ee44: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4ee48: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ee4c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4ee50: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ee54: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED 4ee5a: 4eb9 0005 145c jsr 5145c <_Objects_Name_to_id_u32> <== NOT EXECUTED name, node, id ); return _Status_Object_name_errors_to_status[ status ]; 4ee60: 41f9 0006 7372 lea 67372 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 4ee66: 4e5e unlk %fp <== NOT EXECUTED 4ee68: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004ee70 : void *buffer, size_t *size, rtems_option option_set, rtems_interval timeout ) { 4ee70: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4ee74: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4ee78: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ee7c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; bool wait; if ( !buffer ) 4ee80: 4a82 tstl %d2 <== NOT EXECUTED 4ee82: 6776 beqs 4eefa <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 4ee84: 4a83 tstl %d3 <== NOT EXECUTED 4ee86: 6772 beqs 4eefa <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 4ee88: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ee8c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ee90: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED 4ee96: 4eb9 0005 12ac jsr 512ac <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4ee9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4eea0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4eea4: 6648 bnes 4eeee <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait ( rtems_option option_set ) { return (option_set & RTEMS_NO_WAIT) ? true : false; 4eea6: 7201 moveq #1,%d1 <== NOT EXECUTED if ( _Options_Is_no_wait( option_set ) ) wait = false; else wait = true; _CORE_message_queue_Seize( 4eea8: 7801 moveq #1,%d4 <== NOT EXECUTED 4eeaa: 2040 moveal %d0,%a0 <== NOT EXECUTED 4eeac: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED 4eeb0: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4eeb4: b384 eorl %d1,%d4 <== NOT EXECUTED 4eeb6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4eeb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4eeba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4eebc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4eec0: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4eec4: 4eb9 0005 0214 jsr 50214 <_CORE_message_queue_Seize> <== NOT EXECUTED buffer, size, wait, timeout ); _Thread_Enable_dispatch(); 4eeca: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED return _Message_queue_Translate_core_message_queue_return_code( _Thread_Executing->Wait.return_code 4eed0: 2079 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED size, wait, timeout ); _Thread_Enable_dispatch(); return _Message_queue_Translate_core_message_queue_return_code( 4eed6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4eeda: 4eb9 0004 ef94 jsr 4ef94 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4eee0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4eee4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4eeea: 4e5e unlk %fp <== NOT EXECUTED 4eeec: 4e75 rts <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4eeee: 7004 moveq #4,%d0 <== NOT EXECUTED } 4eef0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4eef6: 4e5e unlk %fp <== NOT EXECUTED 4eef8: 4e75 rts <== NOT EXECUTED if ( !buffer ) return RTEMS_INVALID_ADDRESS; if ( !size ) return RTEMS_INVALID_ADDRESS; 4eefa: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4eefc: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4ef02: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ef08 : rtems_status_code rtems_message_queue_send( rtems_id id, const void *buffer, size_t size ) { 4ef08: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef0c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef0e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4ef12: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef14: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 4ef18: 676c beqs 4ef86 <== NOT EXECUTED 4ef1a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef1e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef20: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED 4ef26: 4eb9 0005 12ac jsr 512ac <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4ef2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef34: 6642 bnes 4ef78 <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 4ef36: 42a7 clrl %sp@- <== NOT EXECUTED 4ef38: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef3a: 42a7 clrl %sp@- <== NOT EXECUTED 4ef3c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4ef42: 42a7 clrl %sp@- <== NOT EXECUTED 4ef44: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef46: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ef4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef4c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ef50: 4eb9 0005 034c jsr 5034c <_CORE_message_queue_Submit> <== NOT EXECUTED MESSAGE_QUEUE_MP_HANDLER, false, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 4ef56: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4ef5a: 2400 movel %d0,%d2 <== NOT EXECUTED 4ef5c: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED /* * Since this API does not allow for blocking sends, we can directly * return the returned status. */ return _Message_queue_Translate_core_message_queue_return_code(status); 4ef62: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef64: 4eb9 0004 ef94 jsr 4ef94 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef6a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED /* * Since this API does not allow for blocking sends, we can directly * return the returned status. */ return _Message_queue_Translate_core_message_queue_return_code(status); 4ef6e: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef70: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef74: 4e5e unlk %fp <== NOT EXECUTED 4ef76: 4e75 rts <== NOT EXECUTED 4ef78: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ef7c: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ef7e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef82: 4e5e unlk %fp <== NOT EXECUTED 4ef84: 4e75 rts <== NOT EXECUTED 4ef86: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 4ef8a: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ef8c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef90: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000566d8 : rtems_status_code rtems_message_queue_urgent( rtems_id id, const void *buffer, size_t size ) { 566d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 566dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 566de: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 566e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 566e4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 566e8: 676c beqs 56756 <== NOT EXECUTED 566ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 566ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED 566f0: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED 566f6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 566fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56700: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56704: 6642 bnes 56748 <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 56706: 42a7 clrl %sp@- <== NOT EXECUTED 56708: 2040 moveal %d0,%a0 <== NOT EXECUTED 5670a: 42a7 clrl %sp@- <== NOT EXECUTED 5670c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED 56712: 42a7 clrl %sp@- <== NOT EXECUTED 56714: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56716: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5671a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5671c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 56720: 4eb9 0005 a08c jsr 5a08c <_CORE_message_queue_Submit> <== NOT EXECUTED id, MESSAGE_QUEUE_MP_HANDLER, false, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 56726: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 5672a: 2400 movel %d0,%d2 <== NOT EXECUTED 5672c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED /* * Since this API does not allow for blocking sends, we can directly * return the returned status. */ return _Message_queue_Translate_core_message_queue_return_code(status); 56732: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56734: 4eb9 0005 66c0 jsr 566c0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5673a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED /* * Since this API does not allow for blocking sends, we can directly * return the returned status. */ return _Message_queue_Translate_core_message_queue_return_code(status); 5673e: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56740: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56744: 4e5e unlk %fp <== NOT EXECUTED 56746: 4e75 rts <== NOT EXECUTED 56748: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 5674c: 7004 moveq #4,%d0 <== NOT EXECUTED } 5674e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56752: 4e5e unlk %fp <== NOT EXECUTED 56754: 4e75 rts <== NOT EXECUTED 56756: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 5675a: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5675c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56760: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004642c : #include int rtems_object_api_maximum_class( int api ) { 4642c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_API_maximum_class(api); } 46430: 4e5e unlk %fp <== NOT EXECUTED int rtems_object_api_maximum_class( int api ) { return _Objects_API_maximum_class(api); 46432: 4ef9 0004 7c3c jmp 47c3c <_Objects_API_maximum_class> <== NOT EXECUTED =============================================================================== 00046438 : uint32_t api ) { if ( _Objects_Is_api_valid( api ) ) return 1; return -1; 46438: 7203 moveq #3,%d1 <== NOT EXECUTED #include uint32_t rtems_object_api_minimum_class( uint32_t api ) { 4643a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 4643e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46442: 5380 subql #1,%d0 <== NOT EXECUTED if ( _Objects_Is_api_valid( api ) ) return 1; return -1; 46444: b280 cmpl %d0,%d1 <== NOT EXECUTED 46446: 53c0 sls %d0 <== NOT EXECUTED 46448: 49c0 extbl %d0 <== NOT EXECUTED } 4644a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4644e: 4e5e unlk %fp <== NOT EXECUTED 46450: 8081 orl %d1,%d0 <== NOT EXECUTED =============================================================================== 00046454 : ) { const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) 46454: 7001 moveq #1,%d0 <== NOT EXECUTED const char *rtems_object_get_api_class_name( int the_api, int the_class ) { 46456: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4645a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4645e: 2f02 movel %d2,%sp@- <== NOT EXECUTED const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) 46460: b081 cmpl %d1,%d0 <== NOT EXECUTED 46462: 674e beqs 464b2 <== NOT EXECUTED api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) 46464: 7402 moveq #2,%d2 <== NOT EXECUTED 46466: b481 cmpl %d1,%d2 <== NOT EXECUTED 46468: 6740 beqs 464aa <== NOT EXECUTED api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) 4646a: 143c 0003 moveb #3,%d2 <== NOT EXECUTED api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; 4646e: 203c 0005 de62 movel #384610,%d0 <== NOT EXECUTED if ( the_api == OBJECTS_INTERNAL_API ) api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) 46474: b481 cmpl %d1,%d2 <== NOT EXECUTED 46476: 6708 beqs 46480 <== NOT EXECUTED return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); if ( class_assoc ) return class_assoc->name; return "BAD CLASS"; } 46478: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4647c: 4e5e unlk %fp <== NOT EXECUTED 4647e: 4e75 rts <== NOT EXECUTED api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) api_assoc = rtems_object_api_posix_assoc; 46480: 203c 0005 f0a8 movel #389288,%d0 <== NOT EXECUTED #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); 46486: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4648a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4648c: 4eb9 0004 b248 jsr 4b248 <== NOT EXECUTED if ( class_assoc ) 46492: 508f addql #8,%sp <== NOT EXECUTED else if ( the_api == OBJECTS_POSIX_API ) api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); 46494: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( class_assoc ) return class_assoc->name; return "BAD CLASS"; 46496: 203c 0005 de6a movel #384618,%d0 <== NOT EXECUTED api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); if ( class_assoc ) 4649c: 4a88 tstl %a0 <== NOT EXECUTED 4649e: 67d8 beqs 46478 <== NOT EXECUTED return class_assoc->name; return "BAD CLASS"; } 464a0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 464a4: 4e5e unlk %fp <== NOT EXECUTED #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); if ( class_assoc ) return class_assoc->name; 464a6: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 464a8: 4e75 rts <== NOT EXECUTED const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) api_assoc = rtems_object_api_classic_assoc; 464aa: 203c 0005 f030 movel #389168,%d0 <== NOT EXECUTED 464b0: 60d4 bras 46486 <== NOT EXECUTED { const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) api_assoc = rtems_object_api_internal_assoc; 464b2: 203c 0005 f018 movel #389144,%d0 <== NOT EXECUTED 464b8: 60cc bras 46486 <== NOT EXECUTED ... =============================================================================== 000464bc : }; const char *rtems_object_get_api_name( int api ) { 464bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED const rtems_assoc_t *api_assoc; api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api ); 464c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 464c4: 4879 0005 f138 pea 5f138 <== NOT EXECUTED 464ca: 4eb9 0004 b248 jsr 4b248 <== NOT EXECUTED if ( api_assoc ) 464d0: 508f addql #8,%sp <== NOT EXECUTED int api ) { const rtems_assoc_t *api_assoc; api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api ); 464d2: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( api_assoc ) return api_assoc->name; return "BAD CLASS"; 464d4: 203c 0005 de6a movel #384618,%d0 <== NOT EXECUTED ) { const rtems_assoc_t *api_assoc; api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api ); if ( api_assoc ) 464da: 4a88 tstl %a0 <== NOT EXECUTED 464dc: 6702 beqs 464e0 <== NOT EXECUTED return api_assoc->name; 464de: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 464e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047f58 : rtems_status_code rtems_object_get_class_information( int the_api, int the_class, rtems_object_api_class_information *info ) { 47f58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47f5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47f5e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 47f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED int i; /* * Validate parameters and look up information structure. */ if ( !info ) 47f64: 4a8a tstl %a2 <== NOT EXECUTED 47f66: 6768 beqs 47fd0 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; obj_info = _Objects_Get_information( the_api, the_class ); 47f68: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED 47f6c: 4267 clrw %sp@- <== NOT EXECUTED 47f6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47f72: 4eb9 0004 9c90 jsr 49c90 <_Objects_Get_information> <== NOT EXECUTED if ( !obj_info ) 47f78: 508f addql #8,%sp <== NOT EXECUTED * Validate parameters and look up information structure. */ if ( !info ) return RTEMS_INVALID_ADDRESS; obj_info = _Objects_Get_information( the_api, the_class ); 47f7a: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !obj_info ) 47f7c: 4a80 tstl %d0 <== NOT EXECUTED 47f7e: 675e beqs 47fde <== NOT EXECUTED return RTEMS_INVALID_NUMBER; /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; 47f80: 24a8 0006 movel %a0@(6),%a2@ <== NOT EXECUTED info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 47f84: 4282 clrl %d2 <== NOT EXECUTED /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; 47f86: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 47f8c: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; 47f90: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED info->maximum = obj_info->maximum; 47f96: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 47f9a: 6750 beqs 47fec <== NOT EXECUTED 47f9c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 47fa0: 7201 moveq #1,%d1 <== NOT EXECUTED 47fa2: 7001 moveq #1,%d0 <== NOT EXECUTED 47fa4: 93c9 subal %a1,%a1 <== NOT EXECUTED 47fa6: 5280 addql #1,%d0 <== NOT EXECUTED if ( !obj_info->local_table[i] ) 47fa8: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4) <== NOT EXECUTED 47fac: 6718 beqs 47fc6 <== NOT EXECUTED info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 47fae: 2200 movel %d0,%d1 <== NOT EXECUTED 47fb0: b082 cmpl %d2,%d0 <== NOT EXECUTED 47fb2: 63f2 blss 47fa6 <== NOT EXECUTED if ( !obj_info->local_table[i] ) unallocated++; info->unallocated = unallocated; 47fb4: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED return RTEMS_SUCCESSFUL; 47fb8: 4280 clrl %d0 <== NOT EXECUTED } 47fba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47fbe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47fc2: 4e5e unlk %fp <== NOT EXECUTED 47fc4: 4e75 rts <== NOT EXECUTED info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) if ( !obj_info->local_table[i] ) unallocated++; 47fc6: 5289 addql #1,%a1 <== NOT EXECUTED info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 47fc8: 2200 movel %d0,%d1 <== NOT EXECUTED 47fca: b082 cmpl %d2,%d0 <== NOT EXECUTED 47fcc: 63d8 blss 47fa6 <== NOT EXECUTED 47fce: 60e4 bras 47fb4 <== NOT EXECUTED unallocated++; info->unallocated = unallocated; return RTEMS_SUCCESSFUL; } 47fd0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED /* * Validate parameters and look up information structure. */ if ( !info ) return RTEMS_INVALID_ADDRESS; 47fd4: 7009 moveq #9,%d0 <== NOT EXECUTED unallocated++; info->unallocated = unallocated; return RTEMS_SUCCESSFUL; } 47fd6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47fda: 4e5e unlk %fp <== NOT EXECUTED 47fdc: 4e75 rts <== NOT EXECUTED 47fde: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED if ( !info ) return RTEMS_INVALID_ADDRESS; obj_info = _Objects_Get_information( the_api, the_class ); if ( !obj_info ) return RTEMS_INVALID_NUMBER; 47fe2: 700a moveq #10,%d0 <== NOT EXECUTED unallocated++; info->unallocated = unallocated; return RTEMS_SUCCESSFUL; } 47fe4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47fe8: 4e5e unlk %fp <== NOT EXECUTED 47fea: 4e75 rts <== NOT EXECUTED info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 47fec: 93c9 subal %a1,%a1 <== NOT EXECUTED if ( !obj_info->local_table[i] ) unallocated++; info->unallocated = unallocated; return RTEMS_SUCCESSFUL; 47fee: 4280 clrl %d0 <== NOT EXECUTED for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) if ( !obj_info->local_table[i] ) unallocated++; info->unallocated = unallocated; 47ff0: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED 47ff4: 60c4 bras 47fba <== NOT EXECUTED ... =============================================================================== 000477cc : rtems_status_code rtems_object_get_classic_name( rtems_id id, rtems_name *name ) { 477cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 477d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Name name_u; if ( !name ) 477d6: 4a8a tstl %a2 <== NOT EXECUTED 477d8: 6726 beqs 47800 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; status = _Objects_Id_to_name( id, &name_u ); 477da: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 477e2: 4eb9 0004 94e8 jsr 494e8 <_Objects_Id_to_name> <== NOT EXECUTED *name = name_u.name_u32; 477e8: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 477ec: 41f9 0005 f190 lea 5f190 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 477f2: 508f addql #8,%sp <== NOT EXECUTED } 477f4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 477f8: 4e5e unlk %fp <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; status = _Objects_Id_to_name( id, &name_u ); *name = name_u.name_u32; return _Status_Object_name_errors_to_status[ status ]; 477fa: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED } 477fe: 4e75 rts <== NOT EXECUTED 47800: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED { Objects_Name_or_id_lookup_errors status; Objects_Name name_u; if ( !name ) return RTEMS_INVALID_ADDRESS; 47804: 7009 moveq #9,%d0 <== NOT EXECUTED status = _Objects_Id_to_name( id, &name_u ); *name = name_u.name_u32; return _Status_Object_name_errors_to_status[ status ]; } 47806: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004781c : char *rtems_object_get_name( Objects_Id id, size_t length, char *name ) { 4781c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_name_as_string( id, length, name ); } 47820: 4e5e unlk %fp <== NOT EXECUTED Objects_Id id, size_t length, char *name ) { return _Objects_Get_name_as_string( id, length, name ); 47822: 4ef9 0004 978c jmp 4978c <_Objects_Get_name_as_string> <== NOT EXECUTED =============================================================================== 00048004 : #undef rtems_object_id_api_maximum int rtems_object_id_api_maximum(void) { return OBJECTS_APIS_LAST; } 48004: 7003 moveq #3,%d0 <== NOT EXECUTED #include #include #undef rtems_object_id_api_maximum int rtems_object_id_api_maximum(void) { 48006: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_APIS_LAST; } 4800a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048010 : #undef rtems_object_id_api_minimum int rtems_object_id_api_minimum(void) { return OBJECTS_INTERNAL_API; } 48010: 7001 moveq #1,%d0 <== NOT EXECUTED #include #include #undef rtems_object_id_api_minimum int rtems_object_id_api_minimum(void) { 48012: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_INTERNAL_API; } 48016: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004801c : */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 4801c: 4280 clrl %d0 <== NOT EXECUTED int rtems_object_id_get_api( rtems_id id ) { return _Objects_Get_API( id ); } 4801e: 7207 moveq #7,%d1 <== NOT EXECUTED #undef rtems_object_id_get_api int rtems_object_id_get_api( rtems_id id ) { 48020: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48024: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED return _Objects_Get_API( id ); } 48028: 4e5e unlk %fp <== NOT EXECUTED 4802a: c081 andl %d1,%d0 <== NOT EXECUTED ... =============================================================================== 00048030 : int rtems_object_id_get_class( rtems_id id ) { return _Objects_Get_class( id ); } 48030: 721b moveq #27,%d1 <== NOT EXECUTED #undef rtems_object_id_get_class int rtems_object_id_get_class( rtems_id id ) { 48032: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48036: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED return _Objects_Get_class( id ); } 4803a: 4e5e unlk %fp <== NOT EXECUTED 4803c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED =============================================================================== 00048040 : int rtems_object_id_get_index( rtems_id id ) { return _Objects_Get_index( id ); } 48040: 4280 clrl %d0 <== NOT EXECUTED #undef rtems_object_id_get_index int rtems_object_id_get_index( rtems_id id ) { 48042: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_index( id ); } 48046: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 4804a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048050 : int rtems_object_id_get_node( rtems_id id ) { return _Objects_Get_node( id ); } 48050: 4280 clrl %d0 <== NOT EXECUTED #undef rtems_object_id_get_node int rtems_object_id_get_node( rtems_id id ) { 48052: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_node( id ); } 48056: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED 4805a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000464f0 : */ rtems_status_code rtems_object_set_name( rtems_id id, const char *name ) { 464f0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 464f4: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 464f8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 464fc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED Objects_Information *information; Objects_Locations location; Objects_Control *the_object; Objects_Id tmpId; if ( !name ) 46500: 6764 beqs 46566 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 46502: 4a83 tstl %d3 <== NOT EXECUTED 46504: 6754 beqs 4655a <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 46506: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46508: 4eb9 0004 7fa8 jsr 47fa8 <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 4650e: 588f addql #4,%sp <== NOT EXECUTED if ( !name ) return RTEMS_INVALID_ADDRESS; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; information = _Objects_Get_information_id( tmpId ); 46510: 2400 movel %d0,%d2 <== NOT EXECUTED if ( !information ) 46512: 673a beqs 4654e <== NOT EXECUTED return RTEMS_INVALID_ID; the_object = _Objects_Get( information, tmpId, &location ); 46514: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46518: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4651a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4651c: 4eb9 0004 8194 jsr 48194 <_Objects_Get> <== NOT EXECUTED switch ( location ) { 46522: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46526: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4652a: 6622 bnes 4654e <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Set_name( information, the_object, name ); 4652c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4652e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46530: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46532: 4eb9 0004 8344 jsr 48344 <_Objects_Set_name> <== NOT EXECUTED _Thread_Enable_dispatch(); 46538: 4eb9 0004 8dbe jsr 48dbe <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4653e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46542: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46544: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4654a: 4e5e unlk %fp <== NOT EXECUTED 4654c: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4654e: 7004 moveq #4,%d0 <== NOT EXECUTED } 46550: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 46556: 4e5e unlk %fp <== NOT EXECUTED 46558: 4e75 rts <== NOT EXECUTED Objects_Id tmpId; if ( !name ) return RTEMS_INVALID_ADDRESS; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 4655a: 2079 0006 0cfa moveal 60cfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46560: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED 46564: 60a0 bras 46506 <== NOT EXECUTED Objects_Locations location; Objects_Control *the_object; Objects_Id tmpId; if ( !name ) return RTEMS_INVALID_ADDRESS; 46566: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46568: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4656e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00056764 : uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) { 56764: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 56768: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 5676c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 56770: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 56774: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 56778: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 5677c: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED register Partition_Control *the_partition; if ( !rtems_is_name_valid( name ) ) 56780: 4a82 tstl %d2 <== NOT EXECUTED 56782: 673a beqs 567be <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 56784: 4a85 tstl %d5 <== NOT EXECUTED 56786: 671e beqs 567a6 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 56788: 4a8a tstl %a2 <== NOT EXECUTED 5678a: 671a beqs 567a6 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( length == 0 || buffer_size == 0 || length < buffer_size || 5678c: 4a84 tstl %d4 <== NOT EXECUTED 5678e: 6722 beqs 567b2 <== NOT EXECUTED 56790: 4a83 tstl %d3 <== NOT EXECUTED 56792: 671e beqs 567b2 <== NOT EXECUTED 56794: b684 cmpl %d4,%d3 <== NOT EXECUTED 56796: 621a bhis 567b2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned ( uint32_t buffer_size ) { return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0); 56798: 7003 moveq #3,%d0 <== NOT EXECUTED 5679a: c083 andl %d3,%d0 <== NOT EXECUTED 5679c: 6614 bnes 567b2 <== NOT EXECUTED ) { #if (CPU_ALIGNMENT == 0) return true; #else return (((uintptr_t)address % CPU_ALIGNMENT) == 0); 5679e: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 567a2: c085 andl %d5,%d0 <== NOT EXECUTED !_Partition_Is_buffer_size_aligned( buffer_size ) ) return RTEMS_INVALID_SIZE; if ( !_Addresses_Is_aligned( starting_address ) ) 567a4: 6724 beqs 567ca <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; 567a6: 7009 moveq #9,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 567a8: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567ae: 4e5e unlk %fp <== NOT EXECUTED 567b0: 4e75 rts <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; if ( length == 0 || buffer_size == 0 || length < buffer_size || !_Partition_Is_buffer_size_aligned( buffer_size ) ) return RTEMS_INVALID_SIZE; 567b2: 7008 moveq #8,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 567b4: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567ba: 4e5e unlk %fp <== NOT EXECUTED 567bc: 4e75 rts <== NOT EXECUTED ) { register Partition_Control *the_partition; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 567be: 7003 moveq #3,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 567c0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567c6: 4e5e unlk %fp <== NOT EXECUTED 567c8: 4e75 rts <== NOT EXECUTED 567ca: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 567d0: 5280 addql #1,%d0 <== NOT EXECUTED 567d2: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED * This function allocates a partition control block from * the inactive chain of free partition control blocks. */ RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void ) { return (Partition_Control *) _Objects_Allocate( &_Partition_Information ); 567d8: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 567de: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_partition = _Partition_Allocate(); if ( !the_partition ) { 567e4: 588f addql #4,%sp <== NOT EXECUTED 567e6: 2640 moveal %d0,%a3 <== NOT EXECUTED 567e8: 4a80 tstl %d0 <== NOT EXECUTED 567ea: 6758 beqs 56844 <== NOT EXECUTED return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; the_partition->length = length; 567ec: 2744 0014 movel %d4,%a3@(20) <== NOT EXECUTED the_partition->buffer_size = buffer_size; the_partition->attribute_set = attribute_set; 567f0: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED the_partition->number_of_used_blocks = 0; _Chain_Initialize( &the_partition->Memory, starting_address, 567f6: 4c43 4004 remul %d3,%d4,%d4 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; 567fa: 2745 0010 movel %d5,%a3@(16) <== NOT EXECUTED the_partition->length = length; the_partition->buffer_size = buffer_size; 567fe: 2743 0018 movel %d3,%a3@(24) <== NOT EXECUTED the_partition->attribute_set = attribute_set; the_partition->number_of_used_blocks = 0; 56802: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED _Chain_Initialize( &the_partition->Memory, starting_address, 56806: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56808: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5680a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5680c: 486b 0024 pea %a3@(36) <== NOT EXECUTED 56810: 4eb9 0005 9cc8 jsr 59cc8 <_Chain_Initialize> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 56816: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 5681a: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 5681c: 2079 0007 e99a moveal 7e99a <_Partition_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 56822: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 56824: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 56828: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED &_Partition_Information, &the_partition->Object, (Objects_Name) name ); *id = the_partition->Object.id; 5682c: 2480 movel %d0,%a2@ <== NOT EXECUTED name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 5682e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 56834: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 56838: 4280 clrl %d0 <== NOT EXECUTED } 5683a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 56840: 4e5e unlk %fp <== NOT EXECUTED 56842: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_partition = _Partition_Allocate(); if ( !the_partition ) { _Thread_Enable_dispatch(); 56844: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 5684a: 7005 moveq #5,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 5684c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 56852: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00056858 : */ rtems_status_code rtems_partition_delete( rtems_id id ) { 56858: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 5685c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56860: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56864: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 5686a: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 56870: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56874: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56878: 6706 beqs 56880 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 5687a: 7004 moveq #4,%d0 <== NOT EXECUTED } 5687c: 4e5e unlk %fp <== NOT EXECUTED 5687e: 4e75 rts <== NOT EXECUTED the_partition = _Partition_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( the_partition->number_of_used_blocks == 0 ) { 56880: 2040 moveal %d0,%a0 <== NOT EXECUTED 56882: 4aa8 0020 tstl %a0@(32) <== NOT EXECUTED 56886: 670c beqs 56894 <== NOT EXECUTED #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 56888: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; 5688e: 700c moveq #12,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56890: 4e5e unlk %fp <== NOT EXECUTED 56892: 4e75 rts <== NOT EXECUTED the_partition = _Partition_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( the_partition->number_of_used_blocks == 0 ) { _Objects_Close( &_Partition_Information, &the_partition->Object ); 56894: 2f00 movel %d0,%sp@- <== NOT EXECUTED 56896: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 5689c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 568a0: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Partition_Free ( Partition_Control *the_partition ) { _Objects_Free( &_Partition_Information, &the_partition->Object ); 568a6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 568aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 568ac: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 568b2: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 568b8: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 568be: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 568c2: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 568c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000568c8 : rtems_status_code rtems_partition_get_buffer( rtems_id id, void **buffer ) { 568c8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 568cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 568d0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; void *the_buffer; if ( !buffer ) 568d4: 4a8a tstl %a2 <== NOT EXECUTED 568d6: 6754 beqs 5692c <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 568d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 568dc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 568e0: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 568e6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_partition = _Partition_Get( id, &location ); switch ( location ) { 568ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 568f0: 2640 moveal %d0,%a3 <== NOT EXECUTED 568f2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 568f6: 6628 bnes 56920 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer ( Partition_Control *the_partition ) { return _Chain_Get( &the_partition->Memory ); 568f8: 486b 0024 pea %a3@(36) <== NOT EXECUTED 568fc: 4eb9 0005 9c8c jsr 59c8c <_Chain_Get> <== NOT EXECUTED case OBJECTS_LOCAL: the_buffer = _Partition_Allocate_buffer( the_partition ); if ( the_buffer ) { 56902: 588f addql #4,%sp <== NOT EXECUTED 56904: 2400 movel %d0,%d2 <== NOT EXECUTED 56906: 6730 beqs 56938 <== NOT EXECUTED the_partition->number_of_used_blocks += 1; 56908: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 5690c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED *buffer = the_buffer; return RTEMS_SUCCESSFUL; 56912: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_LOCAL: the_buffer = _Partition_Allocate_buffer( the_partition ); if ( the_buffer ) { the_partition->number_of_used_blocks += 1; _Thread_Enable_dispatch(); *buffer = the_buffer; 56914: 2482 movel %d2,%a2@ <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56916: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 5691c: 4e5e unlk %fp <== NOT EXECUTED 5691e: 4e75 rts <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 56920: 7004 moveq #4,%d0 <== NOT EXECUTED } 56922: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56928: 4e5e unlk %fp <== NOT EXECUTED 5692a: 4e75 rts <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; void *the_buffer; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 5692c: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5692e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56934: 4e5e unlk %fp <== NOT EXECUTED 56936: 4e75 rts <== NOT EXECUTED the_partition->number_of_used_blocks += 1; _Thread_Enable_dispatch(); *buffer = the_buffer; return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 56938: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_UNSATISFIED; 5693e: 700d moveq #13,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56940: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56946: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005694c : rtems_status_code rtems_partition_ident( rtems_name name, uint32_t node, rtems_id *id ) { 5694c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( &_Partition_Information, name, node, id ); 56950: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 56954: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 56958: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5695c: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 56962: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 56968: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 5696e: 4e5e unlk %fp <== NOT EXECUTED 56970: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 00056978 : rtems_status_code rtems_partition_return_buffer( rtems_id id, void *buffer ) { 56978: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5697c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5697e: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 56980: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56984: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56988: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED 5698e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 56992: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 56998: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5699c: 2440 moveal %d0,%a2 <== NOT EXECUTED 5699e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 569a2: 670e beqs 569b2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 569a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 569a8: 7004 moveq #4,%d0 <== NOT EXECUTED } 569aa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 569ae: 4e5e unlk %fp <== NOT EXECUTED 569b0: 4e75 rts <== NOT EXECUTED ) { void *starting; void *ending; starting = the_partition->starting_address; 569b2: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED ending = _Addresses_Add_offset( starting, the_partition->length ); 569b6: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED const void *address, const void *base, const void *limit ) { return (address >= base && address <= limit); 569ba: b082 cmpl %d2,%d0 <== NOT EXECUTED 569bc: 623c bhis 569fa <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 569be: d280 addl %d0,%d1 <== NOT EXECUTED const void *address, const void *base, const void *limit ) { return (address >= base && address <= limit); 569c0: b282 cmpl %d2,%d1 <== NOT EXECUTED 569c2: 6536 bcss 569fa <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 569c4: 2202 movel %d2,%d1 <== NOT EXECUTED 569c6: 9280 subl %d0,%d1 <== NOT EXECUTED 569c8: 2001 movel %d1,%d0 <== NOT EXECUTED offset = (uint32_t) _Addresses_Subtract( the_buffer, the_partition->starting_address ); return ((offset % the_partition->buffer_size) == 0); 569ca: 4c6a 0001 0018 remul %a2@(24),%d1,%d0 <== NOT EXECUTED starting = the_partition->starting_address; ending = _Addresses_Add_offset( starting, the_partition->length ); return ( _Addresses_Is_in_range( the_buffer, starting, ending ) && 569d0: 4a81 tstl %d1 <== NOT EXECUTED 569d2: 6626 bnes 569fa <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Partition_Free_buffer ( Partition_Control *the_partition, Chain_Node *the_buffer ) { _Chain_Append( &the_partition->Memory, the_buffer ); 569d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 569d6: 486a 0024 pea %a2@(36) <== NOT EXECUTED 569da: 4eb9 0005 9c2c jsr 59c2c <_Chain_Append> <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) { _Partition_Free_buffer( the_partition, buffer ); the_partition->number_of_used_blocks -= 1; 569e0: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 569e4: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 569ea: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) { _Partition_Free_buffer( the_partition, buffer ); the_partition->number_of_used_blocks -= 1; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 569ee: 508f addql #8,%sp <== NOT EXECUTED 569f0: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 569f2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 569f6: 4e5e unlk %fp <== NOT EXECUTED 569f8: 4e75 rts <== NOT EXECUTED _Partition_Free_buffer( the_partition, buffer ); the_partition->number_of_used_blocks -= 1; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 569fa: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a00: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED the_partition->number_of_used_blocks -= 1; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); return RTEMS_INVALID_ADDRESS; 56a04: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a06: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 56a0a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00055c60 : void *internal_start, void *external_start, uint32_t length, rtems_id *id ) { 55c60: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 55c64: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 55c68: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 55c6c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 55c70: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 55c74: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; if ( !rtems_is_name_valid( name ) ) 55c78: 4a82 tstl %d2 <== NOT EXECUTED 55c7a: 671a beqs 55c96 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 55c7c: 4a8a tstl %a2 <== NOT EXECUTED 55c7e: 670a beqs 55c8a <== NOT EXECUTED * id - port id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_port_create( 55c80: 2003 movel %d3,%d0 <== NOT EXECUTED 55c82: 7203 moveq #3,%d1 <== NOT EXECUTED 55c84: 8084 orl %d4,%d0 <== NOT EXECUTED 55c86: c081 andl %d1,%d0 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; if ( !_Addresses_Is_aligned( internal_start ) || 55c88: 6718 beqs 55ca2 <== NOT EXECUTED !_Addresses_Is_aligned( external_start ) ) return RTEMS_INVALID_ADDRESS; 55c8a: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_port->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 55c8c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55c92: 4e5e unlk %fp <== NOT EXECUTED 55c94: 4e75 rts <== NOT EXECUTED ) { register Dual_ported_memory_Control *the_port; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 55c96: 7003 moveq #3,%d0 <== NOT EXECUTED ); *id = the_port->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 55c98: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55c9e: 4e5e unlk %fp <== NOT EXECUTED 55ca0: 4e75 rts <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 55ca2: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 55ca8: 5280 addql #1,%d0 <== NOT EXECUTED 55caa: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Allocate ( void ) { return (Dual_ported_memory_Control *) _Objects_Allocate( &_Dual_ported_memory_Information ); 55cb0: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55cb6: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_port = _Dual_ported_memory_Allocate(); if ( !the_port ) { 55cbc: 588f addql #4,%sp <== NOT EXECUTED 55cbe: 2040 moveal %d0,%a0 <== NOT EXECUTED 55cc0: 4a80 tstl %d0 <== NOT EXECUTED 55cc2: 673c beqs 55d00 <== NOT EXECUTED return RTEMS_TOO_MANY; } the_port->internal_base = internal_start; the_port->external_base = external_start; the_port->length = length - 1; 55cc4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED 55cc8: 5381 subql #1,%d1 <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 55cca: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 55cce: 2141 0018 movel %d1,%a0@(24) <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 55cd2: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 55cd4: 2279 0007 e960 moveal 7e960 <_Dual_ported_memory_Information+0x18>,%a1<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 55cda: 3200 movew %d0,%d1 <== NOT EXECUTED if ( !the_port ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_port->internal_base = internal_start; 55cdc: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED the_port->external_base = external_start; 55ce0: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 55ce4: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 55ce8: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED &_Dual_ported_memory_Information, &the_port->Object, (Objects_Name) name ); *id = the_port->Object.id; 55cec: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 55cee: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 55cf4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED (Objects_Name) name ); *id = the_port->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 55cfa: 4280 clrl %d0 <== NOT EXECUTED } 55cfc: 4e5e unlk %fp <== NOT EXECUTED 55cfe: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_port = _Dual_ported_memory_Allocate(); if ( !the_port ) { _Thread_Enable_dispatch(); 55d00: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 55d06: 7005 moveq #5,%d0 <== NOT EXECUTED ); *id = the_port->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 55d08: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55d0e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00055d14 : */ rtems_status_code rtems_port_delete( rtems_id id ) { 55d14: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) _Objects_Get( &_Dual_ported_memory_Information, id, location ); 55d18: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55d1c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55d20: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d26: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 55d2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55d30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55d34: 6634 bnes 55d6a <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Dual_ported_memory_Information, &the_port->Object ); 55d36: 2f00 movel %d0,%sp@- <== NOT EXECUTED 55d38: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d3e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 55d42: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free ( Dual_ported_memory_Control *the_port ) { _Objects_Free( &_Dual_ported_memory_Information, &the_port->Object ); 55d48: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 55d4c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 55d4e: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d54: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED _Dual_ported_memory_Free( the_port ); _Thread_Enable_dispatch(); 55d5a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55d60: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 55d64: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55d66: 4e5e unlk %fp <== NOT EXECUTED 55d68: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 55d6a: 7004 moveq #4,%d0 <== NOT EXECUTED } 55d6c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00055d70 : rtems_status_code rtems_port_external_to_internal( rtems_id id, void *external, void **internal ) { 55d70: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 55d74: 2f0a movel %a2,%sp@- <== NOT EXECUTED 55d76: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 55d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 55d7c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !internal ) 55d80: 4a8a tstl %a2 <== NOT EXECUTED 55d82: 6762 beqs 55de6 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) _Objects_Get( &_Dual_ported_memory_Information, id, location ); 55d84: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55d88: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55d8c: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d92: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 55d98: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55d9c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55da0: 6624 bnes 55dc6 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 55da2: 2202 movel %d2,%d1 <== NOT EXECUTED 55da4: 2040 moveal %d0,%a0 <== NOT EXECUTED 55da6: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( external, the_port->external_base ); if ( ending > the_port->length ) 55daa: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED 55dae: 6324 blss 55dd4 <== NOT EXECUTED *internal = external; 55db0: 2482 movel %d2,%a2@ <== NOT EXECUTED else *internal = _Addresses_Add_offset( the_port->internal_base, ending ); _Thread_Enable_dispatch(); 55db2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55db8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55dba: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 55dbe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55dc2: 4e5e unlk %fp <== NOT EXECUTED 55dc4: 4e75 rts <== NOT EXECUTED 55dc6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 55dca: 7004 moveq #4,%d0 <== NOT EXECUTED } 55dcc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55dd0: 4e5e unlk %fp <== NOT EXECUTED 55dd2: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 55dd4: 2040 moveal %d0,%a0 <== NOT EXECUTED 55dd6: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED 55dda: 2481 movel %d1,%a2@ <== NOT EXECUTED if ( ending > the_port->length ) *internal = external; else *internal = _Addresses_Add_offset( the_port->internal_base, ending ); _Thread_Enable_dispatch(); 55ddc: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55de2: 4280 clrl %d0 <== NOT EXECUTED 55de4: 60d4 bras 55dba <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55de6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !internal ) return RTEMS_INVALID_ADDRESS; 55dea: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55dec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55df0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00055df4 : rtems_status_code rtems_port_ident( rtems_name name, rtems_id *id ) { 55df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 55df8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 55dfc: 42a7 clrl %sp@- <== NOT EXECUTED 55dfe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55e02: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e08: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_ALL_NODES, id ); return _Status_Object_name_errors_to_status[ status ]; 55e0e: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 55e14: 4e5e unlk %fp <== NOT EXECUTED 55e16: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00055e1c : rtems_status_code rtems_port_internal_to_external( rtems_id id, void *internal, void **external ) { 55e1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 55e20: 2f0a movel %a2,%sp@- <== NOT EXECUTED 55e22: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 55e26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 55e28: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !external ) 55e2c: 4a8a tstl %a2 <== NOT EXECUTED 55e2e: 6762 beqs 55e92 <== NOT EXECUTED 55e30: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55e34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55e38: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e3e: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 55e44: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55e48: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55e4c: 6624 bnes 55e72 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 55e4e: 2202 movel %d2,%d1 <== NOT EXECUTED 55e50: 2040 moveal %d0,%a0 <== NOT EXECUTED 55e52: 92a8 0010 subl %a0@(16),%d1 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( internal, the_port->internal_base ); if ( ending > the_port->length ) 55e56: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED 55e5a: 6324 blss 55e80 <== NOT EXECUTED *external = internal; 55e5c: 2482 movel %d2,%a2@ <== NOT EXECUTED else *external = _Addresses_Add_offset( the_port->external_base, ending ); _Thread_Enable_dispatch(); 55e5e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55e64: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55e66: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 55e6a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e6e: 4e5e unlk %fp <== NOT EXECUTED 55e70: 4e75 rts <== NOT EXECUTED 55e72: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 55e76: 7004 moveq #4,%d0 <== NOT EXECUTED } 55e78: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e7c: 4e5e unlk %fp <== NOT EXECUTED 55e7e: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 55e80: 2040 moveal %d0,%a0 <== NOT EXECUTED 55e82: d2a8 0014 addl %a0@(20),%d1 <== NOT EXECUTED 55e86: 2481 movel %d1,%a2@ <== NOT EXECUTED if ( ending > the_port->length ) *external = internal; else *external = _Addresses_Add_offset( the_port->external_base, ending ); _Thread_Enable_dispatch(); 55e88: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 55e8e: 4280 clrl %d0 <== NOT EXECUTED 55e90: 60d4 bras 55e66 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55e92: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !external ) return RTEMS_INVALID_ADDRESS; 55e96: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 55e98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e9c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00056a10 : */ rtems_status_code rtems_rate_monotonic_cancel( rtems_id id ) { 56a10: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 56a14: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 56a16: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56a1a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56a1e: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED 56a24: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 56a2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56a2e: 2440 moveal %d0,%a2 <== NOT EXECUTED 56a30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56a34: 670a beqs 56a40 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a36: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 56a3a: 7004 moveq #4,%d0 <== NOT EXECUTED } 56a3c: 4e5e unlk %fp <== NOT EXECUTED 56a3e: 4e75 rts <== NOT EXECUTED the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 56a40: 2039 0007 ef7e movel 7ef7e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 56a46: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 56a4a: 6710 beqs 56a5c <== NOT EXECUTED _Thread_Enable_dispatch(); 56a4c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a52: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { _Thread_Enable_dispatch(); return RTEMS_NOT_OWNER_OF_RESOURCE; 56a56: 7017 moveq #23,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a58: 4e5e unlk %fp <== NOT EXECUTED 56a5a: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { _Thread_Enable_dispatch(); return RTEMS_NOT_OWNER_OF_RESOURCE; } (void) _Watchdog_Remove( &the_period->Timer ); 56a5c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 56a60: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 56a66: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED _Thread_Enable_dispatch(); 56a6a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a70: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; } (void) _Watchdog_Remove( &the_period->Timer ); the_period->state = RATE_MONOTONIC_INACTIVE; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 56a74: 588f addql #4,%sp <== NOT EXECUTED 56a76: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56a78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047188 : rtems_status_code rtems_rate_monotonic_create( rtems_name name, rtems_id *id ) { 47188: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4718c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47190: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47194: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Rate_monotonic_Control *the_period; if ( !rtems_is_name_valid( name ) ) 47198: 6700 00ae beqw 47248 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4719c: 4a8a tstl %a2 <== NOT EXECUTED 4719e: 6700 00c6 beqw 47266 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 471a2: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 471a8: 5280 addql #1,%d0 <== NOT EXECUTED 471aa: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free period control blocks. */ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void ) { return (Rate_monotonic_Control *) _Objects_Allocate( &_Rate_monotonic_Information ); 471b0: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 471b6: 4eb9 0004 9304 jsr 49304 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_period = _Rate_monotonic_Allocate(); if ( !the_period ) { 471bc: 588f addql #4,%sp <== NOT EXECUTED 471be: 2040 moveal %d0,%a0 <== NOT EXECUTED 471c0: 4a80 tstl %d0 <== NOT EXECUTED 471c2: 6700 0090 beqw 47254 <== NOT EXECUTED the_period->owner = _Thread_Executing; the_period->state = RATE_MONOTONIC_INACTIVE; _Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL ); _Rate_monotonic_Reset_statistics( the_period ); 471c6: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED 471ca: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED 471ce: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 471d2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 471d6: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED if ( !the_period ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_period->owner = _Thread_Executing; 471da: 47f9 0006 226c lea 6226c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; _Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL ); _Rate_monotonic_Reset_statistics( the_period ); 471e0: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 471e4: 4281 clrl %d1 <== NOT EXECUTED 471e6: 42a8 006c clrl %a0@(108) <== NOT EXECUTED if ( !the_period ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_period->owner = _Thread_Executing; 471ea: 2153 0040 movel %a3@,%a0@(64) <== NOT EXECUTED 471ee: 3200 movew %d0,%d1 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; _Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL ); _Rate_monotonic_Reset_statistics( the_period ); 471f0: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED 471f4: 4299 clrl %a1@+ <== NOT EXECUTED 471f6: 4299 clrl %a1@+ <== NOT EXECUTED 471f8: 4299 clrl %a1@+ <== NOT EXECUTED 471fa: 4291 clrl %a1@ <== NOT EXECUTED 471fc: 227c 7fff ffff moveal #2147483647,%a1 <== NOT EXECUTED 47202: 2149 005c movel %a1,%a0@(92) <== NOT EXECUTED 47206: 2149 0060 movel %a1,%a0@(96) <== NOT EXECUTED 4720a: 2149 0074 movel %a1,%a0@(116) <== NOT EXECUTED 4720e: 2149 0078 movel %a1,%a0@(120) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 47212: 2279 0006 1d04 moveal 61d04 <_Rate_monotonic_Information+0x18>,%a1<== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_period->owner = _Thread_Executing; the_period->state = RATE_MONOTONIC_INACTIVE; 47218: 42a8 0038 clrl %a0@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4721c: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED the_watchdog->routine = routine; 47220: 42a8 002c clrl %a0@(44) <== NOT EXECUTED the_watchdog->id = id; 47224: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 47228: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED 4722c: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 47230: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED &_Rate_monotonic_Information, &the_period->Object, (Objects_Name) name ); *id = the_period->Object.id; 47234: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 47236: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4723c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED (Objects_Name) name ); *id = the_period->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 47242: 4280 clrl %d0 <== NOT EXECUTED } 47244: 4e5e unlk %fp <== NOT EXECUTED 47246: 4e75 rts <== NOT EXECUTED ) { Rate_monotonic_Control *the_period; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 47248: 7003 moveq #3,%d0 <== NOT EXECUTED ); *id = the_period->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4724a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 47250: 4e5e unlk %fp <== NOT EXECUTED 47252: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_period = _Rate_monotonic_Allocate(); if ( !the_period ) { _Thread_Enable_dispatch(); 47254: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 4725a: 7005 moveq #5,%d0 <== NOT EXECUTED ); *id = the_period->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4725c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 47262: 4e5e unlk %fp <== NOT EXECUTED 47264: 4e75 rts <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; 47266: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_period->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 47268: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4726e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00056b68 : */ rtems_status_code rtems_rate_monotonic_delete( rtems_id id ) { 56b68: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 56b6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 56b6e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56b72: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56b76: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED 56b7c: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 56b82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56b86: 2440 moveal %d0,%a2 <== NOT EXECUTED 56b88: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56b8c: 663e bnes 56bcc <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Rate_monotonic_Information, &the_period->Object ); 56b8e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 56b90: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED 56b96: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_period->Timer ); 56b9c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 56ba0: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 56ba6: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free ( Rate_monotonic_Control *the_period ) { _Objects_Free( &_Rate_monotonic_Information, &the_period->Object ); 56baa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 56bac: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED 56bb2: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED _Rate_monotonic_Free( the_period ); _Thread_Enable_dispatch(); 56bb8: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56bbe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Objects_Close( &_Rate_monotonic_Information, &the_period->Object ); (void) _Watchdog_Remove( &the_period->Timer ); the_period->state = RATE_MONOTONIC_INACTIVE; _Rate_monotonic_Free( the_period ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 56bc2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 56bc6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 56bc8: 4e5e unlk %fp <== NOT EXECUTED 56bca: 4e75 rts <== NOT EXECUTED 56bcc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 56bd0: 7004 moveq #4,%d0 <== NOT EXECUTED } 56bd2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004dc6c : rtems_status_code rtems_rate_monotonic_get_statistics( rtems_id id, rtems_rate_monotonic_period_statistics *statistics ) { 4dc6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4dc70: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dc72: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; rtems_rate_monotonic_period_statistics *dst; Rate_monotonic_Statistics *src; if ( !statistics ) 4dc76: 4a8a tstl %a2 <== NOT EXECUTED 4dc78: 6700 00a6 beqw 4dd20 <== NOT EXECUTED 4dc7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dc80: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4dc84: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 4dc8a: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4dc90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dc94: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dc96: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4dc9a: 667a bnes 4dd16 <== NOT EXECUTED case OBJECTS_LOCAL: dst = statistics; src = &the_period->Statistics; dst->count = src->count; 4dc9c: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED dst->missed_count = src->missed_count; 4dca0: 2568 0058 0004 movel %a0@(88),%a2@(4) <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_To_timespec( &src->min_cpu_time, &dst->min_cpu_time ); 4dca6: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 4dcaa: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED 4dcae: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4dcb2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED _Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time ); 4dcb6: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED 4dcba: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED 4dcbe: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4dcc2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED _Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time ); 4dcc6: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED 4dcca: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED 4dcce: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED 4dcd2: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED _Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time ); 4dcd6: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED 4dcda: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED 4dcde: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED 4dce2: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED _Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time ); 4dce6: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED 4dcea: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED 4dcee: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4dcf2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED _Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time ); 4dcf6: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 4dcfa: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED 4dcfe: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4dd02: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED dst->min_wall_time = src->min_wall_time; dst->max_wall_time = src->max_wall_time; dst->total_wall_time = src->total_wall_time; #endif _Thread_Enable_dispatch(); 4dd06: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4dd0c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED dst->max_wall_time = src->max_wall_time; dst->total_wall_time = src->total_wall_time; #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4dd10: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4dd12: 4e5e unlk %fp <== NOT EXECUTED 4dd14: 4e75 rts <== NOT EXECUTED 4dd16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4dd1a: 7004 moveq #4,%d0 <== NOT EXECUTED } 4dd1c: 4e5e unlk %fp <== NOT EXECUTED 4dd1e: 4e75 rts <== NOT EXECUTED 4dd20: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED Rate_monotonic_Control *the_period; rtems_rate_monotonic_period_statistics *dst; Rate_monotonic_Statistics *src; if ( !statistics ) return RTEMS_INVALID_ADDRESS; 4dd24: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4dd26: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004dd2c : rtems_status_code rtems_rate_monotonic_get_status( rtems_id id, rtems_rate_monotonic_period_status *status ) { 4dd2c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4dd30: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dd32: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Period_time_t since_last_period; Rate_monotonic_Control *the_period; bool valid_status; if ( !status ) 4dd36: 4a8a tstl %a2 <== NOT EXECUTED 4dd38: 6700 00a0 beqw 4ddda <== NOT EXECUTED 4dd3c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dd40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4dd44: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 4dd4a: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4dd50: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dd54: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dd56: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4dd5a: 6632 bnes 4dd8e <== NOT EXECUTED case OBJECTS_LOCAL: status->owner = the_period->owner->Object.id; 4dd5c: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED 4dd60: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED status->state = the_period->state; 4dd64: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4dd68: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED /* * If the period is inactive, there is no information. */ if ( status->state == RATE_MONOTONIC_INACTIVE ) { 4dd6c: 662a bnes 4dd98 <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timespec_Set_to_zero( &status->since_last_period ); 4dd6e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 4dd72: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Timespec_Set_to_zero( &status->executed_since_last_period ); 4dd76: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED 4dd7a: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED status->since_last_period = since_last_period; status->executed_since_last_period = executed; #endif } _Thread_Enable_dispatch(); 4dd7e: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4dd84: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4dd86: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4dd8a: 4e5e unlk %fp <== NOT EXECUTED 4dd8c: 4e75 rts <== NOT EXECUTED 4dd8e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4dd92: 7004 moveq #4,%d0 <== NOT EXECUTED } 4dd94: 4e5e unlk %fp <== NOT EXECUTED 4dd96: 4e75 rts <== NOT EXECUTED } else { /* * Grab the current status. */ valid_status = 4dd98: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 4dd9c: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4dda0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4dda2: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) { 4dda8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ddac: 4a00 tstb %d0 <== NOT EXECUTED 4ddae: 6734 beqs 4dde4 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_NOT_DEFINED; } #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_To_timespec( 4ddb0: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4ddb4: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED 4ddb8: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4ddbc: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED &since_last_period, &status->since_last_period ); _Timestamp_To_timespec( 4ddc0: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4ddc4: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 4ddc8: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4ddcc: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED status->since_last_period = since_last_period; status->executed_since_last_period = executed; #endif } _Thread_Enable_dispatch(); 4ddd0: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4ddd6: 4280 clrl %d0 <== NOT EXECUTED 4ddd8: 60ac bras 4dd86 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ddda: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED Rate_monotonic_Period_time_t since_last_period; Rate_monotonic_Control *the_period; bool valid_status; if ( !status ) return RTEMS_INVALID_ADDRESS; 4ddde: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4dde0: 4e5e unlk %fp <== NOT EXECUTED 4dde2: 4e75 rts <== NOT EXECUTED valid_status = _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) { _Thread_Enable_dispatch(); 4dde4: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ddea: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) { _Thread_Enable_dispatch(); return RTEMS_NOT_DEFINED; 4ddee: 700b moveq #11,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ddf0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047274 : rtems_status_code rtems_rate_monotonic_ident( rtems_name name, rtems_id *id ) { 47274: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 47278: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4727c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 47282: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47286: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 4728c: 4eb9 0004 9a78 jsr 49a78 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; 47292: 41f9 0005 f566 lea 5f566 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 47298: 4e5e unlk %fp <== NOT EXECUTED 4729a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 000474f0 : rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) { 474f0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 474f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 474f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 474f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474fc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47500: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47502: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 47508: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED rtems_rate_monotonic_period_states local_state; ISR_Level level; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4750e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47512: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47516: 6624 bnes 4753c <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 47518: 2279 0006 226c moveal 6226c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4751e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47520: b3e8 0040 cmpal %a0@(64),%a1 <== NOT EXECUTED 47524: 6726 beqs 4754c <== NOT EXECUTED _Thread_Enable_dispatch(); 47526: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; 4752c: 7617 moveq #23,%d3 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4752e: 2003 movel %d3,%d0 <== NOT EXECUTED 47530: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47534: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47538: 4e5e unlk %fp <== NOT EXECUTED 4753a: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4753c: 7604 moveq #4,%d3 <== NOT EXECUTED } 4753e: 2003 movel %d3,%d0 <== NOT EXECUTED 47540: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47544: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47548: 4e5e unlk %fp <== NOT EXECUTED 4754a: 4e75 rts <== NOT EXECUTED if ( !_Thread_Is_executing( the_period->owner ) ) { _Thread_Enable_dispatch(); return RTEMS_NOT_OWNER_OF_RESOURCE; } if ( length == RTEMS_PERIOD_STATUS ) { 4754c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 47550: 6624 bnes 47576 <== NOT EXECUTED switch ( the_period->state ) { 47552: 2040 moveal %d0,%a0 <== NOT EXECUTED 47554: 7204 moveq #4,%d1 <== NOT EXECUTED 47556: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4755a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4755c: 6400 008a bccw 475e8 <== NOT EXECUTED 47560: 4283 clrl %d3 <== NOT EXECUTED case RATE_MONOTONIC_ACTIVE: default: /* unreached -- only to remove warnings */ return_value = RTEMS_SUCCESSFUL; break; } _Thread_Enable_dispatch(); 47562: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47568: 2003 movel %d3,%d0 <== NOT EXECUTED 4756a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4756e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47572: 4e5e unlk %fp <== NOT EXECUTED 47574: 4e75 rts <== NOT EXECUTED } _Thread_Enable_dispatch(); return( return_value ); } _ISR_Disable( level ); 47576: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4757c: 40c3 movew %sr,%d3 <== NOT EXECUTED 4757e: 8283 orl %d3,%d1 <== NOT EXECUTED 47580: 46c1 movew %d1,%sr <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_INACTIVE ) { 47582: 2040 moveal %d0,%a0 <== NOT EXECUTED 47584: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED 47588: 6772 beqs 475fc <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } if ( the_period->state == RATE_MONOTONIC_ACTIVE ) { 4758a: 7402 moveq #2,%d2 <== NOT EXECUTED 4758c: b481 cmpl %d1,%d2 <== NOT EXECUTED 4758e: 6700 00d2 beqw 47662 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } if ( the_period->state == RATE_MONOTONIC_EXPIRED ) { 47592: 7404 moveq #4,%d2 <== NOT EXECUTED 47594: b481 cmpl %d1,%d2 <== NOT EXECUTED 47596: 66a4 bnes 4753c <== NOT EXECUTED /* * Update statistics from the concluding period */ _Rate_monotonic_Update_statistics( the_period ); 47598: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4759a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 4759e: 4eb9 0004 73d6 jsr 473d6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED _ISR_Enable( level ); 475a4: 46c3 movew %d3,%sr <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 475a6: 7202 moveq #2,%d1 <== NOT EXECUTED the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_TIMEOUT; 475a8: 7606 moveq #6,%d3 <== NOT EXECUTED */ _Rate_monotonic_Update_statistics( the_period ); _ISR_Enable( level ); the_period->state = RATE_MONOTONIC_ACTIVE; 475aa: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 475ae: 2040 moveal %d0,%a0 <== NOT EXECUTED the_period->next_length = length; 475b0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED */ _Rate_monotonic_Update_statistics( the_period ); _ISR_Enable( level ); the_period->state = RATE_MONOTONIC_ACTIVE; 475b4: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED the_period->next_length = length; 475b8: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 475bc: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 475c0: 4868 0010 pea %a0@(16) <== NOT EXECUTED 475c4: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 475ca: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 475d0: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 475d6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 475da: 2003 movel %d3,%d0 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_TIMEOUT; 475dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 475e0: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 475e4: 4e5e unlk %fp <== NOT EXECUTED 475e6: 4e75 rts <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_NOT_OWNER_OF_RESOURCE; } if ( length == RTEMS_PERIOD_STATUS ) { switch ( the_period->state ) { 475e8: 41f9 0005 f386 lea 5f386 ,%a0 <== NOT EXECUTED 475ee: 2630 0c00 movel %a0@(00000000,%d0:l:4),%d3 <== NOT EXECUTED case RATE_MONOTONIC_ACTIVE: default: /* unreached -- only to remove warnings */ return_value = RTEMS_SUCCESSFUL; break; } _Thread_Enable_dispatch(); 475f2: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED 475f8: 6000 ff6e braw 47568 <== NOT EXECUTED return( return_value ); } _ISR_Disable( level ); if ( the_period->state == RATE_MONOTONIC_INACTIVE ) { _ISR_Enable( level ); 475fc: 46c3 movew %d3,%sr <== NOT EXECUTED /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); 475fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 47600: 4283 clrl %d3 <== NOT EXECUTED _ISR_Enable( level ); /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); 47602: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 47606: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4760c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47610: 2240 moveal %d0,%a1 <== NOT EXECUTED 47612: 223c 0004 7974 movel #293236,%d1 <== NOT EXECUTED the_watchdog->id = id; 47618: 2342 0030 movel %d2,%a1@(48) <== NOT EXECUTED _Rate_monotonic_Timeout, id, NULL ); the_period->next_length = length; 4761c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 47620: 2341 002c movel %d1,%a1@(44) <== NOT EXECUTED /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); the_period->state = RATE_MONOTONIC_ACTIVE; 47624: 7202 moveq #2,%d1 <== NOT EXECUTED _Rate_monotonic_Timeout, id, NULL ); the_period->next_length = length; 47626: 2342 003c movel %d2,%a1@(60) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4762a: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); the_period->state = RATE_MONOTONIC_ACTIVE; 4762e: 2341 0038 movel %d1,%a1@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 47632: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 47636: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4763a: 4869 0010 pea %a1@(16) <== NOT EXECUTED 4763e: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47644: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED ); the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 4764a: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47650: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47654: 2003 movel %d3,%d0 <== NOT EXECUTED the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 47656: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4765a: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 4765e: 4e5e unlk %fp <== NOT EXECUTED 47660: 4e75 rts <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_ACTIVE ) { /* * Update statistics from the concluding period. */ _Rate_monotonic_Update_statistics( the_period ); 47662: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47664: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 47668: 4eb9 0004 73d6 jsr 473d6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED /* * This tells the _Rate_monotonic_Timeout that this task is * in the process of blocking on the period and that we * may be changing the length of the next period. */ the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING; 4766e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47672: 7201 moveq #1,%d1 <== NOT EXECUTED 47674: 2040 moveal %d0,%a0 <== NOT EXECUTED the_period->next_length = length; 47676: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED /* * This tells the _Rate_monotonic_Timeout that this task is * in the process of blocking on the period and that we * may be changing the length of the next period. */ the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING; 4767a: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED the_period->next_length = length; 4767e: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED _ISR_Enable( level ); 47682: 46c3 movew %d3,%sr <== NOT EXECUTED _Thread_Executing->Wait.id = the_period->Object.id; 47684: 2079 0006 226c moveal 6226c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4768a: 2240 moveal %d0,%a1 <== NOT EXECUTED 4768c: 5089 addql #8,%a1 <== NOT EXECUTED 4768e: 2151 0020 movel %a1@,%a0@(32) <== NOT EXECUTED _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 47692: 4878 4000 pea 4000 <== NOT EXECUTED 47696: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 4769a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4769c: 4eb9 0004 ad78 jsr 4ad78 <_Thread_Set_state> <== NOT EXECUTED /* * Did the watchdog timer expire while we were actually blocking * on it? */ _ISR_Disable( level ); 476a2: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 476a8: 40c2 movew %sr,%d2 <== NOT EXECUTED 476aa: 8282 orl %d2,%d1 <== NOT EXECUTED 476ac: 46c1 movew %d1,%sr <== NOT EXECUTED local_state = the_period->state; the_period->state = RATE_MONOTONIC_ACTIVE; 476ae: 7602 moveq #2,%d3 <== NOT EXECUTED /* * Did the watchdog timer expire while we were actually blocking * on it? */ _ISR_Disable( level ); local_state = the_period->state; 476b0: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 476b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 476b6: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 476ba: 2143 0038 movel %d3,%a0@(56) <== NOT EXECUTED _ISR_Enable( level ); 476be: 46c2 movew %d2,%sr <== NOT EXECUTED /* * If it did, then we want to unblock ourself and continue as * if nothing happen. The period was reset in the timeout routine. */ if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING ) 476c0: 7003 moveq #3,%d0 <== NOT EXECUTED 476c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 476c6: b081 cmpl %d1,%d0 <== NOT EXECUTED 476c8: 6716 beqs 476e0 <== NOT EXECUTED _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); _Thread_Enable_dispatch(); 476ca: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 476d0: 4283 clrl %d3 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 476d2: 2003 movel %d3,%d0 <== NOT EXECUTED 476d4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 476d8: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 476dc: 4e5e unlk %fp <== NOT EXECUTED 476de: 4e75 rts <== NOT EXECUTED /* * If it did, then we want to unblock ourself and continue as * if nothing happen. The period was reset in the timeout routine. */ if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING ) _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 476e0: 4878 4000 pea 4000 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 476e4: 4283 clrl %d3 <== NOT EXECUTED /* * If it did, then we want to unblock ourself and continue as * if nothing happen. The period was reset in the timeout routine. */ if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING ) _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 476e6: 2f39 0006 226c movel 6226c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 476ec: 4eb9 0004 a0c4 jsr 4a0c4 <_Thread_Clear_state> <== NOT EXECUTED 476f2: 508f addql #8,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 476f4: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED 476fa: 60d6 bras 476d2 <== NOT EXECUTED =============================================================================== 0004789e : } } } void rtems_rate_monotonic_report_statistics( void ) { 4789e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin ); 478a2: 4879 0004 d1d8 pea 4d1d8 <== NOT EXECUTED 478a8: 42a7 clrl %sp@- <== NOT EXECUTED 478aa: 4eb9 0004 76fc jsr 476fc <== NOT EXECUTED 478b0: 508f addql #8,%sp <== NOT EXECUTED } 478b2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000476fc : */ void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) { 476fc: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED 47700: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 47704: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 47708: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED rtems_id id; rtems_rate_monotonic_period_statistics the_stats; rtems_rate_monotonic_period_status the_status; char name[5]; if ( !print ) 4770c: 4a8a tstl %a2 <== NOT EXECUTED 4770e: 6700 0082 beqw 47792 <== NOT EXECUTED return; (*print)( context, "Period information by period\n" ); 47712: 4879 0005 f39a pea 5f39a <== NOT EXECUTED 47718: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4771a: 4e92 jsr %a2@ <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ (*print)( context, "--- CPU times are in seconds ---\n" ); 4771c: 4879 0005 f3b8 pea 5f3b8 <== NOT EXECUTED 47722: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47724: 4e92 jsr %a2@ <== NOT EXECUTED (*print)( context, "--- Wall times are in seconds ---\n" ); 47726: 4879 0005 f3da pea 5f3da <== NOT EXECUTED 4772c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4772e: 4e92 jsr %a2@ <== NOT EXECUTED Be sure to test the various cases. (*print)( context,"\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789\ \n"); */ (*print)( context, " ID OWNER COUNT MISSED " 47730: 4879 0005 f3fd pea 5f3fd <== NOT EXECUTED 47736: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47738: 4e92 jsr %a2@ <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ " " #endif " WALL TIME\n" ); (*print)( context, " " 4773a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4773e: 2ebc 0005 f448 movel #390216,%sp@ <== NOT EXECUTED 47744: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47746: 4e92 jsr %a2@ <== NOT EXECUTED /* * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 47748: 2439 0006 1cf2 movel 61cf2 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 4774e: 508f addql #8,%sp <== NOT EXECUTED 47750: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47756: 623a bhis 47792 <== NOT EXECUTED 47758: 280e movel %fp,%d4 <== NOT EXECUTED continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 4775a: 2a0e movel %fp,%d5 <== NOT EXECUTED 4775c: 0684 ffff ffa2 addil #-94,%d4 <== NOT EXECUTED 47762: 47f9 0004 dc6c lea 4dc6c ,%a3<== NOT EXECUTED #if defined(RTEMS_DEBUG) status = rtems_rate_monotonic_get_status( id, &the_status ); if ( status != RTEMS_SUCCESSFUL ) continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); 47768: 4bf9 0004 dd2c lea 4dd2c ,%a5<== NOT EXECUTED #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 4776e: 5b85 subql #5,%d5 <== NOT EXECUTED 47770: 49f9 0004 7a54 lea 47a54 ,%a4 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 47776: 2e3c 0004 b0b0 movel #307376,%d7 <== NOT EXECUTED * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { status = rtems_rate_monotonic_get_statistics( id, &the_stats ); 4777c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4777e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47780: 4e93 jsr %a3@ <== NOT EXECUTED if ( status != RTEMS_SUCCESSFUL ) 47782: 508f addql #8,%sp <== NOT EXECUTED 47784: 4a80 tstl %d0 <== NOT EXECUTED 47786: 6714 beqs 4779c <== NOT EXECUTED * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 47788: 5282 addql #1,%d2 <== NOT EXECUTED /* * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 4778a: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47790: 63ea blss 4777c <== NOT EXECUTED the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall ); #endif } } } 47792: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47798: 4e5e unlk %fp <== NOT EXECUTED 4779a: 4e75 rts <== NOT EXECUTED #if defined(RTEMS_DEBUG) status = rtems_rate_monotonic_get_status( id, &the_status ); if ( status != RTEMS_SUCCESSFUL ) continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); 4779c: 486e ffda pea %fp@(-38) <== NOT EXECUTED 477a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477a2: 4e95 jsr %a5@ <== NOT EXECUTED #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 477a4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 477a6: 4878 0005 pea 5 <== NOT EXECUTED 477aa: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED 477ae: 4e94 jsr %a4@ <== NOT EXECUTED /* * Print part of report line that is not dependent on granularity */ (*print)( context, 477b0: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED 477b4: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 477b8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 477ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477bc: 4879 0005 f494 pea 5f494 <== NOT EXECUTED 477c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 477c4: 4e92 jsr %a2@ <== NOT EXECUTED ); /* * If the count is zero, don't print statistics */ if (the_stats.count == 0) { 477c6: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED 477ca: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 477ce: 6618 bnes 477e8 <== NOT EXECUTED (*print)( context, "\n" ); 477d0: 4879 0005 f2be pea 5f2be <== NOT EXECUTED * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 477d6: 5282 addql #1,%d2 <== NOT EXECUTED /* * If the count is zero, don't print statistics */ if (the_stats.count == 0) { (*print)( context, "\n" ); 477d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 477da: 4e92 jsr %a2@ <== NOT EXECUTED continue; 477dc: 508f addql #8,%sp <== NOT EXECUTED /* * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 477de: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 477e4: 6396 blss 4777c <== NOT EXECUTED 477e6: 60aa bras 47792 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 477e8: 486e fff2 pea %fp@(-14) <== NOT EXECUTED 477ec: 2047 moveal %d7,%a0 <== NOT EXECUTED * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 477ee: 5282 addql #1,%d2 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 477f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 477f2: 486e ffba pea %fp@(-70) <== NOT EXECUTED 477f6: 4e90 jsr %a0@ <== NOT EXECUTED (*print)( context, 477f8: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 477fc: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 47802: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 47806: 2c2e ffb6 movel %fp@(-74),%d6 <== NOT EXECUTED 4780a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4780c: 2001 movel %d1,%d0 <== NOT EXECUTED 4780e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 47812: 4c40 6806 remsl %d0,%d6,%d6 <== NOT EXECUTED 47816: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED 4781a: 2246 moveal %d6,%a1 <== NOT EXECUTED 4781c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 47822: 2f09 movel %a1,%sp@- <== NOT EXECUTED 47824: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED 47828: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED struct timespec *min_wall = &the_stats.min_wall_time; struct timespec *max_wall = &the_stats.max_wall_time; struct timespec *total_wall = &the_stats.total_wall_time; _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average); (*print)( context, 4782c: 2c3c 0000 03e8 movel #1000,%d6 <== NOT EXECUTED struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); (*print)( context, 47832: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47834: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED 47838: 4879 0005 f4ab pea 5f4ab <== NOT EXECUTED 4783e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47840: 4e92 jsr %a2@ <== NOT EXECUTED struct timespec wall_average; struct timespec *min_wall = &the_stats.min_wall_time; struct timespec *max_wall = &the_stats.max_wall_time; struct timespec *total_wall = &the_stats.total_wall_time; _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average); 47842: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 47846: 2047 moveal %d7,%a0 <== NOT EXECUTED 47848: 486e fff2 pea %fp@(-14) <== NOT EXECUTED 4784c: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 47850: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED 47854: 4e90 jsr %a0@ <== NOT EXECUTED (*print)( context, 47856: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 4785a: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 4785e: 222e ffce movel %fp@(-50),%d1 <== NOT EXECUTED 47862: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47864: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 47868: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED 4786c: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 47870: 2241 moveal %d1,%a1 <== NOT EXECUTED 47872: 2f09 movel %a1,%sp@- <== NOT EXECUTED 47874: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED 47878: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 4787c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4787e: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED 47882: 4879 0005 f4ca pea 5f4ca <== NOT EXECUTED 47888: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4788a: 4e92 jsr %a2@ <== NOT EXECUTED 4788c: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED /* * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 47890: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47896: 6300 fee4 blsw 4777c <== NOT EXECUTED 4789a: 6000 fef6 braw 47792 <== NOT EXECUTED =============================================================================== 000478b8 : /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) { 478b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 478bc: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 478c2: 5280 addql #1,%d0 <== NOT EXECUTED 478c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 478c6: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED 478cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Cycle through all possible ids and try to reset each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 478ce: 2439 0006 1cf2 movel 61cf2 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 478d4: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 478da: 6216 bhis 478f2 <== NOT EXECUTED 478dc: 45f9 0004 7904 lea 47904 ,%a2<== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { (void) rtems_rate_monotonic_reset_statistics( id ); 478e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED * Cycle through all possible ids and try to reset each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 478e4: 5282 addql #1,%d2 <== NOT EXECUTED (void) rtems_rate_monotonic_reset_statistics( id ); 478e6: 4e92 jsr %a2@ <== NOT EXECUTED /* * Cycle through all possible ids and try to reset each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 478e8: 588f addql #4,%sp <== NOT EXECUTED 478ea: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 478f0: 63f0 blss 478e2 <== NOT EXECUTED /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); } 478f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 478f6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 478fa: 4e5e unlk %fp <== NOT EXECUTED } /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); 478fc: 4ef9 0004 a47a jmp 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED ... =============================================================================== 00047904 : */ rtems_status_code rtems_rate_monotonic_reset_statistics( rtems_id id ) { 47904: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47908: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4790c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47910: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED 47916: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4791c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47920: 2040 moveal %d0,%a0 <== NOT EXECUTED 47922: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47926: 6646 bnes 4796e <== NOT EXECUTED case OBJECTS_LOCAL: _Rate_monotonic_Reset_statistics( the_period ); 47928: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED 4792c: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED 47930: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED 47934: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED 47938: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 4793e: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED 47942: 42a8 006c clrl %a0@(108) <== NOT EXECUTED 47946: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED 4794a: 4299 clrl %a1@+ <== NOT EXECUTED 4794c: 4299 clrl %a1@+ <== NOT EXECUTED 4794e: 4299 clrl %a1@+ <== NOT EXECUTED 47950: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED 47954: 2140 0060 movel %d0,%a0@(96) <== NOT EXECUTED 47958: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED 4795c: 2140 0078 movel %d0,%a0@(120) <== NOT EXECUTED 47960: 4291 clrl %a1@ <== NOT EXECUTED _Thread_Enable_dispatch(); 47962: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 47968: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4796a: 4e5e unlk %fp <== NOT EXECUTED 4796c: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4796e: 7004 moveq #4,%d0 <== NOT EXECUTED } 47970: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000572c8 : uintptr_t length, uintptr_t page_size, rtems_attribute attribute_set, rtems_id *id ) { 572c8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 572cc: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 572d0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 572d4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 572d8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED 572dc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 572e0: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED 572e4: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED rtems_status_code return_status; Region_Control *the_region; if ( !rtems_is_name_valid( name ) ) 572e8: 4a83 tstl %d3 <== NOT EXECUTED 572ea: 6774 beqs 57360 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 572ec: 4a82 tstl %d2 <== NOT EXECUTED 572ee: 6700 00dc beqw 573cc <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 572f2: 4a8b tstl %a3 <== NOT EXECUTED 572f4: 6700 00d6 beqw 573cc <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 572f8: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 572fe: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED * This function allocates a region control block from * the inactive chain of free region control blocks. */ RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void ) { return (Region_Control *) _Objects_Allocate( &_Region_Information ); 57304: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 5730a: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED the_region = _Region_Allocate(); if ( !the_region ) 57310: 508f addql #8,%sp <== NOT EXECUTED 57312: 2440 moveal %d0,%a2 <== NOT EXECUTED 57314: 4a80 tstl %d0 <== NOT EXECUTED 57316: 6700 00c2 beqw 573da <== NOT EXECUTED return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 5731a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5731c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5731e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57320: 486a 0068 pea %a2@(104) <== NOT EXECUTED 57324: 4eb9 0005 af7e jsr 5af7e <_Heap_Initialize> <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 5732a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED if ( !the_region ) return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 5732e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 57332: 663a bnes 5736e <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 57334: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57336: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED _Region_Free( the_region ); return_status = RTEMS_INVALID_SIZE; 5733c: 7408 moveq #8,%d2 <== NOT EXECUTED 5733e: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED 57344: 508f addql #8,%sp <== NOT EXECUTED *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 57346: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5734c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57352: 588f addql #4,%sp <== NOT EXECUTED } 57354: 2002 movel %d2,%d0 <== NOT EXECUTED 57356: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 5735c: 4e5e unlk %fp <== NOT EXECUTED 5735e: 4e75 rts <== NOT EXECUTED { rtems_status_code return_status; Region_Control *the_region; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 57360: 7403 moveq #3,%d2 <== NOT EXECUTED } } _RTEMS_Unlock_allocator(); return return_status; } 57362: 2002 movel %d2,%d0 <== NOT EXECUTED 57364: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 5736a: 4e5e unlk %fp <== NOT EXECUTED 5736c: 4e75 rts <== NOT EXECUTED return_status = RTEMS_INVALID_SIZE; } else { the_region->starting_address = starting_address; 5736e: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; 57372: 4282 clrl %d2 <== NOT EXECUTED } else { the_region->starting_address = starting_address; the_region->length = length; 57374: 2545 0054 movel %d5,%a2@(84) <== NOT EXECUTED the_region->page_size = page_size; the_region->attribute_set = attribute_set; the_region->number_of_used_blocks = 0; _Thread_queue_Initialize( 57378: 44c6 movew %d6,%ccr <== NOT EXECUTED 5737a: 57c0 seq %d0 <== NOT EXECUTED else { the_region->starting_address = starting_address; the_region->length = length; the_region->page_size = page_size; 5737c: 2544 0058 movel %d4,%a2@(88) <== NOT EXECUTED the_region->attribute_set = attribute_set; the_region->number_of_used_blocks = 0; _Thread_queue_Initialize( 57380: 49c0 extbl %d0 <== NOT EXECUTED 57382: 4480 negl %d0 <== NOT EXECUTED else { the_region->starting_address = starting_address; the_region->length = length; the_region->page_size = page_size; the_region->attribute_set = attribute_set; 57384: 2546 0060 movel %d6,%a2@(96) <== NOT EXECUTED the_region->number_of_used_blocks = 0; 57388: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED _Thread_queue_Initialize( 5738c: 4878 0006 pea 6 <== NOT EXECUTED 57390: 4878 0040 pea 40 <== NOT EXECUTED 57394: 2f00 movel %d0,%sp@- <== NOT EXECUTED 57396: 486a 0010 pea %a2@(16) <== NOT EXECUTED 5739a: 4eb9 0005 cc2c jsr 5cc2c <_Thread_queue_Initialize> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 573a0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 573a4: 4281 clrl %d1 <== NOT EXECUTED &_Region_Information, &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; 573a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 573aa: 2079 0007 ea0e moveal 7ea0e <_Region_Information+0x18>,%a0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 573b0: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 573b2: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 573b6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED 573ba: 2680 movel %d0,%a3@ <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 573bc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 573c2: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 573c8: 588f addql #4,%sp <== NOT EXECUTED 573ca: 6088 bras 57354 <== NOT EXECUTED if ( !starting_address ) return RTEMS_INVALID_ADDRESS; if ( !id ) return RTEMS_INVALID_ADDRESS; 573cc: 7409 moveq #9,%d2 <== NOT EXECUTED } } _RTEMS_Unlock_allocator(); return return_status; } 573ce: 2002 movel %d2,%d0 <== NOT EXECUTED 573d0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 573d6: 4e5e unlk %fp <== NOT EXECUTED 573d8: 4e75 rts <== NOT EXECUTED *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 573da: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED _RTEMS_Lock_allocator(); /* to prevent deletion */ the_region = _Region_Allocate(); if ( !the_region ) return_status = RTEMS_TOO_MANY; 573e0: 7405 moveq #5,%d2 <== NOT EXECUTED *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 573e2: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 573e8: 588f addql #4,%sp <== NOT EXECUTED 573ea: 6000 ff68 braw 57354 <== NOT EXECUTED ... =============================================================================== 000573f0 : */ rtems_status_code rtems_region_delete( rtems_id id ) { 573f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 573f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 573f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; _RTEMS_Lock_allocator(); 573f8: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 573fe: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Region_Control *) _Objects_Get_no_protection( &_Region_Information, id, location ); 57404: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57408: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5740c: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 57412: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 57418: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5741c: 2440 moveal %d0,%a2 <== NOT EXECUTED 5741e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57422: 671c beqs 57440 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57424: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 5742a: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 5742c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 57432: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57436: 2002 movel %d2,%d0 <== NOT EXECUTED 57438: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5743c: 4e5e unlk %fp <== NOT EXECUTED 5743e: 4e75 rts <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) 57440: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED 57444: 671c beqs 57462 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57446: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) return_status = RTEMS_RESOURCE_IN_USE; 5744c: 740c moveq #12,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5744e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 57454: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57458: 2002 movel %d2,%d0 <== NOT EXECUTED 5745a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5745e: 4e5e unlk %fp <== NOT EXECUTED 57460: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) return_status = RTEMS_RESOURCE_IN_USE; else { _Objects_Close( &_Region_Information, &the_region->Object ); 57462: 2f00 movel %d0,%sp@- <== NOT EXECUTED 57464: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED _Region_Free( the_region ); return_status = RTEMS_SUCCESSFUL; 5746a: 4282 clrl %d2 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) return_status = RTEMS_RESOURCE_IN_USE; else { _Objects_Close( &_Region_Information, &the_region->Object ); 5746c: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 57472: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57474: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 5747a: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED 57480: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57484: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5748a: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 57490: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57494: 2002 movel %d2,%d0 <== NOT EXECUTED 57496: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5749a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000574a0 : rtems_status_code rtems_region_extend( rtems_id id, void *starting_address, uintptr_t length ) { 574a0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 574a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 574a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 574a8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED bool extend_ok; Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; if ( !starting_address ) 574ac: 6700 0086 beqw 57534 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 574b0: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 574b6: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Region_Control *) _Objects_Get_no_protection( &_Region_Information, id, location ); 574bc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 574c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 574c4: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 574ca: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 574d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 574d4: 2440 moveal %d0,%a2 <== NOT EXECUTED 574d6: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 574da: 6646 bnes 57522 <== NOT EXECUTED case OBJECTS_LOCAL: extend_ok = _Heap_Extend( 574dc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 574e0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 574e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 574e6: 486a 0068 pea %a2@(104) <== NOT EXECUTED 574ea: 4eb9 0005 a984 jsr 5a984 <_Heap_Extend> <== NOT EXECUTED starting_address, length, &amount_extended ); if ( extend_ok ) { 574f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 574f4: 4a00 tstb %d0 <== NOT EXECUTED 574f6: 674c beqs 57544 <== NOT EXECUTED the_region->length += amount_extended; 574f8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 574fc: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED the_region->maximum_segment_size += amount_extended; return_status = RTEMS_SUCCESSFUL; 57500: 4282 clrl %d2 <== NOT EXECUTED &amount_extended ); if ( extend_ok ) { the_region->length += amount_extended; the_region->maximum_segment_size += amount_extended; 57502: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57506: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5750c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57512: 588f addql #4,%sp <== NOT EXECUTED } 57514: 2002 movel %d2,%d0 <== NOT EXECUTED 57516: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 5751a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 5751e: 4e5e unlk %fp <== NOT EXECUTED 57520: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57522: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 57528: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 5752a: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57530: 588f addql #4,%sp <== NOT EXECUTED 57532: 60e0 bras 57514 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; if ( !starting_address ) return RTEMS_INVALID_ADDRESS; 57534: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57536: 2002 movel %d2,%d0 <== NOT EXECUTED 57538: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 5753c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 57540: 4e5e unlk %fp <== NOT EXECUTED 57542: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57544: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED if ( extend_ok ) { the_region->length += amount_extended; the_region->maximum_segment_size += amount_extended; return_status = RTEMS_SUCCESSFUL; } else { return_status = RTEMS_INVALID_ADDRESS; 5754a: 7409 moveq #9,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5754c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57552: 588f addql #4,%sp <== NOT EXECUTED 57554: 60be bras 57514 <== NOT EXECUTED ... =============================================================================== 00057558 : rtems_status_code rtems_region_get_free_information( rtems_id id, Heap_Information_block *the_info ) { 57558: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5755c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5755e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 57562: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) 57564: 4a8a tstl %a2 <== NOT EXECUTED 57566: 6776 beqs 575de <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 57568: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5756e: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 57574: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57578: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5757c: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 57582: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 57588: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5758c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57590: 663a bnes 575cc <== NOT EXECUTED the_info->Used.number = 0; the_info->Used.total = 0; the_info->Used.largest = 0; _Heap_Get_free_information( &the_region->Memory, &the_info->Free ); 57592: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57594: 2040 moveal %d0,%a0 <== NOT EXECUTED 57596: 4868 0068 pea %a0@(104) <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; 5759a: 4282 clrl %d2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: the_info->Used.number = 0; 5759c: 42aa 000c clrl %a2@(12) <== NOT EXECUTED the_info->Used.total = 0; 575a0: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED the_info->Used.largest = 0; 575a4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED _Heap_Get_free_information( &the_region->Memory, &the_info->Free ); 575a8: 4eb9 0005 ad58 jsr 5ad58 <_Heap_Get_free_information> <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; break; 575ae: 508f addql #8,%sp <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 575b0: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 575b6: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 575bc: 588f addql #4,%sp <== NOT EXECUTED } 575be: 2002 movel %d2,%d0 <== NOT EXECUTED 575c0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 575c4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 575c8: 4e5e unlk %fp <== NOT EXECUTED 575ca: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 575cc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 575d2: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 575d4: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 575da: 588f addql #4,%sp <== NOT EXECUTED 575dc: 60e0 bras 575be <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 575de: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 575e0: 2002 movel %d2,%d0 <== NOT EXECUTED 575e2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 575e6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 575ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000575f0 : rtems_status_code rtems_region_get_information( rtems_id id, Heap_Information_block *the_info ) { 575f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 575f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 575f6: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) 575fa: 6766 beqs 57662 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 575fc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57602: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 57608: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5760c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57610: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 57616: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 5761c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57620: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57624: 662a bnes 57650 <== NOT EXECUTED case OBJECTS_LOCAL: _Heap_Get_information( &the_region->Memory, the_info ); 57626: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57628: 2040 moveal %d0,%a0 <== NOT EXECUTED 5762a: 4868 0068 pea %a0@(104) <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; 5762e: 4282 clrl %d2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: _Heap_Get_information( &the_region->Memory, the_info ); 57630: 4eb9 0005 adb8 jsr 5adb8 <_Heap_Get_information> <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; break; 57636: 508f addql #8,%sp <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57638: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5763e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57644: 588f addql #4,%sp <== NOT EXECUTED } 57646: 2002 movel %d2,%d0 <== NOT EXECUTED 57648: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5764c: 4e5e unlk %fp <== NOT EXECUTED 5764e: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57650: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 57656: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 57658: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5765e: 588f addql #4,%sp <== NOT EXECUTED 57660: 60e4 bras 57646 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 57662: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57664: 2002 movel %d2,%d0 <== NOT EXECUTED 57666: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5766a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00057670 : uintptr_t size, rtems_option option_set, rtems_interval timeout, void **segment ) { 57670: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 57674: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 57678: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 5767c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 57680: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; void *the_segment; if ( !segment ) 57684: 4a8a tstl %a2 <== NOT EXECUTED 57686: 6700 00be beqw 57746 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; *segment = NULL; 5768a: 4292 clrl %a2@ <== NOT EXECUTED if ( size == 0 ) 5768c: 4a82 tstl %d2 <== NOT EXECUTED 5768e: 660c bnes 5769c <== NOT EXECUTED return RTEMS_INVALID_SIZE; 57690: 7008 moveq #8,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57692: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 57698: 4e5e unlk %fp <== NOT EXECUTED 5769a: 4e75 rts <== NOT EXECUTED *segment = NULL; if ( size == 0 ) return RTEMS_INVALID_SIZE; _RTEMS_Lock_allocator(); 5769c: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576a2: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 576a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 576ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 576ae: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED executing = _Thread_Executing; 576b4: 2879 0007 ef7e moveal 7ef7e <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 576ba: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 576c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 576c4: 2640 moveal %d0,%a3 <== NOT EXECUTED 576c6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 576ca: 6628 bnes 576f4 <== NOT EXECUTED case OBJECTS_LOCAL: if ( size > the_region->maximum_segment_size ) 576cc: b4ab 005c cmpl %a3@(92),%d2 <== NOT EXECUTED 576d0: 633c blss 5770e <== NOT EXECUTED return_status = RTEMS_INVALID_SIZE; 576d2: 7008 moveq #8,%d0 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 576d4: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576da: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 576de: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 576e4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 576e8: 588f addql #4,%sp <== NOT EXECUTED } 576ea: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 576f0: 4e5e unlk %fp <== NOT EXECUTED 576f2: 4e75 rts <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 576f4: 7004 moveq #4,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 576f6: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576fc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57700: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57706: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 5770a: 588f addql #4,%sp <== NOT EXECUTED 5770c: 60dc bras 576ea <== NOT EXECUTED * @brief See _Heap_Allocate_aligned_with_boundary() with alignment and * boundary equals zero. */ RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size ) { return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 ); 5770e: 42a7 clrl %sp@- <== NOT EXECUTED 57710: 42a7 clrl %sp@- <== NOT EXECUTED 57712: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57714: 486b 0068 pea %a3@(104) <== NOT EXECUTED 57718: 4eb9 0005 a7d4 jsr 5a7d4 <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED the_segment = _Region_Allocate_segment( the_region, size ); _Region_Debug_Walk( the_region, 2 ); if ( the_segment ) { 5771e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57722: 2200 movel %d0,%d1 <== NOT EXECUTED 57724: 672c beqs 57752 <== NOT EXECUTED the_region->number_of_used_blocks += 1; 57726: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED *segment = the_segment; return_status = RTEMS_SUCCESSFUL; 5772a: 4280 clrl %d0 <== NOT EXECUTED _Region_Debug_Walk( the_region, 2 ); if ( the_segment ) { the_region->number_of_used_blocks += 1; *segment = the_segment; 5772c: 2481 movel %d1,%a2@ <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5772e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57734: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57738: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5773e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 57742: 588f addql #4,%sp <== NOT EXECUTED 57744: 60a4 bras 576ea <== NOT EXECUTED rtems_status_code return_status; Region_Control *the_region; void *the_segment; if ( !segment ) return RTEMS_INVALID_ADDRESS; 57746: 7009 moveq #9,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57748: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 5774e: 4e5e unlk %fp <== NOT EXECUTED 57750: 4e75 rts <== NOT EXECUTED if ( the_segment ) { the_region->number_of_used_blocks += 1; *segment = the_segment; return_status = RTEMS_SUCCESSFUL; } else if ( _Options_Is_no_wait( option_set ) ) { 57752: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 57756: 0800 0000 btst #0,%d0 <== NOT EXECUTED 5775a: 671c beqs 57778 <== NOT EXECUTED return_status = RTEMS_UNSATISFIED; 5775c: 700d moveq #13,%d0 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5775e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57764: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57768: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5776e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 57772: 588f addql #4,%sp <== NOT EXECUTED 57774: 6000 ff74 braw 576ea <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 57778: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5777e: 5280 addql #1,%d0 <== NOT EXECUTED 57780: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED * Switch from using the memory allocation mutex to using a * dispatching disabled critical section. We have to do this * because this thread is going to block. */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); 57786: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5778c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED executing->Wait.queue = &the_region->Wait_queue; 57792: 200b movel %a3,%d0 <== NOT EXECUTED 57794: 0680 0000 0010 addil #16,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 5779a: 7201 moveq #1,%d1 <== NOT EXECUTED 5779c: 2940 0044 movel %d0,%a4@(68) <== NOT EXECUTED executing->Wait.id = id; 577a0: 2943 0020 movel %d3,%a4@(32) <== NOT EXECUTED executing->Wait.count = size; 577a4: 2942 0024 movel %d2,%a4@(36) <== NOT EXECUTED executing->Wait.return_argument = segment; 577a8: 294a 0028 movel %a2,%a4@(40) <== NOT EXECUTED 577ac: 2741 0040 movel %d1,%a3@(64) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_region->Wait_queue ); _Thread_queue_Enqueue( &the_region->Wait_queue, timeout ); 577b0: 4879 0005 cd38 pea 5cd38 <_Thread_queue_Timeout> <== NOT EXECUTED 577b6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 577ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 577bc: 4eb9 0005 c974 jsr 5c974 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 577c2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return (rtems_status_code) executing->Wait.return_code; 577c8: 202c 0034 movel %a4@(52),%d0 <== NOT EXECUTED 577cc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 577d0: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 577d6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000577dc : rtems_status_code rtems_region_get_segment_size( rtems_id id, void *segment, uintptr_t *size ) { 577dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 577e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 577e2: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 577e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 577e8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_SUCCESSFUL; register Region_Control *the_region; if ( !segment ) 577ec: 6700 0092 beqw 57880 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 577f0: 4a83 tstl %d3 <== NOT EXECUTED 577f2: 6700 008c beqw 57880 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 577f6: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 577fc: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 57802: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57806: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5780a: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 57810: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 57816: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 5781a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5781e: 6636 bnes 57856 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) ) 57820: 2f03 movel %d3,%sp@- <== NOT EXECUTED 57822: 2040 moveal %d0,%a0 <== NOT EXECUTED 57824: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57826: 4868 0068 pea %a0@(104) <== NOT EXECUTED 5782a: 4eb9 0005 b2cc jsr 5b2cc <_Heap_Size_of_alloc_area> <== NOT EXECUTED 57830: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 57834: 4a00 tstb %d0 <== NOT EXECUTED 57836: 6624 bnes 5785c <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57838: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) ) return_status = RTEMS_INVALID_ADDRESS; 5783e: 7409 moveq #9,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57840: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57846: 588f addql #4,%sp <== NOT EXECUTED } 57848: 2002 movel %d2,%d0 <== NOT EXECUTED 5784a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5784e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57852: 4e5e unlk %fp <== NOT EXECUTED 57854: 4e75 rts <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); the_region = _Region_Get( id, &location ); switch ( location ) { 57856: 7001 moveq #1,%d0 <== NOT EXECUTED 57858: b081 cmpl %d1,%d0 <== NOT EXECUTED 5785a: 6712 beqs 5786e <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5785c: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED void *segment, uintptr_t *size ) { Objects_Locations location; rtems_status_code return_status = RTEMS_SUCCESSFUL; 57862: 4282 clrl %d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57864: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5786a: 588f addql #4,%sp <== NOT EXECUTED 5786c: 60da bras 57848 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 5786e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED case OBJECTS_REMOTE: /* this error cannot be returned */ break; #endif case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; 57874: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 57876: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5787c: 588f addql #4,%sp <== NOT EXECUTED 5787e: 60c8 bras 57848 <== NOT EXECUTED if ( !segment ) return RTEMS_INVALID_ADDRESS; if ( !size ) return RTEMS_INVALID_ADDRESS; 57880: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57882: 2002 movel %d2,%d0 <== NOT EXECUTED 57884: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57888: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 5788c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00057890 : rtems_status_code rtems_region_ident( rtems_name name, rtems_id *id ) { 57890: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 57894: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 57898: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 5789e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 578a2: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 578a8: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; 578ae: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 578b4: 4e5e unlk %fp <== NOT EXECUTED 578b6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 000578bc : rtems_id id, void *segment, uintptr_t size, uintptr_t *old_size ) { 578bc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 578c0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 578c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 578c4: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED uintptr_t osize; rtems_status_code return_status; Heap_Resize_status status; register Region_Control *the_region; if ( !old_size ) 578c8: 4a8a tstl %a2 <== NOT EXECUTED 578ca: 6700 00a4 beqw 57970 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 578ce: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 578d4: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 578da: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 578de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 578e2: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 578e8: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 578ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 578f2: 2640 moveal %d0,%a3 <== NOT EXECUTED 578f4: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 578f8: 663e bnes 57938 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 7 ); status = _Heap_Resize_block( 578fa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 578fe: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 57902: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 57906: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5790a: 486b 0068 pea %a3@(104) <== NOT EXECUTED 5790e: 4eb9 0005 b1e0 jsr 5b1e0 <_Heap_Resize_block> <== NOT EXECUTED segment, (uint32_t) size, &osize, &avail_size ); *old_size = (uint32_t) osize; 57914: 24ae fff4 movel %fp@(-12),%a2@ <== NOT EXECUTED _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL ) 57918: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 5791c: 4a80 tstl %d0 <== NOT EXECUTED 5791e: 6634 bnes 57954 <== NOT EXECUTED _Region_Process_queue( the_region ); /* unlocks allocator */ 57920: 2f0b movel %a3,%sp@- <== NOT EXECUTED 57922: 4eb9 0005 fe98 jsr 5fe98 <_Region_Process_queue> <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57928: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED *old_size = (uint32_t) osize; _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL ) _Region_Process_queue( the_region ); /* unlocks allocator */ 5792c: 588f addql #4,%sp <== NOT EXECUTED else _RTEMS_Unlock_allocator(); if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; 5792e: 4280 clrl %d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57930: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 57934: 4e5e unlk %fp <== NOT EXECUTED 57936: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 57938: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5793e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 57944: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); return return_status; 57948: 588f addql #4,%sp <== NOT EXECUTED 5794a: 7004 moveq #4,%d0 <== NOT EXECUTED } 5794c: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 57950: 4e5e unlk %fp <== NOT EXECUTED 57952: 4e75 rts <== NOT EXECUTED _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL ) _Region_Process_queue( the_region ); /* unlocks allocator */ else _RTEMS_Unlock_allocator(); 57954: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5795a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 5795e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; if (status == HEAP_RESIZE_UNSATISFIED) 57964: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 57968: 588f addql #4,%sp <== NOT EXECUTED 5796a: 7201 moveq #1,%d1 <== NOT EXECUTED 5796c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5796e: 670e beqs 5797e <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57970: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; if (status == HEAP_RESIZE_UNSATISFIED) return RTEMS_UNSATISFIED; return RTEMS_INVALID_ADDRESS; 57974: 7009 moveq #9,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57976: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 5797a: 4e5e unlk %fp <== NOT EXECUTED 5797c: 4e75 rts <== NOT EXECUTED 5797e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; if (status == HEAP_RESIZE_UNSATISFIED) return RTEMS_UNSATISFIED; 57982: 700d moveq #13,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57984: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 57988: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005798c : rtems_status_code rtems_region_return_segment( rtems_id id, void *segment ) { 5798c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57990: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57992: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t size; #endif int status; register Region_Control *the_region; _RTEMS_Lock_allocator(); 57994: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5799a: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED 579a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 579a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 579a8: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED 579ae: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 579b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 579b8: 2440 moveal %d0,%a2 <== NOT EXECUTED 579ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 579be: 6632 bnes 579f2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Region_Free_segment ( Region_Control *the_region, void *the_segment ) { return _Heap_Free( &the_region->Memory, the_segment ); 579c0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 579c4: 486a 0068 pea %a2@(104) <== NOT EXECUTED 579c8: 4eb9 0005 abe0 jsr 5abe0 <_Heap_Free> <== NOT EXECUTED #endif status = _Region_Free_segment( the_region, segment ); _Region_Debug_Walk( the_region, 4 ); if ( !status ) 579ce: 508f addql #8,%sp <== NOT EXECUTED 579d0: 4a00 tstb %d0 <== NOT EXECUTED 579d2: 6630 bnes 57a04 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 579d4: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED status = _Region_Free_segment( the_region, segment ); _Region_Debug_Walk( the_region, 4 ); if ( !status ) return_status = RTEMS_INVALID_ADDRESS; 579da: 7409 moveq #9,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 579dc: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 579e2: 588f addql #4,%sp <== NOT EXECUTED } 579e4: 2002 movel %d2,%d0 <== NOT EXECUTED 579e6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 579ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 579ee: 4e5e unlk %fp <== NOT EXECUTED 579f0: 4e75 rts <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 579f2: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 579f8: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 579fa: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 57a00: 588f addql #4,%sp <== NOT EXECUTED 57a02: 60e0 bras 579e4 <== NOT EXECUTED _Region_Debug_Walk( the_region, 4 ); if ( !status ) return_status = RTEMS_INVALID_ADDRESS; else { the_region->number_of_used_blocks -= 1; 57a04: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED _Region_Process_queue(the_region); /* unlocks allocator */ return RTEMS_SUCCESSFUL; 57a08: 4282 clrl %d2 <== NOT EXECUTED if ( !status ) return_status = RTEMS_INVALID_ADDRESS; else { the_region->number_of_used_blocks -= 1; _Region_Process_queue(the_region); /* unlocks allocator */ 57a0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57a0c: 4eb9 0005 fe98 jsr 5fe98 <_Region_Process_queue> <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57a12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57a16: 2002 movel %d2,%d0 <== NOT EXECUTED else { the_region->number_of_used_blocks -= 1; _Region_Process_queue(the_region); /* unlocks allocator */ return RTEMS_SUCCESSFUL; 57a18: 588f addql #4,%sp <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 57a1a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57a1e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000461bc : uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id ) { 461bc: 4e56 ffd4 linkw %fp,#-44 461c0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 461c4: 262e 0008 movel %fp@(8),%d3 461c8: 242e 0010 movel %fp@(16),%d2 461cc: 246e 0018 moveal %fp@(24),%a2 register Semaphore_Control *the_semaphore; CORE_mutex_Attributes the_mutex_attr; CORE_semaphore_Attributes the_semaphore_attr; CORE_mutex_Status mutex_status; if ( !rtems_is_name_valid( name ) ) 461d0: 4a83 tstl %d3 461d2: 6746 beqs 4621a <== NEVER TAKEN return RTEMS_INVALID_NAME; if ( !id ) 461d4: 4a8a tstl %a2 461d6: 6700 00e8 beqw 462c0 * id - semaphore id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_semaphore_create( 461da: 2002 movel %d2,%d0 461dc: 0280 0000 00c0 andil #192,%d0 return RTEMS_NOT_DEFINED; } else #endif if ( _Attributes_Is_inherit_priority( attribute_set ) || 461e2: 6742 beqs 46226 */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE); 461e4: 7230 moveq #48,%d1 _Attributes_Is_priority_ceiling( attribute_set ) ) { if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) && 461e6: 7810 moveq #16,%d4 461e8: c282 andl %d2,%d1 461ea: b881 cmpl %d1,%d4 461ec: 670c beqs 461fa <== ALWAYS TAKEN } if ( _Attributes_Is_inherit_priority( attribute_set ) && _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; 461ee: 700b moveq #11,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 461f0: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 461f6: 4e5e unlk %fp <== NOT EXECUTED 461f8: 4e75 rts <== NOT EXECUTED #endif if ( _Attributes_Is_inherit_priority( attribute_set ) || _Attributes_Is_priority_ceiling( attribute_set ) ) { if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) && 461fa: 44c2 movew %d2,%ccr 461fc: 66f0 bnes 461ee <== NEVER TAKEN _Attributes_Is_priority( attribute_set ) ) ) return RTEMS_NOT_DEFINED; } if ( _Attributes_Is_inherit_priority( attribute_set ) && 461fe: 0c80 0000 00c0 cmpil #192,%d0 46204: 67e8 beqs 461ee <== NEVER TAKEN _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) 46206: 7001 moveq #1,%d0 46208: b0ae 000c cmpl %fp@(12),%d0 4620c: 641e bccs 4622c <== ALWAYS TAKEN return RTEMS_INVALID_NUMBER; 4620e: 700a moveq #10,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46210: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46216: 4e5e unlk %fp <== NOT EXECUTED 46218: 4e75 rts <== NOT EXECUTED CORE_mutex_Attributes the_mutex_attr; CORE_semaphore_Attributes the_semaphore_attr; CORE_mutex_Status mutex_status; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4621a: 7003 moveq #3,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4621c: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46222: 4e5e unlk %fp <== NOT EXECUTED 46224: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE); 46226: 7830 moveq #48,%d4 46228: c882 andl %d2,%d4 if ( _Attributes_Is_inherit_priority( attribute_set ) && _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) 4622a: 66da bnes 46206 rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4622c: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 46232: 5280 addql #1,%d0 46234: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> * This function allocates a semaphore control block from * the inactive chain of free semaphore control blocks. */ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void ) { return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information ); 4623a: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 46240: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate> _Thread_Disable_dispatch(); /* prevents deletion */ the_semaphore = _Semaphore_Allocate(); if ( !the_semaphore ) { 46246: 588f addql #4,%sp 46248: 2640 moveal %d0,%a3 4624a: 4a80 tstl %d0 4624c: 6700 00d8 beqw 46326 _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_semaphore->attribute_set = attribute_set; 46250: 2742 0010 movel %d2,%a3@(16) /* * Initialize it as a counting semaphore. */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { 46254: 4a84 tstl %d4 46256: 6774 beqs 462cc <== NEVER TAKEN /* * It is either simple binary semaphore or a more powerful mutex * style binary semaphore. This is the mutex style. */ if ( _Attributes_Is_priority( attribute_set ) ) the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; 46258: 44c2 movew %d2,%ccr 4625a: 56c0 sne %d0 4625c: 49c0 extbl %d0 4625e: 5280 addql #1,%d0 46260: 2d40 fff0 movel %d0,%fp@(-16) else the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { 46264: 7010 moveq #16,%d0 46266: b084 cmpl %d4,%d0 46268: 6700 00ce beqw 46338 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; the_mutex_attr.only_owner_release = true; } } } else /* must be simple binary semaphore */ { the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; 4626c: 7202 moveq #2,%d1 the_mutex_attr.only_owner_release = false; 4626e: 4204 clrb %d4 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; the_mutex_attr.only_owner_release = true; } } } else /* must be simple binary semaphore */ { the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; 46270: 2d41 ffea movel %d1,%fp@(-22) the_mutex_attr.only_owner_release = false; 46274: 1d44 ffee moveb %d4,%fp@(-18) } mutex_status = _CORE_mutex_Initialize( 46278: 7001 moveq #1,%d0 4627a: b0ae 000c cmpl %fp@(12),%d0 4627e: 57c0 seq %d0 46280: 49c0 extbl %d0 46282: 4480 negl %d0 46284: 2f00 movel %d0,%sp@- 46286: 486e ffea pea %fp@(-22) 4628a: 486b 0014 pea %a3@(20) 4628e: 4eb9 0004 6f78 jsr 46f78 <_CORE_mutex_Initialize> &the_semaphore->Core_control.mutex, &the_mutex_attr, (count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED ); if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) { 46294: 4fef 000c lea %sp@(12),%sp 46298: 7206 moveq #6,%d1 4629a: b280 cmpl %d0,%d1 4629c: 665e bnes 462fc <== ALWAYS TAKEN */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 4629e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 462a0: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> <== NOT EXECUTED 462a6: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> <== NOT EXECUTED _Semaphore_Free( the_semaphore ); _Thread_Enable_dispatch(); 462ac: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INVALID_PRIORITY; 462b2: 508f addql #8,%sp <== NOT EXECUTED 462b4: 7013 moveq #19,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 462b6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 462bc: 4e5e unlk %fp <== NOT EXECUTED 462be: 4e75 rts <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; 462c0: 7009 moveq #9,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 462c2: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 462c8: 4e5e unlk %fp <== NOT EXECUTED 462ca: 4e75 rts <== NOT EXECUTED * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 462cc: 2f2e 000c movel %fp@(12),%sp@- */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { /* * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; 462d0: 72ff moveq #-1,%d1 * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 462d2: 486e fff8 pea %fp@(-8) 462d6: 486b 0014 pea %a3@(20) * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 462da: 44c2 movew %d2,%ccr 462dc: 56c0 sne %d0 */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { /* * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; 462de: 2d41 fff8 movel %d1,%fp@(-8) if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 462e2: 49c0 extbl %d0 462e4: 5280 addql #1,%d0 the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; /* * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 462e6: 42ae ffea clrl %fp@(-22) * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 462ea: 2d40 fffc movel %d0,%fp@(-4) /* * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; 462ee: 42ae fff4 clrl %fp@(-12) _CORE_semaphore_Initialize( 462f2: 4eb9 0004 72b0 jsr 472b0 <_CORE_semaphore_Initialize> 462f8: 4fef 000c lea %sp@(12),%sp Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 462fc: 202b 0008 movel %a3@(8),%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46300: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46302: 2079 0005 fbd4 moveal 5fbd4 <_Semaphore_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46308: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4630a: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4630e: 2743 000c movel %d3,%a3@(12) &_Semaphore_Information, &the_semaphore->Object, (Objects_Name) name ); *id = the_semaphore->Object.id; 46312: 2480 movel %d0,%a2@ the_semaphore->Object.id, name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 46314: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; } 4631a: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 46320: 4280 clrl %d0 } 46322: 4e5e unlk %fp 46324: 4e75 rts _Thread_Disable_dispatch(); /* prevents deletion */ the_semaphore = _Semaphore_Allocate(); if ( !the_semaphore ) { _Thread_Enable_dispatch(); 46326: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_TOO_MANY; 4632c: 7005 moveq #5,%d0 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4632e: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 46334: 4e5e unlk %fp 46336: 4e75 rts else the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attr.priority_ceiling = priority_ceiling; the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 46338: 42ae ffea clrl %fp@(-22) the_mutex_attr.only_owner_release = false; if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { 4633c: 7801 moveq #1,%d4 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attr.priority_ceiling = priority_ceiling; the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; 4633e: 4201 clrb %d1 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; else the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attr.priority_ceiling = priority_ceiling; 46340: 2d6e 0014 fff4 movel %fp@(20),%fp@(-12) the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; 46346: 1d41 ffee moveb %d1,%fp@(-18) if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { 4634a: b8ae fff0 cmpl %fp@(-16),%d4 4634e: 6600 ff28 bnew 46278 if ( _Attributes_Is_inherit_priority( attribute_set ) ) { 46352: 0802 0006 btst #6,%d2 46356: 6712 beqs 4636a <== NEVER TAKEN the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 46358: 103c 0002 moveb #2,%d0 the_mutex_attr.only_owner_release = true; 4635c: 7201 moveq #1,%d1 the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { if ( _Attributes_Is_inherit_priority( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 4635e: 2d40 fff0 movel %d0,%fp@(-16) the_mutex_attr.only_owner_release = true; 46362: 1d41 ffee moveb %d1,%fp@(-18) 46366: 6000 ff10 braw 46278 } else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) { 4636a: 4a02 tstb %d2 <== NOT EXECUTED 4636c: 6c00 ff0a bgew 46278 <== NOT EXECUTED the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 46370: 7803 moveq #3,%d4 <== NOT EXECUTED the_mutex_attr.only_owner_release = true; 46372: 7001 moveq #1,%d0 <== NOT EXECUTED if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { if ( _Attributes_Is_inherit_priority( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; the_mutex_attr.only_owner_release = true; } else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 46374: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED the_mutex_attr.only_owner_release = true; 46378: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED 4637c: 6000 fefa braw 46278 <== NOT EXECUTED =============================================================================== 00046380 : #endif rtems_status_code rtems_semaphore_delete( rtems_id id ) { 46380: 4e56 fffc linkw %fp,#-4 46384: 2f0a movel %a2,%sp@- Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) _Objects_Get( &_Semaphore_Information, id, location ); 46386: 486e fffc pea %fp@(-4) 4638a: 2f2e 0008 movel %fp@(8),%sp@- 4638e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 46394: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get> register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 4639a: 4fef 000c lea %sp@(12),%sp 4639e: 2440 moveal %d0,%a2 463a0: 4aae fffc tstl %fp@(-4) 463a4: 670a beqs 463b0 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 463a6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 463aa: 7004 moveq #4,%d0 <== NOT EXECUTED } 463ac: 4e5e unlk %fp <== NOT EXECUTED 463ae: 4e75 rts <== NOT EXECUTED 463b0: 7030 moveq #48,%d0 463b2: c0aa 0010 andl %a2@(16),%d0 the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 463b6: 6760 beqs 46418 if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) && 463b8: 4aaa 0062 tstl %a2@(98) 463bc: 6616 bnes 463d4 463be: 7220 moveq #32,%d1 463c0: b280 cmpl %d0,%d1 463c2: 6710 beqs 463d4 <== ALWAYS TAKEN !_Attributes_Is_simple_binary_semaphore( the_semaphore->attribute_set ) ) { _Thread_Enable_dispatch(); 463c4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 463ca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) && !_Attributes_Is_simple_binary_semaphore( the_semaphore->attribute_set ) ) { _Thread_Enable_dispatch(); return RTEMS_RESOURCE_IN_USE; 463ce: 700c moveq #12,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 463d0: 4e5e unlk %fp <== NOT EXECUTED 463d2: 4e75 rts <== NOT EXECUTED !_Attributes_Is_simple_binary_semaphore( the_semaphore->attribute_set ) ) { _Thread_Enable_dispatch(); return RTEMS_RESOURCE_IN_USE; } _CORE_mutex_Flush( 463d4: 4878 0004 pea 4 463d8: 42a7 clrl %sp@- 463da: 486a 0014 pea %a2@(20) 463de: 4eb9 0004 6f6c jsr 46f6c <_CORE_mutex_Flush> 463e4: 4fef 000c lea %sp@(12),%sp SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_SEMAPHORE_WAS_DELETED ); } _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); 463e8: 2f0a movel %a2,%sp@- 463ea: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 463f0: 4eb9 0004 795c jsr 4795c <_Objects_Close> */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 463f6: 2f0a movel %a2,%sp@- 463f8: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 463fe: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> 0, /* Not used */ 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 46404: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 4640a: 4fef 0010 lea %sp@(16),%sp 4640e: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46410: 246e fff8 moveal %fp@(-8),%a2 46414: 4e5e unlk %fp 46416: 4e75 rts &the_semaphore->Core_control.mutex, SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_MUTEX_WAS_DELETED ); } else { _CORE_semaphore_Flush( 46418: 4878 0002 pea 2 4641c: 42a7 clrl %sp@- 4641e: 486a 0014 pea %a2@(20) 46422: 4eb9 0004 72a4 jsr 472a4 <_CORE_semaphore_Flush> 46428: 4fef 000c lea %sp@(12),%sp SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_SEMAPHORE_WAS_DELETED ); } _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); 4642c: 2f0a movel %a2,%sp@- 4642e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 46434: 4eb9 0004 795c jsr 4795c <_Objects_Close> 4643a: 2f0a movel %a2,%sp@- 4643c: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 46442: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> 0, /* Not used */ 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 46448: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 4644e: 4fef 0010 lea %sp@(16),%sp 46452: 4280 clrl %d0 46454: 60ba bras 46410 ... =============================================================================== 00050260 : #endif rtems_status_code rtems_semaphore_flush( rtems_id id ) { 50260: 4e56 fffc linkw %fp,#-4 50264: 486e fffc pea %fp@(-4) 50268: 2f2e 0008 movel %fp@(8),%sp@- 5026c: 4879 0006 3e14 pea 63e14 <_Semaphore_Information> 50272: 4eb9 0004 9344 jsr 49344 <_Objects_Get> register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 50278: 4fef 000c lea %sp@(12),%sp 5027c: 4aae fffc tstl %fp@(-4) 50280: 6706 beqs 50288 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 50282: 7004 moveq #4,%d0 <== NOT EXECUTED } 50284: 4e5e unlk %fp <== NOT EXECUTED 50286: 4e75 rts <== NOT EXECUTED 50288: 7230 moveq #48,%d1 5028a: 2040 moveal %d0,%a0 5028c: c2a8 0010 andl %a0@(16),%d1 the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 50290: 6720 beqs 502b2 <== NEVER TAKEN _CORE_mutex_Flush( 50292: 4878 0001 pea 1 50296: 42a7 clrl %sp@- 50298: 4868 0014 pea %a0@(20) 5029c: 4eb9 0004 8524 jsr 48524 <_CORE_mutex_Flush> 502a2: 4fef 000c lea %sp@(12),%sp &the_semaphore->Core_control.semaphore, SEND_OBJECT_WAS_DELETED, CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT ); } _Thread_Enable_dispatch(); 502a6: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 502ac: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 502ae: 4e5e unlk %fp 502b0: 4e75 rts &the_semaphore->Core_control.mutex, SEND_OBJECT_WAS_DELETED, CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT ); } else { _CORE_semaphore_Flush( 502b2: 4878 0001 pea 1 <== NOT EXECUTED 502b6: 2040 moveal %d0,%a0 <== NOT EXECUTED 502b8: 42a7 clrl %sp@- <== NOT EXECUTED 502ba: 4868 0014 pea %a0@(20) <== NOT EXECUTED 502be: 4eb9 0004 885c jsr 4885c <_CORE_semaphore_Flush> <== NOT EXECUTED 502c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED &the_semaphore->Core_control.semaphore, SEND_OBJECT_WAS_DELETED, CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT ); } _Thread_Enable_dispatch(); 502c8: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 502ce: 4280 clrl %d0 <== NOT EXECUTED 502d0: 60dc bras 502ae <== NOT EXECUTED ... =============================================================================== 00057d34 : rtems_status_code rtems_semaphore_ident( rtems_name name, uint32_t node, rtems_id *id ) { 57d34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( &_Semaphore_Information, name, node, id ); 57d38: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 57d3c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 57d40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57d44: 4879 0007 ea30 pea 7ea30 <_Semaphore_Information> <== NOT EXECUTED 57d4a: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 57d50: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 57d56: 4e5e unlk %fp <== NOT EXECUTED 57d58: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 00046458 : rtems_status_code rtems_semaphore_obtain( rtems_id id, rtems_option option_set, rtems_interval timeout ) { 46458: 4e56 ffec linkw %fp,#-20 4645c: 48d7 001c moveml %d2-%d4,%sp@ Objects_Locations *location, ISR_Level *level ) { return (Semaphore_Control *) _Objects_Get_isr_disable( &_Semaphore_Information, id, location, level ); 46460: 486e fff8 pea %fp@(-8) 46464: 486e fffc pea %fp@(-4) 46468: 242e 0008 movel %fp@(8),%d2 4646c: 2f02 movel %d2,%sp@- 4646e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 46474: 262e 000c movel %fp@(12),%d3 46478: 282e 0010 movel %fp@(16),%d4 4647c: 4eb9 0004 7d2c jsr 47d2c <_Objects_Get_isr_disable> register Semaphore_Control *the_semaphore; Objects_Locations location; ISR_Level level; the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level ); switch ( location ) { 46482: 4fef 0010 lea %sp@(16),%sp 46486: 4aae fffc tstl %fp@(-4) 4648a: 670c beqs 46498 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4648c: 7004 moveq #4,%d0 <== NOT EXECUTED } 4648e: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED 46494: 4e5e unlk %fp <== NOT EXECUTED 46496: 4e75 rts <== NOT EXECUTED 46498: 7230 moveq #48,%d1 4649a: 2040 moveal %d0,%a0 4649c: c2a8 0010 andl %a0@(16),%d1 the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 464a0: 6738 beqs 464da <== NEVER TAKEN _CORE_mutex_Seize( 464a2: 2f2e fff8 movel %fp@(-8),%sp@- */ RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait ( rtems_option option_set ) { return (option_set & RTEMS_NO_WAIT) ? true : false; 464a6: 7201 moveq #1,%d1 464a8: c681 andl %d1,%d3 464aa: 2f04 movel %d4,%sp@- 464ac: b781 eorl %d3,%d1 464ae: 2f01 movel %d1,%sp@- 464b0: 2f02 movel %d2,%sp@- 464b2: 4868 0014 pea %a0@(20) 464b6: 4eb9 0004 70f4 jsr 470f4 <_CORE_mutex_Seize> ((_Options_Is_no_wait( option_set )) ? false : true), timeout, level ); return _Semaphore_Translate_core_mutex_return_code( _Thread_Executing->Wait.return_code ); 464bc: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, level ); return _Semaphore_Translate_core_mutex_return_code( 464c2: 2f28 0034 movel %a0@(52),%sp@- 464c6: 4eb9 0004 6628 jsr 46628 <_Semaphore_Translate_core_mutex_return_code> 464cc: 4fef 0018 lea %sp@(24),%sp break; } return RTEMS_INVALID_ID; } 464d0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 464d6: 4e5e unlk %fp 464d8: 4e75 rts /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( the_semaphore->count != 0 ) { 464da: 2240 moveal %d0,%a1 <== NOT EXECUTED { Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; 464dc: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( the_semaphore->count != 0 ) { 464e2: 2229 005c movel %a1@(92),%d1 <== NOT EXECUTED Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 464e6: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 464ea: 4a81 tstl %d1 <== NOT EXECUTED 464ec: 662e bnes 4651c <== NOT EXECUTED the_semaphore->count -= 1; _ISR_Enable( *level_p ); return; } if ( !wait ) { 464ee: 0803 0000 btst #0,%d3 <== NOT EXECUTED 464f2: 6748 beqs 4653c <== NOT EXECUTED _ISR_Enable( *level_p ); 464f4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 464f8: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 464fa: 7001 moveq #1,%d0 <== NOT EXECUTED 464fc: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( _Thread_Executing->Wait.return_code ); 46500: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( 46506: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4650a: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 46510: 588f addql #4,%sp <== NOT EXECUTED break; } return RTEMS_INVALID_ID; } 46512: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED 46518: 4e5e unlk %fp <== NOT EXECUTED 4651a: 4e75 rts <== NOT EXECUTED /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( the_semaphore->count != 0 ) { the_semaphore->count -= 1; 4651c: 5381 subql #1,%d1 <== NOT EXECUTED 4651e: 2341 005c movel %d1,%a1@(92) <== NOT EXECUTED _ISR_Enable( *level_p ); 46522: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46526: 46c0 movew %d0,%sr <== NOT EXECUTED ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( _Thread_Executing->Wait.return_code ); 46528: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( 4652e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46532: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 46538: 588f addql #4,%sp <== NOT EXECUTED 4653a: 60d6 bras 46512 <== NOT EXECUTED 4653c: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46542: 5281 addql #1,%d1 <== NOT EXECUTED 46544: 23c1 0005 fc78 movel %d1,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4654a: 7201 moveq #1,%d1 <== NOT EXECUTED 4654c: 2240 moveal %d0,%a1 <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 4654e: 0680 0000 0014 addil #20,%d0 <== NOT EXECUTED 46554: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 46558: 2142 0020 movel %d2,%a0@(32) <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 4655c: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; _ISR_Enable( *level_p ); 46560: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 46564: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 46566: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout> <== NOT EXECUTED 4656c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4656e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46570: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 46576: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED _Thread_Executing->Wait.return_code ); 4657c: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46582: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( 46586: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4658a: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 46590: 588f addql #4,%sp <== NOT EXECUTED 46592: 6000 ff7e braw 46512 <== NOT EXECUTED ... =============================================================================== 00046598 : #endif rtems_status_code rtems_semaphore_release( rtems_id id ) { 46598: 4e56 fffc linkw %fp,#-4 4659c: 2f02 movel %d2,%sp@- Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) _Objects_Get( &_Semaphore_Information, id, location ); 4659e: 486e fffc pea %fp@(-4) 465a2: 242e 0008 movel %fp@(8),%d2 465a6: 2f02 movel %d2,%sp@- 465a8: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> 465ae: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get> Objects_Locations location; CORE_mutex_Status mutex_status; CORE_semaphore_Status semaphore_status; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 465b4: 4fef 000c lea %sp@(12),%sp 465b8: 4aae fffc tstl %fp@(-4) 465bc: 670a beqs 465c8 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 465be: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 465c2: 7004 moveq #4,%d0 <== NOT EXECUTED } 465c4: 4e5e unlk %fp <== NOT EXECUTED 465c6: 4e75 rts <== NOT EXECUTED 465c8: 7230 moveq #48,%d1 465ca: 2040 moveal %d0,%a0 465cc: c2a8 0010 andl %a0@(16),%d1 the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 465d0: 662c bnes 465fe <== ALWAYS TAKEN MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); return _Semaphore_Translate_core_mutex_return_code( mutex_status ); } else { semaphore_status = _CORE_semaphore_Surrender( 465d2: 42a7 clrl %sp@- <== NOT EXECUTED 465d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 465d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465d8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 465dc: 4eb9 0004 72f8 jsr 472f8 <_CORE_semaphore_Surrender> <== NOT EXECUTED 465e2: 2400 movel %d0,%d2 <== NOT EXECUTED &the_semaphore->Core_control.semaphore, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 465e4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return 465ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465ec: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 465f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED &the_semaphore->Core_control.semaphore, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); return 465f6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 465fa: 4e5e unlk %fp <== NOT EXECUTED 465fc: 4e75 rts <== NOT EXECUTED the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { mutex_status = _CORE_mutex_Surrender( 465fe: 42a7 clrl %sp@- 46600: 2f02 movel %d2,%sp@- 46602: 4868 0014 pea %a0@(20) 46606: 4eb9 0004 71a4 jsr 471a4 <_CORE_mutex_Surrender> 4660c: 2400 movel %d0,%d2 &the_semaphore->Core_control.mutex, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 4660e: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return _Semaphore_Translate_core_mutex_return_code( mutex_status ); 46614: 2f02 movel %d2,%sp@- 46616: 4eb9 0004 6628 jsr 46628 <_Semaphore_Translate_core_mutex_return_code> case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4661c: 242e fff8 movel %fp@(-8),%d2 &the_semaphore->Core_control.mutex, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); return _Semaphore_Translate_core_mutex_return_code( mutex_status ); 46620: 4fef 0010 lea %sp@(16),%sp case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46624: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046b34 : void rtems_shutdown_executive( uint32_t result ) { if ( _System_state_Is_up( _System_state_Get() ) ) { 46b34: 7003 moveq #3,%d0 */ void rtems_shutdown_executive( uint32_t result ) { 46b36: 4e56 0000 linkw %fp,#0 if ( _System_state_Is_up( _System_state_Get() ) ) { 46b3a: b0b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d0 46b40: 6710 beqs 46b52 _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); } _Internal_error_Occurred( 46b42: 4878 0014 pea 14 46b46: 4878 0001 pea 1 46b4a: 42a7 clrl %sp@- 46b4c: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> * if we were running within the same context, it would work. * * And we will not return to this thread, so there is no point of * saving the context. */ _Context_Restart_self( &_Thread_BSP_context ); 46b52: 4879 0005 fc44 pea 5fc44 <_Thread_BSP_context> 46b58: 103c 0004 moveb #4,%d0 46b5c: 23c0 0005 fde4 movel %d0,5fde4 <_System_state_Current> 46b62: 4eb9 0004 9bd2 jsr 49bd2 <_CPU_Context_Restart_self> 46b68: 588f addql #4,%sp <== NOT EXECUTED 46b6a: 4878 0014 pea 14 <== NOT EXECUTED 46b6e: 4878 0001 pea 1 <== NOT EXECUTED 46b72: 42a7 clrl %sp@- <== NOT EXECUTED 46b74: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED ... =============================================================================== 00047708 : rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 47708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4770c: 2239 0006 1400 movel 61400 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 47712: 5281 addql #1,%d1 <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; /* XXX normalize mode */ executing = _Thread_Executing; api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; 47714: 2079 0006 188a moveal 6188a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 4771a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; /* XXX normalize mode */ executing = _Thread_Executing; api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; 4771e: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 47722: 23c1 0006 1400 movel %d1,61400 <_Thread_Dispatch_disable_level><== NOT EXECUTED asr = &api->Signal; _Thread_Disable_dispatch(); /* cannot reschedule while */ /* the thread is inconsistent */ if ( !_ASR_Is_null_handler( asr_handler ) ) { 47728: 4a80 tstl %d0 <== NOT EXECUTED 4772a: 6716 beqs 47742 <== NOT EXECUTED asr->mode_set = mode_set; asr->handler = asr_handler; 4772c: 2140 000a movel %d0,%a0@(10) <== NOT EXECUTED _Thread_Disable_dispatch(); /* cannot reschedule while */ /* the thread is inconsistent */ if ( !_ASR_Is_null_handler( asr_handler ) ) { asr->mode_set = mode_set; 47730: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED asr->handler = asr_handler; } else _ASR_Initialize( asr ); _Thread_Enable_dispatch(); 47736: 4eb9 0004 9d4a jsr 49d4a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4773c: 4280 clrl %d0 <== NOT EXECUTED 4773e: 4e5e unlk %fp <== NOT EXECUTED 47740: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; information->handler = NULL; 47742: 42a8 000a clrl %a0@(10) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 47746: 4200 clrb %d0 <== NOT EXECUTED information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; 47748: 42a8 000e clrl %a0@(14) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 4774c: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; information->signals_posted = 0; 47750: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED information->signals_pending = 0; 47754: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED information->nest_level = 0; 47758: 42a8 001a clrl %a0@(26) <== NOT EXECUTED asr->mode_set = mode_set; asr->handler = asr_handler; } else _ASR_Initialize( asr ); _Thread_Enable_dispatch(); 4775c: 4eb9 0004 9d4a jsr 49d4a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 47762: 4280 clrl %d0 <== NOT EXECUTED 47764: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00057f5c : rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) { 57f5c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57f60: 2f03 movel %d3,%sp@- <== NOT EXECUTED 57f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57f64: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; ASR_Information *asr; if ( !signal_set ) 57f68: 660e bnes 57f78 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 57f6a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED Objects_Locations location; RTEMS_API_Control *api; ASR_Information *asr; if ( !signal_set ) return RTEMS_INVALID_NUMBER; 57f6e: 700a moveq #10,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 57f70: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57f74: 4e5e unlk %fp <== NOT EXECUTED 57f76: 4e75 rts <== NOT EXECUTED ASR_Information *asr; if ( !signal_set ) return RTEMS_INVALID_NUMBER; the_thread = _Thread_Get( id, &location ); 57f78: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57f7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57f80: 4eb9 0005 c4c0 jsr 5c4c0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 57f86: 508f addql #8,%sp <== NOT EXECUTED 57f88: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57f8c: 670e beqs 57f9c <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 57f8e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 57f92: 7004 moveq #4,%d0 <== NOT EXECUTED } 57f94: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57f98: 4e5e unlk %fp <== NOT EXECUTED 57f9a: 4e75 rts <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 57f9c: 2240 moveal %d0,%a1 <== NOT EXECUTED 57f9e: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED asr = &api->Signal; if ( ! _ASR_Is_null_handler( asr->handler ) ) { 57fa2: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED 57fa6: 676a beqs 58012 <== NOT EXECUTED if ( asr->is_enabled ) { 57fa8: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED 57fac: 6736 beqs 57fe4 <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 57fae: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 57fb4: 40c3 movew %sr,%d3 <== NOT EXECUTED 57fb6: 8283 orl %d3,%d1 <== NOT EXECUTED 57fb8: 46c1 movew %d1,%sr <== NOT EXECUTED *signal_set |= signals; 57fba: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED _ISR_Enable( _level ); 57fbe: 46c3 movew %d3,%sr <== NOT EXECUTED _ASR_Post_signals( signal_set, &asr->signals_posted ); if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 57fc0: 4ab9 0007 ef7a tstl 7ef7a <_Per_CPU_Information+0x8> <== NOT EXECUTED 57fc6: 6708 beqs 57fd0 <== NOT EXECUTED 57fc8: b0b9 0007 ef7e cmpl 7ef7e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 57fce: 6730 beqs 58000 <== NOT EXECUTED _Thread_Dispatch_necessary = true; } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } _Thread_Enable_dispatch(); 57fd0: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 57fd6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 57fd8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57fdc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57fe0: 4e5e unlk %fp <== NOT EXECUTED 57fe2: 4e75 rts <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 57fe4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 57fea: 40c1 movew %sr,%d1 <== NOT EXECUTED 57fec: 8081 orl %d1,%d0 <== NOT EXECUTED 57fee: 46c0 movew %d0,%sr <== NOT EXECUTED *signal_set |= signals; 57ff0: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED _ISR_Enable( _level ); 57ff4: 46c1 movew %d1,%sr <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } _Thread_Enable_dispatch(); 57ff6: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 57ffc: 4280 clrl %d0 <== NOT EXECUTED 57ffe: 60d8 bras 57fd8 <== NOT EXECUTED if ( ! _ASR_Is_null_handler( asr->handler ) ) { if ( asr->is_enabled ) { _ASR_Post_signals( signal_set, &asr->signals_posted ); if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) _Thread_Dispatch_necessary = true; 58000: 7001 moveq #1,%d0 <== NOT EXECUTED 58002: 13c0 0007 ef8a moveb %d0,7ef8a <_Per_CPU_Information+0x18> <== NOT EXECUTED } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } _Thread_Enable_dispatch(); 58008: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 5800e: 4280 clrl %d0 <== NOT EXECUTED 58010: 60c6 bras 57fd8 <== NOT EXECUTED } _Thread_Enable_dispatch(); 58012: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58018: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED } _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); return RTEMS_NOT_DEFINED; 5801c: 700b moveq #11,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5801e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 58022: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046654 : size_t stack_size, rtems_mode initial_modes, rtems_attribute attribute_set, rtems_id *id ) { 46654: 4e56 ffe8 linkw %fp,#-24 46658: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ 4665c: 242e 0008 movel %fp@(8),%d2 46660: 282e 000c movel %fp@(12),%d4 46664: 262e 0014 movel %fp@(20),%d3 46668: 2a2e 0018 movel %fp@(24),%d5 4666c: 246e 001c moveal %fp@(28),%a2 Priority_Control core_priority; RTEMS_API_Control *api; ASR_Information *asr; if ( !id ) 46670: 4a8a tstl %a2 46672: 6700 0118 beqw 4678c return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 46676: 4a82 tstl %d2 46678: 6700 00bc beqw 46736 /* * Validate the RTEMS API priority and convert it to the core priority range. */ if ( !_Attributes_Is_system_task( the_attribute_set ) ) { 4667c: 4a45 tstw %d5 4667e: 6d14 blts 46694 <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 46680: 4a84 tstl %d4 46682: 6700 00a6 beqw 4672a ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 46686: 4280 clrl %d0 46688: 1039 0005 e3c2 moveb 5e3c2 ,%d0 */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 4668e: b084 cmpl %d4,%d0 46690: 6500 0098 bcsw 4672a */ /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 46694: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- 4669a: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> * This function allocates a task control block from * the inactive chain of free task control blocks. */ RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information ); 466a0: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information> 466a6: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate> * the event of an error. */ the_thread = _RTEMS_tasks_Allocate(); if ( !the_thread ) { 466ac: 508f addql #8,%sp 466ae: 2640 moveal %d0,%a3 466b0: 4a80 tstl %d0 466b2: 6700 00be beqw 46772 /* * Initialize the core thread for this task. */ status = _Thread_Initialize( 466b6: 7007 moveq #7,%d0 466b8: 2f02 movel %d2,%sp@- 466ba: c083 andl %d3,%d0 466bc: 0803 0009 btst #9,%d3 466c0: 56c1 sne %d1 466c2: 2f00 movel %d0,%sp@- 466c4: 0803 0008 btst #8,%d3 466c8: 57c0 seq %d0 466ca: 42a7 clrl %sp@- 466cc: 49c1 extbl %d1 466ce: 4481 negl %d1 466d0: 49c0 extbl %d0 466d2: 4480 negl %d0 466d4: 2f01 movel %d1,%sp@- 466d6: 2f00 movel %d0,%sp@- 466d8: 7001 moveq #1,%d0 466da: 2f04 movel %d4,%sp@- 466dc: c085 andl %d5,%d0 466de: 2f00 movel %d0,%sp@- 466e0: 2f2e 0010 movel %fp@(16),%sp@- 466e4: 42a7 clrl %sp@- 466e6: 2f0b movel %a3,%sp@- 466e8: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information> 466ee: 4eb9 0004 89fc jsr 489fc <_Thread_Initialize> NULL, /* no budget algorithm callout */ _Modes_Get_interrupt_level(initial_modes), (Objects_Name) name ); if ( !status ) { 466f4: 4fef 002c lea %sp@(44),%sp 466f8: 4a00 tstb %d0 466fa: 6746 beqs 46742 _RTEMS_Unlock_allocator(); return RTEMS_UNSATISFIED; } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; 466fc: 206b 00fe moveal %a3@(254),%a0 * id - thread id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_task_create( 46700: 0803 000a btst #10,%d3 46704: 57c0 seq %d0 46706: 4480 negl %d0 } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true; 46708: 1140 0008 moveb %d0,%a0@(8) *id = the_thread->Object.id; 4670c: 24ab 0008 movel %a3@(8),%a2@ ); } #endif _RTEMS_Unlock_allocator(); 46710: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- 46716: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> return RTEMS_SUCCESSFUL; 4671c: 588f addql #4,%sp 4671e: 4280 clrl %d0 } 46720: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 46726: 4e5e unlk %fp 46728: 4e75 rts * Validate the RTEMS API priority and convert it to the core priority range. */ if ( !_Attributes_Is_system_task( the_attribute_set ) ) { if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) ) return RTEMS_INVALID_PRIORITY; 4672a: 7013 moveq #19,%d0 <== NOT EXECUTED } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 4672c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46732: 4e5e unlk %fp <== NOT EXECUTED 46734: 4e75 rts <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 46736: 7003 moveq #3,%d0 <== NOT EXECUTED } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 46738: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4673e: 4e5e unlk %fp <== NOT EXECUTED 46740: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free ( Thread_Control *the_task ) { _Objects_Free( 46742: 2f2b 0008 movel %a3@(8),%sp@- 46746: 4eb9 0004 7ca4 jsr 47ca4 <_Objects_Get_information_id> 4674c: 2f0b movel %a3,%sp@- 4674e: 2f00 movel %d0,%sp@- 46750: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> #if defined(RTEMS_MULTIPROCESSING) if ( is_global ) _Objects_MP_Free_global_object( the_global_object ); #endif _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 46756: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- 4675c: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> return RTEMS_UNSATISFIED; 46762: 4fef 0010 lea %sp@(16),%sp 46766: 700d moveq #13,%d0 } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 46768: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 4676e: 4e5e unlk %fp 46770: 4e75 rts */ the_thread = _RTEMS_tasks_Allocate(); if ( !the_thread ) { _RTEMS_Unlock_allocator(); 46772: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46778: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED return RTEMS_TOO_MANY; 4677e: 588f addql #4,%sp <== NOT EXECUTED 46780: 7005 moveq #5,%d0 <== NOT EXECUTED } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 46782: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46788: 4e5e unlk %fp <== NOT EXECUTED 4678a: 4e75 rts <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; if ( !id ) return RTEMS_INVALID_ADDRESS; 4678c: 7009 moveq #9,%d0 <== NOT EXECUTED } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 4678e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46794: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046798 : */ rtems_status_code rtems_task_delete( rtems_id id ) { 46798: 4e56 fffc linkw %fp,#-4 4679c: 2f0b movel %a3,%sp@- 4679e: 2f0a movel %a2,%sp@- register Thread_Control *the_thread; Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); 467a0: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- 467a6: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> the_thread = _Thread_Get( id, &location ); 467ac: 486e fffc pea %fp@(-4) 467b0: 2f2e 0008 movel %fp@(8),%sp@- 467b4: 4eb9 0004 8964 jsr 48964 <_Thread_Get> switch ( location ) { 467ba: 4fef 000c lea %sp@(12),%sp Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); the_thread = _Thread_Get( id, &location ); 467be: 2440 moveal %d0,%a2 switch ( location ) { 467c0: 4aae fffc tstl %fp@(-4) 467c4: 664a bnes 46810 <== NEVER TAKEN case OBJECTS_LOCAL: the_information = _Objects_Get_information_id( the_thread->Object.id ); 467c6: 2f2a 0008 movel %a2@(8),%sp@- 467ca: 47f9 0004 7ca4 lea 47ca4 <_Objects_Get_information_id>,%a3 467d0: 4e93 jsr %a3@ 0 /* Not used */ ); } #endif _Thread_Close( the_information, the_thread ); 467d2: 2f0a movel %a2,%sp@- 467d4: 2f00 movel %d0,%sp@- 467d6: 4eb9 0004 85e8 jsr 485e8 <_Thread_Close> 467dc: 2f2a 0008 movel %a2@(8),%sp@- 467e0: 4e93 jsr %a3@ 467e2: 2f0a movel %a2,%sp@- 467e4: 2f00 movel %d0,%sp@- 467e6: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 467ec: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- 467f2: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> _Thread_Enable_dispatch(); 467f8: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> break; } _RTEMS_Unlock_allocator(); return RTEMS_INVALID_ID; } 467fe: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 46802: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46806: 4280 clrl %d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return RTEMS_INVALID_ID; } 46808: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4680c: 4e5e unlk %fp <== NOT EXECUTED 4680e: 4e75 rts <== NOT EXECUTED case OBJECTS_ERROR: break; } _RTEMS_Unlock_allocator(); 46810: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46816: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED return RTEMS_INVALID_ID; } 4681c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED case OBJECTS_ERROR: break; } _RTEMS_Unlock_allocator(); return RTEMS_INVALID_ID; 46820: 588f addql #4,%sp <== NOT EXECUTED 46822: 7004 moveq #4,%d0 <== NOT EXECUTED } 46824: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 46828: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048c74 : rtems_status_code rtems_task_get_note( rtems_id id, uint32_t notepad, uint32_t *note ) { 48c74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48c78: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 48c7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48c7e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 48c82: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48c84: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 48c88: 4a39 0006 18c4 tstb 618c4 <== NOT EXECUTED 48c8e: 6778 beqs 48d08 <== NOT EXECUTED return RTEMS_NOT_CONFIGURED; if ( !note ) 48c90: 4a8a tstl %a2 <== NOT EXECUTED 48c92: 6700 0090 beqw 48d24 <== NOT EXECUTED /* * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) 48c96: 720f moveq #15,%d1 <== NOT EXECUTED 48c98: b282 cmpl %d2,%d1 <== NOT EXECUTED 48c9a: 6542 bcss 48cde <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48c9c: 4a80 tstl %d0 <== NOT EXECUTED 48c9e: 674c beqs 48cec <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { 48ca0: 2079 0006 38dc moveal 638dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48ca6: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 48caa: 6746 beqs 48cf2 <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 48cac: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48cb0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48cb2: 4eb9 0004 b110 jsr 4b110 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 48cb8: 508f addql #8,%sp <== NOT EXECUTED 48cba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48cbe: 6656 bnes 48d16 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 48cc0: 2240 moveal %d0,%a1 <== NOT EXECUTED 48cc2: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 48cc6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 48cca: 4eb9 0004 b0ea jsr 4b0ea <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48cd0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 48cd4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48cd6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48cda: 4e5e unlk %fp <== NOT EXECUTED 48cdc: 4e75 rts <== NOT EXECUTED 48cde: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) return RTEMS_INVALID_NUMBER; 48ce2: 700a moveq #10,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48ce4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48ce8: 4e5e unlk %fp <== NOT EXECUTED 48cea: 4e75 rts <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48cec: 2079 0006 38dc moveal 638dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 48cf2: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 48cf6: 4280 clrl %d0 <== NOT EXECUTED */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 48cf8: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48cfc: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 48d00: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d04: 4e5e unlk %fp <== NOT EXECUTED 48d06: 4e75 rts <== NOT EXECUTED 48d08: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) return RTEMS_NOT_CONFIGURED; 48d0c: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48d0e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d12: 4e5e unlk %fp <== NOT EXECUTED 48d14: 4e75 rts <== NOT EXECUTED 48d16: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 48d1a: 7004 moveq #4,%d0 <== NOT EXECUTED } 48d1c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d20: 4e5e unlk %fp <== NOT EXECUTED 48d22: 4e75 rts <== NOT EXECUTED 48d24: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED if ( !rtems_configuration_get_notepads_enabled() ) return RTEMS_NOT_CONFIGURED; if ( !note ) return RTEMS_INVALID_ADDRESS; 48d28: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48d2a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d2e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004682c : rtems_status_code rtems_task_ident( rtems_name name, uint32_t node, rtems_id *id ) { 4682c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46830: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46834: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; if ( !id ) 46838: 4a88 tstl %a0 <== NOT EXECUTED 4683a: 6738 beqs 46874 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( name == OBJECTS_ID_OF_SELF ) { 4683c: 4a80 tstl %d0 <== NOT EXECUTED 4683e: 660e bnes 4684e <== NOT EXECUTED *id = _Thread_Executing->Object.id; 46840: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); return _Status_Object_name_errors_to_status[ status ]; } 46846: 4e5e unlk %fp <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; if ( name == OBJECTS_ID_OF_SELF ) { *id = _Thread_Executing->Object.id; 46848: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); return _Status_Object_name_errors_to_status[ status ]; } 4684c: 4e75 rts <== NOT EXECUTED if ( name == OBJECTS_ID_OF_SELF ) { *id = _Thread_Executing->Object.id; return RTEMS_SUCCESSFUL; } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); 4684e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46850: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 46854: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46856: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information> <== NOT EXECUTED 4685c: 4eb9 0004 7f3c jsr 47f3c <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 46862: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46866: 41f9 0005 d4de lea 5d4de <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 4686c: 4e5e unlk %fp <== NOT EXECUTED return RTEMS_SUCCESSFUL; } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); return _Status_Object_name_errors_to_status[ status ]; 4686e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED } 46872: 4e75 rts <== NOT EXECUTED ) { Objects_Name_or_id_lookup_errors status; if ( !id ) return RTEMS_INVALID_ADDRESS; 46874: 7009 moveq #9,%d0 <== NOT EXECUTED } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); return _Status_Object_name_errors_to_status[ status ]; } 46876: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00058398 : */ rtems_status_code rtems_task_is_suspended( rtems_id id ) { 58398: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 5839c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 583a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 583a4: 4eb9 0005 c4c0 jsr 5c4c0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 583aa: 508f addql #8,%sp <== NOT EXECUTED 583ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 583b0: 6706 beqs 583b8 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 583b2: 7004 moveq #4,%d0 <== NOT EXECUTED } 583b4: 4e5e unlk %fp <== NOT EXECUTED 583b6: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 583b8: 7202 moveq #2,%d1 <== NOT EXECUTED 583ba: 2040 moveal %d0,%a0 <== NOT EXECUTED 583bc: c2a8 0010 andl %a0@(16),%d1 <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 583c0: 670c beqs 583ce <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 583c2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_ALREADY_SUSPENDED; 583c8: 700f moveq #15,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 583ca: 4e5e unlk %fp <== NOT EXECUTED 583cc: 4e75 rts <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { _Thread_Enable_dispatch(); 583ce: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 583d4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 583d6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004e388 : rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) { 4e388: 4e56 ffe4 linkw %fp,#-28 4e38c: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 4e390: 2a2e 0008 movel %fp@(8),%d5 4e394: 242e 000c movel %fp@(12),%d2 4e398: 286e 0010 moveal %fp@(16),%a4 ASR_Information *asr; bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set ) 4e39c: 4a8c tstl %a4 4e39e: 6700 015a beqw 4e4fa return RTEMS_INVALID_ADDRESS; executing = _Thread_Executing; 4e3a2: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 api = executing->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; 4e3a8: 4a2a 0074 tstb %a2@(116) 4e3ac: 57c3 seq %d3 if ( !previous_mode_set ) return RTEMS_INVALID_ADDRESS; executing = _Thread_Executing; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4e3ae: 266a 00fe moveal %a2@(254),%a3 asr = &api->Signal; old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; 4e3b2: 49c3 extbl %d3 4e3b4: 0283 0000 0100 andil #256,%d3 if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) 4e3ba: 4aaa 007a tstl %a2@(122) 4e3be: 6600 00cc bnew 4e48c old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4e3c2: 4a2b 0008 tstb %a3@(8) 4e3c6: 57c4 seq %d4 old_mode |= _ISR_Get_level(); 4e3c8: 4eb9 0004 9c78 jsr 49c78 <_CPU_ISR_Get_level> if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4e3ce: 49c4 extbl %d4 4e3d0: 0284 0000 0400 andil #1024,%d4 4e3d6: 8084 orl %d4,%d0 old_mode |= _ISR_Get_level(); 4e3d8: 8083 orl %d3,%d0 4e3da: 2880 movel %d0,%a4@ *previous_mode_set = old_mode; /* * These are generic thread scheduling characteristics. */ if ( mask & RTEMS_PREEMPT_MASK ) 4e3dc: 0802 0008 btst #8,%d2 4e3e0: 670c beqs 4e3ee <== NEVER TAKEN executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false; 4e3e2: 0805 0008 btst #8,%d5 4e3e6: 57c0 seq %d0 4e3e8: 4480 negl %d0 4e3ea: 1540 0074 moveb %d0,%a2@(116) if ( mask & RTEMS_TIMESLICE_MASK ) { 4e3ee: 0802 0009 btst #9,%d2 4e3f2: 6718 beqs 4e40c if ( _Modes_Is_timeslice(mode_set) ) { 4e3f4: 0805 0009 btst #9,%d5 4e3f8: 6700 00ee beqw 4e4e8 executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; 4e3fc: 7001 moveq #1,%d0 <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4e3fe: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED if ( mask & RTEMS_PREEMPT_MASK ) executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false; if ( mask & RTEMS_TIMESLICE_MASK ) { if ( _Modes_Is_timeslice(mode_set) ) { executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; 4e404: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4e408: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED } /* * Set the new interrupt level */ if ( mask & RTEMS_INTERRUPT_MASK ) 4e40c: 7007 moveq #7,%d0 4e40e: c082 andl %d2,%d0 4e410: 6712 beqs 4e424 <== ALWAYS TAKEN */ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( Modes_Control mode_set ) { _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) ); 4e412: 40c0 movew %sr,%d0 */ RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level ( Modes_Control mode_set ) { return ( mode_set & RTEMS_INTERRUPT_MASK ); 4e414: 7207 moveq #7,%d1 4e416: c285 andl %d5,%d1 */ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( Modes_Control mode_set ) { _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) ); 4e418: 0280 0000 f8ff andil #63743,%d0 4e41e: e189 lsll #8,%d1 4e420: 8081 orl %d1,%d0 4e422: 46c0 movew %d0,%sr * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; if ( mask & RTEMS_ASR_MASK ) { 4e424: 0802 000a btst #10,%d2 4e428: 6754 beqs 4e47e is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true; if ( is_asr_enabled != asr->is_enabled ) { 4e42a: 4282 clrl %d2 4e42c: 142b 0008 moveb %a3@(8),%d2 4e430: 4280 clrl %d0 * Output: * *previous_mode_set - previous mode set * always return RTEMS_SUCCESSFUL; */ rtems_status_code rtems_task_mode( 4e432: 0805 000a btst #10,%d5 4e436: 57c1 seq %d1 4e438: 4481 negl %d1 is_asr_enabled = false; needs_asr_dispatching = false; if ( mask & RTEMS_ASR_MASK ) { is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true; if ( is_asr_enabled != asr->is_enabled ) { 4e43a: 1001 moveb %d1,%d0 4e43c: b082 cmpl %d2,%d0 4e43e: 673e beqs 4e47e <== ALWAYS TAKEN ) { rtems_signal_set _signals; ISR_Level _level; _ISR_Disable( _level ); 4e440: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED asr->is_enabled = is_asr_enabled; 4e446: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED 4e44a: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e44c: 8081 orl %d1,%d0 <== NOT EXECUTED 4e44e: 46c0 movew %d0,%sr <== NOT EXECUTED _signals = information->signals_pending; 4e450: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED information->signals_pending = information->signals_posted; 4e454: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED information->signals_posted = _signals; 4e45a: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED _ISR_Enable( _level ); 4e45e: 46c1 movew %d1,%sr <== NOT EXECUTED /* * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; 4e460: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED 4e464: 56c0 sne %d0 <== NOT EXECUTED needs_asr_dispatching = true; } } } if ( _System_state_Is_up( _System_state_Get() ) ) { 4e466: 7203 moveq #3,%d1 <== NOT EXECUTED /* * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; 4e468: 4480 negl %d0 <== NOT EXECUTED needs_asr_dispatching = true; } } } if ( _System_state_Is_up( _System_state_Get() ) ) { 4e46a: b2b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d1 <== NOT EXECUTED 4e470: 6744 beqs 4e4b6 <== NOT EXECUTED if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); } return RTEMS_SUCCESSFUL; 4e472: 4280 clrl %d0 } 4e474: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 4e47a: 4e5e unlk %fp 4e47c: 4e75 rts needs_asr_dispatching = true; } } } if ( _System_state_Is_up( _System_state_Get() ) ) { 4e47e: 7203 moveq #3,%d1 /* * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; 4e480: 4200 clrb %d0 needs_asr_dispatching = true; } } } if ( _System_state_Is_up( _System_state_Get() ) ) { 4e482: b2b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d1 4e488: 66e8 bnes 4e472 <== NEVER TAKEN 4e48a: 602a bras 4e4b6 if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4e48c: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED 4e490: 57c4 seq %d4 <== NOT EXECUTED old_mode |= _ISR_Get_level(); 4e492: 4eb9 0004 9c78 jsr 49c78 <_CPU_ISR_Get_level> <== NOT EXECUTED if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4e498: 49c4 extbl %d4 <== NOT EXECUTED 4e49a: 0284 0000 0400 andil #1024,%d4 <== NOT EXECUTED old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; 4e4a0: 08c3 0009 bset #9,%d3 <== NOT EXECUTED old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4e4a4: 8084 orl %d4,%d0 <== NOT EXECUTED old_mode |= _ISR_Get_level(); 4e4a6: 8083 orl %d3,%d0 <== NOT EXECUTED 4e4a8: 2880 movel %d0,%a4@ <== NOT EXECUTED *previous_mode_set = old_mode; /* * These are generic thread scheduling characteristics. */ if ( mask & RTEMS_PREEMPT_MASK ) 4e4aa: 0802 0008 btst #8,%d2 <== NOT EXECUTED 4e4ae: 6700 ff3e beqw 4e3ee <== NOT EXECUTED 4e4b2: 6000 ff2e braw 4e3e2 <== NOT EXECUTED bool are_signals_pending ) { Thread_Control *executing; executing = _Thread_Executing; 4e4b6: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 if ( are_signals_pending || 4e4bc: 4a00 tstb %d0 4e4be: 660e bnes 4e4ce <== NEVER TAKEN 4e4c0: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 4e4c6: 67aa beqs 4e472 <== ALWAYS TAKEN (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) { 4e4c8: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED 4e4cc: 67a4 beqs 4e472 <== NOT EXECUTED _Thread_Dispatch_necessary = true; 4e4ce: 7001 moveq #1,%d0 <== NOT EXECUTED 4e4d0: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED } } if ( _System_state_Is_up( _System_state_Get() ) ) { if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); 4e4d6: 4eb9 0004 87d4 jsr 487d4 <_Thread_Dispatch> <== NOT EXECUTED } return RTEMS_SUCCESSFUL; } 4e4dc: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED if ( _System_state_Is_up( _System_state_Get() ) ) { if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); } return RTEMS_SUCCESSFUL; 4e4e2: 4280 clrl %d0 <== NOT EXECUTED } 4e4e4: 4e5e unlk %fp <== NOT EXECUTED 4e4e6: 4e75 rts <== NOT EXECUTED } /* * Set the new interrupt level */ if ( mask & RTEMS_INTERRUPT_MASK ) 4e4e8: 7007 moveq #7,%d0 4e4ea: c082 andl %d2,%d0 if ( mask & RTEMS_TIMESLICE_MASK ) { if ( _Modes_Is_timeslice(mode_set) ) { executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; executing->cpu_time_budget = _Thread_Ticks_per_timeslice; } else executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 4e4ec: 42aa 007a clrl %a2@(122) } /* * Set the new interrupt level */ if ( mask & RTEMS_INTERRUPT_MASK ) 4e4f0: 4a80 tstl %d0 4e4f2: 6700 ff30 beqw 4e424 4e4f6: 6000 ff1a braw 4e412 bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set ) return RTEMS_INVALID_ADDRESS; 4e4fa: 7009 moveq #9,%d0 <== NOT EXECUTED if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); } return RTEMS_SUCCESSFUL; } 4e4fc: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4e502: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000474a8 : rtems_status_code rtems_task_restart( rtems_id id, uint32_t argument ) { 474a8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 474ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474b0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 474b4: 4eb9 0004 9578 jsr 49578 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 474ba: 508f addql #8,%sp <== NOT EXECUTED 474bc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474c0: 6622 bnes 474e4 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_Restart( the_thread, NULL, argument ) ) { 474c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 474c6: 42a7 clrl %sp@- <== NOT EXECUTED 474c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 474ca: 4eb9 0004 9e28 jsr 49e28 <_Thread_Restart> <== NOT EXECUTED 474d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474d4: 4a00 tstb %d0 <== NOT EXECUTED 474d6: 6612 bnes 474ea <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 474d8: 4eb9 0004 9552 jsr 49552 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INCORRECT_STATE; 474de: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 474e0: 4e5e unlk %fp <== NOT EXECUTED 474e2: 4e75 rts <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 474e4: 7004 moveq #4,%d0 <== NOT EXECUTED } 474e6: 4e5e unlk %fp <== NOT EXECUTED 474e8: 4e75 rts <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( _Thread_Restart( the_thread, NULL, argument ) ) { _Thread_Enable_dispatch(); 474ea: 4eb9 0004 9552 jsr 49552 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 474f0: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 474f2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049f14 : */ rtems_status_code rtems_task_resume( rtems_id id ) { 49f14: 4e56 fffc linkw %fp,#-4 register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 49f18: 486e fffc pea %fp@(-4) 49f1c: 2f2e 0008 movel %fp@(8),%sp@- 49f20: 4eb9 0004 c010 jsr 4c010 <_Thread_Get> switch ( location ) { 49f26: 508f addql #8,%sp 49f28: 4aae fffc tstl %fp@(-4) 49f2c: 6706 beqs 49f34 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 49f2e: 7004 moveq #4,%d0 <== NOT EXECUTED } 49f30: 4e5e unlk %fp <== NOT EXECUTED 49f32: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 49f34: 7202 moveq #2,%d1 49f36: 2040 moveal %d0,%a0 49f38: c2a8 0010 andl %a0@(16),%d1 the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( _States_Is_suspended( the_thread->current_state ) ) { 49f3c: 660c bnes 49f4a <== ALWAYS TAKEN _Thread_Resume( the_thread, true ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 49f3e: 4eb9 0004 bfea jsr 4bfea <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INCORRECT_STATE; 49f44: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 49f46: 4e5e unlk %fp <== NOT EXECUTED 49f48: 4e75 rts <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( _States_Is_suspended( the_thread->current_state ) ) { _Thread_Resume( the_thread, true ); 49f4a: 4878 0001 pea 1 49f4e: 2f00 movel %d0,%sp@- 49f50: 4eb9 0004 c8c0 jsr 4c8c0 <_Thread_Resume> _Thread_Enable_dispatch(); 49f56: 4eb9 0004 bfea jsr 4bfea <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 49f5c: 508f addql #8,%sp 49f5e: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 49f60: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048e20 : rtems_status_code rtems_task_set_note( rtems_id id, uint32_t notepad, uint32_t note ) { 48e20: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48e24: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 48e28: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48e2a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 48e2e: 4a39 0006 18c4 tstb 618c4 <== NOT EXECUTED 48e34: 676e beqs 48ea4 <== NOT EXECUTED /* * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) 48e36: 720f moveq #15,%d1 <== NOT EXECUTED 48e38: b282 cmpl %d2,%d1 <== NOT EXECUTED 48e3a: 6542 bcss 48e7e <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48e3c: 4a80 tstl %d0 <== NOT EXECUTED 48e3e: 6748 beqs 48e88 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { 48e40: 2079 0006 38dc moveal 638dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48e46: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 48e4a: 6742 beqs 48e8e <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 48e4c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48e50: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48e52: 4eb9 0004 b110 jsr 4b110 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 48e58: 508f addql #8,%sp <== NOT EXECUTED 48e5a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48e5e: 664e bnes 48eae <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 48e60: 2240 moveal %d0,%a1 <== NOT EXECUTED 48e62: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 48e66: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 48e6a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 48e6e: 4eb9 0004 b0ea jsr 4b0ea <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48e74: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 48e78: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48e7a: 4e5e unlk %fp <== NOT EXECUTED 48e7c: 4e75 rts <== NOT EXECUTED 48e7e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) return RTEMS_INVALID_NUMBER; 48e82: 700a moveq #10,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48e84: 4e5e unlk %fp <== NOT EXECUTED 48e86: 4e75 rts <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 48e88: 2079 0006 38dc moveal 638dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 48e8e: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 48e92: 4280 clrl %d0 <== NOT EXECUTED */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 48e94: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 48e98: 2189 2c1e movel %a1,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48e9c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48ea0: 4e5e unlk %fp <== NOT EXECUTED 48ea2: 4e75 rts <== NOT EXECUTED 48ea4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) return RTEMS_NOT_CONFIGURED; 48ea8: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48eaa: 4e5e unlk %fp <== NOT EXECUTED 48eac: 4e75 rts <== NOT EXECUTED 48eae: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 48eb2: 7004 moveq #4,%d0 <== NOT EXECUTED } 48eb4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004acfc : rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) { 4acfc: 4e56 fffc linkw %fp,#-4 4ad00: 2f0a movel %a2,%sp@- 4ad02: 246e 0010 moveal %fp@(16),%a2 4ad06: 2f02 movel %d2,%sp@- 4ad08: 242e 000c movel %fp@(12),%d2 register Thread_Control *the_thread; Objects_Locations location; if ( new_priority != RTEMS_CURRENT_PRIORITY && 4ad0c: 670c beqs 4ad1a <== NEVER TAKEN RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 4ad0e: 4280 clrl %d0 4ad10: 1039 0006 2812 moveb 62812 ,%d0 */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 4ad16: b082 cmpl %d2,%d0 4ad18: 6566 bcss 4ad80 <== NEVER TAKEN !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; if ( !old_priority ) 4ad1a: 4a8a tstl %a2 4ad1c: 6770 beqs 4ad8e <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 4ad1e: 486e fffc pea %fp@(-4) 4ad22: 2f2e 0008 movel %fp@(8),%sp@- 4ad26: 4eb9 0004 cfa4 jsr 4cfa4 <_Thread_Get> switch ( location ) { 4ad2c: 508f addql #8,%sp 4ad2e: 4aae fffc tstl %fp@(-4) 4ad32: 663e bnes 4ad72 <== NEVER TAKEN case OBJECTS_LOCAL: /* XXX need helper to "convert" from core priority */ *old_priority = the_thread->current_priority; 4ad34: 2040 moveal %d0,%a0 4ad36: 24a8 0014 movel %a0@(20),%a2@ if ( new_priority != RTEMS_CURRENT_PRIORITY ) { 4ad3a: 4a82 tstl %d2 4ad3c: 6720 beqs 4ad5e <== NEVER TAKEN the_thread->real_priority = new_priority; 4ad3e: 2142 0018 movel %d2,%a0@(24) if ( the_thread->resource_count == 0 || 4ad42: 4aa8 001c tstl %a0@(28) 4ad46: 6706 beqs 4ad4e <== ALWAYS TAKEN 4ad48: b4a8 0014 cmpl %a0@(20),%d2 4ad4c: 6410 bccs 4ad5e the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, false ); 4ad4e: 42a7 clrl %sp@- 4ad50: 2f02 movel %d2,%sp@- 4ad52: 2f00 movel %d0,%sp@- 4ad54: 4eb9 0004 ca88 jsr 4ca88 <_Thread_Change_priority> 4ad5a: 4fef 000c lea %sp@(12),%sp } _Thread_Enable_dispatch(); 4ad5e: 4eb9 0004 cf7e jsr 4cf7e <_Thread_Enable_dispatch> case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ad64: 242e fff4 movel %fp@(-12),%d2 if ( the_thread->resource_count == 0 || the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, false ); } _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4ad68: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ad6a: 246e fff8 moveal %fp@(-8),%a2 4ad6e: 4e5e unlk %fp 4ad70: 4e75 rts 4ad72: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ad76: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ad78: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ad7c: 4e5e unlk %fp <== NOT EXECUTED 4ad7e: 4e75 rts <== NOT EXECUTED 4ad80: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; if ( new_priority != RTEMS_CURRENT_PRIORITY && !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; 4ad84: 7013 moveq #19,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ad86: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ad8a: 4e5e unlk %fp <== NOT EXECUTED 4ad8c: 4e75 rts <== NOT EXECUTED 4ad8e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED if ( new_priority != RTEMS_CURRENT_PRIORITY && !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; if ( !old_priority ) return RTEMS_INVALID_ADDRESS; 4ad92: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4ad94: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ad98: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046904 : rtems_status_code rtems_task_start( rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument ) { 46904: 4e56 fffc linkw %fp,#-4 46908: 2f02 movel %d2,%sp@- 4690a: 242e 000c movel %fp@(12),%d2 register Thread_Control *the_thread; Objects_Locations location; if ( entry_point == NULL ) 4690e: 674a beqs 4695a return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 46910: 486e fffc pea %fp@(-4) 46914: 2f2e 0008 movel %fp@(8),%sp@- 46918: 4eb9 0004 8964 jsr 48964 <_Thread_Get> switch ( location ) { 4691e: 508f addql #8,%sp 46920: 4aae fffc tstl %fp@(-4) 46924: 662a bnes 46950 <== NEVER TAKEN case OBJECTS_LOCAL: if ( _Thread_Start( 46926: 2f2e 0010 movel %fp@(16),%sp@- 4692a: 42a7 clrl %sp@- 4692c: 2f02 movel %d2,%sp@- 4692e: 42a7 clrl %sp@- 46930: 2f00 movel %d0,%sp@- 46932: 4eb9 0004 93f8 jsr 493f8 <_Thread_Start> 46938: 4fef 0014 lea %sp@(20),%sp 4693c: 4a00 tstb %d0 4693e: 6624 bnes 46964 <== ALWAYS TAKEN the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 46940: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46946: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); return RTEMS_INCORRECT_STATE; 4694a: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4694c: 4e5e unlk %fp <== NOT EXECUTED 4694e: 4e75 rts <== NOT EXECUTED 46950: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 46954: 7004 moveq #4,%d0 <== NOT EXECUTED } 46956: 4e5e unlk %fp <== NOT EXECUTED 46958: 4e75 rts <== NOT EXECUTED 4695a: 242e fff8 movel %fp@(-8),%d2 { register Thread_Control *the_thread; Objects_Locations location; if ( entry_point == NULL ) return RTEMS_INVALID_ADDRESS; 4695e: 7009 moveq #9,%d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46960: 4e5e unlk %fp 46962: 4e75 rts switch ( location ) { case OBJECTS_LOCAL: if ( _Thread_Start( the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); 46964: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4696a: 242e fff8 movel %fp@(-8),%d2 case OBJECTS_LOCAL: if ( _Thread_Start( the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4696e: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46970: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046974 : */ rtems_status_code rtems_task_suspend( rtems_id id ) { 46974: 4e56 fffc linkw %fp,#-4 register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 46978: 486e fffc pea %fp@(-4) 4697c: 2f2e 0008 movel %fp@(8),%sp@- 46980: 4eb9 0004 8964 jsr 48964 <_Thread_Get> switch ( location ) { 46986: 508f addql #8,%sp 46988: 4aae fffc tstl %fp@(-4) 4698c: 6706 beqs 46994 <== ALWAYS TAKEN case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4698e: 7004 moveq #4,%d0 <== NOT EXECUTED } 46990: 4e5e unlk %fp <== NOT EXECUTED 46992: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 46994: 7202 moveq #2,%d1 46996: 2040 moveal %d0,%a0 46998: c2a8 0010 andl %a0@(16),%d1 the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 4699c: 670c beqs 469aa <== ALWAYS TAKEN _Thread_Suspend( the_thread ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 4699e: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_ALREADY_SUSPENDED; 469a4: 700f moveq #15,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 469a6: 4e5e unlk %fp <== NOT EXECUTED 469a8: 4e75 rts <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { _Thread_Suspend( the_thread ); 469aa: 2f00 movel %d0,%sp@- 469ac: 4eb9 0004 9454 jsr 49454 <_Thread_Suspend> _Thread_Enable_dispatch(); 469b2: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 469b8: 588f addql #4,%sp 469ba: 4280 clrl %d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 469bc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000477a8 : rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) { 477a8: 4e56 fff0 linkw %fp,#-16 477ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 477b0: 246e 000c moveal %fp@(12),%a2 477b4: 242e 0010 movel %fp@(16),%d2 Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *new; if ( !ptr ) 477b8: 4a8a tstl %a2 477ba: 6700 009a beqw 47856 return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 477be: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477c2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 477c6: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED switch (location) { 477cc: 508f addql #8,%sp <== NOT EXECUTED rtems_task_variable_t *tvp, *new; if ( !ptr ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 477ce: 2640 moveal %d0,%a3 <== NOT EXECUTED switch (location) { 477d0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 477d4: 664c bnes 47822 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is already in this task's list. */ tvp = the_thread->task_variables; 477d6: 206b 010a moveal %a3@(266),%a0 <== NOT EXECUTED while (tvp) { 477da: 4a88 tstl %a0 <== NOT EXECUTED 477dc: 670c beqs 477ea <== NOT EXECUTED if (tvp->ptr == ptr) { 477de: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 477e2: 674a beqs 4782e <== NOT EXECUTED tvp->dtor = dtor; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; 477e4: 2050 moveal %a0@,%a0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is already in this task's list. */ tvp = the_thread->task_variables; while (tvp) { 477e6: 4a88 tstl %a0 <== NOT EXECUTED 477e8: 66f4 bnes 477de <== NOT EXECUTED /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) _Workspace_Allocate(sizeof(rtems_task_variable_t)); 477ea: 4878 0014 pea 14 <== NOT EXECUTED 477ee: 4eb9 0004 aaee jsr 4aaee <_Workspace_Allocate> <== NOT EXECUTED if (new == NULL) { 477f4: 588f addql #4,%sp <== NOT EXECUTED /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) _Workspace_Allocate(sizeof(rtems_task_variable_t)); 477f6: 2040 moveal %d0,%a0 <== NOT EXECUTED if (new == NULL) { 477f8: 4a80 tstl %d0 <== NOT EXECUTED 477fa: 6748 beqs 47844 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_NO_MEMORY; } new->gval = *ptr; 477fc: 2152 0008 movel %a2@,%a0@(8) <== NOT EXECUTED new->ptr = ptr; new->dtor = dtor; new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; 47800: 20ab 010a movel %a3@(266),%a0@ <== NOT EXECUTED if (new == NULL) { _Thread_Enable_dispatch(); return RTEMS_NO_MEMORY; } new->gval = *ptr; new->ptr = ptr; 47804: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED new->dtor = dtor; 47808: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; the_thread->task_variables = new; 4780c: 2740 010a movel %d0,%a3@(266) <== NOT EXECUTED _Thread_Enable_dispatch(); 47810: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47816: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED new->dtor = dtor; new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; the_thread->task_variables = new; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4781c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4781e: 4e5e unlk %fp <== NOT EXECUTED 47820: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 47822: 7004 moveq #4,%d0 <== NOT EXECUTED } 47824: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4782a: 4e5e unlk %fp <== NOT EXECUTED 4782c: 4e75 rts <== NOT EXECUTED * Figure out if the variable is already in this task's list. */ tvp = the_thread->task_variables; while (tvp) { if (tvp->ptr == ptr) { tvp->dtor = dtor; 4782e: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED _Thread_Enable_dispatch(); 47832: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47838: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED tvp = the_thread->task_variables; while (tvp) { if (tvp->ptr == ptr) { tvp->dtor = dtor; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4783e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47840: 4e5e unlk %fp <== NOT EXECUTED 47842: 4e75 rts <== NOT EXECUTED * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) _Workspace_Allocate(sizeof(rtems_task_variable_t)); if (new == NULL) { _Thread_Enable_dispatch(); 47844: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_NO_MEMORY; 4784a: 701a moveq #26,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4784c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 47852: 4e5e unlk %fp <== NOT EXECUTED 47854: 4e75 rts <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *new; if ( !ptr ) return RTEMS_INVALID_ADDRESS; 47856: 7009 moveq #9,%d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47858: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 4785e: 4e5e unlk %fp ... =============================================================================== 00047864 : rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) { 47864: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47868: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4786a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *prev; if ( !ptr ) 4786e: 6772 beqs 478e2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; prev = NULL; the_thread = _Thread_Get (tid, &location); 47870: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47874: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47878: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED switch (location) { 4787e: 508f addql #8,%sp <== NOT EXECUTED 47880: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47884: 6634 bnes 478ba <== NOT EXECUTED case OBJECTS_LOCAL: tvp = the_thread->task_variables; 47886: 2040 moveal %d0,%a0 <== NOT EXECUTED 47888: 2268 010a moveal %a0@(266),%a1 <== NOT EXECUTED while (tvp) { 4788c: 4a89 tstl %a1 <== NOT EXECUTED 4788e: 671a beqs 478aa <== NOT EXECUTED if (tvp->ptr == ptr) { 47890: b4a9 0004 cmpl %a1@(4),%d2 <== NOT EXECUTED 47894: 6756 beqs 478ec <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; 47896: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_thread = _Thread_Get (tid, &location); switch (location) { case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { 47898: 4a88 tstl %a0 <== NOT EXECUTED 4789a: 670e beqs 478aa <== NOT EXECUTED if (tvp->ptr == ptr) { 4789c: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 478a0: 6722 beqs 478c4 <== NOT EXECUTED 478a2: 2248 moveal %a0,%a1 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; 478a4: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_thread = _Thread_Get (tid, &location); switch (location) { case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { 478a6: 4a88 tstl %a0 <== NOT EXECUTED 478a8: 66f2 bnes 4789c <== NOT EXECUTED return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 478aa: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 478b0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); return RTEMS_INVALID_ADDRESS; 478b4: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 478b6: 4e5e unlk %fp <== NOT EXECUTED 478b8: 4e75 rts <== NOT EXECUTED 478ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 478be: 7004 moveq #4,%d0 <== NOT EXECUTED } 478c0: 4e5e unlk %fp <== NOT EXECUTED 478c2: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { if (tvp->ptr == ptr) { if (prev) prev->next = tvp->next; 478c4: 2290 movel %a0@,%a1@ <== NOT EXECUTED else the_thread->task_variables = (rtems_task_variable_t *)tvp->next; _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); 478c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 478c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 478ca: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED _Thread_Enable_dispatch(); 478d0: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 478d6: 508f addql #8,%sp <== NOT EXECUTED 478d8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 478da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 478de: 4e5e unlk %fp <== NOT EXECUTED 478e0: 4e75 rts <== NOT EXECUTED 478e2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *prev; if ( !ptr ) return RTEMS_INVALID_ADDRESS; 478e6: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 478e8: 4e5e unlk %fp <== NOT EXECUTED 478ea: 4e75 rts <== NOT EXECUTED while (tvp) { if (tvp->ptr == ptr) { if (prev) prev->next = tvp->next; else the_thread->task_variables = (rtems_task_variable_t *)tvp->next; 478ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 478ee: 2151 010a movel %a1@,%a0@(266) <== NOT EXECUTED 478f2: 2049 moveal %a1,%a0 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); 478f4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 478f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 478f8: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED _Thread_Enable_dispatch(); 478fe: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 47904: 508f addql #8,%sp <== NOT EXECUTED 47906: 4280 clrl %d0 <== NOT EXECUTED 47908: 60d0 bras 478da <== NOT EXECUTED ... =============================================================================== 0004790c : rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) { 4790c: 4e56 fffc linkw %fp,#-4 47910: 2f0a movel %a2,%sp@- 47912: 246e 0010 moveal %fp@(16),%a2 47916: 2f02 movel %d2,%sp@- 47918: 242e 000c movel %fp@(12),%d2 Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp; if ( !ptr ) 4791c: 6752 beqs 47970 <== ALWAYS TAKEN return RTEMS_INVALID_ADDRESS; if ( !result ) 4791e: 4a8a tstl %a2 <== NOT EXECUTED 47920: 674e beqs 47970 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 47922: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47926: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4792a: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED switch (location) { 47930: 508f addql #8,%sp <== NOT EXECUTED 47932: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47936: 662a bnes 47962 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is in this task's list. */ tvp = the_thread->task_variables; 47938: 2240 moveal %d0,%a1 <== NOT EXECUTED 4793a: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED while (tvp) { 4793e: 4a88 tstl %a0 <== NOT EXECUTED 47940: 670c beqs 4794e <== NOT EXECUTED if (tvp->ptr == ptr) { 47942: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 47946: 6736 beqs 4797e <== NOT EXECUTED */ *result = tvp->tval; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; 47948: 2050 moveal %a0@,%a0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is in this task's list. */ tvp = the_thread->task_variables; while (tvp) { 4794a: 4a88 tstl %a0 <== NOT EXECUTED 4794c: 66f4 bnes 47942 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 4794e: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47954: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); return RTEMS_INVALID_ADDRESS; 47958: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4795a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4795e: 4e5e unlk %fp <== NOT EXECUTED 47960: 4e75 rts <== NOT EXECUTED 47962: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 47966: 7004 moveq #4,%d0 <== NOT EXECUTED } 47968: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4796c: 4e5e unlk %fp <== NOT EXECUTED 4796e: 4e75 rts <== NOT EXECUTED 47970: 242e fff4 movel %fp@(-12),%d2 if ( !ptr ) return RTEMS_INVALID_ADDRESS; if ( !result ) return RTEMS_INVALID_ADDRESS; 47974: 7009 moveq #9,%d0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47976: 246e fff8 moveal %fp@(-8),%a2 4797a: 4e5e unlk %fp 4797c: 4e75 rts if (tvp->ptr == ptr) { /* * Should this return the current (i.e not the * saved) value if `tid' is the current task? */ *result = tvp->tval; 4797e: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 47982: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 47988: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED * Should this return the current (i.e not the * saved) value if `tid' is the current task? */ *result = tvp->tval; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 4798c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4798e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47992: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000469c0 : */ rtems_status_code rtems_task_wake_after( rtems_interval ticks ) { 469c0: 4e56 0000 linkw %fp,#0 469c4: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0 469ca: 5280 addql #1,%d0 469cc: 2f02 movel %d2,%sp@- 469ce: 242e 0008 movel %fp@(8),%d2 469d2: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); if ( ticks == 0 ) { 469d8: 4a82 tstl %d2 469da: 6758 beqs 46a34 <== NEVER TAKEN _Scheduler_Yield(); } else { _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); 469dc: 4878 0008 pea 8 469e0: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@- 469e6: 4eb9 0004 923c jsr 4923c <_Thread_Set_state> _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 469ec: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 469f2: 203c 0004 8798 movel #296856,%d0 469f8: 2140 0064 movel %d0,%a0@(100) _Thread_Disable_dispatch(); if ( ticks == 0 ) { _Scheduler_Yield(); } else { _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); _Watchdog_Initialize( 469fc: 2028 0008 movel %a0@(8),%d0 Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46a00: 2142 0054 movel %d2,%a0@(84) void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 46a04: 2140 0068 movel %d0,%a0@(104) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46a08: 42a8 0050 clrl %a0@(80) the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 46a0c: 42a8 006c clrl %a0@(108) ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 46a10: 4868 0048 pea %a0@(72) 46a14: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> 46a1a: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert> 46a20: 4fef 0010 lea %sp@(16),%sp _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); } _Thread_Enable_dispatch(); 46a24: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; } 46a2a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46a2e: 4280 clrl %d0 <== NOT EXECUTED 46a30: 4e5e unlk %fp <== NOT EXECUTED 46a32: 4e75 rts <== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 46a34: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED 46a3a: 2079 0005 fd06 moveal 5fd06 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 46a40: 4e90 jsr %a0@ <== NOT EXECUTED 46a42: 588f addql #4,%sp <== NOT EXECUTED _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); } _Thread_Enable_dispatch(); 46a44: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 46a4a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46a4e: 4280 clrl %d0 <== NOT EXECUTED 46a50: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047958 : */ rtems_status_code rtems_task_wake_when( rtems_time_of_day *time_buffer ) { 47958: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4795c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4795e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Watchdog_Interval seconds; if ( !_TOD_Is_set ) 47962: 4a39 0006 1600 tstb 61600 <_TOD_Is_set> <== NOT EXECUTED 47968: 6700 00aa beqw 47a14 <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !time_buffer ) 4796c: 4a8a tstl %a2 <== NOT EXECUTED 4796e: 6700 00ae beqw 47a1e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; time_buffer->ticks = 0; 47972: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED if ( !_TOD_Validate( time_buffer ) ) 47976: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47978: 4eb9 0004 6c64 jsr 46c64 <_TOD_Validate> <== NOT EXECUTED 4797e: 588f addql #4,%sp <== NOT EXECUTED 47980: 4a00 tstb %d0 <== NOT EXECUTED 47982: 660a bnes 4798e <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 47984: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; 47988: 7014 moveq #20,%d0 <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4798a: 4e5e unlk %fp <== NOT EXECUTED 4798c: 4e75 rts <== NOT EXECUTED time_buffer->ticks = 0; if ( !_TOD_Validate( time_buffer ) ) return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); 4798e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47990: 4eb9 0004 6b5c jsr 46b5c <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 47996: 588f addql #4,%sp <== NOT EXECUTED 47998: b0b9 0006 169a cmpl 6169a <_TOD_Now>,%d0 <== NOT EXECUTED 4799e: 63e4 blss 47984 <== NOT EXECUTED 479a0: 2239 0006 15f0 movel 615f0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 479a6: 5281 addql #1,%d1 <== NOT EXECUTED 479a8: 23c1 0006 15f0 movel %d1,615f0 <_Thread_Dispatch_disable_level><== NOT EXECUTED return RTEMS_INVALID_CLOCK; _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); 479ae: 4878 0010 pea 10 <== NOT EXECUTED 479b2: 2f39 0006 1a7a movel 61a7a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 479b8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 479bc: 4eb9 0004 a228 jsr 4a228 <_Thread_Set_state> <== NOT EXECUTED &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_seconds( 479c2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 479c6: 90b9 0006 169a subl 6169a <_TOD_Now>,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 479cc: 2079 0006 1a7a moveal 61a7a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED NULL ); _Watchdog_Insert_seconds( 479d2: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 479d6: 203c 0004 9784 movel #300932,%d0 <== NOT EXECUTED 479dc: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); _Watchdog_Initialize( 479e0: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 479e4: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 479e8: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED the_watchdog->user_data = user_data; 479ec: 42a8 006c clrl %a0@(108) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 479f0: 4868 0048 pea %a0@(72) <== NOT EXECUTED 479f4: 4879 0006 16c4 pea 616c4 <_Watchdog_Seconds_chain> <== NOT EXECUTED 479fa: 4eb9 0004 a8fc jsr 4a8fc <_Watchdog_Insert> <== NOT EXECUTED ); _Watchdog_Insert_seconds( &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); 47a00: 4eb9 0004 992a jsr 4992a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 47a06: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Watchdog_Insert_seconds( &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 47a0a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47a0e: 4280 clrl %d0 <== NOT EXECUTED } 47a10: 4e5e unlk %fp <== NOT EXECUTED 47a12: 4e75 rts <== NOT EXECUTED 47a14: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED ) { Watchdog_Interval seconds; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 47a18: 700b moveq #11,%d0 <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 47a1a: 4e5e unlk %fp <== NOT EXECUTED 47a1c: 4e75 rts <== NOT EXECUTED 47a1e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 47a22: 7009 moveq #9,%d0 <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 47a24: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00058954 : */ rtems_status_code rtems_timer_cancel( rtems_id id ) { 58954: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 58958: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5895c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58960: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58966: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 5896c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58970: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58974: 6706 beqs 5897c <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58976: 7004 moveq #4,%d0 <== NOT EXECUTED } 58978: 4e5e unlk %fp <== NOT EXECUTED 5897a: 4e75 rts <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Timer_Is_dormant_class( the_timer->the_class ) ) 5897c: 7204 moveq #4,%d1 <== NOT EXECUTED 5897e: 2040 moveal %d0,%a0 <== NOT EXECUTED 58980: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED 58984: 670c beqs 58992 <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 58986: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5898a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED 58990: 588f addql #4,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 58992: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 58998: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5899a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046c70 : rtems_status_code rtems_timer_create( rtems_name name, rtems_id *id ) { 46c70: 4e56 fff4 linkw %fp,#-12 46c74: 48d7 040c moveml %d2-%d3/%a2,%sp@ 46c78: 242e 0008 movel %fp@(8),%d2 46c7c: 246e 000c moveal %fp@(12),%a2 Timer_Control *the_timer; if ( !rtems_is_name_valid( name ) ) 46c80: 6768 beqs 46cea <== NEVER TAKEN return RTEMS_INVALID_NAME; if ( !id ) 46c82: 4a8a tstl %a2 46c84: 6700 0082 beqw 46d08 46c88: 2039 0005 ffda movel 5ffda <_Thread_Dispatch_disable_level>,%d0 46c8e: 5280 addql #1,%d0 46c90: 23c0 0005 ffda movel %d0,5ffda <_Thread_Dispatch_disable_level> * This function allocates a timer control block from * the inactive chain of free timer control blocks. */ RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void ) { return (Timer_Control *) _Objects_Allocate( &_Timer_Information ); 46c96: 4879 0006 083c pea 6083c <_Timer_Information> 46c9c: 4eb9 0004 7c64 jsr 47c64 <_Objects_Allocate> _Thread_Disable_dispatch(); /* to prevent deletion */ the_timer = _Timer_Allocate(); if ( !the_timer ) { 46ca2: 588f addql #4,%sp 46ca4: 2040 moveal %d0,%a0 46ca6: 4a80 tstl %d0 46ca8: 674c beqs 46cf6 <== NEVER TAKEN Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46caa: 2028 0008 movel %a0@(8),%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46cae: 4281 clrl %d1 _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_timer->the_class = TIMER_DORMANT; 46cb0: 7604 moveq #4,%d3 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46cb2: 2279 0006 0854 moveal 60854 <_Timer_Information+0x18>,%a1 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46cb8: 3200 movew %d0,%d1 46cba: 2143 0038 movel %d3,%a0@(56) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46cbe: 42a8 0018 clrl %a0@(24) the_watchdog->routine = routine; 46cc2: 42a8 002c clrl %a0@(44) the_watchdog->id = id; 46cc6: 42a8 0030 clrl %a0@(48) the_watchdog->user_data = user_data; 46cca: 42a8 0034 clrl %a0@(52) #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46cce: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 46cd2: 2142 000c movel %d2,%a0@(12) &_Timer_Information, &the_timer->Object, (Objects_Name) name ); *id = the_timer->Object.id; 46cd6: 2480 movel %d0,%a2@ _Thread_Enable_dispatch(); 46cd8: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; } 46cde: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 (Objects_Name) name ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 46ce4: 4280 clrl %d0 } 46ce6: 4e5e unlk %fp 46ce8: 4e75 rts ) { Timer_Control *the_timer; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 46cea: 7003 moveq #3,%d0 <== NOT EXECUTED ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46cec: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46cf2: 4e5e unlk %fp <== NOT EXECUTED 46cf4: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_timer = _Timer_Allocate(); if ( !the_timer ) { _Thread_Enable_dispatch(); 46cf6: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 46cfc: 7005 moveq #5,%d0 <== NOT EXECUTED ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46cfe: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d04: 4e5e unlk %fp <== NOT EXECUTED 46d06: 4e75 rts <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; 46d08: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46d0a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d10: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00058a44 : */ rtems_status_code rtems_timer_delete( rtems_id id ) { 58a44: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58a48: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 58a4a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58a4e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58a52: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58a58: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58a5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58a62: 2440 moveal %d0,%a2 <== NOT EXECUTED 58a64: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58a68: 663a bnes 58aa4 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Timer_Information, &the_timer->Object ); 58a6a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 58a6c: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58a72: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 58a78: 486a 0010 pea %a2@(16) <== NOT EXECUTED 58a7c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Timer_Free ( Timer_Control *the_timer ) { _Objects_Free( &_Timer_Information, &the_timer->Object ); 58a82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58a84: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58a8a: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED _Timer_Free( the_timer ); _Thread_Enable_dispatch(); 58a90: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58a96: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Timer_Information, &the_timer->Object ); (void) _Watchdog_Remove( &the_timer->Ticker ); _Timer_Free( the_timer ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 58a9a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 58a9e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58aa0: 4e5e unlk %fp <== NOT EXECUTED 58aa2: 4e75 rts <== NOT EXECUTED 58aa4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58aa8: 7004 moveq #4,%d0 <== NOT EXECUTED } 58aaa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046d14 : rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 46d14: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46d18: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 46d1c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 46d20: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46d24: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( ticks == 0 ) 46d28: 4a82 tstl %d2 <== NOT EXECUTED 46d2a: 6700 0094 beqw 46dc0 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( !routine ) 46d2e: 4a83 tstl %d3 <== NOT EXECUTED 46d30: 6700 00ae beqw 46de0 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 46d34: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46d38: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46d3a: 4879 0006 083c pea 6083c <_Timer_Information> <== NOT EXECUTED 46d40: 4eb9 0004 8124 jsr 48124 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 46d46: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d4a: 2440 moveal %d0,%a2 <== NOT EXECUTED 46d4c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46d50: 6662 bnes 46db4 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 46d52: 2a00 movel %d0,%d5 <== NOT EXECUTED 46d54: 0685 0000 0010 addil #16,%d5 <== NOT EXECUTED 46d5a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46d5c: 4eb9 0004 9ce8 jsr 49ce8 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 46d62: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46d68: 40c1 movew %sr,%d1 <== NOT EXECUTED 46d6a: 8081 orl %d1,%d0 <== NOT EXECUTED 46d6c: 46c0 movew %d0,%sr <== NOT EXECUTED /* * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) { 46d6e: 588f addql #4,%sp <== NOT EXECUTED 46d70: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 46d74: 6656 bnes 46dcc <== NOT EXECUTED /* * OK. Now we now the timer was not rescheduled by an interrupt * so we can atomically initialize it as in use. */ the_timer->the_class = TIMER_INTERVAL; 46d76: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED 46d7a: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46d80: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 46d84: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 46d88: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _ISR_Enable( level ); 46d8c: 46c1 movew %d1,%sr <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46d8e: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 46d92: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46d94: 4879 0006 00ba pea 600ba <_Watchdog_Ticks_chain> <== NOT EXECUTED 46d9a: 4eb9 0004 9b94 jsr 49b94 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_timer->Ticker, ticks ); _Thread_Enable_dispatch(); 46da0: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46da6: 508f addql #8,%sp <== NOT EXECUTED 46da8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46daa: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46db0: 4e5e unlk %fp <== NOT EXECUTED 46db2: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 46db4: 7004 moveq #4,%d0 <== NOT EXECUTED } 46db6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dbc: 4e5e unlk %fp <== NOT EXECUTED 46dbe: 4e75 rts <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( ticks == 0 ) return RTEMS_INVALID_NUMBER; 46dc0: 700a moveq #10,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46dc2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dc8: 4e5e unlk %fp <== NOT EXECUTED 46dca: 4e75 rts <== NOT EXECUTED * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); 46dcc: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 46dce: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46dd4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46dd6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46ddc: 4e5e unlk %fp <== NOT EXECUTED 46dde: 4e75 rts <== NOT EXECUTED if ( ticks == 0 ) return RTEMS_INVALID_NUMBER; if ( !routine ) return RTEMS_INVALID_ADDRESS; 46de0: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46de2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46de8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00058b88 : rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 58b88: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58b8c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 58b90: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58b94: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; if ( !_TOD_Is_set ) 58b98: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED 58b9e: 660c bnes 58bac <== NOT EXECUTED return RTEMS_NOT_DEFINED; 58ba0: 700b moveq #11,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58ba2: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58ba8: 4e5e unlk %fp <== NOT EXECUTED 58baa: 4e75 rts <== NOT EXECUTED rtems_interval seconds; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; if ( !_TOD_Validate( wall_time ) ) 58bac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58bae: 4eb9 0005 5bd0 jsr 55bd0 <_TOD_Validate> <== NOT EXECUTED 58bb4: 588f addql #4,%sp <== NOT EXECUTED 58bb6: 4a00 tstb %d0 <== NOT EXECUTED 58bb8: 671a beqs 58bd4 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) 58bba: 4a83 tstl %d3 <== NOT EXECUTED 58bbc: 6700 00a8 beqw 58c66 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 58bc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58bc2: 4eb9 0005 5ac8 jsr 55ac8 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 58bc8: 588f addql #4,%sp <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 58bca: 2400 movel %d0,%d2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 58bcc: b0b9 0007 eb96 cmpl 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED 58bd2: 620c bhis 58be0 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; 58bd4: 7014 moveq #20,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58bd6: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58bdc: 4e5e unlk %fp <== NOT EXECUTED 58bde: 4e75 rts <== NOT EXECUTED 58be0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58be4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58be8: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58bee: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED seconds = _TOD_To_seconds( wall_time ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58bf4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58bf8: 2440 moveal %d0,%a2 <== NOT EXECUTED 58bfa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58bfe: 665a bnes 58c5a <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 58c00: 2800 movel %d0,%d4 <== NOT EXECUTED 58c02: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED 58c08: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c0a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 58c10: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED the_timer->the_class = TIMER_TIME_OF_DAY; 58c16: 7002 moveq #2,%d0 <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _Watchdog_Insert_seconds( 58c18: 94b9 0007 eb96 subl 7eb96 <_TOD_Now>,%d2 <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); the_timer->the_class = TIMER_TIME_OF_DAY; 58c1e: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 58c22: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _Watchdog_Insert_seconds( 58c26: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED 58c2a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 58c2e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 58c32: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 58c36: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c38: 4879 0007 ebc0 pea 7ebc0 <_Watchdog_Seconds_chain> <== NOT EXECUTED 58c3e: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED &the_timer->Ticker, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); 58c44: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 58c4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c4e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58c50: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c56: 4e5e unlk %fp <== NOT EXECUTED 58c58: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58c5a: 7004 moveq #4,%d0 <== NOT EXECUTED } 58c5c: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c62: 4e5e unlk %fp <== NOT EXECUTED 58c64: 4e75 rts <== NOT EXECUTED if ( !_TOD_Validate( wall_time ) ) return RTEMS_INVALID_CLOCK; if ( !routine ) return RTEMS_INVALID_ADDRESS; 58c66: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58c68: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c6e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00058c74 : rtems_status_code rtems_timer_get_information( rtems_id id, rtems_timer_information *the_info ) { 58c74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58c78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58c7a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; if ( !the_info ) 58c7e: 4a8a tstl %a2 <== NOT EXECUTED 58c80: 6752 beqs 58cd4 <== NOT EXECUTED 58c82: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58c86: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58c8a: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58c90: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58c96: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c9a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58c9e: 662a bnes 58cca <== NOT EXECUTED case OBJECTS_LOCAL: the_info->the_class = the_timer->the_class; 58ca0: 2040 moveal %d0,%a0 <== NOT EXECUTED 58ca2: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED the_info->initial = the_timer->Ticker.initial; 58ca6: 41e8 001c lea %a0@(28),%a0 <== NOT EXECUTED 58caa: 2550 0004 movel %a0@,%a2@(4) <== NOT EXECUTED the_info->start_time = the_timer->Ticker.start_time; 58cae: 5088 addql #8,%a0 <== NOT EXECUTED 58cb0: 2550 0008 movel %a0@,%a2@(8) <== NOT EXECUTED the_info->stop_time = the_timer->Ticker.stop_time; 58cb4: 5888 addql #4,%a0 <== NOT EXECUTED 58cb6: 2550 000c movel %a0@,%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 58cba: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58cc0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED the_info->the_class = the_timer->the_class; the_info->initial = the_timer->Ticker.initial; the_info->start_time = the_timer->Ticker.start_time; the_info->stop_time = the_timer->Ticker.stop_time; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; 58cc4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58cc6: 4e5e unlk %fp <== NOT EXECUTED 58cc8: 4e75 rts <== NOT EXECUTED 58cca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58cce: 7004 moveq #4,%d0 <== NOT EXECUTED } 58cd0: 4e5e unlk %fp <== NOT EXECUTED 58cd2: 4e75 rts <== NOT EXECUTED 58cd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED { Timer_Control *the_timer; Objects_Locations location; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 58cd8: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58cda: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00058ce0 : rtems_status_code rtems_timer_ident( rtems_name name, rtems_id *id ) { 58ce0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 58ce4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 58ce8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 58cee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58cf2: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58cf8: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED name, OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; 58cfe: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED } 58d04: 4e5e unlk %fp <== NOT EXECUTED 58d06: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 000593f6 : rtems_status_code rtems_timer_initiate_server( uint32_t priority, uint32_t stack_size, rtems_attribute attribute_set ) { 593f6: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 593fa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 593fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59400: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59402: 4a80 tstl %d0 <== NOT EXECUTED 59404: 6748 beqs 5944e <== NOT EXECUTED ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 59406: 4281 clrl %d1 <== NOT EXECUTED 59408: 1239 0007 8e82 moveb 78e82 ,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 5940e: b280 cmpl %d0,%d1 <== NOT EXECUTED 59410: 644a bccs 5945c <== NOT EXECUTED * structured so we check it is invalid before looking for * a specific invalid value as the default. */ _priority = priority; if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) { if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) 59412: 72ff moveq #-1,%d1 <== NOT EXECUTED 59414: b280 cmpl %d0,%d1 <== NOT EXECUTED 59416: 6636 bnes 5944e <== NOT EXECUTED 59418: 2239 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 5941e: 5281 addql #1,%d1 <== NOT EXECUTED return RTEMS_INVALID_PRIORITY; _priority = 0; 59420: 4283 clrl %d3 <== NOT EXECUTED 59422: 23c1 0007 eaec movel %d1,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; initialized = true; 59428: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; 5942a: 1439 0007 9fca moveb 79fca ,%d2 <== NOT EXECUTED initialized = true; 59430: 13c0 0007 9fca moveb %d0,79fca <== NOT EXECUTED _Thread_Enable_dispatch(); 59436: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED if ( tmpInitialized ) 5943c: 4a02 tstb %d2 <== NOT EXECUTED 5943e: 6744 beqs 59484 <== NOT EXECUTED initialized = false; } #endif return status; } 59440: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED tmpInitialized = initialized; initialized = true; _Thread_Enable_dispatch(); if ( tmpInitialized ) return RTEMS_INCORRECT_STATE; 59444: 700e moveq #14,%d0 <== NOT EXECUTED initialized = false; } #endif return status; } 59446: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 5944a: 4e5e unlk %fp <== NOT EXECUTED 5944c: 4e75 rts <== NOT EXECUTED 5944e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED * a specific invalid value as the default. */ _priority = priority; if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) { if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) return RTEMS_INVALID_PRIORITY; 59452: 7013 moveq #19,%d0 <== NOT EXECUTED initialized = false; } #endif return status; } 59454: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 59458: 4e5e unlk %fp <== NOT EXECUTED 5945a: 4e75 rts <== NOT EXECUTED 5945c: 2239 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 59462: 5281 addql #1,%d1 <== NOT EXECUTED 59464: 2600 movel %d0,%d3 <== NOT EXECUTED 59466: 23c1 0007 eaec movel %d1,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; initialized = true; 5946c: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; 5946e: 1439 0007 9fca moveb 79fca ,%d2 <== NOT EXECUTED initialized = true; 59474: 13c0 0007 9fca moveb %d0,79fca <== NOT EXECUTED _Thread_Enable_dispatch(); 5947a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED if ( tmpInitialized ) 59480: 4a02 tstb %d2 <== NOT EXECUTED 59482: 66bc bnes 59440 <== NOT EXECUTED * other library rules. For example, if using a TSR written in Ada the * Server should run at the same priority as the priority Ada task. * Otherwise, the priority ceiling for the mutex used to protect the * GNAT run-time is violated. */ status = rtems_task_create( 59484: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 59488: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5948c: 08c1 000f bset #15,%d1 <== NOT EXECUTED 59490: 2f01 movel %d1,%sp@- <== NOT EXECUTED 59492: 4878 0100 pea 100 <== NOT EXECUTED 59496: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5949a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5949c: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED 594a2: 4eb9 0005 8028 jsr 58028 <== NOT EXECUTED /* user may want floating point but we need */ /* system task specified for 0 priority */ attribute_set | RTEMS_SYSTEM_TASK, &id /* get the id back */ ); if (status) { 594a8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 594ac: 4a80 tstl %d0 <== NOT EXECUTED 594ae: 6714 beqs 594c4 <== NOT EXECUTED initialized = false; } #endif return status; } 594b0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED /* system task specified for 0 priority */ attribute_set | RTEMS_SYSTEM_TASK, &id /* get the id back */ ); if (status) { initialized = false; 594b4: 4201 clrb %d1 <== NOT EXECUTED initialized = false; } #endif return status; } 594b6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 594ba: 4e5e unlk %fp <== NOT EXECUTED /* system task specified for 0 priority */ attribute_set | RTEMS_SYSTEM_TASK, &id /* get the id back */ ); if (status) { initialized = false; 594bc: 13c1 0007 9fca moveb %d1,79fca <== NOT EXECUTED initialized = false; } #endif return status; } 594c2: 4e75 rts <== NOT EXECUTED * We work with the TCB pointer, not the ID, so we need to convert * to a TCB pointer from here out. */ ts->thread = (Thread_Control *)_Objects_Get_local_object( &_RTEMS_tasks_Information, _Objects_Get_index(id) 594c4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 594c8: 4282 clrl %d2 <== NOT EXECUTED /* * We work with the TCB pointer, not the ID, so we need to convert * to a TCB pointer from here out. */ ts->thread = (Thread_Control *)_Objects_Get_local_object( 594ca: 2079 0007 ea82 moveal 7ea82 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED 594d0: 3400 movew %d0,%d2 <== NOT EXECUTED * Initialize the pointer to the timer schedule method so applications that * do not use the Timer Server do not have to pull it in. */ ts->schedule_operation = _Timer_server_Schedule_operation_method; ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; 594d2: 2239 0007 ec16 movel 7ec16 <_Watchdog_Ticks_since_boot>,%d1<== NOT EXECUTED /* * We work with the TCB pointer, not the ID, so we need to convert * to a TCB pointer from here out. */ ts->thread = (Thread_Control *)_Objects_Get_local_object( 594d8: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 594dc: 23d0 0007 9f4c movel %a0@,79f4c <_Timer_server_Default> <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 594e2: 41f9 0007 9f80 lea 79f80 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED _Timer_server = ts; /* * Start the timer server */ status = rtems_task_start( 594e8: 4879 0007 9f4c pea 79f4c <_Timer_server_Default> <== NOT EXECUTED 594ee: 487a fb80 pea %pc@(59070 <_Timer_server_Body>) <== NOT EXECUTED 594f2: 23c8 0007 9f7c movel %a0,79f7c <_Timer_server_Default+0x30><== NOT EXECUTED head->previous = NULL; tail->previous = head; 594f8: 41f9 0007 9f7c lea 79f7c <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED 594fe: 23c8 0007 9f84 movel %a0,79f84 <_Timer_server_Default+0x38><== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 59504: 41f9 0007 9fb8 lea 79fb8 <_Timer_server_Default+0x6c>,%a0 <== NOT EXECUTED * Initialize the pointer to the timer schedule method so applications that * do not use the Timer Server do not have to pull it in. */ ts->schedule_operation = _Timer_server_Schedule_operation_method; ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; 5950a: 23c1 0007 9f88 movel %d1,79f88 <_Timer_server_Default+0x3c><== NOT EXECUTED head->previous = NULL; tail->previous = head; 59510: 223c 0007 9fb4 movel #499636,%d1 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 59516: 23c8 0007 9fb4 movel %a0,79fb4 <_Timer_server_Default+0x68><== NOT EXECUTED ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 5951c: 41f9 0007 eb96 lea 7eb96 <_TOD_Now>,%a0 <== NOT EXECUTED head->previous = NULL; tail->previous = head; 59522: 23c1 0007 9fbc movel %d1,79fbc <_Timer_server_Default+0x70><== NOT EXECUTED 59528: 23d0 0007 9fc0 movel %a0@,79fc0 <_Timer_server_Default+0x74><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 5952e: 223c 0005 c2f4 movel #377588,%d1 <== NOT EXECUTED 59534: 41f9 0005 c2f4 lea 5c2f4 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED 5953a: 23c1 0007 9f70 movel %d1,79f70 <_Timer_server_Default+0x24><== NOT EXECUTED ts->insert_chain = NULL; ts->active = false; 59540: 4201 clrb %d1 <== NOT EXECUTED ts->schedule_operation = _Timer_server_Schedule_operation_method; ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); ts->insert_chain = NULL; 59542: 42b9 0007 9fc4 clrl 79fc4 <_Timer_server_Default+0x78> <== NOT EXECUTED ts->active = false; 59548: 13c1 0007 9fc8 moveb %d1,79fc8 <_Timer_server_Default+0x7c><== NOT EXECUTED 5954e: 23c8 0007 9fa8 movel %a0,79fa8 <_Timer_server_Default+0x5c><== NOT EXECUTED /* * The default timer server is now available. */ _Timer_server = ts; 59554: 41f9 0007 9f4c lea 79f4c <_Timer_server_Default>,%a0 <== NOT EXECUTED /* * Start the timer server */ status = rtems_task_start( 5955a: 2f00 movel %d0,%sp@- <== NOT EXECUTED /* * Initialize the pointer to the timer schedule method so applications that * do not use the Timer Server do not have to pull it in. */ ts->schedule_operation = _Timer_server_Schedule_operation_method; 5955c: 223c 0005 929a movel #365210,%d1 <== NOT EXECUTED { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 59562: 42b9 0007 9f80 clrl 79f80 <_Timer_server_Default+0x34> <== NOT EXECUTED 59568: 42b9 0007 9fb8 clrl 79fb8 <_Timer_server_Default+0x6c> <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 5956e: 42b9 0007 9f5c clrl 79f5c <_Timer_server_Default+0x10> <== NOT EXECUTED 59574: 23c1 0007 9f50 movel %d1,79f50 <_Timer_server_Default+0x4> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 5957a: 23c0 0007 9f74 movel %d0,79f74 <_Timer_server_Default+0x28><== NOT EXECUTED ts->active = false; /* * The default timer server is now available. */ _Timer_server = ts; 59580: 23c8 0007 f3c8 movel %a0,7f3c8 <_Timer_server> <== NOT EXECUTED the_watchdog->user_data = user_data; 59586: 42b9 0007 9f78 clrl 79f78 <_Timer_server_Default+0x2c> <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 5958c: 42b9 0007 9f94 clrl 79f94 <_Timer_server_Default+0x48> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 59592: 23c0 0007 9fac movel %d0,79fac <_Timer_server_Default+0x60><== NOT EXECUTED the_watchdog->user_data = user_data; 59598: 42b9 0007 9fb0 clrl 79fb0 <_Timer_server_Default+0x64> <== NOT EXECUTED /* * Start the timer server */ status = rtems_task_start( 5959e: 4eb9 0005 8734 jsr 58734 <== NOT EXECUTED initialized = false; } #endif return status; } 595a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED if (status) { initialized = false; } #endif return status; 595a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } 595ac: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 595b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00058d0c : */ rtems_status_code rtems_timer_reset( rtems_id id ) { 58d0c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 58d10: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 58d14: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58d18: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58d1c: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58d22: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_status_code status = RTEMS_SUCCESSFUL; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58d28: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58d2c: 2440 moveal %d0,%a2 <== NOT EXECUTED 58d2e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58d32: 670e beqs 58d42 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58d34: 7404 moveq #4,%d2 <== NOT EXECUTED } 58d36: 2002 movel %d2,%d0 <== NOT EXECUTED 58d38: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d3e: 4e5e unlk %fp <== NOT EXECUTED 58d40: 4e75 rts <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { 58d42: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 58d46: 671a beqs 58d62 <== NOT EXECUTED _Watchdog_Remove( &the_timer->Ticker ); _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); } else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { 58d48: 7201 moveq #1,%d1 <== NOT EXECUTED 58d4a: b280 cmpl %d0,%d1 <== NOT EXECUTED 58d4c: 673c beqs 58d8a <== NOT EXECUTED /* * Must be dormant or time of day timer (e.g. TIMER_DORMANT, * TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We * can only reset active interval timers. */ status = RTEMS_NOT_DEFINED; 58d4e: 740b moveq #11,%d2 <== NOT EXECUTED } _Thread_Enable_dispatch(); 58d50: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58d56: 2002 movel %d2,%d0 <== NOT EXECUTED 58d58: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d5e: 4e5e unlk %fp <== NOT EXECUTED 58d60: 4e75 rts <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { _Watchdog_Remove( &the_timer->Ticker ); 58d62: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED rtems_id id ) { Timer_Control *the_timer; Objects_Locations location; rtems_status_code status = RTEMS_SUCCESSFUL; 58d66: 4282 clrl %d2 <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { _Watchdog_Remove( &the_timer->Ticker ); 58d68: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d6a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); 58d70: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d72: 4879 0007 ebcc pea 7ebcc <_Watchdog_Ticks_chain> <== NOT EXECUTED 58d78: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED 58d7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED * TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We * can only reset active interval timers. */ status = RTEMS_NOT_DEFINED; } _Thread_Enable_dispatch(); 58d82: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED 58d88: 60cc bras 58d56 <== NOT EXECUTED if ( !timer_server ) { _Thread_Enable_dispatch(); return RTEMS_INCORRECT_STATE; } #endif _Watchdog_Remove( &the_timer->Ticker ); 58d8a: 486a 0010 pea %a2@(16) <== NOT EXECUTED rtems_id id ) { Timer_Control *the_timer; Objects_Locations location; rtems_status_code status = RTEMS_SUCCESSFUL; 58d8e: 4282 clrl %d2 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { _Watchdog_Remove( &the_timer->Ticker ); _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); } else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { Timer_server_Control *timer_server = _Timer_server; 58d90: 2679 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a3 <== NOT EXECUTED if ( !timer_server ) { _Thread_Enable_dispatch(); return RTEMS_INCORRECT_STATE; } #endif _Watchdog_Remove( &the_timer->Ticker ); 58d96: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 58d9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d9e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58da0: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 58da4: 4e90 jsr %a0@ <== NOT EXECUTED 58da6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED * TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We * can only reset active interval timers. */ status = RTEMS_NOT_DEFINED; } _Thread_Enable_dispatch(); 58daa: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED 58db0: 60a4 bras 58d56 <== NOT EXECUTED ... =============================================================================== 00058db4 : rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 58db4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 58db8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 58dbc: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 58dc0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 58dc4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; Timer_server_Control *timer_server = _Timer_server; 58dc8: 2479 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a2 <== NOT EXECUTED if ( !timer_server ) 58dce: 4a8a tstl %a2 <== NOT EXECUTED 58dd0: 6700 009c beqw 58e6e <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !routine ) 58dd4: 4a82 tstl %d2 <== NOT EXECUTED 58dd6: 6700 00a2 beqw 58e7a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( ticks == 0 ) 58dda: 4a83 tstl %d3 <== NOT EXECUTED 58ddc: 660c bnes 58dea <== NOT EXECUTED return RTEMS_INVALID_NUMBER; 58dde: 700a moveq #10,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58de0: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58de6: 4e5e unlk %fp <== NOT EXECUTED 58de8: 4e75 rts <== NOT EXECUTED 58dea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58dee: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58df0: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58df6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED if ( ticks == 0 ) return RTEMS_INVALID_NUMBER; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58dfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58e00: 2640 moveal %d0,%a3 <== NOT EXECUTED 58e02: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58e06: 665a bnes 58e62 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 58e08: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58e0c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 58e12: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58e18: 40c1 movew %sr,%d1 <== NOT EXECUTED 58e1a: 8081 orl %d1,%d0 <== NOT EXECUTED 58e1c: 46c0 movew %d0,%sr <== NOT EXECUTED /* * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) { 58e1e: 588f addql #4,%sp <== NOT EXECUTED 58e20: 4aab 0018 tstl %a3@(24) <== NOT EXECUTED 58e24: 6660 bnes 58e86 <== NOT EXECUTED /* * OK. Now we now the timer was not rescheduled by an interrupt * so we can atomically initialize it as in use. */ the_timer->the_class = TIMER_INTERVAL_ON_TASK; 58e26: 7001 moveq #1,%d0 <== NOT EXECUTED ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 58e28: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED 58e2e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 58e32: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED the_watchdog->routine = routine; 58e36: 2742 002c movel %d2,%a3@(44) <== NOT EXECUTED the_watchdog->id = id; 58e3a: 2744 0030 movel %d4,%a3@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = ticks; 58e3e: 2743 001c movel %d3,%a3@(28) <== NOT EXECUTED _ISR_Enable( level ); 58e42: 46c1 movew %d1,%sr <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 58e44: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58e46: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58e48: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58e4c: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 58e4e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 58e54: 508f addql #8,%sp <== NOT EXECUTED 58e56: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58e58: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e5e: 4e5e unlk %fp <== NOT EXECUTED 58e60: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58e62: 7004 moveq #4,%d0 <== NOT EXECUTED } 58e64: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e6a: 4e5e unlk %fp <== NOT EXECUTED 58e6c: 4e75 rts <== NOT EXECUTED Objects_Locations location; ISR_Level level; Timer_server_Control *timer_server = _Timer_server; if ( !timer_server ) return RTEMS_INCORRECT_STATE; 58e6e: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58e70: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e76: 4e5e unlk %fp <== NOT EXECUTED 58e78: 4e75 rts <== NOT EXECUTED if ( !timer_server ) return RTEMS_INCORRECT_STATE; if ( !routine ) return RTEMS_INVALID_ADDRESS; 58e7a: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58e7c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e82: 4e5e unlk %fp <== NOT EXECUTED 58e84: 4e75 rts <== NOT EXECUTED * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); 58e86: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 58e88: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 58e8e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58e90: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e96: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00058e9c : rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 58e9c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58ea0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 58ea4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58ea8: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; Timer_server_Control *timer_server = _Timer_server; 58eac: 2479 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a2 <== NOT EXECUTED if ( !timer_server ) 58eb2: 4a8a tstl %a2 <== NOT EXECUTED 58eb4: 6700 00c8 beqw 58f7e <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !_TOD_Is_set ) 58eb8: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED 58ebe: 6700 00a6 beqw 58f66 <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !routine ) 58ec2: 4a83 tstl %d3 <== NOT EXECUTED 58ec4: 6700 00ac beqw 58f72 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Validate( wall_time ) ) 58ec8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58eca: 4eb9 0005 5bd0 jsr 55bd0 <_TOD_Validate> <== NOT EXECUTED 58ed0: 588f addql #4,%sp <== NOT EXECUTED 58ed2: 4a00 tstb %d0 <== NOT EXECUTED 58ed4: 660c bnes 58ee2 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; 58ed6: 7014 moveq #20,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58ed8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58ede: 4e5e unlk %fp <== NOT EXECUTED 58ee0: 4e75 rts <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Validate( wall_time ) ) return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); 58ee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58ee4: 4eb9 0005 5ac8 jsr 55ac8 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 58eea: 588f addql #4,%sp <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Validate( wall_time ) ) return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); 58eec: 2400 movel %d0,%d2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 58eee: b0b9 0007 eb96 cmpl 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED 58ef4: 63e0 blss 58ed6 <== NOT EXECUTED 58ef6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58efa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58efe: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED 58f04: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 58f0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f0e: 2640 moveal %d0,%a3 <== NOT EXECUTED 58f10: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58f14: 6674 bnes 58f8a <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 58f16: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58f1a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED the_watchdog->user_data = user_data; 58f20: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK; 58f26: 7003 moveq #3,%d0 <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch(); 58f28: 94b9 0007 eb96 subl 7eb96 <_TOD_Now>,%d2 <== NOT EXECUTED the_timer = _Timer_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK; 58f2e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 58f32: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch(); 58f36: 2742 001c movel %d2,%a3@(28) <== NOT EXECUTED 58f3a: 2740 0030 movel %d0,%a3@(48) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 58f3e: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED the_watchdog->routine = routine; 58f42: 2743 002c movel %d3,%a3@(44) <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 58f46: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58f48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58f4a: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58f4e: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 58f50: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 58f56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f5a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58f5c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f62: 4e5e unlk %fp <== NOT EXECUTED 58f64: 4e75 rts <== NOT EXECUTED if ( !timer_server ) return RTEMS_INCORRECT_STATE; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 58f66: 700b moveq #11,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58f68: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f6e: 4e5e unlk %fp <== NOT EXECUTED 58f70: 4e75 rts <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; if ( !routine ) return RTEMS_INVALID_ADDRESS; 58f72: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58f74: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f7a: 4e5e unlk %fp <== NOT EXECUTED 58f7c: 4e75 rts <== NOT EXECUTED Objects_Locations location; rtems_interval seconds; Timer_server_Control *timer_server = _Timer_server; if ( !timer_server ) return RTEMS_INCORRECT_STATE; 58f7e: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 58f80: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f86: 4e5e unlk %fp <== NOT EXECUTED 58f88: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 58f8a: 7004 moveq #4,%d0 <== NOT EXECUTED } 58f8c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f92: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000470d0 : */ bool rtems_workspace_allocate( uintptr_t bytes, void **pointer ) { 470d0: 4e56 0000 linkw %fp,#0 470d4: 202e 0008 movel %fp@(8),%d0 470d8: 2f0a movel %a2,%sp@- 470da: 246e 000c moveal %fp@(12),%a2 void *ptr; /* * check the arguments */ if ( !pointer ) 470de: 4a8a tstl %a2 470e0: 6704 beqs 470e6 <== NEVER TAKEN return false; if ( !bytes ) 470e2: 4a80 tstl %d0 470e4: 660a bnes 470f0 <== ALWAYS TAKEN if (!ptr) return false; *pointer = ptr; return true; } 470e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 470ea: 4e5e unlk %fp <== NOT EXECUTED /* * Allocate the memory */ ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); if (!ptr) return false; 470ec: 4200 clrb %d0 <== NOT EXECUTED *pointer = ptr; return true; } 470ee: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate( Heap_Control *heap, uintptr_t size ) { return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 ); 470f0: 42a7 clrl %sp@- 470f2: 42a7 clrl %sp@- 470f4: 2f00 movel %d0,%sp@- 470f6: 4879 0006 0726 pea 60726 <_Workspace_Area> 470fc: 4eb9 0004 87f4 jsr 487f4 <_Protected_heap_Allocate_aligned_with_boundary> /* * Allocate the memory */ ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); if (!ptr) 47102: 4fef 0010 lea %sp@(16),%sp 47106: 4a80 tstl %d0 47108: 67dc beqs 470e6 <== NEVER TAKEN return false; *pointer = ptr; 4710a: 2480 movel %d0,%a2@ return true; } 4710c: 246e fffc moveal %fp@(-4),%a2 47110: 4e5e unlk %fp ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); if (!ptr) return false; *pointer = ptr; return true; 47112: 7001 moveq #1,%d0 <== NOT EXECUTED } =============================================================================== 00047116 : * _Workspace_Allocate */ bool rtems_workspace_free( void *pointer ) { 47116: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Protected_heap_Free( &_Workspace_Area, pointer ); 4711a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4711e: 4879 0006 0726 pea 60726 <_Workspace_Area> <== NOT EXECUTED 47124: 4eb9 0004 8834 jsr 48834 <_Protected_heap_Free> <== NOT EXECUTED } 4712a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000470ac : #include /* for memset */ bool rtems_workspace_get_information( Heap_Information_block *the_info ) { 470ac: 4e56 0000 linkw %fp,#0 470b0: 202e 0008 movel %fp@(8),%d0 if ( !the_info ) 470b4: 6714 beqs 470ca <== NEVER TAKEN return false; return _Protected_heap_Get_information( &_Workspace_Area, the_info ); 470b6: 2f00 movel %d0,%sp@- 470b8: 4879 0006 0726 pea 60726 <_Workspace_Area> 470be: 4eb9 0004 886c jsr 4886c <_Protected_heap_Get_information> 470c4: 508f addql #8,%sp } 470c6: 4e5e unlk %fp 470c8: 4e75 rts 470ca: 4e5e unlk %fp <== NOT EXECUTED bool rtems_workspace_get_information( Heap_Information_block *the_info ) { if ( !the_info ) return false; 470cc: 4200 clrb %d0 <== NOT EXECUTED return _Protected_heap_Get_information( &_Workspace_Area, the_info ); } =============================================================================== 00046f90 : int sched_get_priority_max( int policy ) { switch ( policy ) { 46f90: 7004 moveq #4,%d0 <== NOT EXECUTED #include int sched_get_priority_max( int policy ) { 46f92: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f96: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED switch ( policy ) { 46f9a: b081 cmpl %d1,%d0 <== NOT EXECUTED 46f9c: 6412 bccs 46fb0 <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 46f9e: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED 46fa4: 7216 moveq #22,%d1 <== NOT EXECUTED 46fa6: 2040 moveal %d0,%a0 <== NOT EXECUTED 46fa8: 70ff moveq #-1,%d0 <== NOT EXECUTED } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; } 46faa: 4e5e unlk %fp <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 46fac: 2081 movel %d1,%a0@ <== NOT EXECUTED } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; } 46fae: 4e75 rts <== NOT EXECUTED int sched_get_priority_max( int policy ) { switch ( policy ) { 46fb0: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 46fb4: e3a8 lsll %d1,%d0 <== NOT EXECUTED 46fb6: 7217 moveq #23,%d1 <== NOT EXECUTED 46fb8: c081 andl %d1,%d0 <== NOT EXECUTED 46fba: 67e2 beqs 46f9e <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; 46fbc: 4280 clrl %d0 <== NOT EXECUTED 46fbe: 1039 0005 f846 moveb 5f846 ,%d0 <== NOT EXECUTED } 46fc4: 4e5e unlk %fp <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; 46fc6: 5380 subql #1,%d0 <== NOT EXECUTED } ... =============================================================================== 00046fcc : int sched_get_priority_min( int policy ) { switch ( policy ) { 46fcc: 7004 moveq #4,%d0 <== NOT EXECUTED #include int sched_get_priority_min( int policy ) { 46fce: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fd2: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED switch ( policy ) { 46fd6: b081 cmpl %d1,%d0 <== NOT EXECUTED 46fd8: 6412 bccs 46fec <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 46fda: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED 46fe0: 7216 moveq #22,%d1 <== NOT EXECUTED 46fe2: 2040 moveal %d0,%a0 <== NOT EXECUTED 46fe4: 70ff moveq #-1,%d0 <== NOT EXECUTED } return POSIX_SCHEDULER_MINIMUM_PRIORITY; } 46fe6: 4e5e unlk %fp <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 46fe8: 2081 movel %d1,%a0@ <== NOT EXECUTED } return POSIX_SCHEDULER_MINIMUM_PRIORITY; } 46fea: 4e75 rts <== NOT EXECUTED int sched_get_priority_min( int policy ) { switch ( policy ) { 46fec: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 46ff0: e3a8 lsll %d1,%d0 <== NOT EXECUTED 46ff2: 7217 moveq #23,%d1 <== NOT EXECUTED 46ff4: c081 andl %d1,%d0 <== NOT EXECUTED 46ff6: 67e2 beqs 46fda <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return POSIX_SCHEDULER_MINIMUM_PRIORITY; 46ff8: 7001 moveq #1,%d0 <== NOT EXECUTED } 46ffa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000462cc : int sched_getparam( pid_t pid __attribute__((unused)), struct sched_param *param __attribute__((unused)) ) { 462cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 462d0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 462d6: 7258 moveq #88,%d1 <== NOT EXECUTED 462d8: 2040 moveal %d0,%a0 <== NOT EXECUTED } 462da: 70ff moveq #-1,%d0 <== NOT EXECUTED 462dc: 4e5e unlk %fp <== NOT EXECUTED int sched_getparam( pid_t pid __attribute__((unused)), struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 462de: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 000462e4 : #include int sched_getscheduler( pid_t pid __attribute__((unused)) ) { 462e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 462e8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 462ee: 7258 moveq #88,%d1 <== NOT EXECUTED 462f0: 2040 moveal %d0,%a0 <== NOT EXECUTED } 462f2: 70ff moveq #-1,%d0 <== NOT EXECUTED 462f4: 4e5e unlk %fp <== NOT EXECUTED int sched_getscheduler( pid_t pid __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 462f6: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00047000 : int sched_rr_get_interval( pid_t pid, struct timespec *interval ) { 47000: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47004: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47006: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4700a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4700c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED /* * Only supported for the "calling process" (i.e. this node). */ if ( pid && pid != getpid() ) 47010: 4a83 tstl %d3 <== NOT EXECUTED 47012: 6622 bnes 47036 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); if ( !interval ) 47014: 4a82 tstl %d2 <== NOT EXECUTED 47016: 6742 beqs 4705a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); 47018: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4701a: 2f39 0006 1080 movel 61080 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED 47020: 4eb9 0004 a920 jsr 4a920 <_Timespec_From_ticks> <== NOT EXECUTED return 0; } 47026: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); return 0; 4702a: 508f addql #8,%sp <== NOT EXECUTED 4702c: 4280 clrl %d0 <== NOT EXECUTED } 4702e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47032: 4e5e unlk %fp <== NOT EXECUTED 47034: 4e75 rts <== NOT EXECUTED { /* * Only supported for the "calling process" (i.e. this node). */ if ( pid && pid != getpid() ) 47036: 4eb9 0004 36ac jsr 436ac <== NOT EXECUTED 4703c: b680 cmpl %d0,%d3 <== NOT EXECUTED 4703e: 67d4 beqs 47014 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 47040: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED 47046: 7403 moveq #3,%d2 <== NOT EXECUTED 47048: 2040 moveal %d0,%a0 <== NOT EXECUTED 4704a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4704c: 2082 movel %d2,%a0@ <== NOT EXECUTED if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); return 0; } 4704e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47052: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47056: 4e5e unlk %fp <== NOT EXECUTED 47058: 4e75 rts <== NOT EXECUTED if ( pid && pid != getpid() ) rtems_set_errno_and_return_minus_one( ESRCH ); if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); 4705a: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); return 0; } 47060: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED if ( pid && pid != getpid() ) rtems_set_errno_and_return_minus_one( ESRCH ); if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); 47064: 2040 moveal %d0,%a0 <== NOT EXECUTED 47066: 7216 moveq #22,%d1 <== NOT EXECUTED 47068: 70ff moveq #-1,%d0 <== NOT EXECUTED _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); return 0; } 4706a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4706e: 4e5e unlk %fp <== NOT EXECUTED if ( pid && pid != getpid() ) rtems_set_errno_and_return_minus_one( ESRCH ); if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); 47070: 2081 movel %d1,%a0@ <== NOT EXECUTED _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); return 0; } =============================================================================== 000462fc : int sched_setparam( pid_t pid __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { 462fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46300: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 46306: 7258 moveq #88,%d1 <== NOT EXECUTED 46308: 2040 moveal %d0,%a0 <== NOT EXECUTED } 4630a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4630c: 4e5e unlk %fp <== NOT EXECUTED int sched_setparam( pid_t pid __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4630e: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00046314 : int sched_setscheduler( pid_t pid __attribute__((unused)), int policy __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { 46314: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46318: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 4631e: 7258 moveq #88,%d1 <== NOT EXECUTED 46320: 2040 moveal %d0,%a0 <== NOT EXECUTED } 46322: 70ff moveq #-1,%d0 <== NOT EXECUTED 46324: 4e5e unlk %fp <== NOT EXECUTED pid_t pid __attribute__((unused)), int policy __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 46326: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00047074 : #include #include #include int sched_yield( void ) { 47074: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47078: 2039 0006 10c8 movel 610c8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4707e: 5280 addql #1,%d0 <== NOT EXECUTED 47080: 23c0 0006 10c8 movel %d0,610c8 <_Thread_Dispatch_disable_level><== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 47086: 4879 0006 114e pea 6114e <_Scheduler> <== NOT EXECUTED 4708c: 2079 0006 1156 moveal 61156 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 47092: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Disable_dispatch(); _Scheduler_Yield(); _Thread_Enable_dispatch(); 47094: 4eb9 0004 9cea jsr 49cea <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 4709a: 4280 clrl %d0 <== NOT EXECUTED 4709c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049158 : */ int sem_close( sem_t *sem ) { 49158: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4915c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location ); 49160: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49164: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 49166: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4916c: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 49172: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49176: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4917a: 6712 beqs 4918e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4917c: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 49182: 7216 moveq #22,%d1 <== NOT EXECUTED 49184: 2040 moveal %d0,%a0 <== NOT EXECUTED 49186: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49188: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4918a: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4918c: 4e75 rts <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { case OBJECTS_LOCAL: the_semaphore->open_count -= 1; 4918e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49190: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Semaphore_Delete( the_semaphore ); 49194: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49196: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4919c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 491a2: 588f addql #4,%sp <== NOT EXECUTED 491a4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 491a6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000491ac : */ int sem_destroy( sem_t *sem ) { 491ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 491b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 491b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 491b8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 491ba: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 491c0: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 491c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 491ca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 491ce: 6712 beqs 491e2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 491d0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 491d6: 7216 moveq #22,%d1 <== NOT EXECUTED 491d8: 2040 moveal %d0,%a0 <== NOT EXECUTED 491da: 70ff moveq #-1,%d0 <== NOT EXECUTED } 491dc: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 491de: 2081 movel %d1,%a0@ <== NOT EXECUTED } 491e0: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: /* * Undefined operation on a named semaphore. */ if ( the_semaphore->named == true ) { 491e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 491e4: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED 491e8: 6616 bnes 49200 <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } _POSIX_Semaphore_Delete( the_semaphore ); 491ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED 491ec: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 491f2: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 491f8: 588f addql #4,%sp <== NOT EXECUTED 491fa: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 491fc: 4e5e unlk %fp <== NOT EXECUTED 491fe: 4e75 rts <== NOT EXECUTED /* * Undefined operation on a named semaphore. */ if ( the_semaphore->named == true ) { _Thread_Enable_dispatch(); 49200: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 49206: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 4920c: 7216 moveq #22,%d1 <== NOT EXECUTED 4920e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49210: 70ff moveq #-1,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 49212: 4e5e unlk %fp <== NOT EXECUTED * Undefined operation on a named semaphore. */ if ( the_semaphore->named == true ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); 49214: 2081 movel %d1,%a0@ <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } =============================================================================== 00049218 : int sem_getvalue( sem_t *sem, int *sval ) { 49218: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4921c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49220: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49224: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 49226: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4922c: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 49232: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49236: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4923a: 6712 beqs 4924e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4923c: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 49242: 7216 moveq #22,%d1 <== NOT EXECUTED 49244: 2040 moveal %d0,%a0 <== NOT EXECUTED 49246: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49248: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4924a: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4924c: 4e75 rts <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { case OBJECTS_LOCAL: *sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore ); 4924e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 49252: 2240 moveal %d0,%a1 <== NOT EXECUTED 49254: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 49258: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4925e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 49260: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049264 : int sem_init( sem_t *sem, int pshared, unsigned int value ) { 49264: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49268: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4926a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) 4926e: 4a8a tstl %a2 <== NOT EXECUTED 49270: 672e beqs 492a0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); status = _POSIX_Semaphore_Create_support( 49272: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49276: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4927a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4927e: 42a7 clrl %sp@- <== NOT EXECUTED 49280: 4eb9 0004 fafc jsr 4fafc <_POSIX_Semaphore_Create_support> <== NOT EXECUTED pshared, value, &the_semaphore ); if ( status != -1 ) 49286: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4928a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4928c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4928e: 6708 beqs 49298 <== NOT EXECUTED *sem = the_semaphore->Object.id; 49290: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 49294: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return status; } 49298: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4929c: 4e5e unlk %fp <== NOT EXECUTED 4929e: 4e75 rts <== NOT EXECUTED { int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) rtems_set_errno_and_return_minus_one( EINVAL ); 492a0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED if ( status != -1 ) *sem = the_semaphore->Object.id; return status; } 492a6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED { int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) rtems_set_errno_and_return_minus_one( EINVAL ); 492aa: 2040 moveal %d0,%a0 <== NOT EXECUTED 492ac: 7216 moveq #22,%d1 <== NOT EXECUTED 492ae: 70ff moveq #-1,%d0 <== NOT EXECUTED if ( status != -1 ) *sem = the_semaphore->Object.id; return status; } 492b0: 4e5e unlk %fp <== NOT EXECUTED { int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) rtems_set_errno_and_return_minus_one( EINVAL ); 492b2: 2081 movel %d1,%a0@ <== NOT EXECUTED if ( status != -1 ) *sem = the_semaphore->Object.id; return status; } ... =============================================================================== 000492b8 : int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) { 492b8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 492bc: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 492c2: 5280 addql #1,%d0 <== NOT EXECUTED 492c4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 492c8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 492cc: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 492d0: 23c0 0006 4f74 movel %d0,64f74 <_Thread_Dispatch_disable_level><== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 492d6: 2803 movel %d3,%d4 <== NOT EXECUTED 492d8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 492de: 6600 0086 bnew 49366 <== NOT EXECUTED /* unsigned int value */ ) { va_list arg; mode_t mode; unsigned int value = 0; 492e2: 95ca subal %a2,%a2 <== NOT EXECUTED mode = (mode_t) va_arg( arg, unsigned int ); value = va_arg( arg, unsigned int ); va_end(arg); } status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); 492e4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 492e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 492ea: 4eb9 0004 fcb4 jsr 4fcb4 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "semaphore does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 492f0: 508f addql #8,%sp <== NOT EXECUTED mode = (mode_t) va_arg( arg, unsigned int ); value = va_arg( arg, unsigned int ); va_end(arg); } status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); 492f2: 2400 movel %d0,%d2 <== NOT EXECUTED * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "semaphore does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 492f4: 6726 beqs 4931c <== NOT EXECUTED /* * Unless provided a valid name that did not already exist * and we are willing to create then it is an error. */ if ( !( status == ENOENT && (oflag & O_CREAT) ) ) { 492f6: 7002 moveq #2,%d0 <== NOT EXECUTED 492f8: b082 cmpl %d2,%d0 <== NOT EXECUTED 492fa: 6604 bnes 49300 <== NOT EXECUTED 492fc: 4a84 tstl %d4 <== NOT EXECUTED 492fe: 666e bnes 4936e <== NOT EXECUTED _Thread_Enable_dispatch(); 49300: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, sem_t * ); 49306: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 4930c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4930e: 70ff moveq #-1,%d0 <== NOT EXECUTED 49310: 2082 movel %d2,%a0@ <== NOT EXECUTED id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; #endif return id; } 49312: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 49318: 4e5e unlk %fp <== NOT EXECUTED 4931a: 4e75 rts <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 4931c: 0283 0000 0a00 andil #2560,%d3 <== NOT EXECUTED 49322: 0c83 0000 0a00 cmpil #2560,%d3 <== NOT EXECUTED 49328: 6772 beqs 4939c <== NOT EXECUTED 4932a: 486e fff4 pea %fp@(-12) <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); } the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location ); the_semaphore->open_count += 1; _Thread_Enable_dispatch(); 4932e: 45f9 0004 c0fe lea 4c0fe <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 49334: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49338: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 4933e: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); } the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location ); the_semaphore->open_count += 1; 49344: 2040 moveal %d0,%a0 <== NOT EXECUTED 49346: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); } the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location ); 4934a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED the_semaphore->open_count += 1; _Thread_Enable_dispatch(); 4934e: 4e92 jsr %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 49350: 4e92 jsr %a2@ <== NOT EXECUTED goto return_id; 49352: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED return_id: #if defined(RTEMS_USE_16_BIT_OBJECT) the_semaphore->Semaphore_id = the_semaphore->Object.id; id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; 49356: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4935a: 5080 addql #8,%d0 <== NOT EXECUTED #endif return id; } 4935c: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 49362: 4e5e unlk %fp <== NOT EXECUTED 49364: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); value = va_arg( arg, unsigned int ); 49366: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED 4936a: 6000 ff78 braw 492e4 <== NOT EXECUTED /* * At this point, the semaphore does not exist and everything has been * checked. We should go ahead and create a semaphore. */ status =_POSIX_Semaphore_Create_support( 4936e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49372: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49374: 42a7 clrl %sp@- <== NOT EXECUTED 49376: 2f05 movel %d5,%sp@- <== NOT EXECUTED 49378: 4eb9 0004 fafc jsr 4fafc <_POSIX_Semaphore_Create_support> <== NOT EXECUTED 4937e: 2400 movel %d0,%d2 <== NOT EXECUTED /* * errno was set by Create_support, so don't set it again. */ _Thread_Enable_dispatch(); 49380: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED if ( status == -1 ) 49386: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4938a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4938c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4938e: 66c6 bnes 49356 <== NOT EXECUTED return SEM_FAILED; 49390: 70ff moveq #-1,%d0 <== NOT EXECUTED id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; #endif return id; } 49392: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 49398: 4e5e unlk %fp <== NOT EXECUTED 4939a: 4e75 rts <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { _Thread_Enable_dispatch(); 4939c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); 493a2: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 493a8: 7211 moveq #17,%d1 <== NOT EXECUTED 493aa: 2040 moveal %d0,%a0 <== NOT EXECUTED 493ac: 70ff moveq #-1,%d0 <== NOT EXECUTED id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; #endif return id; } 493ae: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); 493b4: 2081 movel %d1,%a0@ <== NOT EXECUTED id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; #endif return id; } 493b6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000493bc : */ int sem_post( sem_t *sem ) { 493bc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 493c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 493c4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 493c8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 493ca: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 493d0: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 493d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 493da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 493de: 6712 beqs 493f2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 493e0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED 493e6: 7216 moveq #22,%d1 <== NOT EXECUTED 493e8: 2040 moveal %d0,%a0 <== NOT EXECUTED 493ea: 70ff moveq #-1,%d0 <== NOT EXECUTED } 493ec: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 493ee: 2081 movel %d1,%a0@ <== NOT EXECUTED } 493f0: 4e75 rts <== NOT EXECUTED the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { case OBJECTS_LOCAL: _CORE_semaphore_Surrender( 493f2: 2040 moveal %d0,%a0 <== NOT EXECUTED 493f4: 42a7 clrl %sp@- <== NOT EXECUTED 493f6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 493fa: 4868 001a pea %a0@(26) <== NOT EXECUTED 493fe: 4eb9 0004 aab0 jsr 4aab0 <_CORE_semaphore_Surrender> <== NOT EXECUTED NULL /* XXX need to define a routine to handle this case */ #else NULL #endif ); _Thread_Enable_dispatch(); 49404: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4940a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4940e: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 49410: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049414 : int sem_timedwait( sem_t *sem, const struct timespec *abstime ) { 49414: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49418: 2f02 movel %d2,%sp@- <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4941a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4941e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED int sem_timedwait( sem_t *sem, const struct timespec *abstime ) { 49422: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 49426: 4eb9 0004 ef14 jsr 4ef14 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) 4942c: 508f addql #8,%sp <== NOT EXECUTED 4942e: 7203 moveq #3,%d1 <== NOT EXECUTED 49430: b280 cmpl %d0,%d1 <== NOT EXECUTED 49432: 671a beqs 4944e <== NOT EXECUTED do_wait = false; lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 49434: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49438: 42a7 clrl %sp@- <== NOT EXECUTED 4943a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4943c: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) rtems_set_errno_and_return_minus_one( ETIMEDOUT ); } return lock_status; } 49442: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 49446: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) rtems_set_errno_and_return_minus_one( ETIMEDOUT ); } return lock_status; } 4944a: 4e5e unlk %fp <== NOT EXECUTED 4944c: 4e75 rts <== NOT EXECUTED */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 4944e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49452: 4878 0001 pea 1 <== NOT EXECUTED 49456: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49458: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) rtems_set_errno_and_return_minus_one( ETIMEDOUT ); } return lock_status; } 4945e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 49462: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) rtems_set_errno_and_return_minus_one( ETIMEDOUT ); } return lock_status; } 49466: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004946c : */ int sem_trywait( sem_t *sem ) { 4946c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support(sem, false, THREAD_QUEUE_WAIT_FOREVER); 49470: 42a7 clrl %sp@- <== NOT EXECUTED 49472: 42a7 clrl %sp@- <== NOT EXECUTED 49474: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49478: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 4947e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049484 : */ int sem_unlink( const char *name ) { 49484: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49488: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4948e: 5280 addql #1,%d0 <== NOT EXECUTED 49490: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49492: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49494: 23c0 0006 4f74 movel %d0,64f74 <_Thread_Dispatch_disable_level><== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; sem_t the_semaphore_id; _Thread_Disable_dispatch(); status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); 4949a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4949e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 494a2: 4eb9 0004 fcb4 jsr 4fcb4 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 494a8: 508f addql #8,%sp <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; sem_t the_semaphore_id; _Thread_Disable_dispatch(); status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); 494aa: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status != 0 ) { 494ac: 6644 bnes 494f2 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 494ae: 4280 clrl %d0 <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( status ); } the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object( 494b0: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED 494b6: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED 494ba: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED &_POSIX_Semaphore_Information, _Objects_Get_index( the_semaphore_id ) ); the_semaphore->linked = false; 494be: 4200 clrb %d0 <== NOT EXECUTED 494c0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove ( POSIX_Semaphore_Control *the_semaphore ) { _Objects_Namespace_remove( 494c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494c6: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED 494cc: 4eb9 0004 b6c4 jsr 4b6c4 <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); 494d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494d4: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 494da: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 494e0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED the_semaphore->linked = false; _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); _Thread_Enable_dispatch(); return 0; 494e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 494e8: 4280 clrl %d0 <== NOT EXECUTED } 494ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 494ee: 4e5e unlk %fp <== NOT EXECUTED 494f0: 4e75 rts <== NOT EXECUTED _Thread_Disable_dispatch(); status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); if ( status != 0 ) { _Thread_Enable_dispatch(); 494f2: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 494f8: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); _Thread_Enable_dispatch(); return 0; } 494fe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Thread_Disable_dispatch(); status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); if ( status != 0 ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( status ); 49502: 2040 moveal %d0,%a0 <== NOT EXECUTED 49504: 70ff moveq #-1,%d0 <== NOT EXECUTED 49506: 2082 movel %d2,%a0@ <== NOT EXECUTED _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); _Thread_Enable_dispatch(); return 0; } 49508: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4950c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049510 : */ int sem_wait( sem_t *sem ) { 49510: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support( sem, true, THREAD_QUEUE_WAIT_FOREVER ); 49514: 42a7 clrl %sp@- <== NOT EXECUTED 49516: 4878 0001 pea 1 <== NOT EXECUTED 4951a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4951e: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 49524: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461c4 : int setitimer( int which, const struct itimerval *value, struct itimerval *ovalue ) { 461c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !value ) 461c8: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 461cc: 6732 beqs 46200 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); if ( !ovalue ) 461ce: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 461d2: 672c beqs 46200 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); switch ( which ) { 461d4: 7002 moveq #2,%d0 <== NOT EXECUTED 461d6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 461da: 6412 bccs 461ee <== NOT EXECUTED case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 461dc: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED } 461e2: 4e5e unlk %fp <== NOT EXECUTED case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 461e4: 2040 moveal %d0,%a0 <== NOT EXECUTED 461e6: 7016 moveq #22,%d0 <== NOT EXECUTED 461e8: 2080 movel %d0,%a0@ <== NOT EXECUTED } 461ea: 70ff moveq #-1,%d0 <== NOT EXECUTED 461ec: 4e75 rts <== NOT EXECUTED switch ( which ) { case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 461ee: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED 461f4: 7258 moveq #88,%d1 <== NOT EXECUTED 461f6: 2040 moveal %d0,%a0 <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 461f8: 70ff moveq #-1,%d0 <== NOT EXECUTED 461fa: 4e5e unlk %fp <== NOT EXECUTED switch ( which ) { case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 461fc: 2081 movel %d1,%a0@ <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 461fe: 4e75 rts <== NOT EXECUTED { if ( !value ) rtems_set_errno_and_return_minus_one( EFAULT ); if ( !ovalue ) rtems_set_errno_and_return_minus_one( EFAULT ); 46200: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46206: 4e5e unlk %fp <== NOT EXECUTED { if ( !value ) rtems_set_errno_and_return_minus_one( EFAULT ); if ( !ovalue ) rtems_set_errno_and_return_minus_one( EFAULT ); 46208: 2040 moveal %d0,%a0 <== NOT EXECUTED 4620a: 700e moveq #14,%d0 <== NOT EXECUTED 4620c: 2080 movel %d0,%a0@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4620e: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00046d90 : int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) { 46d90: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46d94: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 46d98: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46d9c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46da0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED ISR_Level level; if ( oact ) 46da4: 4a89 tstl %a1 <== NOT EXECUTED 46da6: 6718 beqs 46dc0 <== NOT EXECUTED *oact = _POSIX_signals_Vectors[ sig ]; 46da8: 2202 movel %d2,%d1 <== NOT EXECUTED 46daa: 2002 movel %d2,%d0 <== NOT EXECUTED 46dac: e989 lsll #4,%d1 <== NOT EXECUTED 46dae: e588 lsll #2,%d0 <== NOT EXECUTED 46db0: 2041 moveal %d1,%a0 <== NOT EXECUTED 46db2: 91c0 subal %d0,%a0 <== NOT EXECUTED 46db4: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED 46dba: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46dbc: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46dbe: 2290 movel %a0@,%a1@ <== NOT EXECUTED if ( !sig ) 46dc0: 4a82 tstl %d2 <== NOT EXECUTED 46dc2: 6700 0088 beqw 46e4c <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 46dc6: 2002 movel %d2,%d0 <== NOT EXECUTED 46dc8: 5380 subql #1,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 46dca: 721f moveq #31,%d1 <== NOT EXECUTED 46dcc: b280 cmpl %d0,%d1 <== NOT EXECUTED 46dce: 657c bcss 46e4c <== NOT EXECUTED * * NOTE: Solaris documentation claims to "silently enforce" this which * contradicts the POSIX specification. */ if ( sig == SIGKILL ) 46dd0: 7009 moveq #9,%d0 <== NOT EXECUTED 46dd2: b082 cmpl %d2,%d0 <== NOT EXECUTED 46dd4: 6776 beqs 46e4c <== NOT EXECUTED /* * Evaluate the new action structure and set the global signal vector * appropriately. */ if ( act ) { 46dd6: 4a8a tstl %a2 <== NOT EXECUTED 46dd8: 6766 beqs 46e40 <== NOT EXECUTED /* * Unless the user is installing the default signal actions, then * we can just copy the provided sigaction structure into the vectors. */ _ISR_Disable( level ); 46dda: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46de0: 40c3 movew %sr,%d3 <== NOT EXECUTED 46de2: 8083 orl %d3,%d0 <== NOT EXECUTED 46de4: 46c0 movew %d0,%sr <== NOT EXECUTED if ( act->sa_handler == SIG_DFL ) { 46de6: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 46dea: 6730 beqs 46e1c <== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; } else { _POSIX_signals_Clear_process_signals( sig ); 46dec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46dee: 4eb9 0004 cb84 jsr 4cb84 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = *act; 46df4: 588f addql #4,%sp <== NOT EXECUTED 46df6: 2002 movel %d2,%d0 <== NOT EXECUTED 46df8: 224a moveal %a2,%a1 <== NOT EXECUTED 46dfa: e98a lsll #4,%d2 <== NOT EXECUTED 46dfc: e588 lsll #2,%d0 <== NOT EXECUTED 46dfe: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e00: 91c0 subal %d0,%a0 <== NOT EXECUTED 46e02: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED 46e08: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e0a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e0c: 2091 movel %a1@,%a0@ <== NOT EXECUTED } _ISR_Enable( level ); 46e0e: 46c3 movew %d3,%sr <== NOT EXECUTED * now (signals not posted when SIG_IGN). * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; 46e10: 4280 clrl %d0 <== NOT EXECUTED } 46e12: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e18: 4e5e unlk %fp <== NOT EXECUTED 46e1a: 4e75 rts <== NOT EXECUTED * we can just copy the provided sigaction structure into the vectors. */ _ISR_Disable( level ); if ( act->sa_handler == SIG_DFL ) { _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; 46e1c: 2002 movel %d2,%d0 <== NOT EXECUTED 46e1e: e98a lsll #4,%d2 <== NOT EXECUTED 46e20: e588 lsll #2,%d0 <== NOT EXECUTED 46e22: 9480 subl %d0,%d2 <== NOT EXECUTED 46e24: 2242 moveal %d2,%a1 <== NOT EXECUTED 46e26: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e28: d3fc 0005 f6e2 addal #390882,%a1 <== NOT EXECUTED 46e2e: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED 46e34: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e36: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e38: 2091 movel %a1@,%a0@ <== NOT EXECUTED } else { _POSIX_signals_Clear_process_signals( sig ); _POSIX_signals_Vectors[ sig ] = *act; } _ISR_Enable( level ); 46e3a: 46c3 movew %d3,%sr <== NOT EXECUTED * now (signals not posted when SIG_IGN). * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; 46e3c: 4280 clrl %d0 <== NOT EXECUTED 46e3e: 60d2 bras 46e12 <== NOT EXECUTED 46e40: 4280 clrl %d0 <== NOT EXECUTED } 46e42: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e48: 4e5e unlk %fp <== NOT EXECUTED 46e4a: 4e75 rts <== NOT EXECUTED * NOTE: Solaris documentation claims to "silently enforce" this which * contradicts the POSIX specification. */ if ( sig == SIGKILL ) rtems_set_errno_and_return_minus_one( EINVAL ); 46e4c: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED 46e52: 7216 moveq #22,%d1 <== NOT EXECUTED 46e54: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e56: 70ff moveq #-1,%d0 <== NOT EXECUTED * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; } 46e58: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED * NOTE: Solaris documentation claims to "silently enforce" this which * contradicts the POSIX specification. */ if ( sig == SIGKILL ) rtems_set_errno_and_return_minus_one( EINVAL ); 46e5e: 2081 movel %d1,%a0@ <== NOT EXECUTED * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; } 46e60: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046e64 : int sigaddset( sigset_t *set, int signo ) { 46e64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e68: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46e6c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46e70: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !set ) 46e72: 4a88 tstl %a0 <== NOT EXECUTED 46e74: 671e beqs 46e94 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 46e76: 4a80 tstl %d0 <== NOT EXECUTED 46e78: 671a beqs 46e94 <== NOT EXECUTED 46e7a: 2400 movel %d0,%d2 <== NOT EXECUTED 46e7c: 5382 subql #1,%d2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) 46e7e: 701f moveq #31,%d0 <== NOT EXECUTED 46e80: b082 cmpl %d2,%d0 <== NOT EXECUTED 46e82: 6510 bcss 46e94 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 46e84: 7201 moveq #1,%d1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); *set |= signo_to_mask(signo); return 0; 46e86: 4280 clrl %d0 <== NOT EXECUTED 46e88: e5a9 lsll %d2,%d1 <== NOT EXECUTED } 46e8a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46e8e: 4e5e unlk %fp <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); *set |= signo_to_mask(signo); 46e90: 8390 orl %d1,%a0@ <== NOT EXECUTED return 0; } 46e92: 4e75 rts <== NOT EXECUTED if ( !signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 46e94: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED *set |= signo_to_mask(signo); return 0; } 46e9a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED if ( !signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 46e9e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46ea0: 7216 moveq #22,%d1 <== NOT EXECUTED 46ea2: 70ff moveq #-1,%d0 <== NOT EXECUTED *set |= signo_to_mask(signo); return 0; } 46ea4: 4e5e unlk %fp <== NOT EXECUTED if ( !signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 46ea6: 2081 movel %d1,%a0@ <== NOT EXECUTED *set |= signo_to_mask(signo); return 0; } ... =============================================================================== 00049354 : int sigdelset( sigset_t *set, int signo ) { 49354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49358: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4935c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 49360: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !set ) 49362: 4a88 tstl %a0 <== NOT EXECUTED 49364: 672a beqs 49390 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 49366: 4a80 tstl %d0 <== NOT EXECUTED 49368: 671c beqs 49386 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 4936a: 2400 movel %d0,%d2 <== NOT EXECUTED 4936c: 5382 subql #1,%d2 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 4936e: 701f moveq #31,%d0 <== NOT EXECUTED 49370: b082 cmpl %d2,%d0 <== NOT EXECUTED 49372: 651c bcss 49390 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 49374: 7201 moveq #1,%d1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); *set &= ~signo_to_mask(signo); return 0; 49376: 4280 clrl %d0 <== NOT EXECUTED 49378: e5a9 lsll %d2,%d1 <== NOT EXECUTED } 4937a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); *set &= ~signo_to_mask(signo); 4937e: 4681 notl %d1 <== NOT EXECUTED return 0; } 49380: 4e5e unlk %fp <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); *set &= ~signo_to_mask(signo); 49382: c390 andl %d1,%a0@ <== NOT EXECUTED return 0; } 49384: 4e75 rts <== NOT EXECUTED 49386: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) return 0; 4938a: 4280 clrl %d0 <== NOT EXECUTED if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); *set &= ~signo_to_mask(signo); return 0; } 4938c: 4e5e unlk %fp <== NOT EXECUTED 4938e: 4e75 rts <== NOT EXECUTED if ( !signo ) return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 49390: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED *set &= ~signo_to_mask(signo); return 0; } 49396: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED if ( !signo ) return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 4939a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4939c: 7216 moveq #22,%d1 <== NOT EXECUTED 4939e: 70ff moveq #-1,%d0 <== NOT EXECUTED *set &= ~signo_to_mask(signo); return 0; } 493a0: 4e5e unlk %fp <== NOT EXECUTED if ( !signo ) return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 493a2: 2081 movel %d1,%a0@ <== NOT EXECUTED *set &= ~signo_to_mask(signo); return 0; } ... =============================================================================== 0004bf28 : #include int sigemptyset( sigset_t *set ) { 4bf28: 4e56 0000 linkw %fp,#0 4bf2c: 206e 0008 moveal %fp@(8),%a0 if ( !set ) 4bf30: 4a88 tstl %a0 4bf32: 6708 beqs 4bf3c <== NEVER TAKEN rtems_set_errno_and_return_minus_one( EINVAL ); *set = 0; return 0; 4bf34: 4280 clrl %d0 } 4bf36: 4e5e unlk %fp ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); *set = 0; 4bf38: 4290 clrl %a0@ return 0; } 4bf3a: 4e75 rts int sigemptyset( sigset_t *set ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 4bf3c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED 4bf42: 7216 moveq #22,%d1 <== NOT EXECUTED 4bf44: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf46: 70ff moveq #-1,%d0 <== NOT EXECUTED *set = 0; return 0; } 4bf48: 4e5e unlk %fp <== NOT EXECUTED int sigemptyset( sigset_t *set ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 4bf4a: 2081 movel %d1,%a0@ <== NOT EXECUTED *set = 0; return 0; } ... =============================================================================== 000493d0 : #include int sigfillset( sigset_t *set ) { 493d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 493d4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !set ) 493d8: 4a88 tstl %a0 <== NOT EXECUTED 493da: 670a beqs 493e6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); *set = SIGNAL_ALL_MASK; 493dc: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 493de: 4e5e unlk %fp <== NOT EXECUTED ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); *set = SIGNAL_ALL_MASK; 493e0: 2080 movel %d0,%a0@ <== NOT EXECUTED return 0; 493e2: 4280 clrl %d0 <== NOT EXECUTED } 493e4: 4e75 rts <== NOT EXECUTED int sigfillset( sigset_t *set ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 493e6: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED 493ec: 7216 moveq #22,%d1 <== NOT EXECUTED 493ee: 2040 moveal %d0,%a0 <== NOT EXECUTED 493f0: 70ff moveq #-1,%d0 <== NOT EXECUTED *set = SIGNAL_ALL_MASK; return 0; } 493f2: 4e5e unlk %fp <== NOT EXECUTED int sigfillset( sigset_t *set ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 493f4: 2081 movel %d1,%a0@ <== NOT EXECUTED *set = SIGNAL_ALL_MASK; return 0; } =============================================================================== 000493f8 : int sigismember( const sigset_t *set, int signo ) { 493f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 493fc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49400: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !set ) 49404: 4a88 tstl %a0 <== NOT EXECUTED 49406: 6724 beqs 4942c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 49408: 4a80 tstl %d0 <== NOT EXECUTED 4940a: 671a beqs 49426 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 4940c: 2200 movel %d0,%d1 <== NOT EXECUTED 4940e: 5381 subql #1,%d1 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 49410: 701f moveq #31,%d0 <== NOT EXECUTED 49412: b081 cmpl %d1,%d0 <== NOT EXECUTED 49414: 6516 bcss 4942c <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 49416: 7001 moveq #1,%d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 49418: 4e5e unlk %fp <== NOT EXECUTED 4941a: e3a8 lsll %d1,%d0 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( *set & signo_to_mask(signo) ) 4941c: c090 andl %a0@,%d0 <== NOT EXECUTED const sigset_t *set, int signo ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 4941e: 56c0 sne %d0 <== NOT EXECUTED 49420: 49c0 extbl %d0 <== NOT EXECUTED 49422: 4480 negl %d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 49424: 4e75 rts <== NOT EXECUTED { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) return 0; 49426: 4280 clrl %d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 49428: 4e5e unlk %fp <== NOT EXECUTED 4942a: 4e75 rts <== NOT EXECUTED if ( !signo ) return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 4942c: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED 49432: 7216 moveq #22,%d1 <== NOT EXECUTED 49434: 2040 moveal %d0,%a0 <== NOT EXECUTED 49436: 70ff moveq #-1,%d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 49438: 4e5e unlk %fp <== NOT EXECUTED if ( !signo ) return 0; if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 4943a: 2081 movel %d1,%a0@ <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } ... =============================================================================== 00046d0c : sighandler_t signal( int signum, sighandler_t handler ) { 46d0c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED struct sigaction s; struct sigaction old; s.sa_handler = handler ; 46d10: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED sigemptyset(&s.sa_mask); 46d16: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 46d1a: 4eb9 0004 6ce4 jsr 46ce4 <== NOT EXECUTED s.sa_flags = SA_RESTART; #else s.sa_flags = 0; #endif sigaction( signum, &s, &old ); 46d20: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 46d24: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 46d28: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED s.sa_flags = SA_RESTART | SA_INTERRUPT | SA_NOMASK; s.sa_restorer= NULL ; #elif defined(signal_like_SVR4) s.sa_flags = SA_RESTART; #else s.sa_flags = 0; 46d2c: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED #endif sigaction( signum, &s, &old ); 46d30: 4eb9 0004 6bc8 jsr 46bc8 <== NOT EXECUTED return (sighandler_t) old.sa_handler; } 46d36: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 46d3a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ed4 : #include int sigpending( sigset_t *set ) { 46ed4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ed8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_API_Control *api; if ( !set ) 46edc: 4a88 tstl %a0 <== NOT EXECUTED 46ede: 671c beqs 46efc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; *set = api->signals_pending | _POSIX_signals_Pending; 46ee0: 2279 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED return 0; 46ee6: 4280 clrl %d0 <== NOT EXECUTED } 46ee8: 4e5e unlk %fp <== NOT EXECUTED if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; *set = api->signals_pending | _POSIX_signals_Pending; 46eea: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 46eee: 2239 0006 2368 movel 62368 <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED 46ef4: 82a9 00d4 orl %a1@(212),%d1 <== NOT EXECUTED 46ef8: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 46efa: 4e75 rts <== NOT EXECUTED ) { POSIX_API_Control *api; if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 46efc: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED 46f02: 7216 moveq #22,%d1 <== NOT EXECUTED 46f04: 2040 moveal %d0,%a0 <== NOT EXECUTED 46f06: 70ff moveq #-1,%d0 <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; *set = api->signals_pending | _POSIX_signals_Pending; return 0; } 46f08: 4e5e unlk %fp <== NOT EXECUTED ) { POSIX_API_Control *api; if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 46f0a: 2081 movel %d1,%a0@ <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; *set = api->signals_pending | _POSIX_signals_Pending; return 0; } ... =============================================================================== 00046f10 : int sigprocmask( int how, const sigset_t *set, sigset_t *oset ) { 46f10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); #else return -1; #endif } 46f14: 4e5e unlk %fp <== NOT EXECUTED /* * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. */ #if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); 46f16: 4ef9 0004 d318 jmp 4d318 <== NOT EXECUTED =============================================================================== 00049488 : int sigqueue( pid_t pid, int signo, const union sigval value ) { 49488: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, signo, &value ); 4948c: 486e 0010 pea %fp@(16) <== NOT EXECUTED 49490: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49494: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49498: 4eb9 0004 f31c jsr 4f31c <== NOT EXECUTED } 4949e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000494a4 : #include int sigsuspend( const sigset_t *sigmask ) { 494a4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 494a8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED /* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 494ac: 240e movel %fp,%d2 <== NOT EXECUTED 494ae: 5982 subql #4,%d2 <== NOT EXECUTED 494b0: 45f9 0004 947c lea 4947c ,%a2 <== NOT EXECUTED 494b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED #include int sigsuspend( const sigset_t *sigmask ) { 494b8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED /* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 494bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 494be: 4878 0001 pea 1 <== NOT EXECUTED 494c2: 4e92 jsr %a2@ <== NOT EXECUTED current_unblocked_signals = ~(*sigmask); 494c4: 2013 movel %a3@,%d0 <== NOT EXECUTED 494c6: 4680 notl %d0 <== NOT EXECUTED status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL ); 494c8: 42a7 clrl %sp@- <== NOT EXECUTED 494ca: 42a7 clrl %sp@- <== NOT EXECUTED 494cc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); current_unblocked_signals = ~(*sigmask); 494d0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL ); 494d4: 4eb9 0004 954c jsr 4954c <== NOT EXECUTED (void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL ); 494da: 42a7 clrl %sp@- <== NOT EXECUTED 494dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 494de: 42a7 clrl %sp@- <== NOT EXECUTED 494e0: 4e92 jsr %a2@ <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) assert( status != -1 ); #endif rtems_set_errno_and_return_minus_one( EINTR ); 494e2: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 494e6: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED 494ec: 7204 moveq #4,%d1 <== NOT EXECUTED 494ee: 2040 moveal %d0,%a0 <== NOT EXECUTED } 494f0: 70ff moveq #-1,%d0 <== NOT EXECUTED 494f2: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) assert( status != -1 ); #endif rtems_set_errno_and_return_minus_one( EINTR ); 494f8: 2081 movel %d1,%a0@ <== NOT EXECUTED } 494fa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047224 : int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) { 47224: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 47228: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4722c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 47230: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 47234: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED ISR_Level level; /* * Error check parameters before disabling interrupts. */ if ( !set ) 47238: 4a8b tstl %a3 <== NOT EXECUTED 4723a: 6700 01b2 beqw 473ee <== NOT EXECUTED /* NOTE: This is very specifically a RELATIVE not ABSOLUTE time * in the Open Group specification. */ interval = 0; if ( timeout ) { 4723e: 4a82 tstl %d2 <== NOT EXECUTED 47240: 6700 0124 beqw 47366 <== NOT EXECUTED if ( !_Timespec_Is_valid( timeout ) ) 47244: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47246: 4eb9 0004 abe4 jsr 4abe4 <_Timespec_Is_valid> <== NOT EXECUTED 4724c: 588f addql #4,%sp <== NOT EXECUTED 4724e: 4a00 tstb %d0 <== NOT EXECUTED 47250: 6700 01b6 beqw 47408 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); interval = _Timespec_To_ticks( timeout ); 47254: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47256: 4eb9 0004 ac60 jsr 4ac60 <_Timespec_To_ticks> <== NOT EXECUTED if ( !interval ) 4725c: 588f addql #4,%sp <== NOT EXECUTED 4725e: 4a80 tstl %d0 <== NOT EXECUTED 47260: 6700 018c beqw 473ee <== NOT EXECUTED /* * Initialize local variables. */ the_info = ( info ) ? info : &signal_information; 47264: 4a8a tstl %a2 <== NOT EXECUTED 47266: 6700 0106 beqw 4736e <== NOT EXECUTED the_thread = _Thread_Executing; 4726a: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 47270: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED the_info = ( info ) ? info : &signal_information; the_thread = _Thread_Executing; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 47276: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 4727a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4727c: 8283 orl %d3,%d1 <== NOT EXECUTED 4727e: 46c1 movew %d1,%sr <== NOT EXECUTED if ( *set & api->signals_pending ) { 47280: 2213 movel %a3@,%d1 <== NOT EXECUTED 47282: 2801 movel %d1,%d4 <== NOT EXECUTED 47284: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED 47288: c882 andl %d2,%d4 <== NOT EXECUTED 4728a: 6600 010a bnew 47396 <== NOT EXECUTED return the_info->si_signo; } /* Process pending signals? */ if ( *set & _POSIX_signals_Pending ) { 4728e: 2439 0006 2828 movel 62828 <_POSIX_signals_Pending>,%d2 <== NOT EXECUTED 47294: c282 andl %d2,%d1 <== NOT EXECUTED 47296: 6600 0094 bnew 4732c <== NOT EXECUTED 4729a: 2239 0006 2178 movel 62178 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; return signo; } the_info->si_signo = -1; 472a0: 74ff moveq #-1,%d2 <== NOT EXECUTED 472a2: 5281 addql #1,%d1 <== NOT EXECUTED 472a4: 2482 movel %d2,%a2@ <== NOT EXECUTED 472a6: 23c1 0006 2178 movel %d1,62178 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; the_thread->Wait.return_code = EINTR; 472ac: 7204 moveq #4,%d1 <== NOT EXECUTED } the_info->si_signo = -1; _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; 472ae: 43f9 0006 27c0 lea 627c0 <_POSIX_signals_Wait_queue>,%a1 <== NOT EXECUTED the_thread->Wait.return_code = EINTR; 472b4: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED the_thread->Wait.option = *set; 472b8: 2153 0030 movel %a3@,%a0@(48) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 472bc: 123c 0001 moveb #1,%d1 <== NOT EXECUTED the_thread->Wait.return_argument = the_info; 472c0: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED } the_info->si_signo = -1; _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; 472c4: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED 472c8: 23c1 0006 27f0 movel %d1,627f0 <_POSIX_signals_Wait_queue+0x30><== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_thread->Wait.option = *set; the_thread->Wait.return_argument = the_info; _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue ); _ISR_Enable( level ); 472ce: 46c3 movew %d3,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval ); 472d0: 4879 0004 a84c pea 4a84c <_Thread_queue_Timeout> <== NOT EXECUTED 472d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472d8: 4879 0006 27c0 pea 627c0 <_POSIX_signals_Wait_queue> <== NOT EXECUTED 472de: 4eb9 0004 a488 jsr 4a488 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 472e4: 4eb9 0004 9fae jsr 49fae <_Thread_Enable_dispatch> <== NOT EXECUTED /* * When the thread is set free by a signal, it is need to eliminate * the signal. */ _POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false ); 472ea: 42a7 clrl %sp@- <== NOT EXECUTED 472ec: 42a7 clrl %sp@- <== NOT EXECUTED 472ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 472f0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 472f2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 472f4: 4eb9 0004 d358 jsr 4d358 <_POSIX_signals_Clear_signals> <== NOT EXECUTED /* Set errno only if return code is not EINTR or * if EINTR was caused by a signal being caught, which * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) 472fa: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47300: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 47304: 7004 moveq #4,%d0 <== NOT EXECUTED 47306: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4730a: 6600 00c2 bnew 473ce <== NOT EXECUTED || !(*set & signo_to_mask( the_info->si_signo )) ) { 4730e: 2412 movel %a2@,%d2 <== NOT EXECUTED 47310: 2202 movel %d2,%d1 <== NOT EXECUTED 47312: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 47316: 5381 subql #1,%d1 <== NOT EXECUTED 47318: e3a8 lsll %d1,%d0 <== NOT EXECUTED 4731a: c093 andl %a3@,%d0 <== NOT EXECUTED 4731c: 6700 00b0 beqw 473ce <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 47320: 2002 movel %d2,%d0 <== NOT EXECUTED 47322: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47328: 4e5e unlk %fp <== NOT EXECUTED 4732a: 4e75 rts <== NOT EXECUTED } /* Process pending signals? */ if ( *set & _POSIX_signals_Pending ) { signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending ); 4732c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4732e: 4eb9 0004 71d8 jsr 471d8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 47334: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); 47336: 4297 clrl %sp@ <== NOT EXECUTED 47338: 4878 0001 pea 1 <== NOT EXECUTED 4733c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4733e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47340: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47342: 4eb9 0004 d358 jsr 4d358 <_POSIX_signals_Clear_signals> <== NOT EXECUTED _ISR_Enable( level ); 47348: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; 4734a: 7201 moveq #1,%d1 <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 4734c: 2002 movel %d2,%d0 <== NOT EXECUTED _ISR_Enable( level ); the_info->si_signo = signo; the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; return signo; 4734e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); _ISR_Enable( level ); the_info->si_signo = signo; the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; 47352: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED if ( *set & _POSIX_signals_Pending ) { signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending ); _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); _ISR_Enable( level ); the_info->si_signo = signo; 47356: 2482 movel %d2,%a2@ <== NOT EXECUTED the_info->si_code = SI_USER; 47358: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 4735c: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47362: 4e5e unlk %fp <== NOT EXECUTED 47364: 4e75 rts <== NOT EXECUTED /* NOTE: This is very specifically a RELATIVE not ABSOLUTE time * in the Open Group specification. */ interval = 0; 47366: 4280 clrl %d0 <== NOT EXECUTED /* * Initialize local variables. */ the_info = ( info ) ? info : &signal_information; 47368: 4a8a tstl %a2 <== NOT EXECUTED 4736a: 6600 fefe bnew 4726a <== NOT EXECUTED the_thread = _Thread_Executing; 4736e: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED /* * Initialize local variables. */ the_info = ( info ) ? info : &signal_information; 47374: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 47378: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED the_info = ( info ) ? info : &signal_information; the_thread = _Thread_Executing; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4737e: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 47382: 40c3 movew %sr,%d3 <== NOT EXECUTED 47384: 8283 orl %d3,%d1 <== NOT EXECUTED 47386: 46c1 movew %d1,%sr <== NOT EXECUTED if ( *set & api->signals_pending ) { 47388: 2213 movel %a3@,%d1 <== NOT EXECUTED 4738a: 2801 movel %d1,%d4 <== NOT EXECUTED 4738c: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED 47390: c882 andl %d2,%d4 <== NOT EXECUTED 47392: 6700 fefa beqw 4728e <== NOT EXECUTED /* XXX real info later */ the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending ); 47396: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47398: 4eb9 0004 71d8 jsr 471d8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 4739e: 2480 movel %d0,%a2@ <== NOT EXECUTED _POSIX_signals_Clear_signals( 473a0: 4297 clrl %sp@ <== NOT EXECUTED 473a2: 42a7 clrl %sp@- <== NOT EXECUTED 473a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 473a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 473a8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 473aa: 4eb9 0004 d358 jsr 4d358 <_POSIX_signals_Clear_signals> <== NOT EXECUTED the_info->si_signo, the_info, false, false ); _ISR_Enable( level ); 473b0: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_code = SI_USER; 473b2: 7001 moveq #1,%d0 <== NOT EXECUTED the_info->si_value.sival_int = 0; return the_info->si_signo; 473b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 473b8: 2412 movel %a2@,%d2 <== NOT EXECUTED false, false ); _ISR_Enable( level ); the_info->si_code = SI_USER; 473ba: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 473be: 2002 movel %d2,%d0 <== NOT EXECUTED false ); _ISR_Enable( level ); the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; 473c0: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 473c4: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 473ca: 4e5e unlk %fp <== NOT EXECUTED 473cc: 4e75 rts <== NOT EXECUTED * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) || !(*set & signo_to_mask( the_info->si_signo )) ) { errno = _Thread_Executing->Wait.return_code; 473ce: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED return -1; 473d4: 74ff moveq #-1,%d2 <== NOT EXECUTED * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) || !(*set & signo_to_mask( the_info->si_signo )) ) { errno = _Thread_Executing->Wait.return_code; 473d6: 2240 moveal %d0,%a1 <== NOT EXECUTED return -1; } return the_info->si_signo; } 473d8: 2002 movel %d2,%d0 <== NOT EXECUTED * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) || !(*set & signo_to_mask( the_info->si_signo )) ) { errno = _Thread_Executing->Wait.return_code; 473da: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED return -1; } return the_info->si_signo; } 473e0: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) || !(*set & signo_to_mask( the_info->si_signo )) ) { errno = _Thread_Executing->Wait.return_code; 473e6: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED return -1; } return the_info->si_signo; } 473ea: 4e5e unlk %fp <== NOT EXECUTED 473ec: 4e75 rts <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); interval = _Timespec_To_ticks( timeout ); if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); 473ee: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED 473f4: 74ff moveq #-1,%d2 <== NOT EXECUTED 473f6: 7616 moveq #22,%d3 <== NOT EXECUTED 473f8: 2040 moveal %d0,%a0 <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 473fa: 2002 movel %d2,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); interval = _Timespec_To_ticks( timeout ); if ( !interval ) rtems_set_errno_and_return_minus_one( EINVAL ); 473fc: 2083 movel %d3,%a0@ <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 473fe: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47404: 4e5e unlk %fp <== NOT EXECUTED 47406: 4e75 rts <== NOT EXECUTED interval = 0; if ( timeout ) { if ( !_Timespec_Is_valid( timeout ) ) rtems_set_errno_and_return_minus_one( EINVAL ); 47408: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED 4740e: 74ff moveq #-1,%d2 <== NOT EXECUTED 47410: 7816 moveq #22,%d4 <== NOT EXECUTED 47412: 2240 moveal %d0,%a1 <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 47414: 2002 movel %d2,%d0 <== NOT EXECUTED interval = 0; if ( timeout ) { if ( !_Timespec_Is_valid( timeout ) ) rtems_set_errno_and_return_minus_one( EINVAL ); 47416: 2284 movel %d4,%a1@ <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; return -1; } return the_info->si_signo; } 47418: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4741e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049764 : int sigwait( const sigset_t *set, int *sig ) { 49764: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49768: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4976a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED int status; status = sigtimedwait( set, NULL, NULL ); 4976e: 42a7 clrl %sp@- <== NOT EXECUTED 49770: 42a7 clrl %sp@- <== NOT EXECUTED 49772: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49776: 4eb9 0004 954c jsr 4954c <== NOT EXECUTED if ( status != -1 ) { 4977c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49780: 72ff moveq #-1,%d1 <== NOT EXECUTED 49782: b280 cmpl %d0,%d1 <== NOT EXECUTED 49784: 6710 beqs 49796 <== NOT EXECUTED if ( sig ) 49786: 4a8a tstl %a2 <== NOT EXECUTED 49788: 671e beqs 497a8 <== NOT EXECUTED *sig = status; 4978a: 2480 movel %d0,%a2@ <== NOT EXECUTED return 0; } return errno; } 4978c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED status = sigtimedwait( set, NULL, NULL ); if ( status != -1 ) { if ( sig ) *sig = status; return 0; 49790: 4280 clrl %d0 <== NOT EXECUTED } return errno; } 49792: 4e5e unlk %fp <== NOT EXECUTED 49794: 4e75 rts <== NOT EXECUTED if ( sig ) *sig = status; return 0; } return errno; 49796: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED } 4979c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED if ( sig ) *sig = status; return 0; } return errno; 497a0: 2040 moveal %d0,%a0 <== NOT EXECUTED } 497a2: 4e5e unlk %fp <== NOT EXECUTED if ( sig ) *sig = status; return 0; } return errno; 497a4: 2010 movel %a0@,%d0 <== NOT EXECUTED } 497a6: 4e75 rts <== NOT EXECUTED 497a8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED status = sigtimedwait( set, NULL, NULL ); if ( status != -1 ) { if ( sig ) *sig = status; return 0; 497ac: 4280 clrl %d0 <== NOT EXECUTED } return errno; } 497ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004974c : int sigwaitinfo( const sigset_t *set, siginfo_t *info ) { 4974c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return sigtimedwait( set, info, NULL ); 49750: 42a7 clrl %sp@- <== NOT EXECUTED 49752: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49756: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4975a: 4eb9 0004 954c jsr 4954c <== NOT EXECUTED } 49760: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045f4c : long sysconf( int name ) { if ( name == _SC_CLK_TCK ) 45f4c: 7002 moveq #2,%d0 <== NOT EXECUTED */ long sysconf( int name ) { 45f4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f52: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45f56: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( name == _SC_CLK_TCK ) 45f58: b081 cmpl %d1,%d0 <== NOT EXECUTED 45f5a: 6726 beqs 45f82 <== NOT EXECUTED return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); if ( name == _SC_OPEN_MAX ) 45f5c: 7004 moveq #4,%d0 <== NOT EXECUTED 45f5e: b081 cmpl %d1,%d0 <== NOT EXECUTED 45f60: 6738 beqs 45f9a <== NOT EXECUTED return rtems_libio_number_iops; if ( name == _SC_GETPW_R_SIZE_MAX ) return 1024; 45f62: 203c 0000 0400 movel #1024,%d0 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick()); if ( name == _SC_OPEN_MAX ) return rtems_libio_number_iops; if ( name == _SC_GETPW_R_SIZE_MAX ) 45f68: 7433 moveq #51,%d2 <== NOT EXECUTED 45f6a: b481 cmpl %d1,%d2 <== NOT EXECUTED 45f6c: 670c beqs 45f7a <== NOT EXECUTED return 1024; if ( name == _SC_PAGESIZE ) 45f6e: 143c 0008 moveb #8,%d2 <== NOT EXECUTED return PAGE_SIZE; 45f72: 303c 1000 movew #4096,%d0 <== NOT EXECUTED return rtems_libio_number_iops; if ( name == _SC_GETPW_R_SIZE_MAX ) return 1024; if ( name == _SC_PAGESIZE ) 45f76: b481 cmpl %d1,%d2 <== NOT EXECUTED 45f78: 662e bnes 45fa8 <== NOT EXECUTED if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); } 45f7a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45f7e: 4e5e unlk %fp <== NOT EXECUTED 45f80: 4e75 rts <== NOT EXECUTED long sysconf( int name ) { if ( name == _SC_CLK_TCK ) return (TOD_MICROSECONDS_PER_SECOND / 45f82: 41f9 0005 ea64 lea 5ea64 ,%a0 <== NOT EXECUTED 45f88: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); } 45f8e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45f92: 4e5e unlk %fp <== NOT EXECUTED long sysconf( int name ) { if ( name == _SC_CLK_TCK ) return (TOD_MICROSECONDS_PER_SECOND / 45f94: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); } 45f98: 4e75 rts <== NOT EXECUTED 45f9a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45f9e: 4e5e unlk %fp <== NOT EXECUTED if ( name == _SC_CLK_TCK ) return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); if ( name == _SC_OPEN_MAX ) return rtems_libio_number_iops; 45fa0: 2039 0005 e984 movel 5e984 ,%d0 <== NOT EXECUTED if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); } 45fa6: 4e75 rts <== NOT EXECUTED #if defined(__sparc__) if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); 45fa8: 4eb9 0004 eee4 jsr 4eee4 <__errno> <== NOT EXECUTED } 45fae: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED #if defined(__sparc__) if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); 45fb2: 2040 moveal %d0,%a0 <== NOT EXECUTED 45fb4: 7216 moveq #22,%d1 <== NOT EXECUTED 45fb6: 70ff moveq #-1,%d0 <== NOT EXECUTED } 45fb8: 4e5e unlk %fp <== NOT EXECUTED #if defined(__sparc__) if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); 45fba: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00046014 : timer_t *timerid ) { POSIX_Timer_Control *ptimer; if ( clock_id != CLOCK_REALTIME ) 46014: 7001 moveq #1,%d0 <== NOT EXECUTED int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) { 46016: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4601a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4601c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 46020: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46022: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Timer_Control *ptimer; if ( clock_id != CLOCK_REALTIME ) 46026: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4602a: 6600 00c4 bnew 460f0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !timerid ) 4602e: 4a8b tstl %a3 <== NOT EXECUTED 46030: 6700 00be beqw 460f0 <== NOT EXECUTED /* * The data of the structure evp are checked in order to verify if they * are coherent. */ if (evp != NULL) { 46034: 4a8a tstl %a2 <== NOT EXECUTED 46036: 671e beqs 46056 <== NOT EXECUTED /* The structure has data */ if ( ( evp->sigev_notify != SIGEV_NONE ) && 46038: 2012 movel %a2@,%d0 <== NOT EXECUTED 4603a: 7201 moveq #1,%d1 <== NOT EXECUTED 4603c: 5380 subql #1,%d0 <== NOT EXECUTED 4603e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46040: 6500 00ae bcsw 460f0 <== NOT EXECUTED ( evp->sigev_notify != SIGEV_SIGNAL ) ) { /* The value of the field sigev_notify is not valid */ rtems_set_errno_and_return_minus_one( EINVAL ); } if ( !evp->sigev_signo ) 46044: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 46048: 6700 00a6 beqw 460f0 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 4604c: 5380 subql #1,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) 4604e: 721f moveq #31,%d1 <== NOT EXECUTED 46050: b280 cmpl %d0,%d1 <== NOT EXECUTED 46052: 6500 009c bcsw 460f0 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46056: 2039 0006 09c8 movel 609c8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4605c: 5280 addql #1,%d0 <== NOT EXECUTED 4605e: 23c0 0006 09c8 movel %d0,609c8 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free timer control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void ) { return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information ); 46064: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED 4606a: 4eb9 0004 8180 jsr 48180 <_Objects_Allocate> <== NOT EXECUTED /* * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { 46070: 588f addql #4,%sp <== NOT EXECUTED 46072: 2040 moveal %d0,%a0 <== NOT EXECUTED 46074: 4a80 tstl %d0 <== NOT EXECUTED 46076: 6700 0092 beqw 4610a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); } /* The data of the created timer are stored to use them later */ ptimer->state = POSIX_TIMER_STATE_CREATE_NEW; 4607a: 7002 moveq #2,%d0 <== NOT EXECUTED 4607c: 1140 003c moveb %d0,%a0@(60) <== NOT EXECUTED ptimer->thread_id = _Thread_Executing->Object.id; 46080: 2279 0006 0e52 moveal 60e52 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 46086: 2169 0008 0038 movel %a1@(8),%a0@(56) <== NOT EXECUTED if ( evp != NULL ) { 4608c: 4a8a tstl %a2 <== NOT EXECUTED 4608e: 6710 beqs 460a0 <== NOT EXECUTED ptimer->inf.sigev_notify = evp->sigev_notify; 46090: 2152 003e movel %a2@,%a0@(62) <== NOT EXECUTED ptimer->inf.sigev_signo = evp->sigev_signo; 46094: 216a 0004 0042 movel %a2@(4),%a0@(66) <== NOT EXECUTED ptimer->inf.sigev_value = evp->sigev_value; 4609a: 216a 0008 0046 movel %a2@(8),%a0@(70) <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 460a0: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 460a4: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 460a6: 2279 0006 0c50 moveal 60c50 <_POSIX_Timer_Information+0x18>,%a1<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 460ac: 3200 movew %d0,%d1 <== NOT EXECUTED } ptimer->overrun = 0; 460ae: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED ptimer->timer_data.it_value.tv_sec = 0; 460b2: 42a8 005a clrl %a0@(90) <== NOT EXECUTED ptimer->timer_data.it_value.tv_nsec = 0; 460b6: 42a8 005e clrl %a0@(94) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_sec = 0; 460ba: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_nsec = 0; 460be: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 460c2: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED the_watchdog->routine = routine; 460c6: 42a8 002c clrl %a0@(44) <== NOT EXECUTED the_watchdog->id = id; 460ca: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 460ce: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 460d2: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 460d6: 42a8 000c clrl %a0@(12) <== NOT EXECUTED _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL ); _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; 460da: 2680 movel %d0,%a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 460dc: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 460e2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL ); _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; 460e6: 4280 clrl %d0 <== NOT EXECUTED } 460e8: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 460ec: 4e5e unlk %fp <== NOT EXECUTED 460ee: 4e75 rts <== NOT EXECUTED if ( !evp->sigev_signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 460f0: 4eb9 0004 f400 jsr 4f400 <__errno> <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } 460f6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED if ( !evp->sigev_signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 460fa: 2040 moveal %d0,%a0 <== NOT EXECUTED 460fc: 7216 moveq #22,%d1 <== NOT EXECUTED 460fe: 70ff moveq #-1,%d0 <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } 46100: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46104: 4e5e unlk %fp <== NOT EXECUTED if ( !evp->sigev_signo ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); 46106: 2081 movel %d1,%a0@ <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } 46108: 4e75 rts <== NOT EXECUTED /* * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { _Thread_Enable_dispatch(); 4610a: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 46110: 4eb9 0004 f400 jsr 4f400 <__errno> <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } 46116: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); 4611a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4611c: 720b moveq #11,%d1 <== NOT EXECUTED 4611e: 70ff moveq #-1,%d0 <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } 46120: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46124: 4e5e unlk %fp <== NOT EXECUTED * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); 46126: 2081 movel %d1,%a0@ <== NOT EXECUTED _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; _Thread_Enable_dispatch(); return 0; } ... =============================================================================== 00046d1c : int timer_delete( timer_t timerid ) { 46d1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46d20: 2f0a movel %a2,%sp@- <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 46d22: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46d26: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46d2a: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED 46d30: 4eb9 0004 91a8 jsr 491a8 <_Objects_Get> <== NOT EXECUTED */ POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 46d36: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d3a: 2440 moveal %d0,%a2 <== NOT EXECUTED 46d3c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46d40: 6716 beqs 46d58 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46d42: 4eb9 0005 0458 jsr 50458 <__errno> <== NOT EXECUTED } 46d48: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46d4c: 2040 moveal %d0,%a0 <== NOT EXECUTED 46d4e: 7216 moveq #22,%d1 <== NOT EXECUTED 46d50: 70ff moveq #-1,%d0 <== NOT EXECUTED } 46d52: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46d54: 2081 movel %d1,%a0@ <== NOT EXECUTED } 46d56: 4e75 rts <== NOT EXECUTED ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Timer_Information, &ptimer->Object ); 46d58: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46d5a: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED 46d60: 4eb9 0004 8d78 jsr 48d78 <_Objects_Close> <== NOT EXECUTED ptimer->state = POSIX_TIMER_STATE_FREE; 46d66: 7001 moveq #1,%d0 <== NOT EXECUTED 46d68: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED (void) _Watchdog_Remove( &ptimer->Timer ); 46d6c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 46d70: 4eb9 0004 ae68 jsr 4ae68 <_Watchdog_Remove> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free ( POSIX_Timer_Control *the_timer ) { _Objects_Free( &_POSIX_Timer_Information, &the_timer->Object ); 46d76: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46d78: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED 46d7e: 4eb9 0004 903c jsr 4903c <_Objects_Free> <== NOT EXECUTED _POSIX_Timer_Free( ptimer ); _Thread_Enable_dispatch(); 46d84: 4eb9 0004 9cda jsr 49cda <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46d8a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED _Objects_Close( &_POSIX_Timer_Information, &ptimer->Object ); ptimer->state = POSIX_TIMER_STATE_FREE; (void) _Watchdog_Remove( &ptimer->Timer ); _POSIX_Timer_Free( ptimer ); _Thread_Enable_dispatch(); return 0; 46d8e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46d92: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46d94: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000479e4 : * its execution, _POSIX_Timer_TSR will have to set this counter to 0. */ int timer_getoverrun( timer_t timerid ) { 479e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 479e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 479ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 479ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 479f2: 4879 0006 305c pea 6305c <_POSIX_Timer_Information> <== NOT EXECUTED 479f8: 4eb9 0004 9df4 jsr 49df4 <_Objects_Get> <== NOT EXECUTED int overrun; POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 479fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47a02: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a04: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47a08: 6718 beqs 47a22 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47a0a: 4eb9 0005 0c44 jsr 50c44 <__errno> <== NOT EXECUTED 47a10: 74ff moveq #-1,%d2 <== NOT EXECUTED 47a12: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a14: 7016 moveq #22,%d0 <== NOT EXECUTED 47a16: 2080 movel %d0,%a0@ <== NOT EXECUTED } 47a18: 2002 movel %d2,%d0 <== NOT EXECUTED 47a1a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47a1e: 4e5e unlk %fp <== NOT EXECUTED 47a20: 4e75 rts <== NOT EXECUTED ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { case OBJECTS_LOCAL: overrun = ptimer->overrun; 47a22: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED ptimer->overrun = 0; 47a26: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED _Thread_Enable_dispatch(); 47a2a: 4eb9 0004 a926 jsr 4a926 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 47a30: 2002 movel %d2,%d0 <== NOT EXECUTED 47a32: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47a36: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047a3c : int timer_gettime( timer_t timerid, struct itimerspec *value ) { 47a3c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47a40: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47a42: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a44: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Timer_Control *ptimer; Objects_Locations location; struct timespec current_time; Watchdog_Interval left; if ( !value ) 47a48: 4a8a tstl %a2 <== NOT EXECUTED 47a4a: 676a beqs 47ab6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* Reads the current time */ _TOD_Get( ¤t_time ); 47a4c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 47a50: 4eb9 0004 9388 jsr 49388 <_TOD_Get> <== NOT EXECUTED 47a56: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47a5a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47a5e: 4879 0006 305c pea 6305c <_POSIX_Timer_Information> <== NOT EXECUTED 47a64: 4eb9 0004 9df4 jsr 49df4 <_Objects_Get> <== NOT EXECUTED ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 47a6a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47a6e: 2640 moveal %d0,%a3 <== NOT EXECUTED 47a70: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47a74: 6640 bnes 47ab6 <== NOT EXECUTED left = (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 47a76: 486a 0008 pea %a2@(8) <== NOT EXECUTED case OBJECTS_LOCAL: /* Calculates the time left before the timer finishes */ left = (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ 47a7a: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED 47a7e: d2ab 0024 addl %a3@(36),%d1 <== NOT EXECUTED 47a82: 2039 0006 2f16 movel 62f16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 47a88: 9280 subl %d0,%d1 <== NOT EXECUTED 47a8a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47a8c: 4eb9 0004 b55c jsr 4b55c <_Timespec_From_ticks> <== NOT EXECUTED value->it_interval = ptimer->timer_data.it_interval; 47a92: 202b 0052 movel %a3@(82),%d0 <== NOT EXECUTED 47a96: 222b 0056 movel %a3@(86),%d1 <== NOT EXECUTED 47a9a: 2480 movel %d0,%a2@ <== NOT EXECUTED 47a9c: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED _Thread_Enable_dispatch(); 47aa0: 4eb9 0004 a926 jsr 4a926 <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 47aa6: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED _Timespec_From_ticks( left, &value->it_value ); value->it_interval = ptimer->timer_data.it_interval; _Thread_Enable_dispatch(); return 0; 47aaa: 508f addql #8,%sp <== NOT EXECUTED 47aac: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 47aae: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 47ab2: 4e5e unlk %fp <== NOT EXECUTED 47ab4: 4e75 rts <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47ab6: 4eb9 0005 0c44 jsr 50c44 <__errno> <== NOT EXECUTED } 47abc: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47ac0: 2040 moveal %d0,%a0 <== NOT EXECUTED 47ac2: 7216 moveq #22,%d1 <== NOT EXECUTED 47ac4: 70ff moveq #-1,%d0 <== NOT EXECUTED } 47ac6: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 47aca: 4e5e unlk %fp <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47acc: 2081 movel %d1,%a0@ <== NOT EXECUTED } =============================================================================== 0004612c : timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) { 4612c: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 46130: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 46134: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED 46138: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 4613c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED Objects_Locations location; bool activated; uint32_t initial_period; struct itimerspec normalize; if ( !value ) 46140: 4a8b tstl %a3 <== NOT EXECUTED 46142: 6700 019e beqw 462e2 <== NOT EXECUTED /* * First, it verifies if the structure "value" is correct * if the number of nanoseconds is not correct return EINVAL */ if ( !_Timespec_Is_valid( &(value->it_value) ) ) { 46146: 486b 0008 pea %a3@(8) <== NOT EXECUTED 4614a: 45f9 0004 9ddc lea 49ddc <_Timespec_Is_valid>,%a2 <== NOT EXECUTED 46150: 4e92 jsr %a2@ <== NOT EXECUTED 46152: 588f addql #4,%sp <== NOT EXECUTED 46154: 4a00 tstb %d0 <== NOT EXECUTED 46156: 6700 018a beqw 462e2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( !_Timespec_Is_valid( &(value->it_interval) ) ) { 4615a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4615c: 4e92 jsr %a2@ <== NOT EXECUTED 4615e: 588f addql #4,%sp <== NOT EXECUTED 46160: 4a00 tstb %d0 <== NOT EXECUTED 46162: 6700 017e beqw 462e2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { 46166: 7004 moveq #4,%d0 <== NOT EXECUTED 46168: b08c cmpl %a4,%d0 <== NOT EXECUTED 4616a: 6700 00fa beqw 46266 <== NOT EXECUTED 4616e: 4a8c tstl %a4 <== NOT EXECUTED 46170: 6600 0170 bnew 462e2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 46174: 260e movel %fp,%d3 <== NOT EXECUTED 46176: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 4617c: 204b moveal %a3,%a0 <== NOT EXECUTED 4617e: 2243 moveal %d3,%a1 <== NOT EXECUTED 46180: 240e movel %fp,%d2 <== NOT EXECUTED 46182: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED 46188: 49ee ffec lea %fp@(-20),%a4 <== NOT EXECUTED 4618c: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED 46190: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46192: 2242 moveal %d2,%a1 <== NOT EXECUTED 46194: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46196: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 46198: 2a90 movel %a0@,%a5@ <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 4619a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4619e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461a2: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED 461a8: 4eb9 0004 8640 jsr 48640 <_Objects_Get> <== NOT EXECUTED * something with the structure of times of the timer: to stop, start * or start it again */ ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 461ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 461b2: 2440 moveal %d0,%a2 <== NOT EXECUTED 461b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 461b8: 6600 0128 bnew 462e2 <== NOT EXECUTED case OBJECTS_LOCAL: /* First, it verifies if the timer must be stopped */ if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) { 461bc: 4aae ffec tstl %fp@(-20) <== NOT EXECUTED 461c0: 6608 bnes 461ca <== NOT EXECUTED 461c2: 4aae fff0 tstl %fp@(-16) <== NOT EXECUTED 461c6: 6700 0132 beqw 462fa <== NOT EXECUTED _Thread_Enable_dispatch(); return 0; } /* Convert from seconds and nanoseconds to ticks */ ptimer->ticks = _Timespec_To_ticks( &value->it_interval ); 461ca: 2f0b movel %a3,%sp@- <== NOT EXECUTED 461cc: 47f9 0004 9e58 lea 49e58 <_Timespec_To_ticks>,%a3 <== NOT EXECUTED 461d2: 4e93 jsr %a3@ <== NOT EXECUTED 461d4: 2540 0062 movel %d0,%a2@(98) <== NOT EXECUTED initial_period = _Timespec_To_ticks( &normalize.it_value ); 461d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 461da: 4e93 jsr %a3@ <== NOT EXECUTED activated = _POSIX_Timer_Insert_helper( 461dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461de: 4879 0004 6400 pea 46400 <_POSIX_Timer_TSR> <== NOT EXECUTED 461e4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 461e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461ea: 486a 0010 pea %a2@(16) <== NOT EXECUTED 461ee: 4eb9 0004 c91c jsr 4c91c <_POSIX_Timer_Insert_helper> <== NOT EXECUTED initial_period, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) { 461f4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 461f8: 4a00 tstb %d0 <== NOT EXECUTED 461fa: 6700 0166 beqw 46362 <== NOT EXECUTED /* * The timer has been started and is running. So we return the * old ones in "ovalue" */ if ( ovalue ) 461fe: 4a84 tstl %d4 <== NOT EXECUTED 46200: 6700 0172 beqw 46374 <== NOT EXECUTED *ovalue = ptimer->timer_data; 46204: 220a movel %a2,%d1 <== NOT EXECUTED 46206: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED 4620c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4620e: 2241 moveal %d1,%a1 <== NOT EXECUTED 46210: 200a movel %a2,%d0 <== NOT EXECUTED 46212: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 46218: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 4621c: 280a movel %a2,%d4 <== NOT EXECUTED 4621e: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 46224: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 46226: 2240 moveal %d0,%a1 <== NOT EXECUTED 46228: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 4622a: 2244 moveal %d4,%a1 <== NOT EXECUTED 4622c: 20d3 movel %a3@,%a0@+ <== NOT EXECUTED 4622e: 2091 movel %a1@,%a0@ <== NOT EXECUTED ptimer->timer_data = normalize; 46230: 2041 moveal %d1,%a0 <== NOT EXECUTED 46232: 2243 moveal %d3,%a1 <== NOT EXECUTED 46234: 2091 movel %a1@,%a0@ <== NOT EXECUTED 46236: 2040 moveal %d0,%a0 <== NOT EXECUTED 46238: 2242 moveal %d2,%a1 <== NOT EXECUTED 4623a: 2091 movel %a1@,%a0@ <== NOT EXECUTED 4623c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4623e: 2694 movel %a4@,%a3@ <== NOT EXECUTED 46240: 2095 movel %a5@,%a0@ <== NOT EXECUTED /* Indicate that the time is running */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 46242: 7003 moveq #3,%d0 <== NOT EXECUTED 46244: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED _TOD_Get( &ptimer->time ); 46248: 486a 006a pea %a2@(106) <== NOT EXECUTED 4624c: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED _Thread_Enable_dispatch(); 46252: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46258: 588f addql #4,%sp <== NOT EXECUTED 4625a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4625c: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 46262: 4e5e unlk %fp <== NOT EXECUTED 46264: 4e75 rts <== NOT EXECUTED if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 46266: 260e movel %fp,%d3 <== NOT EXECUTED 46268: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 4626e: 204b moveal %a3,%a0 <== NOT EXECUTED 46270: 2243 moveal %d3,%a1 <== NOT EXECUTED 46272: 240e movel %fp,%d2 <== NOT EXECUTED 46274: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED 4627a: 200e movel %fp,%d0 <== NOT EXECUTED 4627c: 0680 ffff ffec addil #-20,%d0 <== NOT EXECUTED /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { struct timespec now; _TOD_Get( &now ); /* Check for seconds in the past */ if ( _Timespec_Greater_than( &now, &normalize.it_value ) ) 46282: 2840 moveal %d0,%a4 <== NOT EXECUTED if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 46284: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { struct timespec now; _TOD_Get( &now ); 46288: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 4628c: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 4628e: 2242 moveal %d2,%a1 <== NOT EXECUTED 46290: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46292: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 46294: 2a90 movel %a0@,%a5@ <== NOT EXECUTED /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { struct timespec now; _TOD_Get( &now ); 46296: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46298: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED /* Check for seconds in the past */ if ( _Timespec_Greater_than( &now, &normalize.it_value ) ) 4629e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462a2: 4eb9 0004 9da8 jsr 49da8 <_Timespec_Greater_than> <== NOT EXECUTED 462a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462ac: 4a00 tstb %d0 <== NOT EXECUTED 462ae: 6632 bnes 462e2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value ); 462b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462b2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462b6: 4eb9 0004 9e08 jsr 49e08 <_Timespec_Subtract> <== NOT EXECUTED 462bc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 462c4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 462c8: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED 462ce: 4eb9 0004 8640 jsr 48640 <_Objects_Get> <== NOT EXECUTED * something with the structure of times of the timer: to stop, start * or start it again */ ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 462d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462d8: 2440 moveal %d0,%a2 <== NOT EXECUTED 462da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 462de: 6700 fedc beqw 461bc <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 462e2: 4eb9 0004 f400 jsr 4f400 <__errno> <== NOT EXECUTED 462e8: 7216 moveq #22,%d1 <== NOT EXECUTED 462ea: 2040 moveal %d0,%a0 <== NOT EXECUTED 462ec: 70ff moveq #-1,%d0 <== NOT EXECUTED } 462ee: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 462f4: 2081 movel %d1,%a0@ <== NOT EXECUTED } 462f6: 4e5e unlk %fp <== NOT EXECUTED 462f8: 4e75 rts <== NOT EXECUTED case OBJECTS_LOCAL: /* First, it verifies if the timer must be stopped */ if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) { /* Stop the timer */ (void) _Watchdog_Remove( &ptimer->Timer ); 462fa: 486a 0010 pea %a2@(16) <== NOT EXECUTED 462fe: 4eb9 0004 a2c4 jsr 4a2c4 <_Watchdog_Remove> <== NOT EXECUTED /* The old data of the timer are returned */ if ( ovalue ) 46304: 588f addql #4,%sp <== NOT EXECUTED 46306: 4a84 tstl %d4 <== NOT EXECUTED 46308: 6700 00b6 beqw 463c0 <== NOT EXECUTED *ovalue = ptimer->timer_data; 4630c: 220a movel %a2,%d1 <== NOT EXECUTED 4630e: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED 46314: 2244 moveal %d4,%a1 <== NOT EXECUTED 46316: 2041 moveal %d1,%a0 <== NOT EXECUTED 46318: 200a movel %a2,%d0 <== NOT EXECUTED 4631a: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 46320: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 46324: 280a movel %a2,%d4 <== NOT EXECUTED 46326: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 4632c: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED 4632e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46330: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED 46332: 2044 moveal %d4,%a0 <== NOT EXECUTED 46334: 22d3 movel %a3@,%a1@+ <== NOT EXECUTED 46336: 2290 movel %a0@,%a1@ <== NOT EXECUTED /* The new data are set */ ptimer->timer_data = normalize; 46338: 2241 moveal %d1,%a1 <== NOT EXECUTED 4633a: 2043 moveal %d3,%a0 <== NOT EXECUTED 4633c: 2290 movel %a0@,%a1@ <== NOT EXECUTED 4633e: 2240 moveal %d0,%a1 <== NOT EXECUTED 46340: 2042 moveal %d2,%a0 <== NOT EXECUTED 46342: 2290 movel %a0@,%a1@ <== NOT EXECUTED 46344: 2244 moveal %d4,%a1 <== NOT EXECUTED 46346: 2694 movel %a4@,%a3@ <== NOT EXECUTED 46348: 2295 movel %a5@,%a1@ <== NOT EXECUTED /* Indicates that the timer is created and stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 4634a: 7004 moveq #4,%d0 <== NOT EXECUTED 4634c: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED /* Returns with success */ _Thread_Enable_dispatch(); 46350: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46356: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 46358: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4635e: 4e5e unlk %fp <== NOT EXECUTED 46360: 4e75 rts <== NOT EXECUTED ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) { _Thread_Enable_dispatch(); 46362: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 46368: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4636a: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 46370: 4e5e unlk %fp <== NOT EXECUTED 46372: 4e75 rts <== NOT EXECUTED 46374: 220a movel %a2,%d1 <== NOT EXECUTED 46376: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED * The timer has been started and is running. So we return the * old ones in "ovalue" */ if ( ovalue ) *ovalue = ptimer->timer_data; ptimer->timer_data = normalize; 4637c: 2041 moveal %d1,%a0 <== NOT EXECUTED 4637e: 2243 moveal %d3,%a1 <== NOT EXECUTED 46380: 200a movel %a2,%d0 <== NOT EXECUTED 46382: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 46388: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 4638c: 280a movel %a2,%d4 <== NOT EXECUTED 4638e: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 46394: 2091 movel %a1@,%a0@ <== NOT EXECUTED 46396: 2040 moveal %d0,%a0 <== NOT EXECUTED 46398: 2242 moveal %d2,%a1 <== NOT EXECUTED 4639a: 2091 movel %a1@,%a0@ <== NOT EXECUTED 4639c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4639e: 2694 movel %a4@,%a3@ <== NOT EXECUTED 463a0: 2095 movel %a5@,%a0@ <== NOT EXECUTED /* Indicate that the time is running */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 463a2: 7003 moveq #3,%d0 <== NOT EXECUTED 463a4: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED _TOD_Get( &ptimer->time ); 463a8: 486a 006a pea %a2@(106) <== NOT EXECUTED 463ac: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED _Thread_Enable_dispatch(); 463b2: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 463b8: 588f addql #4,%sp <== NOT EXECUTED 463ba: 4280 clrl %d0 <== NOT EXECUTED 463bc: 6000 fe9e braw 4625c <== NOT EXECUTED 463c0: 220a movel %a2,%d1 <== NOT EXECUTED 463c2: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED (void) _Watchdog_Remove( &ptimer->Timer ); /* The old data of the timer are returned */ if ( ovalue ) *ovalue = ptimer->timer_data; /* The new data are set */ ptimer->timer_data = normalize; 463c8: 2241 moveal %d1,%a1 <== NOT EXECUTED 463ca: 2043 moveal %d3,%a0 <== NOT EXECUTED 463cc: 200a movel %a2,%d0 <== NOT EXECUTED 463ce: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 463d4: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 463d8: 280a movel %a2,%d4 <== NOT EXECUTED 463da: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 463e0: 2290 movel %a0@,%a1@ <== NOT EXECUTED 463e2: 2240 moveal %d0,%a1 <== NOT EXECUTED 463e4: 2042 moveal %d2,%a0 <== NOT EXECUTED 463e6: 2290 movel %a0@,%a1@ <== NOT EXECUTED 463e8: 2244 moveal %d4,%a1 <== NOT EXECUTED 463ea: 2694 movel %a4@,%a3@ <== NOT EXECUTED 463ec: 2295 movel %a5@,%a1@ <== NOT EXECUTED /* Indicates that the timer is created and stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 463ee: 7004 moveq #4,%d0 <== NOT EXECUTED 463f0: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED /* Returns with success */ _Thread_Enable_dispatch(); 463f4: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 463fa: 4280 clrl %d0 <== NOT EXECUTED 463fc: 6000 ff5a braw 46358 <== NOT EXECUTED =============================================================================== 00046206 : useconds_t ualarm( useconds_t useconds, useconds_t interval ) { 46206: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4620a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4620e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 46212: 4ab9 0006 1ed8 tstl 61ed8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED 46218: 6700 0086 beqw 462a0 <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL ); } else { Watchdog_States state; state = _Watchdog_Remove( the_timer ); 4621c: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 46222: 4eb9 0004 a038 jsr 4a038 <_Watchdog_Remove> <== NOT EXECUTED if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) { 46228: 588f addql #4,%sp <== NOT EXECUTED 4622a: 7201 moveq #1,%d1 <== NOT EXECUTED 4622c: 5580 subql #2,%d0 <== NOT EXECUTED 4622e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46230: 6400 0098 bccw 462ca <== NOT EXECUTED useconds_t ualarm( useconds_t useconds, useconds_t interval ) { useconds_t remaining = 0; 46234: 4283 clrl %d3 <== NOT EXECUTED /* * If useconds is non-zero, then the caller wants to schedule * the alarm repeatedly at that interval. If the interval is * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { 46236: 4a82 tstl %d2 <== NOT EXECUTED 46238: 660c bnes 46246 <== NOT EXECUTED _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) ); } return remaining; } 4623a: 2003 movel %d3,%d0 <== NOT EXECUTED 4623c: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 46242: 4e5e unlk %fp <== NOT EXECUTED 46244: 4e75 rts <== NOT EXECUTED if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; ticks = _Timespec_To_ticks( &tp ); 46246: 280e movel %fp,%d4 <== NOT EXECUTED * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; 46248: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; ticks = _Timespec_To_ticks( &tp ); 4624e: 5184 subql #8,%d4 <== NOT EXECUTED 46250: 45f9 0004 9b38 lea 49b38 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; 46256: 4c41 2000 remul %d1,%d0,%d2 <== NOT EXECUTED 4625a: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 4625e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 46264: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 46268: 2f04 movel %d4,%sp@- <== NOT EXECUTED */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 4626a: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; 4626e: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; ticks = _Timespec_To_ticks( &tp ); 46272: 4e92 jsr %a2@ <== NOT EXECUTED if ( ticks == 0 ) ticks = 1; _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) ); 46274: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46276: 4e92 jsr %a2@ <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 46278: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 4627e: 4879 0006 1768 pea 61768 <_Watchdog_Ticks_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46284: 23c0 0006 1ec8 movel %d0,61ec8 <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4628a: 4eb9 0004 9ee4 jsr 49ee4 <_Watchdog_Insert> <== NOT EXECUTED 46290: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED } return remaining; } 46294: 2003 movel %d3,%d0 <== NOT EXECUTED 46296: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 4629c: 4e5e unlk %fp <== NOT EXECUTED 4629e: 4e75 rts <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 462a0: 42b9 0006 1ec4 clrl 61ec4 <_POSIX_signals_Ualarm_timer+0x8><== NOT EXECUTED useconds_t ualarm( useconds_t useconds, useconds_t interval ) { useconds_t remaining = 0; 462a6: 4283 clrl %d3 <== NOT EXECUTED the_watchdog->routine = routine; 462a8: 203c 0004 61c4 movel #287172,%d0 <== NOT EXECUTED the_watchdog->id = id; 462ae: 42b9 0006 1edc clrl 61edc <_POSIX_signals_Ualarm_timer+0x20><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 462b4: 23c0 0006 1ed8 movel %d0,61ed8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 462ba: 42b9 0006 1ee0 clrl 61ee0 <_POSIX_signals_Ualarm_timer+0x24><== NOT EXECUTED /* * If useconds is non-zero, then the caller wants to schedule * the alarm repeatedly at that interval. If the interval is * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { 462c0: 4a82 tstl %d2 <== NOT EXECUTED 462c2: 6700 ff76 beqw 4623a <== NOT EXECUTED 462c6: 6000 ff7e braw 46246 <== NOT EXECUTED * boot. Since alarm() is dealing in seconds, we must account for * this. */ ticks = the_timer->initial; ticks -= (the_timer->stop_time - the_timer->start_time); 462ca: 2039 0006 1ed0 movel 61ed0 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED 462d0: d0b9 0006 1ec8 addl 61ec8 <_POSIX_signals_Ualarm_timer+0xc>,%d0<== NOT EXECUTED /* remaining is now in ticks */ _Timespec_From_ticks( ticks, &tp ); 462d6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 462da: 90b9 0006 1ed4 subl 61ed4 <_POSIX_signals_Ualarm_timer+0x18>,%d0<== NOT EXECUTED remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 462e0: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED ticks = the_timer->initial; ticks -= (the_timer->stop_time - the_timer->start_time); /* remaining is now in ticks */ _Timespec_From_ticks( ticks, &tp ); 462e6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 462e8: 4eb9 0004 9aac jsr 49aac <_Timespec_From_ticks> <== NOT EXECUTED remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 462ee: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 462f2: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED remaining += tp.tv_nsec / 1000; 462f6: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED 462fc: 508f addql #8,%sp <== NOT EXECUTED 462fe: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46302: 4c44 3803 remsl %d4,%d3,%d3 <== NOT EXECUTED 46306: d680 addl %d0,%d3 <== NOT EXECUTED /* * If useconds is non-zero, then the caller wants to schedule * the alarm repeatedly at that interval. If the interval is * less than a single clock tick, then fudge it to a clock tick. */ if ( useconds ) { 46308: 4a82 tstl %d2 <== NOT EXECUTED 4630a: 6700 ff2e beqw 4623a <== NOT EXECUTED 4630e: 6000 ff36 braw 46246 <== NOT EXECUTED ... =============================================================================== 0004632c : #include pid_t vfork(void) { return -1; } 4632c: 70ff moveq #-1,%d0 <== NOT EXECUTED #include #include pid_t vfork(void) { 4632e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return -1; } 46332: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046338 : #include int wait( int *stat_loc ) { 46338: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4633c: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 46342: 7258 moveq #88,%d1 <== NOT EXECUTED 46344: 2040 moveal %d0,%a0 <== NOT EXECUTED } 46346: 70ff moveq #-1,%d0 <== NOT EXECUTED 46348: 4e5e unlk %fp <== NOT EXECUTED int wait( int *stat_loc ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4634a: 2081 movel %d1,%a0@ <== NOT EXECUTED } ... =============================================================================== 00046350 : int waitpid( pid_t pid, int *stat_loc, int options ) { 46350: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 46354: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED 4635a: 7258 moveq #88,%d1 <== NOT EXECUTED 4635c: 2040 moveal %d0,%a0 <== NOT EXECUTED } 4635e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46360: 4e5e unlk %fp <== NOT EXECUTED pid_t pid, int *stat_loc, int options ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 46362: 2081 movel %d1,%a0@ <== NOT EXECUTED } ...