0004585c <_API_Mutex_Allocate>: #include void _API_Mutex_Allocate( API_Mutex_Control **the_mutex ) { 4585c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45860: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45862: 2f02 movel %d2,%sp@- <== NOT EXECUTED CORE_mutex_Attributes attr = { CORE_MUTEX_NESTING_IS_ERROR, FALSE, CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT, 0 }; 45864: 240e movel %fp,%d2 <== NOT EXECUTED 45866: 4878 000e pea e <== NOT EXECUTED 4586a: 0682 ffff fff2 addil #-14,%d2 <== NOT EXECUTED 45870: 4879 0005 514e pea 5514e <== NOT EXECUTED 45876: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45878: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED mutex = (API_Mutex_Control *) _Objects_Allocate( &_API_Mutex_Information ); 4587e: 4879 0005 7f64 pea 57f64 <_API_Mutex_Information> <== NOT EXECUTED 45884: 4eb9 0004 60c8 jsr 460c8 <_Objects_Allocate> <== NOT EXECUTED _CORE_mutex_Initialize( &mutex->Mutex, &attr, CORE_MUTEX_UNLOCKED ); 4588a: 4878 0001 pea 1 <== NOT EXECUTED FALSE, CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT, 0 }; mutex = (API_Mutex_Control *) _Objects_Allocate( &_API_Mutex_Information ); 4588e: 2440 moveal %d0,%a2 <== NOT EXECUTED _CORE_mutex_Initialize( &mutex->Mutex, &attr, CORE_MUTEX_UNLOCKED ); 45890: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45892: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45896: 4eb9 0004 59a8 jsr 459a8 <_CORE_mutex_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4589c: 2079 0005 7f7e moveal 57f7e <_API_Mutex_Information+0x1a>,%a0 <== NOT EXECUTED 458a2: 4280 clrl %d0 <== NOT EXECUTED 458a4: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 458a8: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 458ac: 7001 moveq #1,%d0 <== NOT EXECUTED _Objects_Open_u32( &_API_Mutex_Information, &mutex->Object, 1 ); *the_mutex = mutex; 458ae: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 458b4: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED 458b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 458bc: 208a movel %a2,%a0@ <== NOT EXECUTED } 458be: 242e ffe8 movel %fp@(-24),%d2 <== NOT EXECUTED 458c2: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED 458c6: 4e5e unlk %fp <== NOT EXECUTED 458c8: 4e75 rts <== NOT EXECUTED ... 00045900 <_API_Mutex_Initialization>: #include void _API_Mutex_Initialization( uint32_t maximum_mutexes ) { 45900: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 45904: 42a7 clrl %sp@- <== NOT EXECUTED 45906: 42a7 clrl %sp@- <== NOT EXECUTED 45908: 4878 0072 pea 72 <== NOT EXECUTED 4590c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45910: 4878 0002 pea 2 <== NOT EXECUTED 45914: 4878 0001 pea 1 <== NOT EXECUTED 45918: 4879 0005 7f64 pea 57f64 <_API_Mutex_Information> <== NOT EXECUTED 4591e: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 45924: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , TRUE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4592a: 4e5e unlk %fp <== NOT EXECUTED 4592c: 4e75 rts <== NOT EXECUTED ... 000458cc <_API_Mutex_Lock>: #include void _API_Mutex_Lock( API_Mutex_Control *the_mutex ) { 458cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 458d0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED #include void _API_Mutex_Lock( API_Mutex_Control *the_mutex ) { 458d6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 458da: 40c0 movew %sr,%d0 <== NOT EXECUTED 458dc: 8280 orl %d0,%d1 <== NOT EXECUTED 458de: 46c1 movew %d1,%sr <== NOT EXECUTED _CORE_mutex_Seize( 458e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 458e2: 42a7 clrl %sp@- <== NOT EXECUTED 458e4: 4878 0001 pea 1 <== NOT EXECUTED 458e8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 458ec: 4868 0010 pea %a0@(16) <== NOT EXECUTED 458f0: 4eb9 0004 5abc jsr 45abc <_CORE_mutex_Seize> <== NOT EXECUTED 458f6: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED the_mutex->Object.id, TRUE, 0, level ); } 458fc: 4e5e unlk %fp <== NOT EXECUTED 458fe: 4e75 rts 00045930 <_API_Mutex_Unlock>: rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45930: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED #include void _API_Mutex_Unlock( API_Mutex_Control *the_mutex ) { 45936: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4593a: 5280 addql #1,%d0 <== NOT EXECUTED 4593c: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED 45942: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED _Thread_Disable_dispatch(); _CORE_mutex_Surrender( 45946: 42a7 clrl %sp@- <== NOT EXECUTED 45948: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4594c: 4868 0010 pea %a0@(16) <== NOT EXECUTED 45950: 4eb9 0004 5b64 jsr 45b64 <_CORE_mutex_Surrender> <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 45956: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } 4595c: 4e5e unlk %fp <== NOT EXECUTED _CORE_mutex_Surrender( &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 4595e: 4ef9 0004 6d0a jmp 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 00045842 <_API_extensions_Add>: */ void _API_extensions_Add( API_extensions_Control *the_extension ) { 45842: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Chain_Append( &_API_extensions_List, &the_extension->Node ); 45846: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4584a: 4879 0005 8026 pea 58026 <_API_extensions_List> <== NOT EXECUTED 45850: 4eb9 0004 5964 jsr 45964 <_Chain_Append> <== NOT EXECUTED 45856: 508f addql #8,%sp <== NOT EXECUTED } 45858: 4e5e unlk %fp <== NOT EXECUTED 4585a: 4e75 rts 0004579c <_API_extensions_Initialization>: * * _API_extensions_Initialization */ void _API_extensions_Initialization( void ) { 4579c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 457a0: 41f9 0005 8026 lea 58026 <_API_extensions_List>,%a0 <== NOT EXECUTED _Chain_Initialize_empty( &_API_extensions_List ); } 457a6: 4e5e unlk %fp <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 457a8: 23c8 0005 802e movel %a0,5802e <_API_extensions_List+0x8> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 457ae: 20bc 0005 802a movel #360490,%a0@ <== NOT EXECUTED the_chain->permanent_null = NULL; 457b4: 42b9 0005 802a clrl 5802a <_API_extensions_List+0x4> <== NOT EXECUTED 457ba: 4e75 rts 000457e6 <_API_extensions_Run_postdriver>: * * _API_extensions_Run_postdriver */ void _API_extensions_Run_postdriver( void ) { 457e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 457ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; 457ec: 2479 0005 8026 moveal 58026 <_API_extensions_List>,%a2 <== NOT EXECUTED 457f2: 600c bras 45800 <_API_extensions_Run_postdriver+0x1a> <== NOT EXECUTED !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (API_extensions_Control *) the_node; if ( the_extension->postdriver_hook ) 457f4: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED 457f8: 4a88 tstl %a0 <== NOT EXECUTED 457fa: 6702 beqs 457fe <_API_extensions_Run_postdriver+0x18> <== NOT EXECUTED (*the_extension->postdriver_hook)(); 457fc: 4e90 jsr %a0@ <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { 457fe: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; 45800: b5fc 0005 802a cmpal #360490,%a2 <== NOT EXECUTED 45806: 66ec bnes 457f4 <_API_extensions_Run_postdriver+0xe> <== NOT EXECUTED the_extension = (API_extensions_Control *) the_node; if ( the_extension->postdriver_hook ) (*the_extension->postdriver_hook)(); } } 45808: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4580c: 4e5e unlk %fp <== NOT EXECUTED 4580e: 4e75 rts 00045810 <_API_extensions_Run_postswitch>: * * _API_extensions_Run_postswitch */ void _API_extensions_Run_postswitch( void ) { 45810: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45814: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; 45816: 2479 0005 8026 moveal 58026 <_API_extensions_List>,%a2 <== NOT EXECUTED 4581c: 6014 bras 45832 <_API_extensions_Run_postswitch+0x22> <== NOT EXECUTED !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (API_extensions_Control *) the_node; if ( the_extension->postswitch_hook ) 4581e: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED 45822: 4a88 tstl %a0 <== NOT EXECUTED 45824: 670a beqs 45830 <_API_extensions_Run_postswitch+0x20> <== NOT EXECUTED (*the_extension->postswitch_hook)( _Thread_Executing ); 45826: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 4582c: 4e90 jsr %a0@ <== NOT EXECUTED 4582e: 588f addql #4,%sp <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { 45830: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; 45832: b5fc 0005 802a cmpal #360490,%a2 <== NOT EXECUTED 45838: 66e4 bnes 4581e <_API_extensions_Run_postswitch+0xe> <== NOT EXECUTED the_extension = (API_extensions_Control *) the_node; if ( the_extension->postswitch_hook ) (*the_extension->postswitch_hook)( _Thread_Executing ); } } 4583a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4583e: 4e5e unlk %fp <== NOT EXECUTED 45840: 4e75 rts 000457bc <_API_extensions_Run_predriver>: * * _API_extensions_Run_predriver */ void _API_extensions_Run_predriver( void ) { 457bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 457c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; 457c2: 2479 0005 8026 moveal 58026 <_API_extensions_List>,%a2 <== NOT EXECUTED 457c8: 600c bras 457d6 <_API_extensions_Run_predriver+0x1a> <== NOT EXECUTED !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { the_extension = (API_extensions_Control *) the_node; if ( the_extension->predriver_hook ) 457ca: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 457ce: 4a88 tstl %a0 <== NOT EXECUTED 457d0: 6702 beqs 457d4 <_API_extensions_Run_predriver+0x18> <== NOT EXECUTED (*the_extension->predriver_hook)(); 457d2: 4e90 jsr %a0@ <== NOT EXECUTED Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; the_node = the_node->next ) { 457d4: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; API_extensions_Control *the_extension; for ( the_node = _API_extensions_List.first ; !_Chain_Is_tail( &_API_extensions_List, the_node ) ; 457d6: b5fc 0005 802a cmpal #360490,%a2 <== NOT EXECUTED 457dc: 66ec bnes 457ca <_API_extensions_Run_predriver+0xe> <== NOT EXECUTED the_extension = (API_extensions_Control *) the_node; if ( the_extension->predriver_hook ) (*the_extension->predriver_hook)(); } } 457de: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 457e2: 4e5e unlk %fp <== NOT EXECUTED 457e4: 4e75 rts 00049d48 <_Barrier_Manager_initialization>: */ void _Barrier_Manager_initialization( uint32_t maximum_barriers ) { 49d48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49d4c: 4878 0004 pea 4 <== NOT EXECUTED 49d50: 42a7 clrl %sp@- <== NOT EXECUTED 49d52: 4878 0060 pea 60 <== NOT EXECUTED 49d56: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49d5a: 4878 000a pea a <== NOT EXECUTED 49d5e: 4878 0002 pea 2 <== NOT EXECUTED 49d62: 4879 0005 871e pea 5871e <_Barrier_Information> <== NOT EXECUTED 49d68: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49d6e: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49d74: 4e5e unlk %fp <== NOT EXECUTED 49d76: 4e75 rts 0004aae4 <_Barrier_Translate_core_barrier_return_code>: }; rtems_status_code _Barrier_Translate_core_barrier_return_code ( CORE_barrier_Status the_barrier_status ) { 4aae4: 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]; } 4aae8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED }; rtems_status_code _Barrier_Translate_core_barrier_return_code ( CORE_barrier_Status the_barrier_status ) { 4aaec: 41f9 0005 8880 lea 58880 <_Barrier_Translate_core_barrier_return_code_>,%a0 <== 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]; } 4aaf2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4aaf6: 4e5e unlk %fp <== NOT EXECUTED 4aaf8: 4e75 rts <== NOT EXECUTED ... 000474e0 <_CORE_RWLock_Initialize>: void _CORE_RWLock_Initialize( CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { 474e0: 4e56 0000 linkw %fp,#0 <== 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( 474e4: 4878 0003 pea 3 <== NOT EXECUTED void _CORE_RWLock_Initialize( CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { 474e8: 226e 0008 moveal %fp@(8),%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( 474ec: 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; 474f2: 206e 000c moveal %fp@(12),%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( 474f6: 42a7 clrl %sp@- <== NOT EXECUTED CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { the_rwlock->Attributes = *the_rwlock_attributes; 474f8: 2350 0040 movel %a0@,%a1@(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( 474fc: 2f09 movel %a1,%sp@- <== NOT EXECUTED the_rwlock->Attributes = *the_rwlock_attributes; /* the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; 474fe: 42a9 0048 clrl %a1@(72) <== NOT EXECUTED the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; 47502: 42a9 0044 clrl %a1@(68) <== NOT EXECUTED _Thread_queue_Initialize( 47506: 4eb9 0004 8fe8 jsr 48fe8 <_Thread_queue_Initialize> <== NOT EXECUTED 4750c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED &the_rwlock->Wait_queue, THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_RWLOCK, CORE_RWLOCK_TIMEOUT ); } 47512: 4e5e unlk %fp <== NOT EXECUTED 47514: 4e75 rts <== NOT EXECUTED ... 00047518 <_CORE_RWLock_Obtain_for_reading>: Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 47518: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4751c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== 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 ); 47520: 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 ) { 47526: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4752a: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4752e: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 47532: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 47536: 2679 0005 a342 moveal 5a342 <_Thread_Executing>,%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 ); 4753c: 40c2 movew %sr,%d2 <== NOT EXECUTED 4753e: 8082 orl %d2,%d0 <== NOT EXECUTED 47540: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 47542: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 47546: 6708 beqs 47550 <_CORE_RWLock_Obtain_for_reading+0x38> <== NOT EXECUTED 47548: 7201 moveq #1,%d1 <== NOT EXECUTED 4754a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4754c: 662a bnes 47578 <_CORE_RWLock_Obtain_for_reading+0x60> <== NOT EXECUTED 4754e: 600e bras 4755e <_CORE_RWLock_Obtain_for_reading+0x46> <== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; the_rwlock->number_of_readers += 1; 47550: 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; 47554: 7001 moveq #1,%d0 <== NOT EXECUTED 47556: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED the_rwlock->number_of_readers += 1; _ISR_Enable( level ); 4755a: 46c2 movew %d2,%sr <== NOT EXECUTED 4755c: 6014 bras 47572 <_CORE_RWLock_Obtain_for_reading+0x5a> <== 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 ); 4755e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47560: 4eb9 0004 8f5c jsr 48f5c <_Thread_queue_First> <== NOT EXECUTED if ( !waiter ) { 47566: 588f addql #4,%sp <== NOT EXECUTED 47568: 4a80 tstl %d0 <== NOT EXECUTED 4756a: 660c bnes 47578 <_CORE_RWLock_Obtain_for_reading+0x60> <== NOT EXECUTED the_rwlock->number_of_readers += 1; 4756c: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _ISR_Enable( level ); 47570: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 47572: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED 47576: 6046 bras 475be <_CORE_RWLock_Obtain_for_reading+0xa6> <== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 47578: 4a03 tstb %d3 <== NOT EXECUTED 4757a: 660a bnes 47586 <_CORE_RWLock_Obtain_for_reading+0x6e> <== NOT EXECUTED _ISR_Enable( level ); 4757c: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 4757e: 7202 moveq #2,%d1 <== NOT EXECUTED 47580: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED 47584: 6038 bras 475be <_CORE_RWLock_Obtain_for_reading+0xa6> <== NOT EXECUTED 47586: 7001 moveq #1,%d0 <== 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; executing->Wait.id = id; 47588: 2744 0020 movel %d4,%a3@(32) <== NOT EXECUTED 4758c: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 47590: 42ab 0034 clrl %a3@(52) <== 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; 47594: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; 47598: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); 4759c: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 4759e: 2d45 000c movel %d5,%fp@(12) <== NOT EXECUTED 475a2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 475a6: 223c 0004 7708 movel #292616,%d1 <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 475ac: 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( 475b2: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 475b6: 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( 475b8: 4ef9 0004 8c30 jmp 48c30 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 475be: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 475c4: 4e5e unlk %fp <== NOT EXECUTED 475c6: 4e75 rts 000475c8 <_CORE_RWLock_Obtain_for_writing>: Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 475c8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 475cc: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 475d0: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 475d4: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 475d8: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 475dc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 475e0: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== 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 ); 475e6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 475ec: 40c1 movew %sr,%d1 <== NOT EXECUTED 475ee: 8081 orl %d1,%d0 <== NOT EXECUTED 475f0: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 475f2: 4aa9 0044 tstl %a1@(68) <== NOT EXECUTED 475f6: 660e bnes 47606 <_CORE_RWLock_Obtain_for_writing+0x3e> <== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 475f8: 7002 moveq #2,%d0 <== NOT EXECUTED 475fa: 2340 0044 movel %d0,%a1@(68) <== NOT EXECUTED _ISR_Enable( level ); 475fe: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 47600: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED 47604: 6044 bras 4764a <_CORE_RWLock_Obtain_for_writing+0x82> <== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 47606: 4a02 tstb %d2 <== NOT EXECUTED 47608: 660a bnes 47614 <_CORE_RWLock_Obtain_for_writing+0x4c> <== NOT EXECUTED _ISR_Enable( level ); 4760a: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 4760c: 7002 moveq #2,%d0 <== NOT EXECUTED 4760e: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 47612: 6036 bras 4764a <_CORE_RWLock_Obtain_for_writing+0x82> <== NOT EXECUTED 47614: 7001 moveq #1,%d0 <== 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; executing->Wait.id = id; 47616: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED 4761a: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; 4761e: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 47622: 42a8 0034 clrl %a0@(52) <== 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; 47626: 2149 0044 movel %a1,%a0@(68) <== 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 ); 4762a: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 4762c: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 47630: 203c 0004 7708 movel #292616,%d0 <== NOT EXECUTED 47636: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED 4763a: 2d49 0008 movel %a1,%fp@(8) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4763e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 47642: 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( 47644: 4ef9 0004 8c30 jmp 48c30 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4764a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4764e: 4e5e unlk %fp <== NOT EXECUTED 47650: 4e75 rts <== NOT EXECUTED ... 00047654 <_CORE_RWLock_Release>: */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 47654: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47658: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== 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 ); 4765c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 47662: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 47666: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== 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 ); 4766c: 40c1 movew %sr,%d1 <== NOT EXECUTED 4766e: 8081 orl %d1,%d0 <== NOT EXECUTED 47670: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){ 47672: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 47676: 660c bnes 47684 <_CORE_RWLock_Release+0x30> <== NOT EXECUTED _ISR_Enable( level ); 47678: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 4767a: 103c 0002 moveb #2,%d0 <== NOT EXECUTED 4767e: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 47682: 6078 bras 476fc <_CORE_RWLock_Release+0xa8> <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; } if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) { 47684: 7401 moveq #1,%d2 <== NOT EXECUTED 47686: b480 cmpl %d0,%d2 <== NOT EXECUTED 47688: 6610 bnes 4769a <_CORE_RWLock_Release+0x46> <== NOT EXECUTED the_rwlock->number_of_readers -= 1; 4768a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4768e: 5380 subql #1,%d0 <== NOT EXECUTED 47690: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED if ( the_rwlock->number_of_readers != 0 ) { 47694: 6704 beqs 4769a <_CORE_RWLock_Release+0x46> <== NOT EXECUTED /* must be unlocked again */ _ISR_Enable( level ); 47696: 46c1 movew %d1,%sr <== NOT EXECUTED 47698: 6062 bras 476fc <_CORE_RWLock_Release+0xa8> <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; } } /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */ executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 4769a: 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; 4769e: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED _ISR_Enable( level ); 476a2: 46c1 movew %d1,%sr <== NOT EXECUTED next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue ); 476a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476a6: 4eb9 0004 8aec jsr 48aec <_Thread_queue_Dequeue> <== NOT EXECUTED if ( next ) { 476ac: 588f addql #4,%sp <== NOT EXECUTED * in obtaining this rwlock. */ the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; _ISR_Enable( level ); next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue ); 476ae: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( next ) { 476b0: 4a80 tstl %d0 <== NOT EXECUTED 476b2: 6748 beqs 476fc <_CORE_RWLock_Release+0xa8> <== NOT EXECUTED if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) { 476b4: 7001 moveq #1,%d0 <== NOT EXECUTED 476b6: b0a8 0030 cmpl %a0@(48),%d0 <== NOT EXECUTED 476ba: 6608 bnes 476c4 <_CORE_RWLock_Release+0x70> <== NOT EXECUTED the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 476bc: 7402 moveq #2,%d2 <== NOT EXECUTED 476be: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED 476c2: 6038 bras 476fc <_CORE_RWLock_Release+0xa8> <== 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; 476c4: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 476c6: 49f9 0004 8f5c lea 48f5c <_Thread_queue_First>,%a4 <== NOT EXECUTED 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 ); 476cc: 47f9 0004 8e28 lea 48e28 <_Thread_queue_Extract>,%a3 <== 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; 476d2: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED } /* * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING */ the_rwlock->number_of_readers += 1; 476d6: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 476da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476dc: 4e94 jsr %a4@ <== NOT EXECUTED if ( !next || 476de: 588f addql #4,%sp <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 476e0: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !next || 476e2: 4a80 tstl %d0 <== NOT EXECUTED 476e4: 6716 beqs 476fc <_CORE_RWLock_Release+0xa8> <== NOT EXECUTED 476e6: 7401 moveq #1,%d2 <== NOT EXECUTED 476e8: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED 476ec: 670e beqs 476fc <_CORE_RWLock_Release+0xa8> <== NOT EXECUTED 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 ); 476ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED while ( 1 ) { 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; 476f0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _Thread_queue_Extract( &the_rwlock->Wait_queue, next ); 476f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476f6: 4e93 jsr %a3@ <== NOT EXECUTED 476f8: 508f addql #8,%sp <== NOT EXECUTED 476fa: 60de bras 476da <_CORE_RWLock_Release+0x86> <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 476fc: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 47702: 4e5e unlk %fp <== NOT EXECUTED 47704: 4280 clrl %d0 <== NOT EXECUTED 47706: 4e75 rts 00047708 <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) { 47708: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 4770c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47710: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47714: 4eb9 0004 87f4 jsr 487f4 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4771a: 508f addql #8,%sp <== NOT EXECUTED 4771c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47720: 6618 bnes 4773a <_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 ); 47722: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47724: 4eb9 0004 906c jsr 4906c <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4772a: 2039 0005 a284 movel 5a284 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 47730: 588f addql #4,%sp <== NOT EXECUTED 47732: 5380 subql #1,%d0 <== NOT EXECUTED 47734: 23c0 0005 a284 movel %d0,5a284 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 4773a: 4e5e unlk %fp <== NOT EXECUTED 4773c: 4e75 rts <== NOT EXECUTED ... 00046894 <_CORE_barrier_Initialize>: void _CORE_barrier_Initialize( CORE_barrier_Control *the_barrier, CORE_barrier_Attributes *the_barrier_attributes ) { 46894: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED the_barrier->Attributes = *the_barrier_attributes; the_barrier->number_of_waiting_threads = 0; _Thread_queue_Initialize( 46898: 4878 0003 pea 3 <== NOT EXECUTED void _CORE_barrier_Initialize( CORE_barrier_Control *the_barrier, CORE_barrier_Attributes *the_barrier_attributes ) { 4689c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 468a0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED the_barrier->Attributes = *the_barrier_attributes; the_barrier->number_of_waiting_threads = 0; _Thread_queue_Initialize( 468a4: 2f3c 0001 0000 movel #65536,%sp@- <== NOT EXECUTED CORE_barrier_Control *the_barrier, CORE_barrier_Attributes *the_barrier_attributes ) { the_barrier->Attributes = *the_barrier_attributes; 468aa: 2011 movel %a1@,%d0 <== NOT EXECUTED 468ac: 2169 0004 0044 movel %a1@(4),%a0@(68) <== NOT EXECUTED the_barrier->number_of_waiting_threads = 0; _Thread_queue_Initialize( 468b2: 42a7 clrl %sp@- <== NOT EXECUTED CORE_barrier_Control *the_barrier, CORE_barrier_Attributes *the_barrier_attributes ) { the_barrier->Attributes = *the_barrier_attributes; 468b4: 2140 0040 movel %d0,%a0@(64) <== NOT EXECUTED the_barrier->number_of_waiting_threads = 0; _Thread_queue_Initialize( 468b8: 2f08 movel %a0,%sp@- <== NOT EXECUTED CORE_barrier_Attributes *the_barrier_attributes ) { the_barrier->Attributes = *the_barrier_attributes; the_barrier->number_of_waiting_threads = 0; 468ba: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED _Thread_queue_Initialize( 468be: 4eb9 0004 8314 jsr 48314 <_Thread_queue_Initialize> <== NOT EXECUTED 468c4: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED &the_barrier->Wait_queue, THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_BARRIER, CORE_BARRIER_TIMEOUT ); } 468ca: 4e5e unlk %fp <== NOT EXECUTED 468cc: 4e75 rts <== NOT EXECUTED ... 0004b198 <_CORE_barrier_Release>: uint32_t _CORE_barrier_Release( CORE_barrier_Control *the_barrier, Objects_Id id, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 4b198: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b19c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4b1a0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Thread_Control *the_thread; uint32_t count; count = 0; while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) { 4b1a4: 4282 clrl %d2 <== NOT EXECUTED 4b1a6: 47f9 0004 7f84 lea 47f84 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED 4b1ac: 6002 bras 4b1b0 <_CORE_barrier_Release+0x18> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_barrier_mp_support) ( the_thread, id ); #endif count++; 4b1ae: 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)) ) { 4b1b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b1b2: 4e93 jsr %a3@ <== NOT EXECUTED 4b1b4: 588f addql #4,%sp <== NOT EXECUTED 4b1b6: 4a80 tstl %d0 <== NOT EXECUTED 4b1b8: 66f4 bnes 4b1ae <_CORE_barrier_Release+0x16> <== NOT EXECUTED #endif count++; } the_barrier->number_of_waiting_threads = 0; return count; } 4b1ba: 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; 4b1bc: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED return count; } 4b1c0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4b1c6: 4e5e unlk %fp <== NOT EXECUTED 4b1c8: 4e75 rts <== NOT EXECUTED ... 000468d0 <_CORE_barrier_Wait>: Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 468d0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 468d4: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 468d8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 468dc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 468e0: 2279 0005 93c2 moveal 593c2 <_Thread_Executing>,%a1 <== NOT EXECUTED executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 468e6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED { Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; 468ec: 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 ) { 468f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 468f4: 242e 0018 movel %fp@(24),%d2 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 468f8: 40c1 movew %sr,%d1 <== NOT EXECUTED 468fa: 8081 orl %d1,%d0 <== NOT EXECUTED 468fc: 46c0 movew %d0,%sr <== NOT EXECUTED the_barrier->number_of_waiting_threads++; 468fe: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 46902: 5280 addql #1,%d0 <== NOT EXECUTED 46904: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED if ( the_barrier->number_of_waiting_threads == 46908: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED 4690c: 6626 bnes 46934 <_CORE_barrier_Wait+0x64> <== NOT EXECUTED the_barrier->Attributes.maximum_count) { if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { 4690e: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 46912: 6620 bnes 46934 <_CORE_barrier_Wait+0x64> <== NOT EXECUTED executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; 46914: 7001 moveq #1,%d0 <== NOT EXECUTED 46916: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _ISR_Enable( level ); 4691a: 46c1 movew %d1,%sr <== NOT EXECUTED _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 4691c: 2d42 0010 movel %d2,%fp@(16) <== NOT EXECUTED 46920: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 46924: 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 ); } 46928: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4692c: 4e5e unlk %fp <== NOT EXECUTED if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; _ISR_Enable( level ); _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 4692e: 4ef9 0004 b198 jmp 4b198 <_CORE_barrier_Release> <== 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; 46934: 7001 moveq #1,%d0 <== NOT EXECUTED } } _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue ); executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; 46936: 2343 0020 movel %d3,%a1@(32) <== NOT EXECUTED 4693a: 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; 4693e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; _ISR_Enable( level ); 46942: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 46944: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 46948: 203c 0004 8400 movel #295936,%d0 <== NOT EXECUTED 4694e: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED 46952: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 46956: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4695a: 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 ); 4695c: 4ef9 0004 80c8 jmp 480c8 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED ... 00050174 <_CORE_message_queue_Broadcast>: size_t size, Objects_Id id, CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, uint32_t *count ) { 50174: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 50178: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 5017c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 50180: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED Thread_Control *the_thread; uint32_t number_broadcasted; Thread_Wait_information *waitp; if ( size > the_message_queue->maximum_message_size ) { 50184: b6ab 004c cmpl %a3@(76),%d3 <== NOT EXECUTED 50188: 6304 blss 5018e <_CORE_message_queue_Broadcast+0x1a> <== NOT EXECUTED 5018a: 7001 moveq #1,%d0 <== NOT EXECUTED 5018c: 604e bras 501dc <_CORE_message_queue_Broadcast+0x68> <== 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 ) { 5018e: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED 50192: 6610 bnes 501a4 <_CORE_message_queue_Broadcast+0x30> <== NOT EXECUTED * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread = _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) { 50194: 4282 clrl %d2 <== NOT EXECUTED 50196: 4bf9 0005 22d0 lea 522d0 <_Thread_queue_Dequeue>,%a5 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 5019c: 49f9 0005 730c lea 5730c ,%a4 <== NOT EXECUTED 501a2: 6024 bras 501c8 <_CORE_message_queue_Broadcast+0x54> <== 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; 501a4: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED 501a8: 4290 clrl %a0@ <== NOT EXECUTED 501aa: 4280 clrl %d0 <== NOT EXECUTED 501ac: 602e bras 501dc <_CORE_message_queue_Broadcast+0x68> <== NOT EXECUTED 501ae: 2f03 movel %d3,%sp@- <== NOT EXECUTED */ number_broadcasted = 0; while ((the_thread = _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) { waitp = &the_thread->Wait; number_broadcasted += 1; 501b0: 5282 addql #1,%d2 <== NOT EXECUTED 501b2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 501b6: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 501ba: 4e94 jsr %a4@ <== NOT EXECUTED buffer, waitp->return_argument_second.mutable_object, size ); *(size_t *) the_thread->Wait.return_argument = size; 501bc: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 501c0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 501c6: 2083 movel %d3,%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 = _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) { 501c8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 501ca: 4e95 jsr %a5@ <== NOT EXECUTED 501cc: 588f addql #4,%sp <== NOT EXECUTED 501ce: 2440 moveal %d0,%a2 <== NOT EXECUTED 501d0: 4a80 tstl %d0 <== NOT EXECUTED 501d2: 66da bnes 501ae <_CORE_message_queue_Broadcast+0x3a> <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif } *count = number_broadcasted; 501d4: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED 501d8: 4280 clrl %d0 <== NOT EXECUTED 501da: 2082 movel %d2,%a0@ <== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 501dc: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 501e2: 4e5e unlk %fp <== NOT EXECUTED 501e4: 4e75 rts <== NOT EXECUTED ... 0004fba4 <_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 ) { 4fba4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fba8: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * This will flush blocked threads whether they were blocked on * a send or receive. */ _Thread_queue_Flush( 4fbaa: 2f2e 0010 movel %fp@(16),%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 ) { 4fbae: 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( 4fbb2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4fbb6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fbb8: 4eb9 0004 afec jsr 4afec <_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 ) 4fbbe: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4fbc4: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4fbc8: 670a beqs 4fbd4 <_CORE_message_queue_Close+0x30> <== NOT EXECUTED (void) _CORE_message_queue_Flush_support( the_message_queue ); 4fbca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fbcc: 4eb9 0004 fbe8 jsr 4fbe8 <_CORE_message_queue_Flush_support> <== NOT EXECUTED 4fbd2: 588f addql #4,%sp <== NOT EXECUTED (void) _Workspace_Free( the_message_queue->message_buffers ); 4fbd4: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED } 4fbda: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fbde: 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 ); 4fbe0: 4ef9 0004 bb90 jmp 4bb90 <_Workspace_Free> <== NOT EXECUTED ... 0005022c <_CORE_message_queue_Flush>: */ uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue ) { 5022c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 50230: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages != 0 ) 50234: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED 50238: 6606 bnes 50240 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED return _CORE_message_queue_Flush_support( the_message_queue ); else return 0; } 5023a: 4e5e unlk %fp <== NOT EXECUTED 5023c: 4280 clrl %d0 <== NOT EXECUTED 5023e: 4e75 rts <== 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 ); 50240: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED else return 0; } 50244: 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 ); 50246: 4ef9 0005 024c jmp 5024c <_CORE_message_queue_Flush_support> <== NOT EXECUTED 0004fbe8 <_CORE_message_queue_Flush_support>: */ uint32_t _CORE_message_queue_Flush_support( CORE_message_queue_Control *the_message_queue ) { 4fbe8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4fbec: 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 ); 4fbf0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ uint32_t _CORE_message_queue_Flush_support( CORE_message_queue_Control *the_message_queue ) { 4fbf6: 206e 0008 moveal %fp@(8),%a0 <== 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 ); 4fbfa: 40c1 movew %sr,%d1 <== NOT EXECUTED 4fbfc: 8081 orl %d1,%d0 <== NOT EXECUTED 4fbfe: 46c0 movew %d0,%sr <== NOT EXECUTED inactive_first = the_message_queue->Inactive_messages.first; message_queue_first = the_message_queue->Pending_messages.first; 4fc00: 2468 0050 moveal %a0@(80),%a2 <== 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_first = the_message_queue->Inactive_messages.first; 4fc04: 2668 0068 moveal %a0@(104),%a3 <== NOT EXECUTED message_queue_first = the_message_queue->Pending_messages.first; message_queue_last = the_message_queue->Pending_messages.last; 4fc08: 2268 0058 moveal %a0@(88),%a1 <== NOT EXECUTED the_message_queue->Inactive_messages.first = message_queue_first; 4fc0c: 214a 0068 movel %a2,%a0@(104) <== NOT EXECUTED message_queue_last->next = inactive_first; inactive_first->previous = message_queue_last; message_queue_first->previous = 4fc10: 49e8 0068 lea %a0@(104),%a4 <== NOT EXECUTED _Chain_Head( &the_message_queue->Inactive_messages ); _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; 4fc14: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED message_queue_first = the_message_queue->Pending_messages.first; message_queue_last = the_message_queue->Pending_messages.last; the_message_queue->Inactive_messages.first = message_queue_first; message_queue_last->next = inactive_first; inactive_first->previous = message_queue_last; 4fc18: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED inactive_first = the_message_queue->Inactive_messages.first; message_queue_first = the_message_queue->Pending_messages.first; message_queue_last = the_message_queue->Pending_messages.last; the_message_queue->Inactive_messages.first = message_queue_first; message_queue_last->next = inactive_first; 4fc1c: 228b movel %a3,%a1@ <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4fc1e: 43e8 0054 lea %a0@(84),%a1 <== NOT EXECUTED inactive_first->previous = message_queue_last; message_queue_first->previous = 4fc22: 254c 0004 movel %a4,%a2@(4) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4fc26: 49e8 0050 lea %a0@(80),%a4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4fc2a: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4fc2e: 214c 0058 movel %a4,%a0@(88) <== NOT EXECUTED _Chain_Head( &the_message_queue->Inactive_messages ); _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; 4fc32: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4fc36: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED _ISR_Enable( level ); 4fc3a: 46c1 movew %d1,%sr <== NOT EXECUTED return count; } 4fc3c: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 4fc40: 4e5e unlk %fp <== NOT EXECUTED 4fc42: 4e75 rts 0004fc4c <_CORE_message_queue_Initialize>: 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 ) { 4fc4c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4fc50: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4fc54: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4fc58: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED 4fc5c: 262e 0010 movel %fp@(16),%d3 <== 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)) { 4fc60: 7003 moveq #3,%d0 <== NOT EXECUTED ) { size_t message_buffering_required; size_t allocated_message_size; the_message_queue->maximum_pending_messages = maximum_pending_messages; 4fc62: 2543 0044 movel %d3,%a2@(68) <== 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)) { 4fc66: c081 andl %d1,%d0 <== NOT EXECUTED { size_t message_buffering_required; size_t allocated_message_size; the_message_queue->maximum_pending_messages = maximum_pending_messages; the_message_queue->number_of_pending_messages = 0; 4fc68: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED the_message_queue->maximum_message_size = maximum_message_size; 4fc6c: 2541 004c movel %d1,%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; 4fc70: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4fc74: 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)) { 4fc78: 4a80 tstl %d0 <== NOT EXECUTED 4fc7a: 6604 bnes 4fc80 <_CORE_message_queue_Initialize+0x34> <== NOT EXECUTED 4fc7c: 2001 movel %d1,%d0 <== NOT EXECUTED 4fc7e: 600c bras 4fc8c <_CORE_message_queue_Initialize+0x40> <== NOT EXECUTED allocated_message_size += sizeof(uint32_t); 4fc80: 2001 movel %d1,%d0 <== NOT EXECUTED 4fc82: 5880 addql #4,%d0 <== NOT EXECUTED allocated_message_size &= ~(sizeof(uint32_t) - 1); 4fc84: 74fc moveq #-4,%d2 <== NOT EXECUTED 4fc86: c082 andl %d2,%d0 <== NOT EXECUTED } if (allocated_message_size < maximum_message_size) 4fc88: b280 cmpl %d0,%d1 <== NOT EXECUTED 4fc8a: 6270 bhis 4fcfc <_CORE_message_queue_Initialize+0xb0> <== 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 * 4fc8c: 2400 movel %d0,%d2 <== NOT EXECUTED 4fc8e: 0682 0000 0014 addil #20,%d2 <== NOT EXECUTED 4fc94: 2202 movel %d2,%d1 <== NOT EXECUTED 4fc96: 4c03 1800 mulsl %d3,%d1 <== NOT EXECUTED (allocated_message_size + sizeof(CORE_message_queue_Buffer_control)); if (message_buffering_required < allocated_message_size) 4fc9a: b081 cmpl %d1,%d0 <== NOT EXECUTED 4fc9c: 625e bhis 4fcfc <_CORE_message_queue_Initialize+0xb0> <== NOT EXECUTED return false; /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) 4fc9e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4fca0: 4eb9 0004 d71c jsr 4d71c <_Workspace_Allocate> <== NOT EXECUTED _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) 4fca6: 588f addql #4,%sp <== NOT EXECUTED return false; /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) 4fca8: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) 4fcac: 674e beqs 4fcfc <_CORE_message_queue_Initialize+0xb0> <== NOT EXECUTED /* * Initialize the pool of inactive messages, pending messages, * and set of waiting threads. */ _Chain_Initialize ( 4fcae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fcb0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fcb2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fcb4: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4fcb8: 4eb9 0004 fb10 jsr 4fb10 <_Chain_Initialize> <== NOT EXECUTED allocated_message_size + sizeof( CORE_message_queue_Buffer_control ) ); _Chain_Initialize_empty( &the_message_queue->Pending_messages ); _Thread_queue_Initialize( 4fcbe: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4fcc2: 4878 0006 pea 6 <== NOT EXECUTED 4fcc6: 7001 moveq #1,%d0 <== NOT EXECUTED 4fcc8: b090 cmpl %a0@,%d0 <== NOT EXECUTED 4fcca: 57c0 seq %d0 <== NOT EXECUTED 4fccc: 4878 0080 pea 80 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4fcd0: 41ea 0054 lea %a2@(84),%a0 <== NOT EXECUTED 4fcd4: 49c0 extbl %d0 <== NOT EXECUTED 4fcd6: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4fcda: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED 4fcde: 4480 negl %d0 <== NOT EXECUTED 4fce0: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED 4fce4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fce6: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4fce8: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED 4fcec: 4eb9 0004 cb3c jsr 4cb3c <_Thread_queue_Initialize> <== NOT EXECUTED 4fcf2: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 4fcf8: 7001 moveq #1,%d0 <== NOT EXECUTED 4fcfa: 6002 bras 4fcfe <_CORE_message_queue_Initialize+0xb2> <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; 4fcfc: 4200 clrb %d0 <== NOT EXECUTED } 4fcfe: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4fd04: 4e5e unlk %fp <== NOT EXECUTED 4fd06: 4e75 rts 000528a8 <_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 ) { 528a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 528ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 528b0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 528b4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 528b8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED ISR_Level level; bool notify = false; the_message->priority = submit_type; 528bc: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED switch ( submit_type ) { 528c0: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED 528c6: 673e beqs 52906 <_CORE_message_queue_Insert_message+0x5e> <== NOT EXECUTED 528c8: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 528ce: 666a bnes 5293a <_CORE_message_queue_Insert_message+0x92> <== NOT EXECUTED case CORE_MESSAGE_QUEUE_SEND_REQUEST: _ISR_Disable( level ); 528d0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 528d6: 40c1 movew %sr,%d1 <== NOT EXECUTED 528d8: 8081 orl %d1,%d0 <== NOT EXECUTED 528da: 46c0 movew %d0,%sr <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 528dc: 41eb 0054 lea %a3@(84),%a0 <== NOT EXECUTED 528e0: 2488 movel %a0,%a2@ <== NOT EXECUTED old_last_node = the_chain->last; 528e2: 206b 0058 moveal %a3@(88),%a0 <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages++ == 0 ) 528e6: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED the_chain->last = the_node; 528ea: 274a 0058 movel %a2,%a3@(88) <== NOT EXECUTED 528ee: 2240 moveal %d0,%a1 <== NOT EXECUTED 528f0: 5289 addql #1,%a1 <== NOT EXECUTED 528f2: 2749 0048 movel %a1,%a3@(72) <== NOT EXECUTED 528f6: 4a80 tstl %d0 <== NOT EXECUTED 528f8: 57c0 seq %d0 <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 528fa: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED 528fe: 4480 negl %d0 <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 52900: 208a movel %a2,%a0@ <== NOT EXECUTED notify = true; _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 52902: 46c1 movew %d1,%sr <== NOT EXECUTED 52904: 607e bras 52984 <_CORE_message_queue_Insert_message+0xdc> <== NOT EXECUTED break; case CORE_MESSAGE_QUEUE_URGENT_REQUEST: _ISR_Disable( level ); 52906: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5290c: 40c1 movew %sr,%d1 <== NOT EXECUTED 5290e: 8081 orl %d1,%d0 <== NOT EXECUTED 52910: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head( Chain_Control *the_chain ) { return (Chain_Node *) the_chain; 52912: 41eb 0050 lea %a3@(80),%a0 <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 52916: 2250 moveal %a0@,%a1 <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages++ == 0 ) 52918: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED after_node->next = the_node; 5291c: 208a movel %a2,%a0@ <== NOT EXECUTED 5291e: 2400 movel %d0,%d2 <== NOT EXECUTED 52920: 5282 addql #1,%d2 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 52922: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED 52926: 4a80 tstl %d0 <== NOT EXECUTED 52928: 57c0 seq %d0 <== NOT EXECUTED 5292a: 2742 0048 movel %d2,%a3@(72) <== NOT EXECUTED 5292e: 4480 negl %d0 <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; before_node->previous = the_node; 52930: 234a 0004 movel %a2,%a1@(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; 52934: 2489 movel %a1,%a2@ <== NOT EXECUTED notify = true; _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 52936: 46c1 movew %d1,%sr <== NOT EXECUTED 52938: 604a bras 52984 <_CORE_message_queue_Insert_message+0xdc> <== NOT EXECUTED CORE_message_queue_Buffer_control *this_message; Chain_Node *the_node; Chain_Control *the_header; the_header = &the_message_queue->Pending_messages; the_node = the_header->first; 5293a: 206b 0050 moveal %a3@(80),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 5293e: 220b movel %a3,%d1 <== NOT EXECUTED 52940: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED 52946: 6008 bras 52950 <_CORE_message_queue_Insert_message+0xa8> <== NOT EXECUTED while ( !_Chain_Is_tail( the_header, the_node ) ) { this_message = (CORE_message_queue_Buffer_control *) the_node; if ( this_message->priority <= the_message->priority ) { 52948: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 5294c: 6d06 blts 52954 <_CORE_message_queue_Insert_message+0xac> <== NOT EXECUTED the_node = the_node->next; 5294e: 2050 moveal %a0@,%a0 <== NOT EXECUTED Chain_Node *the_node; Chain_Control *the_header; the_header = &the_message_queue->Pending_messages; the_node = the_header->first; while ( !_Chain_Is_tail( the_header, the_node ) ) { 52950: b288 cmpl %a0,%d1 <== NOT EXECUTED 52952: 66f4 bnes 52948 <_CORE_message_queue_Insert_message+0xa0> <== NOT EXECUTED continue; } break; } _ISR_Disable( level ); 52954: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5295a: 40c2 movew %sr,%d2 <== NOT EXECUTED 5295c: 8082 orl %d2,%d0 <== NOT EXECUTED 5295e: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages++ == 0 ) notify = true; _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); 52960: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 52964: 2250 moveal %a0@,%a1 <== NOT EXECUTED } break; } _ISR_Disable( level ); if ( the_message_queue->number_of_pending_messages++ == 0 ) 52966: 222b 0048 movel %a3@(72),%d1 <== NOT EXECUTED after_node->next = the_node; 5296a: 208a movel %a2,%a0@ <== NOT EXECUTED 5296c: 4a81 tstl %d1 <== NOT EXECUTED 5296e: 57c0 seq %d0 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 52970: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED 52974: 5281 addql #1,%d1 <== NOT EXECUTED 52976: 4480 negl %d0 <== NOT EXECUTED 52978: 2741 0048 movel %d1,%a3@(72) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; before_node->previous = the_node; 5297c: 234a 0004 movel %a2,%a1@(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; 52980: 2489 movel %a1,%a2@ <== NOT EXECUTED notify = true; _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); _ISR_Enable( level ); 52982: 46c2 movew %d2,%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 ) 52984: 4a00 tstb %d0 <== NOT EXECUTED 52986: 6716 beqs 5299e <_CORE_message_queue_Insert_message+0xf6> <== NOT EXECUTED 52988: 202b 0060 movel %a3@(96),%d0 <== NOT EXECUTED 5298c: 6710 beqs 5299e <_CORE_message_queue_Insert_message+0xf6> <== NOT EXECUTED (*the_message_queue->notify_handler)( the_message_queue->notify_argument ); 5298e: 2240 moveal %d0,%a1 <== NOT EXECUTED 52990: 2d6b 0064 0008 movel %a3@(100),%fp@(8) <== NOT EXECUTED } 52996: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 5299a: 4e5e unlk %fp <== NOT EXECUTED * 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 ); 5299c: 4ed1 jmp %a1@ <== NOT EXECUTED } 5299e: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 529a2: 4e5e unlk %fp <== NOT EXECUTED 529a4: 4e75 rts <== NOT EXECUTED ... 0004fc44 <_CORE_message_queue_Seize>: void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 4fc44: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4fc48: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 4fc4c: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 4fc50: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; Thread_Control *the_thread; executing = _Thread_Executing; 4fc54: 2279 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a1 <== NOT EXECUTED executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4fc5a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; Thread_Control *the_thread; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 4fc60: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 4fc64: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4fc68: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4fc6c: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED 4fc70: 142e 001b moveb %fp@(27),%d2 <== NOT EXECUTED Thread_Control *executing; Thread_Control *the_thread; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4fc74: 40c1 movew %sr,%d1 <== NOT EXECUTED 4fc76: 8081 orl %d1,%d0 <== NOT EXECUTED 4fc78: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4fc7a: 246b 0050 moveal %a3@(80),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4fc7e: 200b movel %a3,%d0 <== NOT EXECUTED 4fc80: 0680 0000 0054 addil #84,%d0 <== NOT EXECUTED 4fc86: b08a cmpl %a2,%d0 <== NOT EXECUTED 4fc88: 6700 00ac beqw 4fd36 <_CORE_message_queue_Seize+0xf2> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 4fc8c: 2052 moveal %a2@,%a0 <== NOT EXECUTED the_chain->first = new_first; 4fc8e: 2748 0050 movel %a0,%a3@(80) <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 4fc92: 4beb 0050 lea %a3@(80),%a5 <== NOT EXECUTED 4fc96: 214d 0004 movel %a5,%a0@(4) <== NOT EXECUTED the_message = _CORE_message_queue_Get_pending_message( the_message_queue ); if ( the_message != NULL ) { 4fc9a: 4a8a tstl %a2 <== NOT EXECUTED 4fc9c: 6700 0098 beqw 4fd36 <_CORE_message_queue_Seize+0xf2> <== NOT EXECUTED the_message_queue->number_of_pending_messages -= 1; 4fca0: 53ab 0048 subql #1,%a3@(72) <== NOT EXECUTED _ISR_Enable( level ); 4fca4: 46c1 movew %d1,%sr <== NOT EXECUTED *size_p = the_message->Contents.size; _Thread_Executing->Wait.count = the_message->priority; 4fca6: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== 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; 4fcac: 28aa 000c movel %a2@(12),%a4@ <== NOT EXECUTED _Thread_Executing->Wait.count = the_message->priority; _CORE_message_queue_Copy_buffer(the_message->Contents.buffer,buffer,*size_p); 4fcb0: 240a movel %a2,%d2 <== NOT EXECUTED if ( the_message != NULL ) { the_message_queue->number_of_pending_messages -= 1; _ISR_Enable( level ); *size_p = the_message->Contents.size; _Thread_Executing->Wait.count = the_message->priority; 4fcb2: 216a 0008 0024 movel %a2@(8),%a0@(36) <== NOT EXECUTED _CORE_message_queue_Copy_buffer(the_message->Contents.buffer,buffer,*size_p); 4fcb8: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4fcbe: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 4fcc0: 4bf9 0005 44bc lea 544bc ,%a5 <== NOT EXECUTED 4fcc6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fcc8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fcca: 4e95 jsr %a5@ <== NOT EXECUTED * * 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 ); 4fccc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fcce: 4eb9 0004 ac88 jsr 4ac88 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( !the_thread ) { 4fcd4: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED * * 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 ); 4fcda: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !the_thread ) { 4fcdc: 4a80 tstl %d0 <== NOT EXECUTED 4fcde: 661c bnes 4fcfc <_CORE_message_queue_Seize+0xb8> <== 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 ); 4fce0: d7fc 0000 0068 addal #104,%a3 <== NOT EXECUTED 4fce6: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 4fcea: 2d4b 0008 movel %a3,%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 ); } 4fcee: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4fcf4: 4e5e unlk %fp <== NOT EXECUTED 4fcf6: 4ef9 0004 94ec jmp 494ec <_Chain_Append> <== NOT EXECUTED * puts the messages in the message queue on behalf of the * waiting task. */ the_message->priority = the_thread->Wait.count; the_message->Contents.size = (size_t) the_thread->Wait.option; 4fcfc: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED * There was a thread waiting to send a message. This code * puts the messages in the message queue on behalf of the * waiting task. */ the_message->priority = the_thread->Wait.count; 4fd00: 2568 0024 0008 movel %a0@(36),%a2@(8) <== NOT EXECUTED the_message->Contents.size = (size_t) the_thread->Wait.option; 4fd06: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4fd0a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fd0c: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 4fd10: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fd12: 4e95 jsr %a5@ <== NOT EXECUTED the_thread->Wait.return_argument_second.immutable_object, the_message->Contents.buffer, the_message->Contents.size ); _CORE_message_queue_Insert_message( 4fd14: 2d6a 0008 0010 movel %a2@(8),%fp@(16) <== NOT EXECUTED 4fd1a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4fd20: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 4fd24: 2d4b 0008 movel %a3,%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 ); } 4fd28: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4fd2e: 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( 4fd30: 4ef9 0005 28a8 jmp 528a8 <_CORE_message_queue_Insert_message> <== NOT EXECUTED the_message->priority ); return; } if ( !wait ) { 4fd36: 4a02 tstb %d2 <== NOT EXECUTED 4fd38: 6612 bnes 4fd4c <_CORE_message_queue_Seize+0x108> <== NOT EXECUTED _ISR_Enable( level ); 4fd3a: 46c1 movew %d1,%sr <== 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 ); } 4fd3c: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED return; } if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 4fd42: 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 ); } 4fd44: 4e5e unlk %fp <== NOT EXECUTED return; } if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 4fd46: 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 ); } 4fd4a: 4e75 rts <== NOT EXECUTED 4fd4c: 7001 moveq #1,%d0 <== NOT EXECUTED 4fd4e: 2740 0030 movel %d0,%a3@(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; executing->Wait.return_argument = size_p; 4fd52: 234c 0028 movel %a4,%a1@(40) <== NOT EXECUTED return; } _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; 4fd56: 2345 0020 movel %d5,%a1@(32) <== NOT EXECUTED executing->Wait.return_argument_second.mutable_object = buffer; 4fd5a: 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; 4fd5e: 234b 0044 movel %a3,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 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 ); 4fd62: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 4fd64: 4bf9 0004 b104 lea 4b104 <_Thread_queue_Timeout>,%a5 <== NOT EXECUTED 4fd6a: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 4fd6e: 2d4d 0010 movel %a5,%fp@(16) <== NOT EXECUTED 4fd72: 2d4b 0008 movel %a3,%fp@(8) <== NOT EXECUTED } 4fd76: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4fd7c: 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 ); 4fd7e: 4ef9 0004 adcc jmp 4adcc <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED 0004fd84 <_CORE_message_queue_Submit>: CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, CORE_message_queue_Submit_types submit_type, bool wait, Watchdog_Interval timeout ) { 4fd84: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4fd88: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4fd8c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4fd90: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4fd94: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 4fd98: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED 4fd9c: 142e 0023 moveb %fp@(35),%d2 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { 4fda0: b6ab 004c cmpl %a3@(76),%d3 <== NOT EXECUTED 4fda4: 6306 blss 4fdac <_CORE_message_queue_Submit+0x28> <== NOT EXECUTED 4fda6: 7001 moveq #1,%d0 <== NOT EXECUTED 4fda8: 6000 00e4 braw 4fe8e <_CORE_message_queue_Submit+0x10a> <== NOT EXECUTED /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { 4fdac: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED 4fdb0: 6634 bnes 4fde6 <_CORE_message_queue_Submit+0x62> <== NOT EXECUTED the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 4fdb2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fdb4: 4eb9 0004 ac88 jsr 4ac88 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( the_thread ) { 4fdba: 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 ); 4fdbc: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( the_thread ) { 4fdbe: 4a80 tstl %d0 <== NOT EXECUTED 4fdc0: 6724 beqs 4fde6 <_CORE_message_queue_Submit+0x62> <== NOT EXECUTED 4fdc2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fdc4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4fdc6: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4fdca: 4eb9 0005 44bc jsr 544bc <== 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; 4fdd0: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 4fdd4: 2083 movel %d3,%a0@ <== NOT EXECUTED the_thread->Wait.count = submit_type; 4fdd6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4fddc: 4280 clrl %d0 <== NOT EXECUTED 4fdde: 2544 0024 movel %d4,%a2@(36) <== NOT EXECUTED 4fde2: 6000 00aa braw 4fe8e <_CORE_message_queue_Submit+0x10a> <== 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 < 4fde6: 202b 0044 movel %a3@(68),%d0 <== NOT EXECUTED 4fdea: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 4fdee: 6340 blss 4fe30 <_CORE_message_queue_Submit+0xac> <== NOT EXECUTED RTEMS_INLINE_ROUTINE CORE_message_queue_Buffer_control * _CORE_message_queue_Allocate_message_buffer ( CORE_message_queue_Control *the_message_queue ) { return (CORE_message_queue_Buffer_control *) 4fdf0: 486b 0068 pea %a3@(104) <== NOT EXECUTED 4fdf4: 4eb9 0004 9524 jsr 49524 <_Chain_Get> <== NOT EXECUTED /* * NOTE: If the system is consistent, this error should never occur. */ if ( !the_message ) { 4fdfa: 588f addql #4,%sp <== NOT EXECUTED 4fdfc: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fdfe: 4a80 tstl %d0 <== NOT EXECUTED 4fe00: 6700 008a beqw 4fe8c <_CORE_message_queue_Submit+0x108> <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4fe04: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fe06: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4fe08: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4fe0c: 4eb9 0005 44bc jsr 544bc <== NOT EXECUTED _CORE_message_queue_Copy_buffer( buffer, the_message->Contents.buffer, size ); the_message->Contents.size = size; 4fe12: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED the_message->priority = submit_type; 4fe16: 2544 0008 movel %d4,%a2@(8) <== NOT EXECUTED _CORE_message_queue_Insert_message( 4fe1a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4fe1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fe1e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fe20: 4eb9 0005 28a8 jsr 528a8 <_CORE_message_queue_Insert_message> <== NOT EXECUTED 4fe26: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 4fe2c: 4280 clrl %d0 <== NOT EXECUTED 4fe2e: 605e bras 4fe8e <_CORE_message_queue_Submit+0x10a> <== 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 ) { 4fe30: 4a02 tstb %d2 <== NOT EXECUTED 4fe32: 6604 bnes 4fe38 <_CORE_message_queue_Submit+0xb4> <== NOT EXECUTED 4fe34: 7002 moveq #2,%d0 <== NOT EXECUTED 4fe36: 6056 bras 4fe8e <_CORE_message_queue_Submit+0x10a> <== 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() ) { 4fe38: 2039 0006 3c82 movel 63c82 <_ISR_Nest_level>,%d0 <== NOT EXECUTED 4fe3e: 664c bnes 4fe8c <_CORE_message_queue_Submit+0x108> <== NOT EXECUTED */ { Thread_Control *executing = _Thread_Executing; _ISR_Disable( level ); 4fe40: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED * it as a variable. Doing this emphasizes how dangerous it * would be to use this variable prior to here. */ { Thread_Control *executing = _Thread_Executing; 4fe46: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== NOT EXECUTED _ISR_Disable( level ); 4fe4c: 40c0 movew %sr,%d0 <== NOT EXECUTED 4fe4e: 8280 orl %d0,%d1 <== NOT EXECUTED 4fe50: 46c1 movew %d1,%sr <== NOT EXECUTED 4fe52: 7201 moveq #1,%d1 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; 4fe54: 216e 0014 0020 movel %fp@(20),%a0@(32) <== NOT EXECUTED 4fe5a: 2741 0030 movel %d1,%a3@(48) <== NOT EXECUTED executing->Wait.return_argument_second.immutable_object = buffer; executing->Wait.option = (uint32_t) size; executing->Wait.count = submit_type; 4fe5e: 2144 0024 movel %d4,%a0@(36) <== NOT EXECUTED _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; executing->Wait.return_argument_second.immutable_object = buffer; 4fe62: 2145 002c movel %d5,%a0@(44) <== NOT EXECUTED executing->Wait.option = (uint32_t) size; 4fe66: 2143 0030 movel %d3,%a0@(48) <== NOT EXECUTED { Thread_Control *executing = _Thread_Executing; _ISR_Disable( level ); _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; 4fe6a: 214b 0044 movel %a3,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.return_argument_second.immutable_object = buffer; executing->Wait.option = (uint32_t) size; executing->Wait.count = submit_type; _ISR_Enable( level ); 4fe6e: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 4fe70: 4879 0004 b104 pea 4b104 <_Thread_queue_Timeout> <== NOT EXECUTED 4fe76: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED 4fe7a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fe7c: 4eb9 0004 adcc jsr 4adcc <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED 4fe82: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4fe88: 7007 moveq #7,%d0 <== NOT EXECUTED 4fe8a: 6002 bras 4fe8e <_CORE_message_queue_Submit+0x10a> <== NOT EXECUTED } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; 4fe8c: 7003 moveq #3,%d0 <== NOT EXECUTED } 4fe8e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4fe94: 4e5e unlk %fp <== NOT EXECUTED 4fe96: 4e75 rts 0004599c <_CORE_mutex_Flush>: void _CORE_mutex_Flush( CORE_mutex_Control *the_mutex, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 4599c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Thread_queue_Flush( &the_mutex->Wait_queue, remote_extract_callout, status ); } 459a0: 4e5e unlk %fp <== NOT EXECUTED CORE_mutex_Control *the_mutex, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { _Thread_queue_Flush( 459a2: 4ef9 0004 7390 jmp 47390 <_Thread_queue_Flush> <== NOT EXECUTED 000459a8 <_CORE_mutex_Initialize>: CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 459a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 459ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED /* 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; 459b0: 4878 000e pea e <== NOT EXECUTED CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 459b4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 459b8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* 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; 459bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 459be: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED /* 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; 459c2: 486a 0040 pea %a2@(64) <== NOT EXECUTED 459c6: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED the_mutex->lock = initial_lock; 459cc: 2542 004e movel %d2,%a2@(78) <== NOT EXECUTED the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { 459d0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED initial_lock == CORE_MUTEX_UNLOCKED ); */ the_mutex->Attributes = *the_mutex_attributes; the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; 459d6: 42aa 0056 clrl %a2@(86) <== NOT EXECUTED if ( initial_lock == CORE_MUTEX_LOCKED ) { 459da: 4a82 tstl %d2 <== NOT EXECUTED 459dc: 663c bnes 45a1a <_CORE_mutex_Initialize+0x72> <== NOT EXECUTED the_mutex->nest_count = 1; the_mutex->holder = _Thread_Executing; 459de: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 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; 459e4: 7001 moveq #1,%d0 <== NOT EXECUTED 459e6: 2540 0052 movel %d0,%a2@(82) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority( CORE_mutex_Attributes *the_attribute ) { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 459ea: 202a 0046 movel %a2@(70),%d0 <== NOT EXECUTED the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; 459ee: 2568 0008 005e movel %a0@(8),%a2@(94) <== NOT EXECUTED if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 459f4: 7202 moveq #2,%d1 <== NOT EXECUTED 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; 459f6: 2548 005a movel %a0,%a2@(90) <== NOT EXECUTED the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 459fa: b280 cmpl %d0,%d1 <== NOT EXECUTED 459fc: 6708 beqs 45a06 <_CORE_mutex_Initialize+0x5e> <== NOT EXECUTED 459fe: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 45a02: b280 cmpl %d0,%d1 <== NOT EXECUTED 45a04: 6620 bnes 45a26 <_CORE_mutex_Initialize+0x7e> <== NOT EXECUTED _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { if ( _Thread_Executing->current_priority < 45a06: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED 45a0a: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 45a0e: 6304 blss 45a14 <_CORE_mutex_Initialize+0x6c> <== NOT EXECUTED 45a10: 7006 moveq #6,%d0 <== NOT EXECUTED 45a12: 6036 bras 45a4a <_CORE_mutex_Initialize+0xa2> <== 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++; 45a14: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED 45a18: 600c bras 45a26 <_CORE_mutex_Initialize+0x7e> <== NOT EXECUTED } } else { the_mutex->nest_count = 0; 45a1a: 42aa 0052 clrl %a2@(82) <== NOT EXECUTED the_mutex->holder = NULL; 45a1e: 42aa 005a clrl %a2@(90) <== NOT EXECUTED the_mutex->holder_id = 0; 45a22: 42aa 005e clrl %a2@(94) <== NOT EXECUTED } _Thread_queue_Initialize( 45a26: 4878 0005 pea 5 <== NOT EXECUTED 45a2a: 4aab 0006 tstl %a3@(6) <== NOT EXECUTED 45a2e: 56c0 sne %d0 <== NOT EXECUTED 45a30: 4878 0400 pea 400 <== NOT EXECUTED 45a34: 49c0 extbl %d0 <== NOT EXECUTED 45a36: 4480 negl %d0 <== NOT EXECUTED 45a38: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45a3a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45a3c: 4eb9 0004 73bc jsr 473bc <_Thread_queue_Initialize> <== NOT EXECUTED 45a42: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45a48: 4280 clrl %d0 <== NOT EXECUTED STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; } 45a4a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 45a50: 4e5e unlk %fp <== NOT EXECUTED 45a52: 4e75 rts 00045abc <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 45abc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45ac0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45ac2: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 45ac6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 45aca: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 45ad0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45ad2: 1401 moveb %d1,%d2 <== NOT EXECUTED _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 45ad4: 4a80 tstl %d0 <== NOT EXECUTED 45ad6: 671c beqs 45af4 <_CORE_mutex_Seize+0x38> <== NOT EXECUTED 45ad8: 4a01 tstb %d1 <== NOT EXECUTED 45ada: 6718 beqs 45af4 <_CORE_mutex_Seize+0x38> <== NOT EXECUTED 45adc: 7001 moveq #1,%d0 <== NOT EXECUTED 45ade: b0b9 0005 800e cmpl 5800e <_System_state_Current>,%d0 <== NOT EXECUTED 45ae4: 640e bccs 45af4 <_CORE_mutex_Seize+0x38> <== NOT EXECUTED 45ae6: 4878 0013 pea 13 <== NOT EXECUTED 45aea: 42a7 clrl %sp@- <== NOT EXECUTED 45aec: 42a7 clrl %sp@- <== NOT EXECUTED 45aee: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED 45af4: 486e 0018 pea %fp@(24) <== NOT EXECUTED 45af8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45afa: 4eb9 0004 a25c jsr 4a25c <_CORE_mutex_Seize_interrupt_trylock> <== NOT EXECUTED 45b00: 508f addql #8,%sp <== NOT EXECUTED 45b02: 4a80 tstl %d0 <== NOT EXECUTED 45b04: 6750 beqs 45b56 <_CORE_mutex_Seize+0x9a> <== NOT EXECUTED 45b06: 4a02 tstb %d2 <== NOT EXECUTED 45b08: 6614 bnes 45b1e <_CORE_mutex_Seize+0x62> <== NOT EXECUTED 45b0a: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 45b0e: 46c0 movew %d0,%sr <== NOT EXECUTED 45b10: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 45b16: 7201 moveq #1,%d1 <== NOT EXECUTED 45b18: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED 45b1c: 6038 bras 45b56 <_CORE_mutex_Seize+0x9a> <== NOT EXECUTED 45b1e: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45b24: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 45b2a: 216e 000c 0020 movel %fp@(12),%a0@(32) <== NOT EXECUTED 45b30: 5280 addql #1,%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; 45b32: 7201 moveq #1,%d1 <== NOT EXECUTED 45b34: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED 45b38: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED 45b3e: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED 45b42: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 45b46: 46c0 movew %d0,%sr <== NOT EXECUTED 45b48: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 45b4c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45b4e: 4eb9 0004 5a54 jsr 45a54 <_CORE_mutex_Seize_interrupt_blocking> <== NOT EXECUTED 45b54: 508f addql #8,%sp <== NOT EXECUTED } 45b56: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45b5a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45b5e: 4e5e unlk %fp <== NOT EXECUTED 45b60: 4e75 rts <== NOT EXECUTED ... 00045a54 <_CORE_mutex_Seize_interrupt_blocking>: void _CORE_mutex_Seize_interrupt_blocking( CORE_mutex_Control *the_mutex, Watchdog_Interval timeout ) { 45a54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45a58: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45a5a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 45a5e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45a60: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Thread_Control *executing; executing = _Thread_Executing; 45a64: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { 45a6a: 7002 moveq #2,%d0 <== NOT EXECUTED 45a6c: b0aa 0046 cmpl %a2@(70),%d0 <== NOT EXECUTED 45a70: 6620 bnes 45a92 <_CORE_mutex_Seize_interrupt_blocking+0x3e> <== NOT EXECUTED if ( the_mutex->holder->current_priority > executing->current_priority ) { 45a72: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 45a76: 206a 005a moveal %a2@(90),%a0 <== NOT EXECUTED 45a7a: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 45a7e: 6412 bccs 45a92 <_CORE_mutex_Seize_interrupt_blocking+0x3e> <== NOT EXECUTED _Thread_Change_priority( 45a80: 42a7 clrl %sp@- <== NOT EXECUTED 45a82: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45a84: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45a86: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED 45a8c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED ); } } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 45a92: 4879 0004 74a8 pea 474a8 <_Thread_queue_Timeout> <== NOT EXECUTED FALSE ); } } the_mutex->blocked_count++; 45a98: 52aa 0056 addql #1,%a2@(86) <== NOT EXECUTED _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 45a9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45a9e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45aa0: 4eb9 0004 7170 jsr 47170 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); } 45aa6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45aaa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 45aae: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } 45ab4: 4e5e unlk %fp <== NOT EXECUTED } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 45ab6: 4ef9 0004 6d0a jmp 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 0004a25c <_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 ) { 4a25c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a260: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a262: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4a266: 2f02 movel %d2,%sp@- <== NOT EXECUTED CORE_mutex_Control *the_mutex, ISR_Level *level_p ) { Thread_Control *executing; ISR_Level level = *level_p; 4a268: 2410 movel %a0@,%d2 <== NOT EXECUTED /* disabled when you get here */ executing = _Thread_Executing; 4a26a: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 4a270: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; 4a274: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED if ( !_CORE_mutex_Is_locked( the_mutex ) ) { 4a278: 4aa9 004e tstl %a1@(78) <== NOT EXECUTED 4a27c: 6700 0096 beqw 4a314 <_CORE_mutex_Seize_interrupt_trylock+0xb8> <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_LOCKED; 4a280: 42a9 004e clrl %a1@(78) <== NOT EXECUTED the_mutex->holder = executing; the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; 4a284: 7201 moveq #1,%d1 <== NOT EXECUTED 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; 4a286: 2368 0008 005e movel %a0@(8),%a1@(94) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority( CORE_mutex_Attributes *the_attribute ) { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 4a28c: 2029 0046 movel %a1@(70),%d0 <== NOT EXECUTED 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; the_mutex->nest_count = 1; 4a290: 2341 0052 movel %d1,%a1@(82) <== NOT EXECUTED if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4a294: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 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; 4a298: 2348 005a movel %a0,%a1@(90) <== NOT EXECUTED the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4a29c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a29e: 6708 beqs 4a2a8 <_CORE_mutex_Seize_interrupt_trylock+0x4c> <== NOT EXECUTED 4a2a0: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4a2a4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a2a6: 6604 bnes 4a2ac <_CORE_mutex_Seize_interrupt_trylock+0x50> <== 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++; 4a2a8: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED } if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { 4a2ac: 7003 moveq #3,%d0 <== NOT EXECUTED 4a2ae: b0a9 0046 cmpl %a1@(70),%d0 <== NOT EXECUTED 4a2b2: 6706 beqs 4a2ba <_CORE_mutex_Seize_interrupt_trylock+0x5e> <== NOT EXECUTED _ISR_Enable( level ); 4a2b4: 46c2 movew %d2,%sr <== NOT EXECUTED 4a2b6: 6000 0084 braw 4a33c <_CORE_mutex_Seize_interrupt_trylock+0xe0> <== NOT EXECUTED */ { Priority_Control ceiling; Priority_Control current; ceiling = the_mutex->Attributes.priority_ceiling; 4a2ba: 2229 004a movel %a1@(74),%d1 <== NOT EXECUTED current = executing->current_priority; 4a2be: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED if ( current == ceiling ) { 4a2c2: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a2c4: 6604 bnes 4a2ca <_CORE_mutex_Seize_interrupt_trylock+0x6e> <== NOT EXECUTED _ISR_Enable( level ); 4a2c6: 46c2 movew %d2,%sr <== NOT EXECUTED 4a2c8: 6066 bras 4a330 <_CORE_mutex_Seize_interrupt_trylock+0xd4> <== NOT EXECUTED return 0; } if ( current > ceiling ) { 4a2ca: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a2cc: 642e bccs 4a2fc <_CORE_mutex_Seize_interrupt_trylock+0xa0> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4a2ce: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4a2d4: 5280 addql #1,%d0 <== NOT EXECUTED 4a2d6: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Enable( level ); 4a2dc: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_Change_priority( 4a2de: 42a7 clrl %sp@- <== NOT EXECUTED 4a2e0: 2f29 004a movel %a1@(74),%sp@- <== NOT EXECUTED 4a2e4: 2f29 005a movel %a1@(90),%sp@- <== NOT EXECUTED 4a2e8: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED the_mutex->holder, the_mutex->Attributes.priority_ceiling, FALSE ); _Thread_Enable_dispatch(); 4a2ee: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 4a2f4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4a2fa: 6034 bras 4a330 <_CORE_mutex_Seize_interrupt_trylock+0xd4> <== NOT EXECUTED return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; 4a2fc: 7206 moveq #6,%d1 <== NOT EXECUTED 4a2fe: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_UNLOCKED; 4a302: 7001 moveq #1,%d0 <== NOT EXECUTED the_mutex->nest_count = 0; /* undo locking above */ 4a304: 42a9 0052 clrl %a1@(82) <== NOT EXECUTED _Thread_Enable_dispatch(); return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; the_mutex->lock = CORE_MUTEX_UNLOCKED; 4a308: 2340 004e movel %d0,%a1@(78) <== NOT EXECUTED the_mutex->nest_count = 0; /* undo locking above */ executing->resource_count--; /* undo locking above */ 4a30c: 53a8 001c subql #1,%a0@(28) <== NOT EXECUTED _ISR_Enable( level ); 4a310: 46c2 movew %d2,%sr <== NOT EXECUTED 4a312: 6028 bras 4a33c <_CORE_mutex_Seize_interrupt_trylock+0xe0> <== 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 ) ) { 4a314: 2469 005a moveal %a1@(90),%a2 <== NOT EXECUTED 4a318: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4a31a: 6624 bnes 4a340 <_CORE_mutex_Seize_interrupt_trylock+0xe4> <== NOT EXECUTED switch ( the_mutex->Attributes.lock_nesting_behavior ) { 4a31c: 2029 0040 movel %a1@(64),%d0 <== NOT EXECUTED 4a320: 6708 beqs 4a32a <_CORE_mutex_Seize_interrupt_trylock+0xce> <== NOT EXECUTED 4a322: 7201 moveq #1,%d1 <== NOT EXECUTED 4a324: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a326: 6618 bnes 4a340 <_CORE_mutex_Seize_interrupt_trylock+0xe4> <== NOT EXECUTED 4a328: 600a bras 4a334 <_CORE_mutex_Seize_interrupt_trylock+0xd8> <== NOT EXECUTED case CORE_MUTEX_NESTING_ACQUIRES: the_mutex->nest_count++; 4a32a: 52a9 0052 addql #1,%a1@(82) <== NOT EXECUTED _ISR_Enable( level ); 4a32e: 46c2 movew %d2,%sr <== NOT EXECUTED 4a330: 4280 clrl %d0 <== NOT EXECUTED 4a332: 600e bras 4a342 <_CORE_mutex_Seize_interrupt_trylock+0xe6> <== NOT EXECUTED return 0; case CORE_MUTEX_NESTING_IS_ERROR: executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED; 4a334: 7002 moveq #2,%d0 <== NOT EXECUTED 4a336: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED _ISR_Enable( level ); 4a33a: 46c2 movew %d2,%sr <== NOT EXECUTED 4a33c: 4200 clrb %d0 <== NOT EXECUTED 4a33e: 6002 bras 4a342 <_CORE_mutex_Seize_interrupt_trylock+0xe6> <== NOT EXECUTED 4a340: 7001 moveq #1,%d0 <== NOT EXECUTED return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p ); } 4a342: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4a346: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a34a: 4e5e unlk %fp <== NOT EXECUTED 4a34c: 4e75 rts <== NOT EXECUTED ... 00045b64 <_CORE_mutex_Surrender>: CORE_mutex_Status _CORE_mutex_Surrender( CORE_mutex_Control *the_mutex, Objects_Id id, CORE_mutex_API_mp_support_callout api_mutex_mp_support ) { 45b64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45b68: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45b6a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Thread_Control *the_thread; Thread_Control *holder; #ifdef __RTEMS_STRICT_ORDER_MUTEX__ Chain_Node *first_node; #endif holder = the_mutex->holder; 45b6e: 206a 005a moveal %a2@(90),%a0 <== NOT EXECUTED * 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 ) { 45b72: 4a2a 0044 tstb %a2@(68) <== NOT EXECUTED 45b76: 670e beqs 45b86 <_CORE_mutex_Surrender+0x22> <== NOT EXECUTED if ( !_Thread_Is_executing( holder ) ) 45b78: b1f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 45b7e: 6706 beqs 45b86 <_CORE_mutex_Surrender+0x22> <== NOT EXECUTED 45b80: 7003 moveq #3,%d0 <== NOT EXECUTED 45b82: 6000 00e4 braw 45c68 <_CORE_mutex_Surrender+0x104> <== NOT EXECUTED return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE; } /* XXX already unlocked -- not right status */ if ( !the_mutex->nest_count ) 45b86: 202a 0052 movel %a2@(82),%d0 <== NOT EXECUTED 45b8a: 6700 00da beqw 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED return CORE_MUTEX_STATUS_SUCCESSFUL; the_mutex->nest_count--; 45b8e: 5380 subql #1,%d0 <== NOT EXECUTED 45b90: 2540 0052 movel %d0,%a2@(82) <== NOT EXECUTED if ( the_mutex->nest_count != 0 ) { 45b94: 6714 beqs 45baa <_CORE_mutex_Surrender+0x46> <== NOT EXECUTED switch ( the_mutex->Attributes.lock_nesting_behavior ) { 45b96: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED 45b9a: 6700 00ca beqw 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED 45b9e: 7201 moveq #1,%d1 <== NOT EXECUTED 45ba0: b280 cmpl %d0,%d1 <== NOT EXECUTED 45ba2: 6606 bnes 45baa <_CORE_mutex_Surrender+0x46> <== NOT EXECUTED 45ba4: 7002 moveq #2,%d0 <== NOT EXECUTED 45ba6: 6000 00c0 braw 45c68 <_CORE_mutex_Surrender+0x104> <== NOT EXECUTED 45baa: 202a 0046 movel %a2@(70),%d0 <== NOT EXECUTED /* * Formally release the mutex before possibly transferring it to a * blocked thread. */ if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 45bae: 7202 moveq #2,%d1 <== NOT EXECUTED 45bb0: b280 cmpl %d0,%d1 <== NOT EXECUTED 45bb2: 6708 beqs 45bbc <_CORE_mutex_Surrender+0x58> <== NOT EXECUTED 45bb4: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 45bb8: b280 cmpl %d0,%d1 <== NOT EXECUTED 45bba: 6604 bnes 45bc0 <_CORE_mutex_Surrender+0x5c> <== NOT EXECUTED the_mutex->nest_count++; return CORE_MUTEX_RELEASE_NOT_ORDER; } first_node = _Chain_Get_first_unprotected(&holder->lock_mutex); #endif holder->resource_count--; 45bbc: 53a8 001c subql #1,%a0@(28) <== NOT EXECUTED 45bc0: 202a 0046 movel %a2@(70),%d0 <== NOT EXECUTED } the_mutex->holder = NULL; 45bc4: 42aa 005a clrl %a2@(90) <== NOT EXECUTED /* * 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 ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 45bc8: 7202 moveq #2,%d1 <== NOT EXECUTED first_node = _Chain_Get_first_unprotected(&holder->lock_mutex); #endif holder->resource_count--; } the_mutex->holder = NULL; the_mutex->holder_id = 0; 45bca: 42aa 005e clrl %a2@(94) <== NOT EXECUTED /* * 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 ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 45bce: b280 cmpl %d0,%d1 <== NOT EXECUTED 45bd0: 6708 beqs 45bda <_CORE_mutex_Surrender+0x76> <== NOT EXECUTED 45bd2: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 45bd6: b280 cmpl %d0,%d1 <== NOT EXECUTED 45bd8: 6624 bnes 45bfe <_CORE_mutex_Surrender+0x9a> <== NOT EXECUTED _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { #ifdef __RTEMS_STRICT_ORDER_MUTEX__ if(the_mutex->queue.priority_before != holder->current_priority) _Thread_Change_priority(holder,the_mutex->queue.priority_before,TRUE); #endif if ( holder->resource_count == 0 && 45bda: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 45bde: 661e bnes 45bfe <_CORE_mutex_Surrender+0x9a> <== NOT EXECUTED 45be0: 2028 0018 movel %a0@(24),%d0 <== NOT EXECUTED 45be4: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 45be8: 6714 beqs 45bfe <_CORE_mutex_Surrender+0x9a> <== NOT EXECUTED holder->real_priority != holder->current_priority ) { _Thread_Change_priority( holder, holder->real_priority, TRUE ); 45bea: 4878 0001 pea 1 <== NOT EXECUTED 45bee: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45bf0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45bf2: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED 45bf8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED /* * 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 ) ) ) { 45bfe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45c00: 4eb9 0004 702c jsr 4702c <_Thread_queue_Dequeue> <== NOT EXECUTED 45c06: 588f addql #4,%sp <== NOT EXECUTED 45c08: 2040 moveal %d0,%a0 <== NOT EXECUTED 45c0a: 4a80 tstl %d0 <== NOT EXECUTED 45c0c: 674e beqs 45c5c <_CORE_mutex_Surrender+0xf8> <== NOT EXECUTED #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; 45c0e: 7201 moveq #1,%d1 <== NOT EXECUTED } else #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; 45c10: 2568 0008 005e movel %a0@(8),%a2@(94) <== NOT EXECUTED the_mutex->nest_count = 1; switch ( the_mutex->Attributes.discipline ) { 45c16: 202a 0046 movel %a2@(70),%d0 <== NOT EXECUTED #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; 45c1a: 2541 0052 movel %d1,%a2@(82) <== NOT EXECUTED switch ( the_mutex->Attributes.discipline ) { 45c1e: 123c 0002 moveb #2,%d1 <== NOT EXECUTED } else #endif { the_mutex->holder = the_thread; 45c22: 2548 005a movel %a0,%a2@(90) <== NOT EXECUTED the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; switch ( the_mutex->Attributes.discipline ) { 45c26: b280 cmpl %d0,%d1 <== NOT EXECUTED 45c28: 670a beqs 45c34 <_CORE_mutex_Surrender+0xd0> <== NOT EXECUTED 45c2a: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 45c2e: b280 cmpl %d0,%d1 <== NOT EXECUTED 45c30: 6634 bnes 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED 45c32: 6006 bras 45c3a <_CORE_mutex_Surrender+0xd6> <== NOT EXECUTED case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT: #ifdef __RTEMS_STRICT_ORDER_MUTEX__ _Chain_Prepend_unprotected(&the_thread->lock_mutex,&the_mutex->queue.lock_queue); the_mutex->queue.priority_before = the_thread->current_priority; #endif the_thread->resource_count++; 45c34: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED 45c38: 602c bras 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: #ifdef __RTEMS_STRICT_ORDER_MUTEX__ _Chain_Prepend_unprotected(&the_thread->lock_mutex,&the_mutex->queue.lock_queue); the_mutex->queue.priority_before = the_thread->current_priority; #endif the_thread->resource_count++; 45c3a: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED if (the_mutex->Attributes.priority_ceiling < 45c3e: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED 45c42: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 45c46: 641e bccs 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED the_thread->current_priority){ _Thread_Change_priority( 45c48: 42a7 clrl %sp@- <== NOT EXECUTED 45c4a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45c4c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45c4e: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED 45c54: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45c5a: 600a bras 45c66 <_CORE_mutex_Surrender+0x102> <== NOT EXECUTED } break; } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; 45c5c: 7001 moveq #1,%d0 <== NOT EXECUTED 45c5e: 2540 004e movel %d0,%a2@(78) <== NOT EXECUTED 45c62: 4200 clrb %d0 <== NOT EXECUTED 45c64: 6002 bras 45c68 <_CORE_mutex_Surrender+0x104> <== NOT EXECUTED 45c66: 4280 clrl %d0 <== NOT EXECUTED return CORE_MUTEX_STATUS_SUCCESSFUL; } 45c68: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45c6c: 4e5e unlk %fp <== NOT EXECUTED 45c6e: 4e75 rts 00045c70 <_CORE_semaphore_Flush>: void _CORE_semaphore_Flush( CORE_semaphore_Control *the_semaphore, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 45c70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED &the_semaphore->Wait_queue, remote_extract_callout, status ); } 45c74: 4e5e unlk %fp <== NOT EXECUTED Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { _Thread_queue_Flush( 45c76: 4ef9 0004 7390 jmp 47390 <_Thread_queue_Flush> <== NOT EXECUTED 00045c7c <_CORE_semaphore_Initialize>: void _CORE_semaphore_Initialize( CORE_semaphore_Control *the_semaphore, CORE_semaphore_Attributes *the_semaphore_attributes, uint32_t initial_value ) { 45c7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED the_semaphore->Attributes = *the_semaphore_attributes; the_semaphore->count = initial_value; _Thread_queue_Initialize( 45c80: 4878 0003 pea 3 <== NOT EXECUTED void _CORE_semaphore_Initialize( CORE_semaphore_Control *the_semaphore, CORE_semaphore_Attributes *the_semaphore_attributes, uint32_t initial_value ) { 45c84: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 45c88: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED the_semaphore->Attributes = *the_semaphore_attributes; 45c8c: 2368 0004 0044 movel %a0@(4),%a1@(68) <== NOT EXECUTED the_semaphore->count = initial_value; _Thread_queue_Initialize( 45c92: 7001 moveq #1,%d0 <== NOT EXECUTED 45c94: b0a8 0004 cmpl %a0@(4),%d0 <== NOT EXECUTED 45c98: 57c0 seq %d0 <== NOT EXECUTED CORE_semaphore_Attributes *the_semaphore_attributes, uint32_t initial_value ) { the_semaphore->Attributes = *the_semaphore_attributes; 45c9a: 2210 movel %a0@,%d1 <== NOT EXECUTED the_semaphore->count = initial_value; _Thread_queue_Initialize( 45c9c: 4878 0200 pea 200 <== NOT EXECUTED 45ca0: 49c0 extbl %d0 <== NOT EXECUTED 45ca2: 4480 negl %d0 <== NOT EXECUTED 45ca4: 2f00 movel %d0,%sp@- <== NOT EXECUTED uint32_t initial_value ) { the_semaphore->Attributes = *the_semaphore_attributes; the_semaphore->count = initial_value; 45ca6: 236e 0010 0048 movel %fp@(16),%a1@(72) <== NOT EXECUTED CORE_semaphore_Attributes *the_semaphore_attributes, uint32_t initial_value ) { the_semaphore->Attributes = *the_semaphore_attributes; 45cac: 2341 0040 movel %d1,%a1@(64) <== NOT EXECUTED the_semaphore->count = initial_value; _Thread_queue_Initialize( 45cb0: 2f09 movel %a1,%sp@- <== NOT EXECUTED 45cb2: 4eb9 0004 73bc jsr 473bc <_Thread_queue_Initialize> <== NOT EXECUTED 45cb8: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED _CORE_semaphore_Is_priority( the_semaphore_attributes ) ? THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_SEMAPHORE, CORE_SEMAPHORE_TIMEOUT ); } 45cbe: 4e5e unlk %fp <== NOT EXECUTED 45cc0: 4e75 rts <== NOT EXECUTED ... 0004d790 <_CORE_semaphore_Seize>: CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 4d790: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d794: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4d798: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4d79c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 4d7a0: 2279 0005 ceae moveal 5ceae <_Thread_Executing>,%a1 <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4d7a6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED { Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 4d7ac: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 4d7b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d7b4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4d7b8: 40c1 movew %sr,%d1 <== NOT EXECUTED 4d7ba: 8081 orl %d1,%d0 <== NOT EXECUTED 4d7bc: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 4d7be: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 4d7c2: 670a beqs 4d7ce <_CORE_semaphore_Seize+0x3e> <== NOT EXECUTED the_semaphore->count -= 1; 4d7c4: 5380 subql #1,%d0 <== NOT EXECUTED 4d7c6: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED _ISR_Enable( level ); 4d7ca: 46c1 movew %d1,%sr <== NOT EXECUTED 4d7cc: 603c bras 4d80a <_CORE_semaphore_Seize+0x7a> <== 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 ) { 4d7ce: 4a02 tstb %d2 <== NOT EXECUTED 4d7d0: 660a bnes 4d7dc <_CORE_semaphore_Seize+0x4c> <== NOT EXECUTED _ISR_Enable( level ); 4d7d2: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 4d7d4: 7001 moveq #1,%d0 <== NOT EXECUTED 4d7d6: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED 4d7da: 602e bras 4d80a <_CORE_semaphore_Seize+0x7a> <== NOT EXECUTED 4d7dc: 7001 moveq #1,%d0 <== 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; executing->Wait.id = id; 4d7de: 2343 0020 movel %d3,%a1@(32) <== NOT EXECUTED 4d7e2: 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; 4d7e6: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; _ISR_Enable( level ); 4d7ea: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 4d7ec: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 4d7f0: 203c 0004 a398 movel #304024,%d0 <== NOT EXECUTED 4d7f6: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED 4d7fa: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4d7fe: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4d802: 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 ); 4d804: 4ef9 0004 a060 jmp 4a060 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED } 4d80a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4d80e: 4e5e unlk %fp <== NOT EXECUTED 4d810: 4e75 rts <== NOT EXECUTED ... 00045cc4 <_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 ) { 45cc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45cc8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45cca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 45cce: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) { 45cd0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45cd2: 4eb9 0004 702c jsr 4702c <_Thread_queue_Dequeue> <== NOT EXECUTED 45cd8: 588f addql #4,%sp <== NOT EXECUTED 45cda: 4a80 tstl %d0 <== NOT EXECUTED 45cdc: 6704 beqs 45ce2 <_CORE_semaphore_Surrender+0x1e> <== NOT EXECUTED 45cde: 4280 clrl %d0 <== NOT EXECUTED 45ce0: 6024 bras 45d06 <_CORE_semaphore_Surrender+0x42> <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_semaphore_mp_support) ( the_thread, id ); #endif } else { _ISR_Disable( level ); 45ce2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45ce8: 40c2 movew %sr,%d2 <== NOT EXECUTED 45cea: 8082 orl %d2,%d0 <== NOT EXECUTED 45cec: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) 45cee: 222a 0048 movel %a2@(72),%d1 <== NOT EXECUTED 45cf2: b2aa 0040 cmpl %a2@(64),%d1 <== NOT EXECUTED 45cf6: 6504 bcss 45cfc <_CORE_semaphore_Surrender+0x38> <== NOT EXECUTED 45cf8: 7004 moveq #4,%d0 <== NOT EXECUTED 45cfa: 6008 bras 45d04 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED the_semaphore->count += 1; 45cfc: 5281 addql #1,%d1 <== NOT EXECUTED 45cfe: 4280 clrl %d0 <== NOT EXECUTED 45d00: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED else status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; _ISR_Enable( level ); 45d04: 46c2 movew %d2,%sr <== NOT EXECUTED } return status; } 45d06: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45d0a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45d0e: 4e5e unlk %fp <== NOT EXECUTED 45d10: 4e75 rts <== NOT EXECUTED ... 000464f8 <_CORE_spinlock_Initialize>: void _CORE_spinlock_Initialize( CORE_spinlock_Control *the_spinlock, CORE_spinlock_Attributes *the_spinlock_attributes ) { 464f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 464fc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46500: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED the_spinlock->Attributes = *the_spinlock_attributes; 46504: 2091 movel %a1@,%a0@ <== NOT EXECUTED the_spinlock->lock = 0; the_spinlock->users = 0; the_spinlock->holder = 0; } 46506: 4e5e unlk %fp <== NOT EXECUTED ) { the_spinlock->Attributes = *the_spinlock_attributes; the_spinlock->lock = 0; 46508: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_spinlock->users = 0; 4650c: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED the_spinlock->holder = 0; 46510: 42a8 000c clrl %a0@(12) <== NOT EXECUTED } 46514: 4e75 rts <== NOT EXECUTED ... 00046518 <_CORE_spinlock_Release>: */ CORE_spinlock_Status _CORE_spinlock_Release( CORE_spinlock_Control *the_spinlock ) { 46518: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4651c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ CORE_spinlock_Status _CORE_spinlock_Release( CORE_spinlock_Control *the_spinlock ) { 46522: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 46526: 40c1 movew %sr,%d1 <== NOT EXECUTED 46528: 8081 orl %d1,%d0 <== NOT EXECUTED 4652a: 46c0 movew %d0,%sr <== NOT EXECUTED /* * It must locked before it can be unlocked. */ if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 4652c: 2029 0004 movel %a1@(4),%d0 <== NOT EXECUTED 46530: 6608 bnes 4653a <_CORE_spinlock_Release+0x22> <== NOT EXECUTED _ISR_Enable( level ); 46532: 46c1 movew %d1,%sr <== NOT EXECUTED 46534: 103c 0006 moveb #6,%d0 <== NOT EXECUTED 46538: 602c bras 46566 <_CORE_spinlock_Release+0x4e> <== NOT EXECUTED } /* * It must locked by the current thread before it can be unlocked. */ if ( the_spinlock->holder != _Thread_Executing->Object.id ) { 4653a: 2029 000c movel %a1@(12),%d0 <== NOT EXECUTED 4653e: 2079 0005 8e16 moveal 58e16 <_Thread_Executing>,%a0 <== NOT EXECUTED 46544: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 46548: 6706 beqs 46550 <_CORE_spinlock_Release+0x38> <== NOT EXECUTED _ISR_Enable( level ); 4654a: 46c1 movew %d1,%sr <== NOT EXECUTED 4654c: 7002 moveq #2,%d0 <== NOT EXECUTED 4654e: 6016 bras 46566 <_CORE_spinlock_Release+0x4e> <== NOT EXECUTED } /* * Let it be unlocked. */ the_spinlock->users -= 1; 46550: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 46554: 5380 subql #1,%d0 <== NOT EXECUTED 46556: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_UNLOCKED; 4655a: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED the_spinlock->holder = 0; 4655e: 42a9 000c clrl %a1@(12) <== NOT EXECUTED _ISR_Enable( level ); 46562: 46c1 movew %d1,%sr <== NOT EXECUTED 46564: 4280 clrl %d0 <== NOT EXECUTED return CORE_SPINLOCK_SUCCESSFUL; } 46566: 4e5e unlk %fp <== NOT EXECUTED 46568: 4e75 rts <== NOT EXECUTED ... 0004656c <_CORE_spinlock_Wait>: CORE_spinlock_Status _CORE_spinlock_Wait( CORE_spinlock_Control *the_spinlock, bool wait, Watchdog_Interval timeout ) { 4656c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46570: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 46574: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED ISR_Level level; Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; 46578: 2039 0005 8ea0 movel 58ea0 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED 4657e: 2605 movel %d5,%d3 <== NOT EXECUTED 46580: d680 addl %d0,%d3 <== NOT EXECUTED _ISR_Disable( level ); 46582: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED CORE_spinlock_Status _CORE_spinlock_Wait( CORE_spinlock_Control *the_spinlock, bool wait, Watchdog_Interval timeout ) { 46588: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4658c: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED ISR_Level level; Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; _ISR_Disable( level ); 46590: 40c1 movew %sr,%d1 <== NOT EXECUTED 46592: 8081 orl %d1,%d0 <== NOT EXECUTED 46594: 46c0 movew %d0,%sr <== NOT EXECUTED if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && 46596: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4659a: 7801 moveq #1,%d4 <== NOT EXECUTED 4659c: b880 cmpl %d0,%d4 <== NOT EXECUTED 4659e: 6618 bnes 465b8 <_CORE_spinlock_Wait+0x4c> <== NOT EXECUTED 465a0: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 465a4: 2079 0005 8e16 moveal 58e16 <_Thread_Executing>,%a0 <== NOT EXECUTED 465aa: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 465ae: 6608 bnes 465b8 <_CORE_spinlock_Wait+0x4c> <== NOT EXECUTED (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); 465b0: 46c1 movew %d1,%sr <== NOT EXECUTED 465b2: 7001 moveq #1,%d0 <== NOT EXECUTED 465b4: 6000 0088 braw 4663e <_CORE_spinlock_Wait+0xd2> <== NOT EXECUTED return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; 465b8: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED */ _ISR_Enable( level ); /* An ISR could occur here */ _Thread_Enable_dispatch(); 465bc: 47f9 0004 75ce lea 475ce <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; 465c2: 5280 addql #1,%d0 <== 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 ); 465c4: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; 465ca: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 465ce: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 465d2: 661c bnes 465f0 <_CORE_spinlock_Wait+0x84> <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_LOCKED; the_spinlock->holder = _Thread_Executing->Object.id; 465d4: 2079 0005 8e16 moveal 58e16 <_Thread_Executing>,%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; 465da: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 465de: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED the_spinlock->holder = _Thread_Executing->Object.id; 465e2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 465e6: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED _ISR_Enable( level ); 465ea: 46c1 movew %d1,%sr <== NOT EXECUTED 465ec: 4280 clrl %d0 <== NOT EXECUTED 465ee: 604e bras 4663e <_CORE_spinlock_Wait+0xd2> <== NOT EXECUTED } /* * Spinlock is unavailable. If not willing to wait, return. */ if ( !wait ) { 465f0: 4a02 tstb %d2 <== NOT EXECUTED 465f2: 6610 bnes 46604 <_CORE_spinlock_Wait+0x98> <== NOT EXECUTED the_spinlock->users -= 1; 465f4: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 465f8: 5380 subql #1,%d0 <== NOT EXECUTED 465fa: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED _ISR_Enable( level ); 465fe: 46c1 movew %d1,%sr <== NOT EXECUTED 46600: 7005 moveq #5,%d0 <== NOT EXECUTED 46602: 603a bras 4663e <_CORE_spinlock_Wait+0xd2> <== NOT EXECUTED } /* * They are willing to wait but there could be a timeout. */ if ( timeout && (limit <= _Watchdog_Ticks_since_boot) ) { 46604: 4a85 tstl %d5 <== NOT EXECUTED 46606: 671a beqs 46622 <_CORE_spinlock_Wait+0xb6> <== NOT EXECUTED 46608: 2039 0005 8ea0 movel 58ea0 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED 4660e: b083 cmpl %d3,%d0 <== NOT EXECUTED 46610: 6510 bcss 46622 <_CORE_spinlock_Wait+0xb6> <== NOT EXECUTED the_spinlock->users -= 1; 46612: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 46616: 5380 subql #1,%d0 <== NOT EXECUTED 46618: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED _ISR_Enable( level ); 4661c: 46c1 movew %d1,%sr <== NOT EXECUTED 4661e: 7003 moveq #3,%d0 <== NOT EXECUTED 46620: 601c bras 4663e <_CORE_spinlock_Wait+0xd2> <== NOT EXECUTED * * A spinlock cannot be deleted while it is being used so we are * safe from deletion. */ _ISR_Enable( level ); 46622: 46c1 movew %d1,%sr <== NOT EXECUTED /* An ISR could occur here */ _Thread_Enable_dispatch(); 46624: 4e93 jsr %a3@ <== NOT EXECUTED 46626: 2039 0005 8d58 movel 58d58 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4662c: 5280 addql #1,%d0 <== NOT EXECUTED 4662e: 23c0 0005 8d58 movel %d0,58d58 <_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 ); 46634: 2004 movel %d4,%d0 <== NOT EXECUTED 46636: 40c1 movew %sr,%d1 <== NOT EXECUTED 46638: 8081 orl %d1,%d0 <== NOT EXECUTED 4663a: 46c0 movew %d0,%sr <== NOT EXECUTED 4663c: 6090 bras 465ce <_CORE_spinlock_Wait+0x62> <== NOT EXECUTED } } 4663e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46644: 4e5e unlk %fp <== NOT EXECUTED 46646: 4e75 rts 00045964 <_Chain_Append>: void _Chain_Append( Chain_Control *the_chain, Chain_Node *node ) { 45964: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45968: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4596a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED void _Chain_Append( Chain_Control *the_chain, Chain_Node *node ) { 45970: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 45974: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 45978: 40c0 movew %sr,%d0 <== NOT EXECUTED 4597a: 8280 orl %d0,%d1 <== NOT EXECUTED 4597c: 46c1 movew %d1,%sr <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4597e: 2209 movel %a1,%d1 <== NOT EXECUTED 45980: 5881 addql #4,%d1 <== NOT EXECUTED 45982: 2081 movel %d1,%a0@ <== NOT EXECUTED old_last_node = the_chain->last; 45984: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED the_chain->last = the_node; 45988: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4598c: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 45990: 2488 movel %a0,%a2@ <== NOT EXECUTED _Chain_Append_unprotected( the_chain, node ); _ISR_Enable( level ); 45992: 46c0 movew %d0,%sr <== NOT EXECUTED } 45994: 245f moveal %sp@+,%a2 <== NOT EXECUTED 45996: 4e5e unlk %fp <== NOT EXECUTED 45998: 4e75 rts <== NOT EXECUTED ... 0004a1c4 <_Chain_Extract>: */ void _Chain_Extract( Chain_Node *node ) { 4a1c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4a1c8: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ void _Chain_Extract( Chain_Node *node ) { 4a1ce: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4a1d2: 40c0 movew %sr,%d0 <== NOT EXECUTED 4a1d4: 8280 orl %d0,%d1 <== NOT EXECUTED 4a1d6: 46c1 movew %d1,%sr <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 4a1d8: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4a1dc: 2050 moveal %a0@,%a0 <== NOT EXECUTED previous = the_node->previous; next->previous = previous; previous->next = next; 4a1de: 2288 movel %a0,%a1@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 4a1e0: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED _Chain_Extract_unprotected( node ); _ISR_Enable( level ); 4a1e4: 46c0 movew %d0,%sr <== NOT EXECUTED } 4a1e6: 4e5e unlk %fp <== NOT EXECUTED 4a1e8: 4e75 rts <== NOT EXECUTED ... 0004a1ec <_Chain_Get>: */ Chain_Node *_Chain_Get( Chain_Control *the_chain ) { 4a1ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a1f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; Chain_Node *return_node; return_node = NULL; _ISR_Disable( level ); 4a1f2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ Chain_Node *_Chain_Get( Chain_Control *the_chain ) { 4a1f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; Chain_Node *return_node; return_node = NULL; _ISR_Disable( level ); 4a1fc: 40c1 movew %sr,%d1 <== NOT EXECUTED 4a1fe: 8081 orl %d1,%d0 <== NOT EXECUTED 4a200: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4a202: 204a moveal %a2,%a0 <== NOT EXECUTED 4a204: 2258 moveal %a0@+,%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( the_chain ) ) 4a206: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 4a208: 6604 bnes 4a20e <_Chain_Get+0x22> <== NOT EXECUTED 4a20a: 93c9 subal %a1,%a1 <== NOT EXECUTED 4a20c: 6008 bras 4a216 <_Chain_Get+0x2a> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 4a20e: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_chain->first = new_first; 4a210: 2488 movel %a0,%a2@ <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 4a212: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED return_node = _Chain_Get_first_unprotected( the_chain ); _ISR_Enable( level ); 4a216: 46c1 movew %d1,%sr <== NOT EXECUTED return return_node; } 4a218: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a21a: 4e5e unlk %fp <== NOT EXECUTED 4a21c: 2009 movel %a1,%d0 <== NOT EXECUTED 4a21e: 4e75 rts 0004a220 <_Chain_Initialize>: Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) { 4a220: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a224: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a226: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4a22a: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED Chain_Node *current; Chain_Node *next; count = number_nodes; current = _Chain_Head( the_chain ); the_chain->permanent_null = NULL; 4a22e: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED next = starting_address; 4a232: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head( Chain_Control *the_chain ) { return (Chain_Node *) the_chain; 4a236: 224a moveal %a2,%a1 <== NOT EXECUTED 4a238: 600e bras 4a248 <_Chain_Initialize+0x28> <== NOT EXECUTED while ( count-- ) { current->next = next; next->previous = current; 4a23a: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) { 4a23e: 5380 subql #1,%d0 <== NOT EXECUTED count = number_nodes; current = _Chain_Head( the_chain ); the_chain->permanent_null = NULL; next = starting_address; while ( count-- ) { current->next = next; 4a240: 2288 movel %a0,%a1@ <== NOT EXECUTED Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) { 4a242: 2248 moveal %a0,%a1 <== NOT EXECUTED 4a244: d1ee 0014 addal %fp@(20),%a0 <== NOT EXECUTED count = number_nodes; current = _Chain_Head( the_chain ); the_chain->permanent_null = NULL; next = starting_address; while ( count-- ) { 4a248: 4a80 tstl %d0 <== NOT EXECUTED 4a24a: 66ee bnes 4a23a <_Chain_Initialize+0x1a> <== NOT EXECUTED next->previous = current; current = next; next = (Chain_Node *) _Addresses_Add_offset( (void *) next, node_size ); } current->next = _Chain_Tail( the_chain ); 4a24c: 200a movel %a2,%d0 <== NOT EXECUTED 4a24e: 5880 addql #4,%d0 <== NOT EXECUTED 4a250: 2280 movel %d0,%a1@ <== NOT EXECUTED the_chain->last = current; 4a252: 2549 0008 movel %a1,%a2@(8) <== NOT EXECUTED } 4a256: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a258: 4e5e unlk %fp <== NOT EXECUTED 4a25a: 4e75 rts 0005e15c <_Chain_Insert>: void _Chain_Insert( Chain_Node *after_node, Chain_Node *node ) { 5e15c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5e160: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 5e162: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED void _Chain_Insert( Chain_Node *after_node, Chain_Node *node ) { 5e168: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 5e16c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 5e170: 40c0 movew %sr,%d0 <== NOT EXECUTED 5e172: 8280 orl %d0,%d1 <== NOT EXECUTED 5e174: 46c1 movew %d1,%sr <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 5e176: 2451 moveal %a1@,%a2 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 5e178: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 5e17c: 2288 movel %a0,%a1@ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 5e17e: 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; 5e182: 208a movel %a2,%a0@ <== NOT EXECUTED _Chain_Insert_unprotected( after_node, node ); _ISR_Enable( level ); 5e184: 46c0 movew %d0,%sr <== NOT EXECUTED } 5e186: 245f moveal %sp@+,%a2 <== NOT EXECUTED 5e188: 4e5e unlk %fp <== NOT EXECUTED 5e18a: 4e75 rts 0004a15c <_Debug_Is_enabled>: */ bool _Debug_Is_enabled( rtems_debug_control level ) { 4a15c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a160: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4a164: c0b9 0005 7f3e andl 57f3e <_Debug_Level>,%d0 <== NOT EXECUTED 4a16a: 56c0 sne %d0 <== NOT EXECUTED return (_Debug_Level & level) ? true : false; } 4a16c: 4e5e unlk %fp <== NOT EXECUTED 4a16e: 4480 negl %d0 <== NOT EXECUTED 4a170: 4e75 rts <== NOT EXECUTED ... 0004a128 <_Debug_Manager_initialization>: * * _Debug_Manager_initialization */ void _Debug_Manager_initialization( void ) { 4a128: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_debug_disable( RTEMS_DEBUG_ALL_MASK ); } 4a12c: 4e5e unlk %fp <== NOT EXECUTED void rtems_debug_disable ( rtems_debug_control to_be_disabled ) { _Debug_Level &= ~to_be_disabled; 4a12e: 42b9 0005 7f3e clrl 57f3e <_Debug_Level> <== NOT EXECUTED */ void _Debug_Manager_initialization( void ) { rtems_debug_disable( RTEMS_DEBUG_ALL_MASK ); } 4a134: 4e75 rts 00049d78 <_Dual_ported_memory_Manager_initialization>: */ void _Dual_ported_memory_Manager_initialization( uint32_t maximum_ports ) { 49d78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49d7c: 4878 0004 pea 4 <== NOT EXECUTED 49d80: 42a7 clrl %sp@- <== NOT EXECUTED 49d82: 4878 001c pea 1c <== NOT EXECUTED 49d86: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49d8a: 4878 0007 pea 7 <== NOT EXECUTED 49d8e: 4878 0002 pea 2 <== NOT EXECUTED 49d92: 4879 0005 875a pea 5875a <_Dual_ported_memory_Information> <== NOT EXECUTED 49d98: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49d9e: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49da4: 4e5e unlk %fp <== NOT EXECUTED 49da6: 4e75 rts 00049da8 <_Event_Manager_initialization>: * * This routine performs the initialization necessary for this manager. */ void _Event_Manager_initialization( void ) { 49da8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED */ #if defined(RTEMS_MULTIPROCESSING) _MPCI_Register_packet_processor( MP_PACKET_EVENT, _Event_MP_Process_packet ); #endif } 49dac: 4e5e unlk %fp <== NOT EXECUTED * This routine performs the initialization necessary for this manager. */ void _Event_Manager_initialization( void ) { _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 49dae: 42b9 0005 86d6 clrl 586d6 <_Event_Sync_state> <== NOT EXECUTED */ #if defined(RTEMS_MULTIPROCESSING) _MPCI_Register_packet_processor( MP_PACKET_EVENT, _Event_MP_Process_packet ); #endif } 49db4: 4e75 rts <== NOT EXECUTED ... 000448e4 <_Event_Seize>: rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 448e4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 448e8: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED rtems_event_set pending_events; ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; 448ec: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 448f2: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 448f6: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 448fa: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; api = executing->API_Extensions[ THREAD_API_RTEMS ]; _ISR_Disable( level ); 448fe: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; 44904: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 44908: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED Thread_blocking_operation_States sync_state; executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4490c: 226a 010c moveal %a2@(268),%a1 <== NOT EXECUTED _ISR_Disable( level ); 44910: 40c4 movew %sr,%d4 <== NOT EXECUTED 44912: 8084 orl %d4,%d0 <== NOT EXECUTED 44914: 46c0 movew %d0,%sr <== NOT EXECUTED pending_events = api->pending_events; 44916: 2a11 movel %a1@,%d5 <== NOT EXECUTED 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 ); 44918: 2203 movel %d3,%d1 <== NOT EXECUTED 4491a: c285 andl %d5,%d1 <== NOT EXECUTED seized_events = _Event_sets_Get( pending_events, event_in ); if ( !_Event_sets_Is_empty( seized_events ) && 4491c: 6716 beqs 44934 <_Event_Seize+0x50> <== NOT EXECUTED 4491e: b681 cmpl %d1,%d3 <== NOT EXECUTED 44920: 6706 beqs 44928 <_Event_Seize+0x44> <== NOT EXECUTED 44922: 0802 0001 btst #1,%d2 <== NOT EXECUTED 44926: 670c beqs 44934 <_Event_Seize+0x50> <== NOT EXECUTED (seized_events == event_in || _Options_Is_any( option_set )) ) { api->pending_events = 44928: 2001 movel %d1,%d0 <== NOT EXECUTED 4492a: 4680 notl %d0 <== NOT EXECUTED 4492c: c085 andl %d5,%d0 <== NOT EXECUTED 4492e: 2280 movel %d0,%a1@ <== NOT EXECUTED _Event_sets_Clear( pending_events, seized_events ); _ISR_Enable( level ); 44930: 46c4 movew %d4,%sr <== NOT EXECUTED 44932: 600e bras 44942 <_Event_Seize+0x5e> <== NOT EXECUTED *event_out = seized_events; return; } if ( _Options_Is_no_wait( option_set ) ) { 44934: 0802 0000 btst #0,%d2 <== NOT EXECUTED 44938: 670e beqs 44948 <_Event_Seize+0x64> <== NOT EXECUTED _ISR_Enable( level ); 4493a: 46c4 movew %d4,%sr <== NOT EXECUTED executing->Wait.return_code = RTEMS_UNSATISFIED; 4493c: 700d moveq #13,%d0 <== NOT EXECUTED 4493e: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED *event_out = seized_events; 44942: 2081 movel %d1,%a0@ <== NOT EXECUTED 44944: 6000 0096 braw 449dc <_Event_Seize+0xf8> <== NOT EXECUTED return; } _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 44948: 7201 moveq #1,%d1 <== NOT EXECUTED executing->Wait.option = (uint32_t) option_set; 4494a: 2542 0030 movel %d2,%a2@(48) <== NOT EXECUTED executing->Wait.return_code = RTEMS_UNSATISFIED; *event_out = seized_events; return; } _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4494e: 23c1 0005 86d6 movel %d1,586d6 <_Event_Sync_state> <== NOT EXECUTED executing->Wait.option = (uint32_t) option_set; executing->Wait.count = (uint32_t) event_in; 44954: 2543 0024 movel %d3,%a2@(36) <== NOT EXECUTED executing->Wait.return_argument = event_out; 44958: 2548 0028 movel %a0,%a2@(40) <== NOT EXECUTED _ISR_Enable( level ); 4495c: 46c4 movew %d4,%sr <== NOT EXECUTED if ( ticks ) { 4495e: 4a86 tstl %d6 <== NOT EXECUTED 44960: 6730 beqs 44992 <_Event_Seize+0xae> <== NOT EXECUTED _Watchdog_Initialize( 44962: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 44966: 243c 0004 4b40 movel #281408,%d2 <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4496c: 2546 0054 movel %d6,%a2@(84) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 44970: 2542 0064 movel %d2,%a2@(100) <== NOT EXECUTED the_watchdog->id = id; 44974: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 44978: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 4497c: 42aa 006c clrl %a2@(108) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 44980: 486a 0048 pea %a2@(72) <== NOT EXECUTED 44984: 4879 0005 7f58 pea 57f58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4498a: 4eb9 0004 7c80 jsr 47c80 <_Watchdog_Insert> <== NOT EXECUTED 44990: 508f addql #8,%sp <== NOT EXECUTED NULL ); _Watchdog_Insert_ticks( &executing->Timer, ticks ); } _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); 44992: 4878 0100 pea 100 <== NOT EXECUTED 44996: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44998: 4eb9 0004 754c jsr 4754c <_Thread_Set_state> <== NOT EXECUTED _ISR_Disable( level ); 4499e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 449a4: 40c1 movew %sr,%d1 <== NOT EXECUTED 449a6: 8081 orl %d1,%d0 <== NOT EXECUTED 449a8: 46c0 movew %d0,%sr <== NOT EXECUTED sync_state = _Event_Sync_state; 449aa: 2039 0005 86d6 movel 586d6 <_Event_Sync_state>,%d0 <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 449b0: 508f addql #8,%sp <== NOT EXECUTED _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); _ISR_Disable( level ); sync_state = _Event_Sync_state; _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 449b2: 42b9 0005 86d6 clrl 586d6 <_Event_Sync_state> <== NOT EXECUTED if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 449b8: 7401 moveq #1,%d2 <== NOT EXECUTED 449ba: b480 cmpl %d0,%d2 <== NOT EXECUTED 449bc: 6604 bnes 449c2 <_Event_Seize+0xde> <== NOT EXECUTED _ISR_Enable( level ); 449be: 46c1 movew %d1,%sr <== NOT EXECUTED 449c0: 601a bras 449dc <_Event_Seize+0xf8> <== 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 ); 449c2: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED } 449c6: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%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 ); 449cc: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED 449d0: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 449d4: 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 ); 449d6: 4ef9 0004 67b4 jmp 467b4 <_Thread_blocking_operation_Cancel> <== NOT EXECUTED } 449dc: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 449e2: 4e5e unlk %fp <== NOT EXECUTED 449e4: 4e75 rts <== NOT EXECUTED ... 00044a38 <_Event_Surrender>: */ void _Event_Surrender( Thread_Control *the_thread ) { 44a38: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 44a3c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 44a40: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); 44a44: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 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 ]; 44a4a: 206a 010c moveal %a2@(268),%a0 <== NOT EXECUTED option_set = (rtems_option) the_thread->Wait.option; 44a4e: 2a2a 0030 movel %a2@(48),%d5 <== NOT EXECUTED _ISR_Disable( level ); 44a52: 40c4 movew %sr,%d4 <== NOT EXECUTED 44a54: 8084 orl %d4,%d0 <== NOT EXECUTED 44a56: 46c0 movew %d0,%sr <== NOT EXECUTED pending_events = api->pending_events; event_condition = (rtems_event_set) the_thread->Wait.count; 44a58: 242a 0024 movel %a2@(36),%d2 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); pending_events = api->pending_events; 44a5c: 2610 movel %a0@,%d3 <== NOT EXECUTED 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 ); 44a5e: 2202 movel %d2,%d1 <== NOT EXECUTED 44a60: c283 andl %d3,%d1 <== NOT EXECUTED seized_events = _Event_sets_Get( pending_events, event_condition ); /* * No events were seized in this operation */ if ( _Event_sets_Is_empty( seized_events ) ) { 44a62: 6606 bnes 44a6a <_Event_Surrender+0x32> <== NOT EXECUTED _ISR_Enable( level ); 44a64: 46c4 movew %d4,%sr <== NOT EXECUTED 44a66: 6000 00cc braw 44b34 <_Event_Surrender+0xfc> <== 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() && 44a6a: 2039 0005 7f1a movel 57f1a <_ISR_Nest_level>,%d0 <== NOT EXECUTED 44a70: 674a beqs 44abc <_Event_Surrender+0x84> <== NOT EXECUTED 44a72: b5f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED 44a78: 6642 bnes 44abc <_Event_Surrender+0x84> <== NOT EXECUTED 44a7a: 2039 0005 86d6 movel 586d6 <_Event_Sync_state>,%d0 <== NOT EXECUTED 44a80: 7c01 moveq #1,%d6 <== NOT EXECUTED 44a82: bc80 cmpl %d0,%d6 <== NOT EXECUTED 44a84: 670e beqs 44a94 <_Event_Surrender+0x5c> <== NOT EXECUTED 44a86: 2039 0005 86d6 movel 586d6 <_Event_Sync_state>,%d0 <== NOT EXECUTED 44a8c: 1c3c 0002 moveb #2,%d6 <== NOT EXECUTED 44a90: bc80 cmpl %d0,%d6 <== NOT EXECUTED 44a92: 6628 bnes 44abc <_Event_Surrender+0x84> <== NOT EXECUTED _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT)) ) { if ( seized_events == event_condition || _Options_Is_any(option_set) ) { 44a94: b481 cmpl %d1,%d2 <== NOT EXECUTED 44a96: 6706 beqs 44a9e <_Event_Surrender+0x66> <== NOT EXECUTED 44a98: 0805 0001 btst #1,%d5 <== NOT EXECUTED 44a9c: 671a beqs 44ab8 <_Event_Surrender+0x80> <== NOT EXECUTED api->pending_events = _Event_sets_Clear( pending_events,seized_events ); 44a9e: 2001 movel %d1,%d0 <== NOT EXECUTED 44aa0: 4680 notl %d0 <== NOT EXECUTED 44aa2: c083 andl %d3,%d0 <== NOT EXECUTED 44aa4: 2080 movel %d0,%a0@ <== NOT EXECUTED the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 44aa6: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT)) ) { 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; 44aaa: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 44aae: 7003 moveq #3,%d0 <== NOT EXECUTED 44ab0: 23c0 0005 86d6 movel %d0,586d6 <_Event_Sync_state> <== NOT EXECUTED ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT)) ) { 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; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 44ab6: 2081 movel %d1,%a0@ <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; } _ISR_Enable( level ); 44ab8: 46c4 movew %d4,%sr <== NOT EXECUTED 44aba: 6078 bras 44b34 <_Event_Surrender+0xfc> <== NOT EXECUTED } /* * Otherwise, this is a normal send to another thread */ if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { 44abc: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 44ac0: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED 44ac6: 676a beqs 44b32 <_Event_Surrender+0xfa> <== NOT EXECUTED if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { 44ac8: b481 cmpl %d1,%d2 <== NOT EXECUTED 44aca: 6706 beqs 44ad2 <_Event_Surrender+0x9a> <== NOT EXECUTED 44acc: 0805 0001 btst #1,%d5 <== NOT EXECUTED 44ad0: 6760 beqs 44b32 <_Event_Surrender+0xfa> <== NOT EXECUTED api->pending_events = _Event_sets_Clear( pending_events, seized_events ); 44ad2: 2001 movel %d1,%d0 <== NOT EXECUTED 44ad4: 4680 notl %d0 <== NOT EXECUTED 44ad6: c083 andl %d3,%d0 <== NOT EXECUTED 44ad8: 2080 movel %d0,%a0@ <== NOT EXECUTED the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 44ada: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED * 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; 44ade: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 44ae2: 2081 movel %d1,%a0@ <== NOT EXECUTED _ISR_Flash( level ); 44ae4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 44aea: 46c4 movew %d4,%sr <== NOT EXECUTED 44aec: 8084 orl %d4,%d0 <== NOT EXECUTED 44aee: 46c0 movew %d0,%sr <== NOT EXECUTED 44af0: 47f9 0004 6948 lea 46948 <_Thread_Clear_state>,%a3 <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 44af6: 7c02 moveq #2,%d6 <== NOT EXECUTED 44af8: bcaa 0050 cmpl %a2@(80),%d6 <== NOT EXECUTED 44afc: 6710 beqs 44b0e <_Event_Surrender+0xd6> <== NOT EXECUTED _ISR_Enable( level ); 44afe: 46c4 movew %d4,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 44b00: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 44b06: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44b08: 4e93 jsr %a3@ <== NOT EXECUTED 44b0a: 508f addql #8,%sp <== NOT EXECUTED 44b0c: 6026 bras 44b34 <_Event_Surrender+0xfc> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 44b0e: 7003 moveq #3,%d0 <== NOT EXECUTED 44b10: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 44b14: 46c4 movew %d4,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 44b16: 486a 0048 pea %a2@(72) <== NOT EXECUTED 44b1a: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 44b20: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 44b26: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44b28: 4e93 jsr %a3@ <== NOT EXECUTED 44b2a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44b30: 6002 bras 44b34 <_Event_Surrender+0xfc> <== NOT EXECUTED _Thread_Unblock( the_thread ); } return; } } _ISR_Enable( level ); 44b32: 46c4 movew %d4,%sr <== NOT EXECUTED } 44b34: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44b3a: 4e5e unlk %fp <== NOT EXECUTED 44b3c: 4e75 rts <== NOT EXECUTED ... 00044b40 <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) { 44b40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44b44: 2f02 movel %d2,%sp@- <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; ISR_Level level; the_thread = _Thread_Get( id, &location ); 44b46: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44b4a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44b4e: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 44b54: 508f addql #8,%sp <== NOT EXECUTED { Thread_Control *the_thread; Objects_Locations location; ISR_Level level; the_thread = _Thread_Get( id, &location ); 44b56: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 44b58: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44b5c: 666a bnes 44bc8 <_Event_Timeout+0x88> <== NOT EXECUTED * this is the "timeout" transition. After a request is satisfied, * a timeout is not allowed to occur. */ _ISR_Disable( level ); 44b5e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 44b64: 40c1 movew %sr,%d1 <== NOT EXECUTED 44b66: 8081 orl %d1,%d0 <== NOT EXECUTED 44b68: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !the_thread->Wait.count ) { /* verify thread is waiting */ 44b6a: 4aa8 0024 tstl %a0@(36) <== NOT EXECUTED 44b6e: 6612 bnes 44b82 <_Event_Timeout+0x42> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 44b70: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44b76: 5380 subql #1,%d0 <== NOT EXECUTED 44b78: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Unnest_dispatch(); _ISR_Enable( level ); 44b7e: 46c1 movew %d1,%sr <== NOT EXECUTED 44b80: 6046 bras 44bc8 <_Event_Timeout+0x88> <== NOT EXECUTED return; } the_thread->Wait.count = 0; 44b82: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED if ( _Thread_Is_executing( the_thread ) ) { 44b86: b1f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 44b8c: 6614 bnes 44ba2 <_Event_Timeout+0x62> <== NOT EXECUTED Thread_blocking_operation_States sync = _Event_Sync_state; 44b8e: 2039 0005 86d6 movel 586d6 <_Event_Sync_state>,%d0 <== NOT EXECUTED if ( (sync == THREAD_BLOCKING_OPERATION_SYNCHRONIZED) || 44b94: 7401 moveq #1,%d2 <== NOT EXECUTED 44b96: b480 cmpl %d0,%d2 <== NOT EXECUTED 44b98: 6508 bcss 44ba2 <_Event_Timeout+0x62> <== NOT EXECUTED (sync == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 44b9a: 7002 moveq #2,%d0 <== NOT EXECUTED 44b9c: 23c0 0005 86d6 movel %d0,586d6 <_Event_Sync_state> <== NOT EXECUTED } } the_thread->Wait.return_code = RTEMS_TIMEOUT; 44ba2: 7406 moveq #6,%d2 <== NOT EXECUTED 44ba4: 2142 0034 movel %d2,%a0@(52) <== NOT EXECUTED _ISR_Enable( level ); 44ba8: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 44baa: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 44bb0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 44bb2: 4eb9 0004 6948 jsr 46948 <_Thread_Clear_state> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 44bb8: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44bbe: 508f addql #8,%sp <== NOT EXECUTED 44bc0: 5380 subql #1,%d0 <== NOT EXECUTED 44bc2: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 44bc8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44bcc: 4e5e unlk %fp <== NOT EXECUTED 44bce: 4e75 rts 00045550 <_Extension_Manager_initialization>: */ void _Extension_Manager_initialization( uint32_t maximum_extensions ) { 45550: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 45554: 4878 0004 pea 4 <== NOT EXECUTED 45558: 42a7 clrl %sp@- <== NOT EXECUTED 4555a: 4878 0044 pea 44 <== NOT EXECUTED 4555e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45562: 4878 0009 pea 9 <== NOT EXECUTED 45566: 4878 0002 pea 2 <== NOT EXECUTED 4556a: 4879 0005 86da pea 586da <_Extension_Information> <== NOT EXECUTED 45570: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 45576: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , false, /* true if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4557c: 4e5e unlk %fp <== NOT EXECUTED 4557e: 4e75 rts 0004a3b0 <_Heap_Allocate>: void *_Heap_Allocate( Heap_Control *the_heap, size_t size ) { 4a3b0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4a3b4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4a3b8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED Heap_Block *the_block; void *ptr = NULL; Heap_Statistics *const stats = &the_heap->stats; Heap_Block *const tail = _Heap_Tail(the_heap); the_size = 4a3bc: 2f2b 0014 movel %a3@(20),%sp@- <== NOT EXECUTED 4a3c0: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 4a3c4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a3c8: 4eb9 0004 5f30 jsr 45f30 <_Heap_Calc_block_size> <== NOT EXECUTED _Heap_Calc_block_size(size, the_heap->page_size, the_heap->min_block_size); if(the_size == 0) 4a3ce: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4a3d4: 4a80 tstl %d0 <== NOT EXECUTED 4a3d6: 674c beqs 4a424 <_Heap_Allocate+0x74> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Heap_Block *_Heap_First ( Heap_Control *the_heap ) { return _Heap_Head(the_heap)->next; 4a3d8: 246b 0008 moveal %a3@(8),%a2 <== NOT EXECUTED 4a3dc: 4282 clrl %d2 <== NOT EXECUTED 4a3de: 6034 bras 4a414 <_Heap_Allocate+0x64> <== NOT EXECUTED /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); /* Don't bother to mask out the HEAP_PREV_USED bit as it won't change the result of the comparison. */ if(the_block->size >= the_size) { 4a3e0: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED 4a3e4: 6228 bhis 4a40e <_Heap_Allocate+0x5e> <== NOT EXECUTED (void)_Heap_Block_allocate(the_heap, the_block, the_size ); 4a3e6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a3e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a3ea: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a3ec: 4eb9 0004 5f6e jsr 45f6e <_Heap_Block_allocate> <== NOT EXECUTED ptr = _Heap_User_area(the_block); stats->allocs += 1; stats->searches += search_count + 1; 4a3f2: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED if(the_block->size >= the_size) { (void)_Heap_Block_allocate(the_heap, the_block, the_size ); ptr = _Heap_User_area(the_block); stats->allocs += 1; 4a3f6: 52ab 0048 addql #1,%a3@(72) <== NOT EXECUTED stats->searches += search_count + 1; 4a3fa: 5280 addql #1,%d0 <== NOT EXECUTED 4a3fc: d082 addl %d2,%d0 <== NOT EXECUTED 4a3fe: 2740 004c movel %d0,%a3@(76) <== NOT EXECUTED 4a402: 200a movel %a2,%d0 <== NOT EXECUTED 4a404: 5080 addql #8,%d0 <== NOT EXECUTED 4a406: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4a40c: 600c bras 4a41a <_Heap_Allocate+0x6a> <== NOT EXECUTED return NULL; /* Find large enough free block. */ for(the_block = _Heap_First(the_heap), search_count = 0; the_block != tail; the_block = the_block->next, ++search_count) 4a40e: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED 4a412: 5282 addql #1,%d2 <== NOT EXECUTED if(the_size == 0) return NULL; /* Find large enough free block. */ for(the_block = _Heap_First(the_heap), search_count = 0; the_block != tail; 4a414: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4a416: 66c8 bnes 4a3e0 <_Heap_Allocate+0x30> <== NOT EXECUTED 4a418: 4280 clrl %d0 <== NOT EXECUTED _HAssert(_Heap_Is_aligned_ptr(ptr, the_heap->page_size)); break; } } if(stats->max_search < search_count) 4a41a: b4ab 0044 cmpl %a3@(68),%d2 <== NOT EXECUTED 4a41e: 6304 blss 4a424 <_Heap_Allocate+0x74> <== NOT EXECUTED stats->max_search = search_count; 4a420: 2742 0044 movel %d2,%a3@(68) <== NOT EXECUTED return ptr; } 4a424: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4a42a: 4e5e unlk %fp <== NOT EXECUTED 4a42c: 4e75 rts <== NOT EXECUTED ... 000487f4 <_Heap_Allocate_aligned>: void *_Heap_Allocate_aligned( Heap_Control *the_heap, size_t size, uint32_t alignment ) { 487f4: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 487f8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 487fc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED Heap_Block *const tail = _Heap_Tail(the_heap); uint32_t const end_to_user_offs = size - HEAP_BLOCK_HEADER_OFFSET; uint32_t const the_size = _Heap_Calc_block_size(size, page_size, the_heap->min_block_size); 48800: 2f2b 0014 movel %a3@(20),%sp@- <== NOT EXECUTED { uint32_t search_count; Heap_Block *the_block; void *user_ptr = NULL; uint32_t const page_size = the_heap->page_size; 48804: 2c2b 0010 movel %a3@(16),%d6 <== NOT EXECUTED void *_Heap_Allocate_aligned( Heap_Control *the_heap, size_t size, uint32_t alignment ) { 48808: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED Heap_Block *const tail = _Heap_Tail(the_heap); uint32_t const end_to_user_offs = size - HEAP_BLOCK_HEADER_OFFSET; uint32_t const the_size = _Heap_Calc_block_size(size, page_size, the_heap->min_block_size); 4880c: 2f06 movel %d6,%sp@- <== NOT EXECUTED void *_Heap_Allocate_aligned( Heap_Control *the_heap, size_t size, uint32_t alignment ) { 4880e: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED Heap_Block *const tail = _Heap_Tail(the_heap); uint32_t const end_to_user_offs = size - HEAP_BLOCK_HEADER_OFFSET; uint32_t const the_size = _Heap_Calc_block_size(size, page_size, the_heap->min_block_size); 48812: 2f00 movel %d0,%sp@- <== NOT EXECUTED void *user_ptr = NULL; uint32_t const page_size = the_heap->page_size; Heap_Statistics *const stats = &the_heap->stats; Heap_Block *const tail = _Heap_Tail(the_heap); uint32_t const end_to_user_offs = size - HEAP_BLOCK_HEADER_OFFSET; 48814: 5980 subql #4,%d0 <== NOT EXECUTED 48816: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED uint32_t const the_size = _Heap_Calc_block_size(size, page_size, the_heap->min_block_size); 4881a: 4eb9 0004 8c4c jsr 48c4c <_Heap_Calc_block_size> <== NOT EXECUTED if(the_size == 0) 48820: dffc 0000 000c addal #12,%sp <== NOT EXECUTED Heap_Block *const tail = _Heap_Tail(the_heap); uint32_t const end_to_user_offs = size - HEAP_BLOCK_HEADER_OFFSET; uint32_t const the_size = _Heap_Calc_block_size(size, page_size, the_heap->min_block_size); 48826: 2a40 moveal %d0,%a5 <== NOT EXECUTED if(the_size == 0) 48828: 4a80 tstl %d0 <== NOT EXECUTED 4882a: 6606 bnes 48832 <_Heap_Allocate_aligned+0x3e> <== NOT EXECUTED 4882c: 4280 clrl %d0 <== NOT EXECUTED 4882e: 6000 0104 braw 48934 <_Heap_Allocate_aligned+0x140> <== NOT EXECUTED return NULL; if(alignment == 0) 48832: 4a84 tstl %d4 <== NOT EXECUTED 48834: 6604 bnes 4883a <_Heap_Allocate_aligned+0x46> <== NOT EXECUTED 48836: 183c 0004 moveb #4,%d4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Heap_Block *_Heap_First ( Heap_Control *the_heap ) { return _Heap_Head(the_heap)->next; 4883a: 246b 0008 moveal %a3@(8),%a2 <== NOT EXECUTED 4883e: 4287 clrl %d7 <== NOT EXECUTED 48840: 6000 00e0 braw 48922 <_Heap_Allocate_aligned+0x12e> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 48844: 7afe moveq #-2,%d5 <== NOT EXECUTED 48846: caaa 0004 andl %a2@(4),%d5 <== NOT EXECUTED uint32_t const block_size = _Heap_Block_size(the_block); /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); if(block_size >= the_size) { /* the_block is large enough. */ 4884a: bbc5 cmpal %d5,%a5 <== NOT EXECUTED 4884c: 6200 00ce bhiw 4891c <_Heap_Allocate_aligned+0x128> <== NOT EXECUTED /* Calculate 'aligned_user_addr' that will become the user pointer we return. It should be at least 'end_to_user_offs' bytes less than the the 'block_end' and should be aligned on 'alignment' boundary. Calculations are from the 'block_end' as we are going to split free block so that the upper part of the block becomes used block. */ _H_uptr_t const block_end = _H_p2u(the_block) + block_size; 48850: 49f2 5800 lea %a2@(00000000,%d5:l),%a4 <== NOT EXECUTED aligned_user_addr = block_end - end_to_user_offs; 48854: 200c movel %a4,%d0 <== NOT EXECUTED 48856: 90ae fffc subl %fp@(-4),%d0 <== NOT EXECUTED _H_uptr_t *value, uint32_t alignment ) { _H_uptr_t v = *value; *value = v - (v % alignment); 4885a: 2400 movel %d0,%d2 <== NOT EXECUTED 4885c: 4c44 2001 remul %d4,%d1,%d2 <== NOT EXECUTED 48860: 2600 movel %d0,%d3 <== NOT EXECUTED 48862: 9681 subl %d1,%d3 <== NOT EXECUTED if(block_size >= the_size) { /* the_block is large enough. */ _H_uptr_t user_addr; _H_uptr_t aligned_user_addr; _H_uptr_t const user_area = _H_p2u(_Heap_User_area(the_block)); 48864: 2203 movel %d3,%d1 <== NOT EXECUTED 48866: 4c46 1000 remul %d6,%d0,%d1 <== NOT EXECUTED 4886a: 2403 movel %d3,%d2 <== NOT EXECUTED 4886c: 220a movel %a2,%d1 <== NOT EXECUTED 4886e: 9480 subl %d0,%d2 <== NOT EXECUTED 48870: 5081 addql #8,%d1 <== NOT EXECUTED only at 'page_size' aligned addresses */ user_addr = aligned_user_addr; _Heap_Align_down_uptr(&user_addr, page_size); /* Make sure 'user_addr' calculated didn't run out of 'the_block'. */ if(user_addr >= user_area) { 48872: b282 cmpl %d2,%d1 <== NOT EXECUTED 48874: 6200 00a6 bhiw 4891c <_Heap_Allocate_aligned+0x128> <== NOT EXECUTED /* The block seems to be acceptable. Check if the remainder of 'the_block' is less than 'min_block_size' so that 'the_block' won't actually be split at the address we assume. */ if(user_addr - user_area < the_heap->min_block_size) { 48878: 226b 0014 moveal %a3@(20),%a1 <== NOT EXECUTED 4887c: 2002 movel %d2,%d0 <== NOT EXECUTED 4887e: 9081 subl %d1,%d0 <== NOT EXECUTED 48880: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 48882: 632c blss 488b0 <_Heap_Allocate_aligned+0xbc> <== NOT EXECUTED 'aligned_user_addr' to be outside of [0,page_size) range. If we do, we will need to store this distance somewhere to be able to resurrect the block address from the user pointer. (Having the distance within [0,page_size) range allows resurrection by aligning user pointer down to the nearest 'page_size' boundary.) */ if(aligned_user_addr - user_addr >= page_size) { 48884: 2003 movel %d3,%d0 <== NOT EXECUTED 48886: 9081 subl %d1,%d0 <== NOT EXECUTED 48888: bc80 cmpl %d0,%d6 <== NOT EXECUTED 4888a: 6304 blss 48890 <_Heap_Allocate_aligned+0x9c> <== NOT EXECUTED 4888c: 2401 movel %d1,%d2 <== NOT EXECUTED 4888e: 6020 bras 488b0 <_Heap_Allocate_aligned+0xbc> <== NOT EXECUTED uint32_t alignment ) { _H_uptr_t v = *value; uint32_t a = alignment; _H_uptr_t r = v % a; 48890: 2401 movel %d1,%d2 <== NOT EXECUTED 48892: 4c44 2000 remul %d4,%d0,%d2 <== NOT EXECUTED *value = r ? v - r + a : v; 48896: 4a80 tstl %d0 <== NOT EXECUTED 48898: 6604 bnes 4889e <_Heap_Allocate_aligned+0xaa> <== NOT EXECUTED 4889a: 2041 moveal %d1,%a0 <== NOT EXECUTED 4889c: 6006 bras 488a4 <_Heap_Allocate_aligned+0xb0> <== NOT EXECUTED 4889e: 2041 moveal %d1,%a0 <== NOT EXECUTED 488a0: d1c4 addal %d4,%a0 <== NOT EXECUTED 488a2: 91c0 subal %d0,%a0 <== NOT EXECUTED /* The user pointer will be too far from 'user_addr'. See if we can make 'aligned_user_addr' to be close enough to the 'user_addr'. */ aligned_user_addr = user_addr; _Heap_Align_up_uptr(&aligned_user_addr, alignment); if(aligned_user_addr - user_addr >= page_size) { 488a4: 2008 movel %a0,%d0 <== NOT EXECUTED 488a6: 9081 subl %d1,%d0 <== NOT EXECUTED 488a8: bc80 cmpl %d0,%d6 <== NOT EXECUTED 488aa: 6370 blss 4891c <_Heap_Allocate_aligned+0x128> <== NOT EXECUTED 488ac: 2401 movel %d1,%d2 <== NOT EXECUTED 488ae: 2608 movel %a0,%d3 <== NOT EXECUTED aligned_user_addr = 0; } } } if(aligned_user_addr) { 488b0: 4a83 tstl %d3 <== NOT EXECUTED 488b2: 6768 beqs 4891c <_Heap_Allocate_aligned+0x128> <== NOT EXECUTED /* The block is indeed acceptable: calculate the size of the block to be allocated and perform allocation. */ uint32_t const alloc_size = block_end - user_addr + HEAP_BLOCK_USER_OFFSET; 488b4: 200c movel %a4,%d0 <== NOT EXECUTED 488b6: 5080 addql #8,%d0 <== NOT EXECUTED 488b8: 9082 subl %d2,%d0 <== NOT EXECUTED Heap_Block *the_block, uint32_t alloc_size) { Heap_Statistics *const stats = &the_heap->stats; uint32_t const block_size = _Heap_Block_size(the_block); uint32_t const the_rest = block_size - alloc_size; 488ba: 2205 movel %d5,%d1 <== NOT EXECUTED 488bc: 9280 subl %d0,%d1 <== NOT EXECUTED _HAssert(_Heap_Is_aligned(block_size, the_heap->page_size)); _HAssert(_Heap_Is_aligned(alloc_size, the_heap->page_size)); _HAssert(alloc_size <= block_size); _HAssert(_Heap_Is_prev_used(the_block)); if(the_rest >= the_heap->min_block_size) { 488be: b3c1 cmpal %d1,%a1 <== NOT EXECUTED 488c0: 6212 bhis 488d4 <_Heap_Allocate_aligned+0xe0> <== NOT EXECUTED /* Split the block so that lower part is still free, and upper part becomes used. */ the_block->size = the_rest | HEAP_PREV_USED; 488c2: 7401 moveq #1,%d2 <== NOT EXECUTED 488c4: 8481 orl %d1,%d2 <== NOT EXECUTED 488c6: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( void *base, uint32_t offset ) { return (void *)((char *)base + offset); 488ca: d5c1 addal %d1,%a2 <== NOT EXECUTED the_block = _Heap_Block_at(the_block, the_rest); the_block->prev_size = the_rest; 488cc: 2481 movel %d1,%a2@ <== NOT EXECUTED the_block->size = alloc_size; 488ce: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 488d2: 6016 bras 488ea <_Heap_Allocate_aligned+0xf6> <== NOT EXECUTED Heap_Block *the_block ) { Heap_Block *block = the_block; Heap_Block *next = block->next; 488d4: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED Heap_Block *prev = block->prev; 488d8: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED /* Don't split the block as remainder is either zero or too small to be used as a separate free block. Change 'alloc_size' to the size of the block and remove the block from the list of free blocks. */ _Heap_Block_remove(the_block); alloc_size = block_size; stats->free_blocks -= 1; 488dc: 2005 movel %d5,%d0 <== NOT EXECUTED prev->next = next; next->prev = prev; 488de: 2348 000c movel %a0,%a1@(12) <== NOT EXECUTED 488e2: 53ab 0038 subql #1,%a3@(56) <== NOT EXECUTED { Heap_Block *block = the_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 488e6: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED } /* Mark the block as used (in the next block). */ _Heap_Block_at(the_block, alloc_size)->size |= HEAP_PREV_USED; 488ea: 7201 moveq #1,%d1 <== NOT EXECUTED 488ec: 83b2 0804 orl %d1,%a2@(00000004,%d0:l) <== NOT EXECUTED /* Update statistics */ stats->free_size -= alloc_size; 488f0: 242b 0030 movel %a3@(48),%d2 <== NOT EXECUTED 488f4: 9480 subl %d0,%d2 <== NOT EXECUTED 488f6: 2742 0030 movel %d2,%a3@(48) <== NOT EXECUTED if(stats->min_free_size > stats->free_size) 488fa: b4ab 0034 cmpl %a3@(52),%d2 <== NOT EXECUTED 488fe: 6404 bccs 48904 <_Heap_Allocate_aligned+0x110> <== NOT EXECUTED stats->min_free_size = stats->free_size; 48900: 2742 0034 movel %d2,%a3@(52) <== NOT EXECUTED _HAssert(_Heap_Is_aligned_ptr((void*)aligned_user_addr, alignment)); the_block = block_allocate(the_heap, the_block, alloc_size); stats->searches += search_count + 1; 48904: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED _Heap_Block_at(the_block, alloc_size)->size |= HEAP_PREV_USED; /* Update statistics */ stats->free_size -= alloc_size; if(stats->min_free_size > stats->free_size) stats->min_free_size = stats->free_size; stats->used_blocks += 1; 48908: 52ab 0040 addql #1,%a3@(64) <== NOT EXECUTED _HAssert(_Heap_Is_aligned_ptr((void*)aligned_user_addr, alignment)); the_block = block_allocate(the_heap, the_block, alloc_size); stats->searches += search_count + 1; 4890c: 5280 addql #1,%d0 <== NOT EXECUTED stats->allocs += 1; 4890e: 52ab 0048 addql #1,%a3@(72) <== NOT EXECUTED _HAssert(_Heap_Is_aligned_ptr((void*)aligned_user_addr, alignment)); the_block = block_allocate(the_heap, the_block, alloc_size); stats->searches += search_count + 1; 48912: d087 addl %d7,%d0 <== NOT EXECUTED 48914: 2740 004c movel %d0,%a3@(76) <== NOT EXECUTED stats->allocs += 1; check_result(the_heap, the_block, user_addr, aligned_user_addr, size); user_ptr = (void*)aligned_user_addr; 48918: 2003 movel %d3,%d0 <== NOT EXECUTED 4891a: 600e bras 4892a <_Heap_Allocate_aligned+0x136> <== NOT EXECUTED /* Find large enough free block that satisfies the alignment requirements. */ for(the_block = _Heap_First(the_heap), search_count = 0; the_block != tail; the_block = the_block->next, ++search_count) 4891c: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED 48920: 5287 addql #1,%d7 <== NOT EXECUTED alignment = CPU_ALIGNMENT; /* Find large enough free block that satisfies the alignment requirements. */ for(the_block = _Heap_First(the_heap), search_count = 0; the_block != tail; 48922: b7ca cmpal %a2,%a3 <== NOT EXECUTED 48924: 6600 ff1e bnew 48844 <_Heap_Allocate_aligned+0x50> <== NOT EXECUTED 48928: 4280 clrl %d0 <== NOT EXECUTED } } } } if(stats->max_search < search_count) 4892a: beab 0044 cmpl %a3@(68),%d7 <== NOT EXECUTED 4892e: 6304 blss 48934 <_Heap_Allocate_aligned+0x140> <== NOT EXECUTED stats->max_search = search_count; 48930: 2747 0044 movel %d7,%a3@(68) <== NOT EXECUTED return user_ptr; } 48934: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4893a: 4e5e unlk %fp <== NOT EXECUTED 4893c: 4e75 rts <== NOT EXECUTED ... 00045f6e <_Heap_Block_allocate>: uint32_t _Heap_Block_allocate( Heap_Control* the_heap, Heap_Block* the_block, uint32_t alloc_size ) { 45f6e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45f72: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 45f76: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 45f7a: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 45f7e: 70fe moveq #-2,%d0 <== NOT EXECUTED 45f80: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED 45f84: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED Heap_Statistics *const stats = &the_heap->stats; uint32_t const block_size = _Heap_Block_size(the_block); uint32_t const the_rest = block_size - alloc_size; 45f88: 2200 movel %d0,%d1 <== NOT EXECUTED 45f8a: 2869 0008 moveal %a1@(8),%a4 <== NOT EXECUTED 45f8e: 2469 000c moveal %a1@(12),%a2 <== NOT EXECUTED 45f92: 9282 subl %d2,%d1 <== NOT EXECUTED _HAssert(_Heap_Is_aligned(block_size, the_heap->page_size)); _HAssert(_Heap_Is_aligned(alloc_size, the_heap->page_size)); _HAssert(alloc_size <= block_size); _HAssert(_Heap_Is_prev_used(the_block)); if(the_rest >= the_heap->min_block_size) { 45f94: b2ab 0014 cmpl %a3@(20),%d1 <== NOT EXECUTED 45f98: 652a bcss 45fc4 <_Heap_Block_allocate+0x56> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 45f9a: 41f1 2800 lea %a1@(00000000,%d2:l),%a0 <== NOT EXECUTED becomes used. This is slightly less optimal than leaving lower part free as it requires replacing block in the free blocks list, but it makes it possible to reuse this code in the _Heap_Resize_block(). */ Heap_Block *next_block = _Heap_Block_at(the_block, alloc_size); _Heap_Block_replace(the_block, next_block); the_block->size = alloc_size | HEAP_PREV_USED; 45f9e: 7001 moveq #1,%d0 <== NOT EXECUTED 45fa0: 8082 orl %d2,%d0 <== NOT EXECUTED 45fa2: 2340 0004 movel %d0,%a1@(4) <== NOT EXECUTED next_block->size = the_rest | HEAP_PREV_USED; 45fa6: 7001 moveq #1,%d0 <== NOT EXECUTED 45fa8: 8081 orl %d1,%d0 <== NOT EXECUTED Heap_Block *block = old_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; block = new_block; block->next = next; 45faa: 214c 0008 movel %a4,%a0@(8) <== NOT EXECUTED _Heap_Block_at(next_block, the_rest)->prev_size = the_rest; 45fae: 2181 1800 movel %d1,%a0@(00000000,%d1:l) <== NOT EXECUTED block->prev = prev; 45fb2: 214a 000c movel %a2,%a0@(12) <== NOT EXECUTED free as it requires replacing block in the free blocks list, but it makes it possible to reuse this code in the _Heap_Resize_block(). */ Heap_Block *next_block = _Heap_Block_at(the_block, alloc_size); _Heap_Block_replace(the_block, next_block); the_block->size = alloc_size | HEAP_PREV_USED; next_block->size = the_rest | HEAP_PREV_USED; 45fb6: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED next->prev = prev->next = block; 45fba: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED 45fbe: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 45fc2: 6014 bras 45fd8 <_Heap_Block_allocate+0x6a> <== NOT EXECUTED /* Don't split the block as remainder is either zero or too small to be used as a separate free block. Change 'alloc_size' to the size of the block and remove the block from the list of free blocks. */ _Heap_Block_remove(the_block); alloc_size = block_size; _Heap_Block_at(the_block, alloc_size)->size |= HEAP_PREV_USED; 45fc4: 7201 moveq #1,%d1 <== NOT EXECUTED 45fc6: 83b1 0804 orl %d1,%a1@(00000004,%d0:l) <== NOT EXECUTED stats->free_blocks -= 1; 45fca: 2400 movel %d0,%d2 <== NOT EXECUTED Heap_Block *block = the_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; next->prev = prev; 45fcc: 294a 000c movel %a2,%a4@(12) <== NOT EXECUTED 45fd0: 53ab 0038 subql #1,%a3@(56) <== NOT EXECUTED { Heap_Block *block = the_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 45fd4: 254c 0008 movel %a4,%a2@(8) <== NOT EXECUTED } /* Update statistics */ stats->free_size -= alloc_size; 45fd8: 222b 0030 movel %a3@(48),%d1 <== NOT EXECUTED 45fdc: 9282 subl %d2,%d1 <== NOT EXECUTED 45fde: 2741 0030 movel %d1,%a3@(48) <== NOT EXECUTED if(stats->min_free_size > stats->free_size) 45fe2: b2ab 0034 cmpl %a3@(52),%d1 <== NOT EXECUTED 45fe6: 6404 bccs 45fec <_Heap_Block_allocate+0x7e> <== NOT EXECUTED stats->min_free_size = stats->free_size; 45fe8: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED stats->used_blocks += 1; 45fec: 52ab 0040 addql #1,%a3@(64) <== NOT EXECUTED return alloc_size; } 45ff0: 2002 movel %d2,%d0 <== NOT EXECUTED 45ff2: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED 45ff6: 4e5e unlk %fp <== NOT EXECUTED 45ff8: 4e75 rts <== NOT EXECUTED ... 00045f30 <_Heap_Calc_block_size>: */ size_t _Heap_Calc_block_size( size_t size, uint32_t page_size, uint32_t min_size) { 45f30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f34: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f36: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 45f3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45f3c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED uint32_t block_size = size + HEAP_BLOCK_USED_OVERHEAD; 45f40: 2009 movel %a1,%d0 <== NOT EXECUTED 45f42: 5880 addql #4,%d0 <== NOT EXECUTED */ size_t _Heap_Calc_block_size( size_t size, uint32_t page_size, uint32_t min_size) { 45f44: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED uint32_t alignment ) { uint32_t v = *value; uint32_t a = alignment; uint32_t r = v % a; 45f48: 2600 movel %d0,%d3 <== NOT EXECUTED 45f4a: 4c42 3001 remul %d2,%d1,%d3 <== NOT EXECUTED *value = r ? v - r + a : v; 45f4e: 4a81 tstl %d1 <== NOT EXECUTED 45f50: 6704 beqs 45f56 <_Heap_Calc_block_size+0x26> <== NOT EXECUTED 45f52: d082 addl %d2,%d0 <== NOT EXECUTED 45f54: 9081 subl %d1,%d0 <== NOT EXECUTED 45f56: 2200 movel %d0,%d1 <== NOT EXECUTED 45f58: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 45f5a: 6302 blss 45f5e <_Heap_Calc_block_size+0x2e> <== NOT EXECUTED 45f5c: 2208 movel %a0,%d1 <== NOT EXECUTED uint32_t block_size = size + HEAP_BLOCK_USED_OVERHEAD; _Heap_Align_up(&block_size, page_size); if (block_size < min_size) block_size = min_size; /* 'block_size' becomes <= 'size' if and only if overflow occured. */ return (block_size > size) ? block_size : 0; } 45f5e: 241f movel %sp@+,%d2 <== NOT EXECUTED 45f60: 261f movel %sp@+,%d3 <== NOT EXECUTED { uint32_t block_size = size + HEAP_BLOCK_USED_OVERHEAD; _Heap_Align_up(&block_size, page_size); if (block_size < min_size) block_size = min_size; /* 'block_size' becomes <= 'size' if and only if overflow occured. */ return (block_size > size) ? block_size : 0; 45f62: b3c1 cmpal %d1,%a1 <== NOT EXECUTED 45f64: 55c0 scs %d0 <== NOT EXECUTED 45f66: 49c0 extbl %d0 <== NOT EXECUTED } 45f68: 4e5e unlk %fp <== NOT EXECUTED 45f6a: c081 andl %d1,%d0 <== NOT EXECUTED 45f6c: 4e75 rts 0004d388 <_Heap_Extend>: Heap_Control *the_heap, void *starting_address, size_t size, uint32_t *amount_extended ) { 4d388: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d38c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4d390: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4d394: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4d398: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED * 5. non-contiguous higher address (NOT SUPPORTED) * * As noted, this code only supports (4). */ if ( starting_address >= the_heap->begin && /* case 3 */ 4d39c: b0a9 0018 cmpl %a1@(24),%d0 <== NOT EXECUTED 4d3a0: 650a bcss 4d3ac <_Heap_Extend+0x24> <== NOT EXECUTED 4d3a2: b0a9 001c cmpl %a1@(28),%d0 <== NOT EXECUTED 4d3a6: 6404 bccs 4d3ac <_Heap_Extend+0x24> <== NOT EXECUTED 4d3a8: 7001 moveq #1,%d0 <== NOT EXECUTED 4d3aa: 6066 bras 4d412 <_Heap_Extend+0x8a> <== NOT EXECUTED starting_address < the_heap->end ) return HEAP_EXTEND_ERROR; if ( starting_address != the_heap->end ) 4d3ac: b0a9 001c cmpl %a1@(28),%d0 <== NOT EXECUTED 4d3b0: 6704 beqs 4d3b6 <_Heap_Extend+0x2e> <== NOT EXECUTED 4d3b2: 7002 moveq #2,%d0 <== NOT EXECUTED 4d3b4: 605c bras 4d412 <_Heap_Extend+0x8a> <== NOT EXECUTED * Currently only case 4 should make it to this point. * The basic trick is to make the extend area look like a used * block and free it. */ old_final = the_heap->final; 4d3b6: 2469 0024 moveal %a1@(36),%a2 <== NOT EXECUTED 4d3ba: d082 addl %d2,%d0 <== NOT EXECUTED the_heap->end = _Addresses_Add_offset( the_heap->end, size ); 4d3bc: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED the_size = _Addresses_Subtract( the_heap->end, old_final ) - HEAP_OVERHEAD; 4d3c0: 908a subl %a2,%d0 <== NOT EXECUTED 4d3c2: 5180 subql #8,%d0 <== NOT EXECUTED uint32_t *value, uint32_t alignment ) { uint32_t v = *value; *value = v - (v % alignment); 4d3c4: 2600 movel %d0,%d3 <== NOT EXECUTED _Heap_Align_down( &the_size, the_heap->page_size ); *amount_extended = size; 4d3c6: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4d3ca: 4c69 3001 0010 remul %a1@(16),%d1,%d3 <== NOT EXECUTED 4d3d0: 9081 subl %d1,%d0 <== NOT EXECUTED 4d3d2: 2200 movel %d0,%d1 <== NOT EXECUTED 4d3d4: 2082 movel %d2,%a0@ <== NOT EXECUTED if( the_size < the_heap->min_block_size ) 4d3d6: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 4d3da: 6534 bcss 4d410 <_Heap_Extend+0x88> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 4d3dc: 41f2 0800 lea %a2@(00000000,%d0:l),%a0 <== NOT EXECUTED return HEAP_EXTEND_SUCCESSFUL; old_final->size = the_size | (old_final->size & HEAP_PREV_USED); 4d3e0: 7001 moveq #1,%d0 <== NOT EXECUTED 4d3e2: c0aa 0004 andl %a2@(4),%d0 <== NOT EXECUTED 4d3e6: 8280 orl %d0,%d1 <== NOT EXECUTED 4d3e8: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED new_final = _Heap_Block_at( old_final, the_size ); new_final->size = HEAP_PREV_USED; 4d3ec: 7001 moveq #1,%d0 <== NOT EXECUTED 4d3ee: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED stats->size += size; stats->used_blocks += 1; stats->frees -= 1; /* Don't count subsequent call as actual free() */ _Heap_Free( the_heap, _Heap_User_area( old_final ) ); 4d3f2: 486a 0008 pea %a2@(8) <== NOT EXECUTED old_final->size = the_size | (old_final->size & HEAP_PREV_USED); new_final = _Heap_Block_at( old_final, the_size ); new_final->size = HEAP_PREV_USED; the_heap->final = new_final; stats->size += size; 4d3f6: d5a9 002c addl %d2,%a1@(44) <== NOT EXECUTED stats->used_blocks += 1; 4d3fa: 52a9 0040 addql #1,%a1@(64) <== NOT EXECUTED stats->frees -= 1; /* Don't count subsequent call as actual free() */ 4d3fe: 53a9 0050 subql #1,%a1@(80) <== NOT EXECUTED _Heap_Free( the_heap, _Heap_User_area( old_final ) ); 4d402: 2f09 movel %a1,%sp@- <== NOT EXECUTED return HEAP_EXTEND_SUCCESSFUL; old_final->size = the_size | (old_final->size & HEAP_PREV_USED); new_final = _Heap_Block_at( old_final, the_size ); new_final->size = HEAP_PREV_USED; the_heap->final = new_final; 4d404: 2348 0024 movel %a0,%a1@(36) <== NOT EXECUTED stats->size += size; stats->used_blocks += 1; stats->frees -= 1; /* Don't count subsequent call as actual free() */ _Heap_Free( the_heap, _Heap_User_area( old_final ) ); 4d408: 4eb9 0004 89c0 jsr 489c0 <_Heap_Free> <== NOT EXECUTED 4d40e: 508f addql #8,%sp <== NOT EXECUTED 4d410: 4280 clrl %d0 <== NOT EXECUTED return HEAP_EXTEND_SUCCESSFUL; } 4d412: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4d418: 4e5e unlk %fp <== NOT EXECUTED 4d41a: 4e75 rts 0004a430 <_Heap_Free>: bool _Heap_Free( Heap_Control *the_heap, void *starting_address ) { 4a430: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4a434: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 4a438: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4a43c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED uint32_t the_size; uint32_t next_size; Heap_Statistics *const stats = &the_heap->stats; bool next_is_free; if ( !_Addresses_Is_in_range( 4a440: 206c 0024 moveal %a4@(36),%a0 <== NOT EXECUTED 4a444: 226c 0020 moveal %a4@(32),%a1 <== NOT EXECUTED void *address, void *base, void *limit ) { return (address >= base && address <= limit); 4a448: b3c1 cmpal %d1,%a1 <== NOT EXECUTED 4a44a: 6200 015e bhiw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED 4a44e: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 4a450: 54c0 scc %d0 <== NOT EXECUTED 4a452: 49c0 extbl %d0 <== NOT EXECUTED 4a454: 4480 negl %d0 <== NOT EXECUTED 4a456: 4a00 tstb %d0 <== NOT EXECUTED 4a458: 6700 0150 beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED /* The address passed could be greater than the block address plus * HEAP_BLOCK_USER_OFFSET as _Heap_Allocate_aligned() may produce such user * pointers. To get rid of this offset we need to align the address down * to the nearest 'page_size' boundary. */ _Heap_Align_down_uptr ( &addr, the_heap->page_size ); *the_block = (Heap_Block *)(addr - HEAP_BLOCK_USER_OFFSET); 4a45c: 2401 movel %d1,%d2 <== NOT EXECUTED 4a45e: 2441 moveal %d1,%a2 <== NOT EXECUTED 4a460: 4c6c 2000 0010 remul %a4@(16),%d0,%d2 <== NOT EXECUTED 4a466: 518a subql #8,%a2 <== NOT EXECUTED 4a468: 95c0 subal %d0,%a2 <== NOT EXECUTED 4a46a: b3ca cmpal %a2,%a1 <== NOT EXECUTED 4a46c: 6200 013c bhiw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED 4a470: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4a472: 54c0 scc %d0 <== NOT EXECUTED 4a474: 49c0 extbl %d0 <== NOT EXECUTED 4a476: 4480 negl %d0 <== NOT EXECUTED return( FALSE ); } _Heap_Start_of_block( the_heap, starting_address, &the_block ); if ( !_Heap_Is_block_in( the_heap, the_block ) ) { 4a478: 4a00 tstb %d0 <== NOT EXECUTED 4a47a: 6700 012e beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 4a47e: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED 4a482: 78fe moveq #-2,%d4 <== NOT EXECUTED 4a484: c882 andl %d2,%d4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 4a486: 47f2 4800 lea %a2@(00000000,%d4:l),%a3 <== NOT EXECUTED 4a48a: b3cb cmpal %a3,%a1 <== NOT EXECUTED 4a48c: 6200 011c bhiw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED 4a490: b1cb cmpal %a3,%a0 <== NOT EXECUTED 4a492: 54c0 scc %d0 <== NOT EXECUTED 4a494: 49c0 extbl %d0 <== NOT EXECUTED 4a496: 4480 negl %d0 <== NOT EXECUTED } the_size = _Heap_Block_size( the_block ); next_block = _Heap_Block_at( the_block, the_size ); if ( !_Heap_Is_block_in( the_heap, next_block ) ) { 4a498: 4a00 tstb %d0 <== NOT EXECUTED 4a49a: 6700 010e beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used ( Heap_Block *the_block ) { return (the_block->size & HEAP_PREV_USED); 4a49e: 222b 0004 movel %a3@(4),%d1 <== NOT EXECUTED _HAssert( FALSE ); return( FALSE ); } if ( !_Heap_Is_prev_used( next_block ) ) { 4a4a2: 7001 moveq #1,%d0 <== NOT EXECUTED 4a4a4: c081 andl %d1,%d0 <== NOT EXECUTED 4a4a6: 4a00 tstb %d0 <== NOT EXECUTED 4a4a8: 6700 0100 beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 4a4ac: 7afe moveq #-2,%d5 <== NOT EXECUTED 4a4ae: ca81 andl %d1,%d5 <== NOT EXECUTED _HAssert( FALSE ); return( FALSE ); } next_size = _Heap_Block_size( next_block ); next_is_free = next_block < the_heap->final && 4a4b0: b1cb cmpal %a3,%a0 <== NOT EXECUTED 4a4b2: 6204 bhis 4a4b8 <_Heap_Free+0x88> <== NOT EXECUTED 4a4b4: 4283 clrl %d3 <== NOT EXECUTED 4a4b6: 600e bras 4a4c6 <_Heap_Free+0x96> <== NOT EXECUTED 4a4b8: 7001 moveq #1,%d0 <== NOT EXECUTED 4a4ba: c0b3 5804 andl %a3@(00000004,%d5:l),%d0 <== NOT EXECUTED 4a4be: 7201 moveq #1,%d1 <== NOT EXECUTED 4a4c0: b380 eorl %d1,%d0 <== NOT EXECUTED 4a4c2: 4283 clrl %d3 <== NOT EXECUTED 4a4c4: 1600 moveb %d0,%d3 <== NOT EXECUTED !_Heap_Is_prev_used(_Heap_Block_at(next_block, next_size)); if ( !_Heap_Is_prev_used( the_block ) ) { 4a4c6: 7001 moveq #1,%d0 <== NOT EXECUTED 4a4c8: c480 andl %d0,%d2 <== NOT EXECUTED 4a4ca: 4a02 tstb %d2 <== NOT EXECUTED 4a4cc: 6666 bnes 4a534 <_Heap_Free+0x104> <== NOT EXECUTED uint32_t const prev_size = the_block->prev_size; 4a4ce: 2212 movel %a2@,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 4a4d0: 95c1 subal %d1,%a2 <== NOT EXECUTED 4a4d2: b3ca cmpal %a2,%a1 <== NOT EXECUTED 4a4d4: 6200 00d4 bhiw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED 4a4d8: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4a4da: 54c0 scc %d0 <== NOT EXECUTED 4a4dc: 49c0 extbl %d0 <== NOT EXECUTED 4a4de: 4480 negl %d0 <== NOT EXECUTED Heap_Block *const prev_block = _Heap_Block_at( the_block, -prev_size ); if ( !_Heap_Is_block_in( the_heap, prev_block ) ) { 4a4e0: 4a00 tstb %d0 <== NOT EXECUTED 4a4e2: 6700 00c6 beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED 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) ) { 4a4e6: 7001 moveq #1,%d0 <== NOT EXECUTED 4a4e8: c0aa 0004 andl %a2@(4),%d0 <== NOT EXECUTED 4a4ec: 4a00 tstb %d0 <== NOT EXECUTED 4a4ee: 6700 00ba beqw 4a5aa <_Heap_Free+0x17a> <== NOT EXECUTED _HAssert( FALSE ); return( FALSE ); } if ( next_is_free ) { /* coalesce both */ 4a4f2: 4a03 tstb %d3 <== NOT EXECUTED 4a4f4: 6728 beqs 4a51e <_Heap_Free+0xee> <== NOT EXECUTED uint32_t const size = the_size + prev_size + next_size; _Heap_Block_remove( next_block ); stats->free_blocks -= 1; 4a4f6: 53ac 0038 subql #1,%a4@(56) <== NOT EXECUTED _HAssert( FALSE ); return( FALSE ); } if ( next_is_free ) { /* coalesce both */ uint32_t const size = the_size + prev_size + next_size; 4a4fa: 2004 movel %d4,%d0 <== NOT EXECUTED 4a4fc: d085 addl %d5,%d0 <== NOT EXECUTED 4a4fe: d081 addl %d1,%d0 <== NOT EXECUTED ) { Heap_Block *block = the_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; 4a500: 226b 000c moveal %a3@(12),%a1 <== NOT EXECUTED Heap_Block *the_block ) { Heap_Block *block = the_block; Heap_Block *next = block->next; 4a504: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED _Heap_Block_remove( next_block ); stats->free_blocks -= 1; prev_block->size = size | HEAP_PREV_USED; 4a508: 7201 moveq #1,%d1 <== NOT EXECUTED 4a50a: 8280 orl %d0,%d1 <== NOT EXECUTED next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; 4a50c: 2580 0800 movel %d0,%a2@(00000000,%d0:l) <== NOT EXECUTED if ( next_is_free ) { /* coalesce both */ uint32_t const size = the_size + prev_size + next_size; _Heap_Block_remove( next_block ); stats->free_blocks -= 1; prev_block->size = size | HEAP_PREV_USED; 4a510: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED Heap_Block *prev = block->prev; prev->next = next; next->prev = prev; 4a514: 2149 000c movel %a1,%a0@(12) <== NOT EXECUTED { Heap_Block *block = the_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 4a518: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED 4a51c: 607c bras 4a59a <_Heap_Free+0x16a> <== NOT EXECUTED next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uint32_t const size = the_size + prev_size; 4a51e: 2004 movel %d4,%d0 <== NOT EXECUTED 4a520: d081 addl %d1,%d0 <== NOT EXECUTED prev_block->size = size | HEAP_PREV_USED; 4a522: 7201 moveq #1,%d1 <== NOT EXECUTED 4a524: 8280 orl %d0,%d1 <== NOT EXECUTED next_block->size &= ~HEAP_PREV_USED; next_block->prev_size = size; 4a526: 2680 movel %d0,%a3@ <== NOT EXECUTED next_block->prev_size = size; } else { /* coalesce prev */ uint32_t const size = the_size + prev_size; prev_block->size = size | HEAP_PREV_USED; next_block->size &= ~HEAP_PREV_USED; 4a528: 70fe moveq #-2,%d0 <== NOT EXECUTED _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uint32_t const size = the_size + prev_size; prev_block->size = size | HEAP_PREV_USED; 4a52a: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED next_block->size &= ~HEAP_PREV_USED; 4a52e: c1ab 0004 andl %d0,%a3@(4) <== NOT EXECUTED 4a532: 6066 bras 4a59a <_Heap_Free+0x16a> <== NOT EXECUTED next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ 4a534: 4a03 tstb %d3 <== NOT EXECUTED 4a536: 672a beqs 4a562 <_Heap_Free+0x132> <== NOT EXECUTED Heap_Block *new_block ) { Heap_Block *block = old_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; 4a538: 206b 000c moveal %a3@(12),%a0 <== NOT EXECUTED Heap_Block *old_block, Heap_Block *new_block ) { Heap_Block *block = old_block; Heap_Block *next = block->next; 4a53c: 226b 0008 moveal %a3@(8),%a1 <== NOT EXECUTED uint32_t const size = the_size + next_size; 4a540: 2005 movel %d5,%d0 <== NOT EXECUTED Heap_Block *prev = block->prev; block = new_block; block->next = next; 4a542: 2549 0008 movel %a1,%a2@(8) <== NOT EXECUTED 4a546: d084 addl %d4,%d0 <== NOT EXECUTED _Heap_Block_replace( next_block, the_block ); the_block->size = size | HEAP_PREV_USED; 4a548: 7201 moveq #1,%d1 <== NOT EXECUTED block->prev = prev; 4a54a: 2548 000c movel %a0,%a2@(12) <== NOT EXECUTED 4a54e: 8280 orl %d0,%d1 <== NOT EXECUTED next_block = _Heap_Block_at( the_block, size ); next_block->prev_size = size; 4a550: 2580 0800 movel %d0,%a2@(00000000,%d0:l) <== NOT EXECUTED } } else if ( next_is_free ) { /* coalesce next */ uint32_t const size = the_size + next_size; _Heap_Block_replace( next_block, the_block ); the_block->size = size | HEAP_PREV_USED; 4a554: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED next->prev = prev->next = block; 4a558: 214a 0008 movel %a2,%a0@(8) <== NOT EXECUTED 4a55c: 234a 000c movel %a2,%a1@(12) <== NOT EXECUTED 4a560: 6038 bras 4a59a <_Heap_Free+0x16a> <== NOT EXECUTED } else { /* no coalesce */ /* Add 'the_block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Block_insert_after( _Heap_Head( the_heap), the_block ); the_block->size = the_size | HEAP_PREV_USED; 4a562: 7001 moveq #1,%d0 <== NOT EXECUTED 4a564: 8084 orl %d4,%d0 <== NOT EXECUTED ) { Heap_Block *prev = prev_block; Heap_Block *block = the_block; Heap_Block *next = prev->next; 4a566: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED 4a56a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED next_block->size &= ~HEAP_PREV_USED; 4a56e: 72fe moveq #-2,%d1 <== NOT EXECUTED 4a570: c3ab 0004 andl %d1,%a3@(4) <== NOT EXECUTED next_block->prev_size = the_size; 4a574: 2684 movel %d4,%a3@ <== NOT EXECUTED stats->free_blocks += 1; 4a576: 202c 0038 movel %a4@(56),%d0 <== NOT EXECUTED block->next = next; 4a57a: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED 4a57e: 5280 addql #1,%d0 <== NOT EXECUTED block->prev = prev; 4a580: 254c 000c movel %a4,%a2@(12) <== NOT EXECUTED next->prev = prev->next = block; 4a584: 294a 0008 movel %a2,%a4@(8) <== NOT EXECUTED 4a588: 214a 000c movel %a2,%a0@(12) <== NOT EXECUTED 4a58c: 2940 0038 movel %d0,%a4@(56) <== NOT EXECUTED if ( stats->max_free_blocks < stats->free_blocks ) 4a590: b0ac 003c cmpl %a4@(60),%d0 <== NOT EXECUTED 4a594: 6304 blss 4a59a <_Heap_Free+0x16a> <== NOT EXECUTED stats->max_free_blocks = stats->free_blocks; 4a596: 2940 003c movel %d0,%a4@(60) <== NOT EXECUTED } stats->used_blocks -= 1; stats->free_size += the_size; 4a59a: d9ac 0030 addl %d4,%a4@(48) <== NOT EXECUTED stats->frees += 1; 4a59e: 52ac 0050 addql #1,%a4@(80) <== NOT EXECUTED stats->free_blocks += 1; if ( stats->max_free_blocks < stats->free_blocks ) stats->max_free_blocks = stats->free_blocks; } stats->used_blocks -= 1; 4a5a2: 53ac 0040 subql #1,%a4@(64) <== NOT EXECUTED stats->free_size += the_size; stats->frees += 1; 4a5a6: 7001 moveq #1,%d0 <== NOT EXECUTED 4a5a8: 6002 bras 4a5ac <_Heap_Free+0x17c> <== NOT EXECUTED return( TRUE ); 4a5aa: 4200 clrb %d0 <== NOT EXECUTED } 4a5ac: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 <== NOT EXECUTED 4a5b0: 4e5e unlk %fp <== NOT EXECUTED 4a5b2: 4e75 rts 0005e58c <_Heap_Get_free_information>: void _Heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 5e58c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5e590: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5e592: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5e596: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Heap_Block *the_block; Heap_Block *const tail = _Heap_Tail(the_heap); info->number = 0; 5e59a: 4290 clrl %a0@ <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Heap_Block *_Heap_First ( Heap_Control *the_heap ) { return _Heap_Head(the_heap)->next; 5e59c: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED info->largest = 0; 5e5a0: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED info->total = 0; 5e5a4: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED 5e5a8: 601a bras 5e5c4 <_Heap_Get_free_information+0x38> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 5e5aa: 70fe moveq #-2,%d0 <== NOT EXECUTED 5e5ac: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED uint32_t const the_size = _Heap_Block_size(the_block); /* As we always coalesce free blocks, prev block must have been used. */ _HAssert(_Heap_Is_prev_used(the_block)); info->number++; 5e5b0: 5290 addql #1,%a0@ <== NOT EXECUTED info->total += the_size; 5e5b2: d1a8 0008 addl %d0,%a0@(8) <== NOT EXECUTED if ( info->largest < the_size ) 5e5b6: b0a8 0004 cmpl %a0@(4),%d0 <== NOT EXECUTED 5e5ba: 6304 blss 5e5c0 <_Heap_Get_free_information+0x34> <== NOT EXECUTED info->largest = the_size; 5e5bc: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED info->largest = 0; info->total = 0; for(the_block = _Heap_First(the_heap); the_block != tail; the_block = the_block->next) 5e5c0: 2269 0008 moveal %a1@(8),%a1 <== NOT EXECUTED info->number = 0; info->largest = 0; info->total = 0; for(the_block = _Heap_First(the_heap); the_block != tail; 5e5c4: b5c9 cmpal %a1,%a2 <== NOT EXECUTED 5e5c6: 66e2 bnes 5e5aa <_Heap_Get_free_information+0x1e> <== NOT EXECUTED info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } } 5e5c8: 245f moveal %sp@+,%a2 <== NOT EXECUTED 5e5ca: 4e5e unlk %fp <== NOT EXECUTED 5e5cc: 4e75 rts <== NOT EXECUTED ... 0006738c <_Heap_Get_information>: Heap_Get_information_status _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { 6738c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 67390: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 67394: 2f02 movel %d2,%sp@- <== NOT EXECUTED 67396: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED Heap_Block *the_block = the_heap->start; Heap_Block *const end = the_heap->final; 6739a: 2428 0024 movel %a0@(36),%d2 <== NOT EXECUTED _HAssert(the_block->prev_size == HEAP_PREV_USED); _HAssert(_Heap_Is_prev_used(the_block)); the_info->Free.number = 0; 6739e: 4291 clrl %a1@ <== NOT EXECUTED Heap_Get_information_status _Heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { Heap_Block *the_block = the_heap->start; 673a0: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED _HAssert(the_block->prev_size == HEAP_PREV_USED); _HAssert(_Heap_Is_prev_used(the_block)); the_info->Free.number = 0; the_info->Free.total = 0; 673a4: 42a9 0008 clrl %a1@(8) <== NOT EXECUTED the_info->Free.largest = 0; 673a8: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED the_info->Used.number = 0; 673ac: 42a9 000c clrl %a1@(12) <== NOT EXECUTED the_info->Used.total = 0; 673b0: 42a9 0014 clrl %a1@(20) <== NOT EXECUTED the_info->Used.largest = 0; 673b4: 42a9 0010 clrl %a1@(16) <== NOT EXECUTED 673b8: 603c bras 673f6 <_Heap_Get_information+0x6a> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 673ba: 72fe moveq #-2,%d1 <== NOT EXECUTED 673bc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 673c0: d1c1 addal %d1,%a0 <== NOT EXECUTED while ( the_block != end ) { uint32_t const the_size = _Heap_Block_size(the_block); Heap_Block *const next_block = _Heap_Block_at(the_block, the_size); if ( _Heap_Is_prev_used(next_block) ) { 673c2: 7001 moveq #1,%d0 <== NOT EXECUTED 673c4: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED 673c8: 6714 beqs 673de <_Heap_Get_information+0x52> <== NOT EXECUTED the_info->Used.number++; 673ca: 52a9 000c addql #1,%a1@(12) <== NOT EXECUTED the_info->Used.total += the_size; 673ce: d3a9 0014 addl %d1,%a1@(20) <== NOT EXECUTED if ( the_info->Used.largest < the_size ) 673d2: b2a9 0010 cmpl %a1@(16),%d1 <== NOT EXECUTED 673d6: 631e blss 673f6 <_Heap_Get_information+0x6a> <== NOT EXECUTED the_info->Used.largest = the_size; 673d8: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 673dc: 6018 bras 673f6 <_Heap_Get_information+0x6a> <== NOT EXECUTED } else { the_info->Free.number++; 673de: 5291 addql #1,%a1@ <== NOT EXECUTED the_info->Free.total += the_size; 673e0: d3a9 0008 addl %d1,%a1@(8) <== NOT EXECUTED if ( the_info->Free.largest < the_size ) 673e4: b2a9 0004 cmpl %a1@(4),%d1 <== NOT EXECUTED 673e8: 6304 blss 673ee <_Heap_Get_information+0x62> <== NOT EXECUTED the_info->Free.largest = the_size; 673ea: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED if ( the_size != next_block->prev_size ) 673ee: b290 cmpl %a0@,%d1 <== NOT EXECUTED 673f0: 6704 beqs 673f6 <_Heap_Get_information+0x6a> <== NOT EXECUTED 673f2: 7001 moveq #1,%d0 <== NOT EXECUTED 673f4: 600a bras 67400 <_Heap_Get_information+0x74> <== NOT EXECUTED the_info->Free.largest = 0; the_info->Used.number = 0; the_info->Used.total = 0; the_info->Used.largest = 0; while ( the_block != end ) { 673f6: b488 cmpl %a0,%d2 <== NOT EXECUTED 673f8: 66c0 bnes 673ba <_Heap_Get_information+0x2e> <== NOT EXECUTED } /* Handle the last dummy block. Don't consider this block to be "used" as client never allocated it. Make 'Used.total' contain this blocks' overhead though. */ the_info->Used.total += HEAP_OVERHEAD; 673fa: 4280 clrl %d0 <== NOT EXECUTED 673fc: 50a9 0014 addql #8,%a1@(20) <== NOT EXECUTED return HEAP_GET_INFORMATION_SUCCESSFUL; } 67400: 241f movel %sp@+,%d2 <== NOT EXECUTED 67402: 4e5e unlk %fp <== NOT EXECUTED 67404: 4e75 rts <== NOT EXECUTED ... 00045e28 <_Heap_Initialize>: Heap_Control *the_heap, void *starting_address, size_t size, uint32_t page_size ) { 45e28: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45e2c: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 45e30: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 45e34: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 45e38: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 45e3c: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED _H_uptr_t start; _H_uptr_t aligned_start; uint32_t overhead; Heap_Statistics *const stats = &the_heap->stats; if (page_size == 0) 45e40: 6606 bnes 45e48 <_Heap_Initialize+0x20> <== NOT EXECUTED 45e42: 143c 0004 moveb #4,%d2 <== NOT EXECUTED 45e46: 600a bras 45e52 <_Heap_Initialize+0x2a> <== NOT EXECUTED uint32_t alignment ) { uint32_t v = *value; uint32_t a = alignment; uint32_t r = v % a; 45e48: 7003 moveq #3,%d0 <== NOT EXECUTED 45e4a: c082 andl %d2,%d0 <== NOT EXECUTED *value = r ? v - r + a : v; 45e4c: 6704 beqs 45e52 <_Heap_Initialize+0x2a> <== NOT EXECUTED 45e4e: 5882 addql #4,%d2 <== NOT EXECUTED 45e50: 9480 subl %d0,%d2 <== NOT EXECUTED /* Calculate aligned_start so that aligned_start + HEAP_BLOCK_USER_OFFSET (value of user pointer) is aligned on 'page_size' boundary. Make sure resulting 'aligned_start' is not below 'starting_address'. */ start = _H_p2u(starting_address); aligned_start = start + HEAP_BLOCK_USER_OFFSET; 45e52: 2004 movel %d4,%d0 <== NOT EXECUTED 45e54: 5080 addql #8,%d0 <== NOT EXECUTED uint32_t alignment ) { _H_uptr_t v = *value; uint32_t a = alignment; _H_uptr_t r = v % a; 45e56: 2a00 movel %d0,%d5 <== NOT EXECUTED 45e58: 4c42 5001 remul %d2,%d1,%d5 <== NOT EXECUTED *value = r ? v - r + a : v; 45e5c: 4a81 tstl %d1 <== NOT EXECUTED 45e5e: 6704 beqs 45e64 <_Heap_Initialize+0x3c> <== NOT EXECUTED 45e60: d082 addl %d2,%d0 <== NOT EXECUTED 45e62: 9081 subl %d1,%d0 <== NOT EXECUTED _Heap_Align_up_uptr ( &aligned_start, page_size ); aligned_start -= HEAP_BLOCK_USER_OFFSET; 45e64: 2440 moveal %d0,%a2 <== NOT EXECUTED uint32_t alignment ) { uint32_t v = *value; uint32_t a = alignment; uint32_t r = v % a; 45e66: 7210 moveq #16,%d1 <== NOT EXECUTED 45e68: 518a subql #8,%a2 <== NOT EXECUTED 45e6a: 4c42 1000 remul %d2,%d0,%d1 <== NOT EXECUTED *value = r ? v - r + a : v; 45e6e: 4a80 tstl %d0 <== NOT EXECUTED 45e70: 6604 bnes 45e76 <_Heap_Initialize+0x4e> <== NOT EXECUTED 45e72: 7210 moveq #16,%d1 <== NOT EXECUTED 45e74: 600a bras 45e80 <_Heap_Initialize+0x58> <== NOT EXECUTED 45e76: 2202 movel %d2,%d1 <== NOT EXECUTED 45e78: 0681 0000 0010 addil #16,%d1 <== NOT EXECUTED 45e7e: 9280 subl %d0,%d1 <== NOT EXECUTED /* Calculate 'the_size' -- size of the first block so that there is enough space at the end for the permanent last block. It is equal to 'size' minus total overhead aligned down to the nearest multiple of 'page_size'. */ overhead = HEAP_OVERHEAD + (aligned_start - start); 45e80: 7008 moveq #8,%d0 <== NOT EXECUTED 45e82: 9084 subl %d4,%d0 <== NOT EXECUTED 45e84: d08a addl %a2,%d0 <== NOT EXECUTED 45e86: 2341 0014 movel %d1,%a1@(20) <== NOT EXECUTED if ( size < overhead ) 45e8a: b083 cmpl %d3,%d0 <== NOT EXECUTED 45e8c: 6200 0096 bhiw 45f24 <_Heap_Initialize+0xfc> <== NOT EXECUTED return 0; /* Too small area for the heap */ the_size = size - overhead; 45e90: 2203 movel %d3,%d1 <== NOT EXECUTED 45e92: 9280 subl %d0,%d1 <== NOT EXECUTED 45e94: 2001 movel %d1,%d0 <== NOT EXECUTED uint32_t *value, uint32_t alignment ) { uint32_t v = *value; *value = v - (v % alignment); 45e96: 2a01 movel %d1,%d5 <== NOT EXECUTED 45e98: 4c42 5001 remul %d2,%d1,%d5 <== NOT EXECUTED 45e9c: 9081 subl %d1,%d0 <== NOT EXECUTED 45e9e: 2200 movel %d0,%d1 <== NOT EXECUTED _Heap_Align_down ( &the_size, page_size ); if ( the_size == 0 ) 45ea0: 6700 0082 beqw 45f24 <_Heap_Initialize+0xfc> <== NOT EXECUTED return 0; /* Too small area for the heap */ the_heap->page_size = page_size; 45ea4: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( void *base, uint32_t offset ) { return (void *)((char *)base + offset); 45ea8: 41f2 0800 lea %a2@(00000000,%d0:l),%a0 <== NOT EXECUTED the_heap->end = starting_address + size; the_block = (Heap_Block *) aligned_start; the_block->prev_size = page_size; the_block->size = the_size | HEAP_PREV_USED; 45eac: 7001 moveq #1,%d0 <== NOT EXECUTED 45eae: 8081 orl %d1,%d0 <== NOT EXECUTED 45eb0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED stats->max_search = 0; stats->allocs = 0; stats->searches = 0; stats->frees = 0; stats->resizes = 0; stats->instance = instance++; 45eb4: 2039 0005 7628 movel 57628 ,%d0 <== NOT EXECUTED the_heap->begin = starting_address; the_heap->end = starting_address + size; the_block = (Heap_Block *) aligned_start; the_block->prev_size = page_size; 45eba: 2482 movel %d2,%a2@ <== NOT EXECUTED _HAssert(_Heap_Is_aligned_ptr(_Heap_User_area(the_block), page_size)); the_block = _Heap_Block_at( the_block, the_size ); the_heap->final = the_block; /* Permanent final block of the heap */ the_block->prev_size = the_size; /* Previous block is free */ the_block->size = page_size; 45ebc: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED stats->size = size; stats->free_size = the_size; stats->min_free_size = the_size; stats->free_blocks = 1; 45ec0: 7401 moveq #1,%d2 <== NOT EXECUTED _HAssert(_Heap_Is_aligned(the_heap->min_block_size, page_size)); _HAssert(_Heap_Is_aligned_ptr(_Heap_User_area(the_block), page_size)); the_block = _Heap_Block_at( the_block, the_size ); the_heap->final = the_block; /* Permanent final block of the heap */ the_block->prev_size = the_size; /* Previous block is free */ 45ec2: 2081 movel %d1,%a0@ <== NOT EXECUTED the_block = (Heap_Block *) aligned_start; the_block->prev_size = page_size; the_block->size = the_size | HEAP_PREV_USED; the_block->next = _Heap_Tail( the_heap ); 45ec4: 2549 0008 movel %a1,%a2@(8) <== NOT EXECUTED the_block->prev = _Heap_Head( the_heap ); 45ec8: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED the_block->size = page_size; stats->size = size; stats->free_size = the_size; stats->min_free_size = the_size; stats->free_blocks = 1; 45ecc: 2342 0038 movel %d2,%a1@(56) <== NOT EXECUTED stats->max_free_blocks = 1; 45ed0: 2342 003c movel %d2,%a1@(60) <== NOT EXECUTED stats->searches = 0; stats->frees = 0; stats->resizes = 0; stats->instance = instance++; return ( the_size - HEAP_BLOCK_USED_OVERHEAD ); 45ed4: 2401 movel %d1,%d2 <== NOT EXECUTED 45ed6: 5982 subql #4,%d2 <== NOT EXECUTED the_block = _Heap_Block_at( the_block, the_size ); the_heap->final = the_block; /* Permanent final block of the heap */ the_block->prev_size = the_size; /* Previous block is free */ the_block->size = page_size; stats->size = size; 45ed8: 2343 002c movel %d3,%a1@(44) <== NOT EXECUTED if ( the_size == 0 ) return 0; /* Too small area for the heap */ the_heap->page_size = page_size; the_heap->begin = starting_address; the_heap->end = starting_address + size; 45edc: d684 addl %d4,%d3 <== NOT EXECUTED stats->max_search = 0; stats->allocs = 0; stats->searches = 0; stats->frees = 0; stats->resizes = 0; stats->instance = instance++; 45ede: 2340 0028 movel %d0,%a1@(40) <== NOT EXECUTED 45ee2: 5280 addql #1,%d0 <== NOT EXECUTED the_heap->final = the_block; /* Permanent final block of the heap */ the_block->prev_size = the_size; /* Previous block is free */ the_block->size = page_size; stats->size = size; stats->free_size = the_size; 45ee4: 2341 0030 movel %d1,%a1@(48) <== NOT EXECUTED stats->min_free_size = the_size; 45ee8: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED stats->free_blocks = 1; stats->max_free_blocks = 1; stats->used_blocks = 0; 45eec: 42a9 0040 clrl %a1@(64) <== NOT EXECUTED stats->max_search = 0; 45ef0: 42a9 0044 clrl %a1@(68) <== NOT EXECUTED stats->allocs = 0; 45ef4: 42a9 0048 clrl %a1@(72) <== NOT EXECUTED stats->searches = 0; 45ef8: 42a9 004c clrl %a1@(76) <== NOT EXECUTED stats->frees = 0; 45efc: 42a9 0050 clrl %a1@(80) <== NOT EXECUTED stats->resizes = 0; 45f00: 42a9 0054 clrl %a1@(84) <== NOT EXECUTED if ( the_size == 0 ) return 0; /* Too small area for the heap */ the_heap->page_size = page_size; the_heap->begin = starting_address; the_heap->end = starting_address + size; 45f04: 2343 001c movel %d3,%a1@(28) <== NOT EXECUTED stats->max_search = 0; stats->allocs = 0; stats->searches = 0; stats->frees = 0; stats->resizes = 0; stats->instance = instance++; 45f08: 23c0 0005 7628 movel %d0,57628 <== NOT EXECUTED _Heap_Align_down ( &the_size, page_size ); if ( the_size == 0 ) return 0; /* Too small area for the heap */ the_heap->page_size = page_size; the_heap->begin = starting_address; 45f0e: 2344 0018 movel %d4,%a1@(24) <== NOT EXECUTED the_block->prev_size = page_size; the_block->size = the_size | HEAP_PREV_USED; the_block->next = _Heap_Tail( the_heap ); the_block->prev = _Heap_Head( the_heap ); _Heap_Head(the_heap)->next = the_block; 45f12: 234a 0008 movel %a2,%a1@(8) <== NOT EXECUTED _Heap_Tail(the_heap)->prev = the_block; 45f16: 234a 000c movel %a2,%a1@(12) <== NOT EXECUTED the_heap->start = the_block; 45f1a: 234a 0020 movel %a2,%a1@(32) <== NOT EXECUTED _HAssert(_Heap_Is_aligned(the_heap->page_size, CPU_ALIGNMENT)); _HAssert(_Heap_Is_aligned(the_heap->min_block_size, page_size)); _HAssert(_Heap_Is_aligned_ptr(_Heap_User_area(the_block), page_size)); the_block = _Heap_Block_at( the_block, the_size ); the_heap->final = the_block; /* Permanent final block of the heap */ 45f1e: 2348 0024 movel %a0,%a1@(36) <== NOT EXECUTED 45f22: 6002 bras 45f26 <_Heap_Initialize+0xfe> <== NOT EXECUTED stats->searches = 0; stats->frees = 0; stats->resizes = 0; stats->instance = instance++; return ( the_size - HEAP_BLOCK_USED_OVERHEAD ); 45f24: 4282 clrl %d2 <== NOT EXECUTED } 45f26: 2002 movel %d2,%d0 <== NOT EXECUTED 45f28: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 45f2c: 4e5e unlk %fp <== NOT EXECUTED 45f2e: 4e75 rts 00054648 <_Heap_Resize_block>: void *starting_address, size_t size, uint32_t *old_mem_size, uint32_t *avail_mem_size ) { 54648: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 5464c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 54650: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED uint32_t prev_used_flag; Heap_Statistics *const stats = &the_heap->stats; uint32_t const min_block_size = the_heap->min_block_size; uint32_t const page_size = the_heap->page_size; *old_mem_size = 0; 54654: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED Heap_Block *next_next_block; uint32_t old_block_size; uint32_t old_user_size; uint32_t prev_used_flag; Heap_Statistics *const stats = &the_heap->stats; uint32_t const min_block_size = the_heap->min_block_size; 54658: 2a2b 0014 movel %a3@(20),%d5 <== NOT EXECUTED uint32_t const page_size = the_heap->page_size; 5465c: 242b 0010 movel %a3@(16),%d2 <== NOT EXECUTED *old_mem_size = 0; *avail_mem_size = 0; 54660: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED uint32_t prev_used_flag; Heap_Statistics *const stats = &the_heap->stats; uint32_t const min_block_size = the_heap->min_block_size; uint32_t const page_size = the_heap->page_size; *old_mem_size = 0; 54664: 4290 clrl %a0@ <== NOT EXECUTED void *starting_address, size_t size, uint32_t *old_mem_size, uint32_t *avail_mem_size ) { 54666: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED Heap_Statistics *const stats = &the_heap->stats; uint32_t const min_block_size = the_heap->min_block_size; uint32_t const page_size = the_heap->page_size; *old_mem_size = 0; *avail_mem_size = 0; 5466a: 4294 clrl %a4@ <== NOT EXECUTED /* The address passed could be greater than the block address plus * HEAP_BLOCK_USER_OFFSET as _Heap_Allocate_aligned() may produce such user * pointers. To get rid of this offset we need to align the address down * to the nearest 'page_size' boundary. */ _Heap_Align_down_uptr ( &addr, the_heap->page_size ); *the_block = (Heap_Block *)(addr - HEAP_BLOCK_USER_OFFSET); 5466c: 2444 moveal %d4,%a2 <== NOT EXECUTED 5466e: 2604 movel %d4,%d3 <== NOT EXECUTED void *starting_address, size_t size, uint32_t *old_mem_size, uint32_t *avail_mem_size ) { 54670: 2a6e 0010 moveal %fp@(16),%a5 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in ( Heap_Control *the_heap, Heap_Block *the_block ) { return _Addresses_Is_in_range( the_block, the_heap->start, the_heap->final ); 54674: 206b 0024 moveal %a3@(36),%a0 <== NOT EXECUTED 54678: 222b 0020 movel %a3@(32),%d1 <== NOT EXECUTED /* The address passed could be greater than the block address plus * HEAP_BLOCK_USER_OFFSET as _Heap_Allocate_aligned() may produce such user * pointers. To get rid of this offset we need to align the address down * to the nearest 'page_size' boundary. */ _Heap_Align_down_uptr ( &addr, the_heap->page_size ); *the_block = (Heap_Block *)(addr - HEAP_BLOCK_USER_OFFSET); 5467c: 518a subql #8,%a2 <== NOT EXECUTED 5467e: 4c6b 3000 0010 remul %a3@(16),%d0,%d3 <== NOT EXECUTED 54684: 95c0 subal %d0,%a2 <== NOT EXECUTED 54686: b28a cmpl %a2,%d1 <== NOT EXECUTED 54688: 6200 0156 bhiw 547e0 <_Heap_Resize_block+0x198> <== NOT EXECUTED 5468c: b1ca cmpal %a2,%a0 <== NOT EXECUTED 5468e: 54c0 scc %d0 <== NOT EXECUTED 54690: 49c0 extbl %d0 <== NOT EXECUTED 54692: 4480 negl %d0 <== NOT EXECUTED *old_mem_size = 0; *avail_mem_size = 0; _Heap_Start_of_block(the_heap, starting_address, &the_block); _HAssert(_Heap_Is_block_in(the_heap, the_block)); if (!_Heap_Is_block_in(the_heap, the_block)) 54694: 4a00 tstb %d0 <== NOT EXECUTED 54696: 6700 0148 beqw 547e0 <_Heap_Resize_block+0x198> <== NOT EXECUTED return HEAP_RESIZE_FATAL_ERROR; prev_used_flag = the_block->size & HEAP_PREV_USED; 5469a: 2e2a 0004 movel %a2@(4),%d7 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 5469e: 7cfe moveq #-2,%d6 <== NOT EXECUTED 546a0: cc87 andl %d7,%d6 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 546a2: 43f2 6800 lea %a2@(00000000,%d6:l),%a1 <== NOT EXECUTED 546a6: b289 cmpl %a1,%d1 <== NOT EXECUTED 546a8: 6200 0136 bhiw 547e0 <_Heap_Resize_block+0x198> <== NOT EXECUTED 546ac: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 546ae: 54c0 scc %d0 <== NOT EXECUTED 546b0: 49c0 extbl %d0 <== NOT EXECUTED 546b2: 4480 negl %d0 <== NOT EXECUTED old_block_size = _Heap_Block_size(the_block); next_block = _Heap_Block_at(the_block, old_block_size); _HAssert(_Heap_Is_block_in(the_heap, next_block)); _HAssert(_Heap_Is_prev_used(next_block)); if ( !_Heap_Is_block_in(the_heap, next_block) || 546b4: 4a00 tstb %d0 <== NOT EXECUTED 546b6: 6700 0128 beqw 547e0 <_Heap_Resize_block+0x198> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used ( Heap_Block *the_block ) { return (the_block->size & HEAP_PREV_USED); 546ba: 2229 0004 movel %a1@(4),%d1 <== NOT EXECUTED 546be: 7001 moveq #1,%d0 <== NOT EXECUTED 546c0: c081 andl %d1,%d0 <== NOT EXECUTED 546c2: 4a00 tstb %d0 <== NOT EXECUTED 546c4: 6700 011a beqw 547e0 <_Heap_Resize_block+0x198> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 546c8: 76fe moveq #-2,%d3 <== NOT EXECUTED 546ca: c681 andl %d1,%d3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 546cc: 49f1 3800 lea %a1@(00000000,%d3:l),%a4 <== NOT EXECUTED !_Heap_Is_prev_used(next_block)) return HEAP_RESIZE_FATAL_ERROR; next_block_size = _Heap_Block_size(next_block); next_next_block = _Heap_Block_at(next_block, next_block_size); next_is_used = (next_block == the_heap->final) || 546d0: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 546d2: 6604 bnes 546d8 <_Heap_Resize_block+0x90> <== NOT EXECUTED 546d4: 7201 moveq #1,%d1 <== NOT EXECUTED 546d6: 6006 bras 546de <_Heap_Resize_block+0x96> <== NOT EXECUTED 546d8: 7201 moveq #1,%d1 <== NOT EXECUTED 546da: c2ac 0004 andl %a4@(4),%d1 <== NOT EXECUTED _Heap_Is_prev_used(next_next_block); /* See _Heap_Size_of_user_area() source for explanations */ old_user_size = _Addresses_Subtract(next_block, starting_address) 546de: 2049 moveal %a1,%a0 <== NOT EXECUTED 546e0: 91c4 subal %d4,%a0 <== NOT EXECUTED 546e2: 2008 movel %a0,%d0 <== NOT EXECUTED + HEAP_BLOCK_HEADER_OFFSET; *old_mem_size = old_user_size; 546e4: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED next_next_block = _Heap_Block_at(next_block, next_block_size); next_is_used = (next_block == the_heap->final) || _Heap_Is_prev_used(next_next_block); /* See _Heap_Size_of_user_area() source for explanations */ old_user_size = _Addresses_Subtract(next_block, starting_address) 546e8: 5880 addql #4,%d0 <== NOT EXECUTED _Heap_Start_of_block(the_heap, starting_address, &the_block); _HAssert(_Heap_Is_block_in(the_heap, the_block)); if (!_Heap_Is_block_in(the_heap, the_block)) return HEAP_RESIZE_FATAL_ERROR; prev_used_flag = the_block->size & HEAP_PREV_USED; 546ea: 7801 moveq #1,%d4 <== NOT EXECUTED /* See _Heap_Size_of_user_area() source for explanations */ old_user_size = _Addresses_Subtract(next_block, starting_address) + HEAP_BLOCK_HEADER_OFFSET; *old_mem_size = old_user_size; 546ec: 2080 movel %d0,%a0@ <== NOT EXECUTED _Heap_Start_of_block(the_heap, starting_address, &the_block); _HAssert(_Heap_Is_block_in(the_heap, the_block)); if (!_Heap_Is_block_in(the_heap, the_block)) return HEAP_RESIZE_FATAL_ERROR; prev_used_flag = the_block->size & HEAP_PREV_USED; 546ee: c887 andl %d7,%d4 <== NOT EXECUTED !_Heap_Is_prev_used(next_block)) return HEAP_RESIZE_FATAL_ERROR; next_block_size = _Heap_Block_size(next_block); next_next_block = _Heap_Block_at(next_block, next_block_size); next_is_used = (next_block == the_heap->final) || 546f0: 1d41 ffff moveb %d1,%fp@(-1) <== NOT EXECUTED old_user_size = _Addresses_Subtract(next_block, starting_address) + HEAP_BLOCK_HEADER_OFFSET; *old_mem_size = old_user_size; if (size > old_user_size) { 546f4: b08d cmpl %a5,%d0 <== NOT EXECUTED 546f6: 6446 bccs 5473e <_Heap_Resize_block+0xf6> <== NOT EXECUTED /* Need to extend the block: allocate part of the next block and then merge 'the_block' and allocated block together. */ if (next_is_used) /* Next block is in use, -- no way to extend */ 546f8: 4a01 tstb %d1 <== NOT EXECUTED 546fa: 6600 00e8 bnew 547e4 <_Heap_Resize_block+0x19c> <== NOT EXECUTED return HEAP_RESIZE_UNSATISFIED; else { uint32_t add_block_size = size - old_user_size; 546fe: 9bc0 subal %d0,%a5 <== NOT EXECUTED uint32_t alignment ) { uint32_t v = *value; uint32_t a = alignment; uint32_t r = v % a; 54700: 2e0d movel %a5,%d7 <== NOT EXECUTED 54702: 200d movel %a5,%d0 <== NOT EXECUTED 54704: 4c42 7001 remul %d2,%d1,%d7 <== NOT EXECUTED *value = r ? v - r + a : v; 54708: 4a81 tstl %d1 <== NOT EXECUTED 5470a: 6704 beqs 54710 <_Heap_Resize_block+0xc8> <== NOT EXECUTED 5470c: d082 addl %d2,%d0 <== NOT EXECUTED 5470e: 9081 subl %d1,%d0 <== NOT EXECUTED 54710: ba80 cmpl %d0,%d5 <== NOT EXECUTED 54712: 6302 blss 54716 <_Heap_Resize_block+0xce> <== NOT EXECUTED 54714: 2005 movel %d5,%d0 <== NOT EXECUTED _Heap_Align_up(&add_block_size, page_size); if (add_block_size < min_block_size) add_block_size = min_block_size; if (add_block_size > next_block_size) 54716: b680 cmpl %d0,%d3 <== NOT EXECUTED 54718: 6500 00ca bcsw 547e4 <_Heap_Resize_block+0x19c> <== NOT EXECUTED return HEAP_RESIZE_UNSATISFIED; /* Next block is too small or none. */ add_block_size = 5471c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5471e: 2f09 movel %a1,%sp@- <== NOT EXECUTED 54720: 2f0b movel %a3,%sp@- <== NOT EXECUTED 54722: 4eb9 0004 5f6e jsr 45f6e <_Heap_Block_allocate> <== NOT EXECUTED _Heap_Block_allocate(the_heap, next_block, add_block_size); /* Merge two subsequent blocks */ the_block->size = (old_block_size + add_block_size) | prev_used_flag; 54728: d086 addl %d6,%d0 <== NOT EXECUTED 5472a: 8084 orl %d4,%d0 <== NOT EXECUTED 5472c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED --stats->used_blocks; 54730: 53ab 0040 subql #1,%a3@(64) <== NOT EXECUTED 54734: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5473a: 6000 009c braw 547d8 <_Heap_Resize_block+0x190> <== NOT EXECUTED } } else { /* Calculate how much memory we could free */ uint32_t free_block_size = old_user_size - size; 5473e: 908d subl %a5,%d0 <== NOT EXECUTED uint32_t *value, uint32_t alignment ) { uint32_t v = *value; *value = v - (v % alignment); 54740: 2200 movel %d0,%d1 <== NOT EXECUTED 54742: 4c42 1007 remul %d2,%d7,%d1 <== NOT EXECUTED 54746: 2400 movel %d0,%d2 <== NOT EXECUTED 54748: 9487 subl %d7,%d2 <== NOT EXECUTED _Heap_Align_down(&free_block_size, page_size); if (free_block_size > 0) { 5474a: 6700 008c beqw 547d8 <_Heap_Resize_block+0x190> <== NOT EXECUTED /* To free some memory the block should be shortened so that it can can hold 'size' user bytes and still remain not shorter than 'min_block_size'. */ uint32_t new_block_size = old_block_size - free_block_size; 5474e: 2206 movel %d6,%d1 <== NOT EXECUTED 54750: 9282 subl %d2,%d1 <== NOT EXECUTED if (new_block_size < min_block_size) { 54752: ba81 cmpl %d1,%d5 <== NOT EXECUTED 54754: 630a blss 54760 <_Heap_Resize_block+0x118> <== NOT EXECUTED uint32_t delta = min_block_size - new_block_size; 54756: 2005 movel %d5,%d0 <== NOT EXECUTED 54758: 9081 subl %d1,%d0 <== NOT EXECUTED _HAssert(free_block_size >= delta); free_block_size -= delta; 5475a: 9480 subl %d0,%d2 <== NOT EXECUTED if (free_block_size == 0) { 5475c: 677a beqs 547d8 <_Heap_Resize_block+0x190> <== NOT EXECUTED ++stats->resizes; return HEAP_RESIZE_SUCCESSFUL; } new_block_size += delta; 5475e: d280 addl %d0,%d1 <== NOT EXECUTED _HAssert(new_block_size >= min_block_size); _HAssert(new_block_size + free_block_size == old_block_size); _HAssert(_Heap_Is_aligned(new_block_size, page_size)); _HAssert(_Heap_Is_aligned(free_block_size, page_size)); if (!next_is_used) { 54760: 4a2e ffff tstb %fp@(-1) <== NOT EXECUTED 54764: 663e bnes 547a4 <_Heap_Resize_block+0x15c> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 54766: 41f2 1800 lea %a2@(00000000,%d1:l),%a0 <== NOT EXECUTED Heap_Block *const new_next_block = _Heap_Block_at(the_block, new_block_size); uint32_t const new_next_block_size = next_block_size + free_block_size; _HAssert(_Heap_Is_block_in(the_heap, next_next_block)); the_block->size = new_block_size | prev_used_flag; 5476a: 8284 orl %d4,%d1 <== NOT EXECUTED 5476c: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED Heap_Block *new_block ) { Heap_Block *block = old_block; Heap_Block *next = block->next; Heap_Block *prev = block->prev; 54770: 2469 000c moveal %a1@(12),%a2 <== NOT EXECUTED if (!next_is_used) { /* Extend the next block to the low addresses by 'free_block_size' */ Heap_Block *const new_next_block = _Heap_Block_at(the_block, new_block_size); uint32_t const new_next_block_size = next_block_size + free_block_size; 54774: 2002 movel %d2,%d0 <== NOT EXECUTED 54776: d083 addl %d3,%d0 <== NOT EXECUTED _HAssert(_Heap_Is_block_in(the_heap, next_next_block)); the_block->size = new_block_size | prev_used_flag; new_next_block->size = new_next_block_size | HEAP_PREV_USED; 54778: 7201 moveq #1,%d1 <== NOT EXECUTED 5477a: 8280 orl %d0,%d1 <== NOT EXECUTED next_next_block->prev_size = new_next_block_size; 5477c: 2880 movel %d0,%a4@ <== NOT EXECUTED Heap_Block *old_block, Heap_Block *new_block ) { Heap_Block *block = old_block; Heap_Block *next = block->next; 5477e: 2269 0008 moveal %a1@(8),%a1 <== NOT EXECUTED _Heap_Block_at(the_block, new_block_size); uint32_t const new_next_block_size = next_block_size + free_block_size; _HAssert(_Heap_Is_block_in(the_heap, next_next_block)); the_block->size = new_block_size | prev_used_flag; new_next_block->size = new_next_block_size | HEAP_PREV_USED; 54782: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED next_next_block->prev_size = new_next_block_size; _Heap_Block_replace(next_block, new_next_block); the_heap->stats.free_size += free_block_size; 54786: d5ab 0030 addl %d2,%a3@(48) <== NOT EXECUTED *avail_mem_size = new_next_block_size - HEAP_BLOCK_USED_OVERHEAD; 5478a: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED Heap_Block *prev = block->prev; block = new_block; block->next = next; 5478e: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED 54792: 5980 subql #4,%d0 <== NOT EXECUTED block->prev = prev; 54794: 214a 000c movel %a2,%a0@(12) <== NOT EXECUTED 54798: 2880 movel %d0,%a4@ <== NOT EXECUTED next->prev = prev->next = block; 5479a: 2348 000c movel %a0,%a1@(12) <== NOT EXECUTED 5479e: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED 547a2: 6034 bras 547d8 <_Heap_Resize_block+0x190> <== NOT EXECUTED } else if (free_block_size >= min_block_size) { 547a4: ba82 cmpl %d2,%d5 <== NOT EXECUTED 547a6: 6230 bhis 547d8 <_Heap_Resize_block+0x190> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 547a8: 41f2 1800 lea %a2@(00000000,%d1:l),%a0 <== NOT EXECUTED /* Split the block into 2 used parts, then free the second one. */ the_block->size = new_block_size | prev_used_flag; 547ac: 8284 orl %d4,%d1 <== NOT EXECUTED 547ae: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED next_block = _Heap_Block_at(the_block, new_block_size); next_block->size = free_block_size | HEAP_PREV_USED; 547b2: 7001 moveq #1,%d0 <== NOT EXECUTED ++stats->used_blocks; /* We have created used block */ --stats->frees; /* Don't count next call in stats */ _Heap_Free(the_heap, _Heap_User_area(next_block)); 547b4: 4868 0008 pea %a0@(8) <== NOT EXECUTED } else if (free_block_size >= min_block_size) { /* Split the block into 2 used parts, then free the second one. */ the_block->size = new_block_size | prev_used_flag; next_block = _Heap_Block_at(the_block, new_block_size); next_block->size = free_block_size | HEAP_PREV_USED; 547b8: 8082 orl %d2,%d0 <== NOT EXECUTED ++stats->used_blocks; /* We have created used block */ --stats->frees; /* Don't count next call in stats */ _Heap_Free(the_heap, _Heap_User_area(next_block)); *avail_mem_size = free_block_size - HEAP_BLOCK_USED_OVERHEAD; 547ba: 5982 subql #4,%d2 <== NOT EXECUTED } else if (free_block_size >= min_block_size) { /* Split the block into 2 used parts, then free the second one. */ the_block->size = new_block_size | prev_used_flag; next_block = _Heap_Block_at(the_block, new_block_size); next_block->size = free_block_size | HEAP_PREV_USED; 547bc: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED ++stats->used_blocks; /* We have created used block */ 547c0: 52ab 0040 addql #1,%a3@(64) <== NOT EXECUTED --stats->frees; /* Don't count next call in stats */ 547c4: 53ab 0050 subql #1,%a3@(80) <== NOT EXECUTED _Heap_Free(the_heap, _Heap_User_area(next_block)); 547c8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 547ca: 4eb9 0004 a430 jsr 4a430 <_Heap_Free> <== NOT EXECUTED *avail_mem_size = free_block_size - HEAP_BLOCK_USED_OVERHEAD; 547d0: 206e 0018 moveal %fp@(24),%a0 <== NOT EXECUTED 547d4: 508f addql #8,%sp <== NOT EXECUTED 547d6: 2082 movel %d2,%a0@ <== NOT EXECUTED } } } ++stats->resizes; 547d8: 52ab 0054 addql #1,%a3@(84) <== NOT EXECUTED 547dc: 4280 clrl %d0 <== NOT EXECUTED 547de: 6006 bras 547e6 <_Heap_Resize_block+0x19e> <== NOT EXECUTED return HEAP_RESIZE_SUCCESSFUL; 547e0: 7002 moveq #2,%d0 <== NOT EXECUTED 547e2: 6002 bras 547e6 <_Heap_Resize_block+0x19e> <== NOT EXECUTED 547e4: 7001 moveq #1,%d0 <== NOT EXECUTED } 547e6: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED 547ec: 4e5e unlk %fp <== NOT EXECUTED 547ee: 4e75 rts 000547f0 <_Heap_Size_of_user_area>: bool _Heap_Size_of_user_area( Heap_Control *the_heap, void *starting_address, size_t *size ) { 547f0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 547f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 547f8: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 547fc: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED Heap_Block *the_block; Heap_Block *next_block; uint32_t the_size; if ( !_Addresses_Is_in_range( 54800: 2428 0024 movel %a0@(36),%d2 <== NOT EXECUTED 54804: 2228 0020 movel %a0@(32),%d1 <== NOT EXECUTED 54808: b283 cmpl %d3,%d1 <== NOT EXECUTED 5480a: 625c bhis 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED 5480c: b483 cmpl %d3,%d2 <== NOT EXECUTED 5480e: 54c0 scc %d0 <== NOT EXECUTED 54810: 49c0 extbl %d0 <== NOT EXECUTED 54812: 4480 negl %d0 <== NOT EXECUTED 54814: 4a00 tstb %d0 <== NOT EXECUTED 54816: 6750 beqs 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED /* The address passed could be greater than the block address plus * HEAP_BLOCK_USER_OFFSET as _Heap_Allocate_aligned() may produce such user * pointers. To get rid of this offset we need to align the address down * to the nearest 'page_size' boundary. */ _Heap_Align_down_uptr ( &addr, the_heap->page_size ); *the_block = (Heap_Block *)(addr - HEAP_BLOCK_USER_OFFSET); 54818: 2803 movel %d3,%d4 <== NOT EXECUTED 5481a: 4c68 4000 0010 remul %a0@(16),%d0,%d4 <== NOT EXECUTED 54820: 2043 moveal %d3,%a0 <== NOT EXECUTED 54822: 5188 subql #8,%a0 <== NOT EXECUTED 54824: 91c0 subal %d0,%a0 <== NOT EXECUTED 54826: b288 cmpl %a0,%d1 <== NOT EXECUTED 54828: 623e bhis 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED 5482a: b488 cmpl %a0,%d2 <== NOT EXECUTED 5482c: 54c0 scc %d0 <== NOT EXECUTED 5482e: 49c0 extbl %d0 <== NOT EXECUTED 54830: 4480 negl %d0 <== NOT EXECUTED return( FALSE ); _Heap_Start_of_block( the_heap, starting_address, &the_block ); _HAssert(_Heap_Is_block_in( the_heap, the_block )); if ( !_Heap_Is_block_in( the_heap, the_block ) ) 54832: 4a00 tstb %d0 <== NOT EXECUTED 54834: 6732 beqs 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 54836: 70fe moveq #-2,%d0 <== NOT EXECUTED 54838: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED 5483c: 43f0 0800 lea %a0@(00000000,%d0:l),%a1 <== NOT EXECUTED 54840: b289 cmpl %a1,%d1 <== NOT EXECUTED 54842: 6224 bhis 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED 54844: b489 cmpl %a1,%d2 <== NOT EXECUTED 54846: 54c0 scc %d0 <== NOT EXECUTED 54848: 49c0 extbl %d0 <== NOT EXECUTED 5484a: 4480 negl %d0 <== NOT EXECUTED the_size = _Heap_Block_size( the_block ); next_block = _Heap_Block_at( the_block, the_size ); _HAssert(_Heap_Is_block_in( the_heap, next_block )); _HAssert(_Heap_Is_prev_used( next_block )); if ( 5484c: 4a00 tstb %d0 <== NOT EXECUTED 5484e: 6718 beqs 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED 54850: 7001 moveq #1,%d0 <== NOT EXECUTED 54852: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED 54856: 4a00 tstb %d0 <== NOT EXECUTED 54858: 670e beqs 54868 <_Heap_Size_of_user_area+0x78> <== NOT EXECUTED and then add correction equal to the offset of the 'size' field of the 'Heap_Block' structure. The correction is due to the fact that 'prev_size' field of the next block is actually used as user accessible area of 'the_block'. */ *size = _Addresses_Subtract ( next_block, starting_address ) 5485a: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 5485e: 93c3 subal %d3,%a1 <== NOT EXECUTED 54860: 5889 addql #4,%a1 <== NOT EXECUTED 54862: 2089 movel %a1,%a0@ <== NOT EXECUTED 54864: 7001 moveq #1,%d0 <== NOT EXECUTED 54866: 6002 bras 5486a <_Heap_Size_of_user_area+0x7a> <== NOT EXECUTED + HEAP_BLOCK_HEADER_OFFSET; return( TRUE ); 54868: 4200 clrb %d0 <== NOT EXECUTED } 5486a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 5486e: 4e5e unlk %fp <== NOT EXECUTED 54870: 4e75 rts <== NOT EXECUTED ... 0004d560 <_Heap_Walk>: bool _Heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 4d560: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4d564: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED 4d568: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4d56c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED Heap_Block *the_block = the_heap->start; 4d570: 246c 0020 moveal %a4@(32),%a2 <== NOT EXECUTED Heap_Block *const end = the_heap->final; 4d574: 2c2c 0024 movel %a4@(36),%d6 <== NOT EXECUTED /* if ( !_System_state_Is_up( _System_state_Get() ) ) return TRUE; */ if (source < 0) 4d578: 4a84 tstl %d4 <== NOT EXECUTED 4d57a: 6c04 bges 4d580 <_Heap_Walk+0x20> <== NOT EXECUTED source = the_heap->stats.instance; 4d57c: 282c 0028 movel %a4@(40),%d4 <== NOT EXECUTED /* * Handle the 1st block */ if (!_Heap_Is_prev_used(the_block)) { 4d580: 7001 moveq #1,%d0 <== NOT EXECUTED 4d582: c0aa 0004 andl %a2@(4),%d0 <== NOT EXECUTED 4d586: 4a00 tstb %d0 <== NOT EXECUTED 4d588: 6704 beqs 4d58e <_Heap_Walk+0x2e> <== NOT EXECUTED 4d58a: 4282 clrl %d2 <== NOT EXECUTED 4d58c: 6012 bras 4d5a0 <_Heap_Walk+0x40> <== NOT EXECUTED printk("PASS: %d !HEAP_PREV_USED flag of 1st block isn't set\n", source); 4d58e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d590: 7401 moveq #1,%d2 <== NOT EXECUTED 4d592: 4879 0005 894a pea 5894a <_POSIX_Threads_Default_attributes+0x38> <== NOT EXECUTED 4d598: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d59e: 508f addql #8,%sp <== NOT EXECUTED error = 1; } if (the_block->prev_size != the_heap->page_size) { 4d5a0: 202c 0010 movel %a4@(16),%d0 <== NOT EXECUTED 4d5a4: b092 cmpl %a2@,%d0 <== NOT EXECUTED 4d5a6: 6700 0106 beqw 4d6ae <_Heap_Walk+0x14e> <== NOT EXECUTED printk("PASS: %d !prev_size of 1st block isn't page_size\n", source); 4d5aa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5ac: 7401 moveq #1,%d2 <== NOT EXECUTED 4d5ae: 4879 0005 8980 pea 58980 <_POSIX_Threads_Default_attributes+0x6e> <== NOT EXECUTED 4d5b4: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d5ba: 508f addql #8,%sp <== NOT EXECUTED 4d5bc: 6000 00f0 braw 4d6ae <_Heap_Walk+0x14e> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 4d5c0: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4d5c4: 7afe moveq #-2,%d5 <== NOT EXECUTED 4d5c6: ca83 andl %d3,%d5 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( void *base, uint32_t offset ) { return (Heap_Block *) _Addresses_Add_offset( base, offset ); 4d5c8: 47f2 5800 lea %a2@(00000000,%d5:l),%a3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in ( Heap_Control *the_heap, Heap_Block *the_block ) { return _Addresses_Is_in_range( the_block, the_heap->start, the_heap->final ); 4d5cc: 202c 0024 movel %a4@(36),%d0 <== NOT EXECUTED 4d5d0: b7ec 0020 cmpal %a4@(32),%a3 <== NOT EXECUTED 4d5d4: 650c bcss 4d5e2 <_Heap_Walk+0x82> <== NOT EXECUTED 4d5d6: b08b cmpl %a3,%d0 <== NOT EXECUTED 4d5d8: 54c0 scc %d0 <== NOT EXECUTED 4d5da: 49c0 extbl %d0 <== NOT EXECUTED 4d5dc: 4480 negl %d0 <== NOT EXECUTED printk(" prev_size %d", the_block->prev_size); else printk(" (prev_size) %d", the_block->prev_size); } if (!_Heap_Is_block_in(the_heap, next_block)) { 4d5de: 4a00 tstb %d0 <== NOT EXECUTED 4d5e0: 661a bnes 4d5fc <_Heap_Walk+0x9c> <== NOT EXECUTED if (do_dump) printk("\n"); printk("PASS: %d !block %p is out of heap\n", source, next_block); 4d5e2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d5e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5e6: 4879 0005 89b2 pea 589b2 <_POSIX_Threads_Default_attributes+0xa0> <== NOT EXECUTED 4d5ec: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d5f2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d5f8: 6000 00c2 braw 4d6bc <_Heap_Walk+0x15c> <== NOT EXECUTED error = 1; break; } if (!_Heap_Is_prev_used(next_block)) { 4d5fc: 7001 moveq #1,%d0 <== NOT EXECUTED 4d5fe: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED 4d602: 4a00 tstb %d0 <== NOT EXECUTED 4d604: 6666 bnes 4d66c <_Heap_Walk+0x10c> <== NOT EXECUTED if (do_dump) printk( " prev %p next %p", the_block->prev, the_block->next); if (_Heap_Block_size(the_block) != next_block->prev_size) { 4d606: ba93 cmpl %a3@,%d5 <== NOT EXECUTED 4d608: 670e beqs 4d618 <_Heap_Walk+0xb8> <== NOT EXECUTED if (do_dump) printk("\n"); printk("PASS: %d !front and back sizes don't match", source); 4d60a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d60c: 7401 moveq #1,%d2 <== NOT EXECUTED 4d60e: 4879 0005 89d5 pea 589d5 <_POSIX_Threads_Default_attributes+0xc3> <== NOT EXECUTED 4d614: 4e95 jsr %a5@ <== NOT EXECUTED 4d616: 508f addql #8,%sp <== NOT EXECUTED error = 1; } if (!prev_used) { 4d618: 7001 moveq #1,%d0 <== NOT EXECUTED 4d61a: c680 andl %d0,%d3 <== NOT EXECUTED 4d61c: 4a03 tstb %d3 <== NOT EXECUTED 4d61e: 661c bnes 4d63c <_Heap_Walk+0xdc> <== NOT EXECUTED if (do_dump || error) printk("\n"); 4d620: 4a82 tstl %d2 <== NOT EXECUTED 4d622: 670a beqs 4d62e <_Heap_Walk+0xce> <== NOT EXECUTED 4d624: 4879 0005 825d pea 5825d <== NOT EXECUTED 4d62a: 4e95 jsr %a5@ <== NOT EXECUTED 4d62c: 588f addql #4,%sp <== NOT EXECUTED printk("PASS: %d !two consecutive blocks are free", source); 4d62e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d630: 7401 moveq #1,%d2 <== NOT EXECUTED 4d632: 4879 0005 8a00 pea 58a00 <_POSIX_Threads_Default_attributes+0xee> <== NOT EXECUTED 4d638: 4e95 jsr %a5@ <== NOT EXECUTED 4d63a: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Heap_Block *_Heap_First ( Heap_Control *the_heap ) { return _Heap_Head(the_heap)->next; 4d63c: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED 4d640: 6004 bras 4d646 <_Heap_Walk+0xe6> <== NOT EXECUTED } { /* Check if 'the_block' is in the free block list */ Heap_Block* block = _Heap_First(the_heap); while(block != the_block && block != tail) block = block->next; 4d642: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED error = 1; } { /* Check if 'the_block' is in the free block list */ Heap_Block* block = _Heap_First(the_heap); while(block != the_block && block != tail) 4d646: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 4d648: 6722 beqs 4d66c <_Heap_Walk+0x10c> <== NOT EXECUTED 4d64a: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 4d64c: 66f4 bnes 4d642 <_Heap_Walk+0xe2> <== NOT EXECUTED block = block->next; if(block != the_block) { if (do_dump || error) printk("\n"); 4d64e: 4a82 tstl %d2 <== NOT EXECUTED 4d650: 670a beqs 4d65c <_Heap_Walk+0xfc> <== NOT EXECUTED 4d652: 4879 0005 825d pea 5825d <== NOT EXECUTED 4d658: 4e95 jsr %a5@ <== NOT EXECUTED 4d65a: 588f addql #4,%sp <== NOT EXECUTED printk("PASS: %d !the_block not in the free list", source); 4d65c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d65e: 7401 moveq #1,%d2 <== NOT EXECUTED 4d660: 4879 0005 8a2a pea 58a2a <_POSIX_Threads_Default_attributes+0x118> <== NOT EXECUTED 4d666: 4e95 jsr %a5@ <== NOT EXECUTED 4d668: 508f addql #8,%sp <== NOT EXECUTED 4d66a: 6004 bras 4d670 <_Heap_Walk+0x110> <== NOT EXECUTED error = 1; } } } if (do_dump || error) printk("\n"); 4d66c: 4a82 tstl %d2 <== NOT EXECUTED 4d66e: 670a beqs 4d67a <_Heap_Walk+0x11a> <== NOT EXECUTED 4d670: 4879 0005 825d pea 5825d <== NOT EXECUTED 4d676: 4e95 jsr %a5@ <== NOT EXECUTED 4d678: 588f addql #4,%sp <== NOT EXECUTED if (the_size < the_heap->min_block_size) { 4d67a: baac 0014 cmpl %a4@(20),%d5 <== NOT EXECUTED 4d67e: 640a bccs 4d68a <_Heap_Walk+0x12a> <== NOT EXECUTED printk("PASS: %d !block size is too small\n", source); 4d680: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d682: 4879 0005 8a53 pea 58a53 <_POSIX_Threads_Default_attributes+0x141> <== NOT EXECUTED 4d688: 6012 bras 4d69c <_Heap_Walk+0x13c> <== NOT EXECUTED error = 1; break; } if (!_Heap_Is_aligned( the_size, the_heap->page_size)) { 4d68a: 4c6c 5000 0010 remul %a4@(16),%d0,%d5 <== NOT EXECUTED 4d690: 4a80 tstl %d0 <== NOT EXECUTED 4d692: 6712 beqs 4d6a6 <_Heap_Walk+0x146> <== NOT EXECUTED printk("PASS: %d !block size is misaligned\n", source); 4d694: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d696: 4879 0005 8a76 pea 58a76 <_POSIX_Threads_Default_attributes+0x164> <== NOT EXECUTED 4d69c: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d6a2: 508f addql #8,%sp <== NOT EXECUTED 4d6a4: 6016 bras 4d6bc <_Heap_Walk+0x15c> <== NOT EXECUTED error = 1; } if (++passes > (do_dump ? 10 : 0) && error) 4d6a6: 4a82 tstl %d2 <== NOT EXECUTED 4d6a8: 6612 bnes 4d6bc <_Heap_Walk+0x15c> <== NOT EXECUTED break; 4d6aa: 244b moveal %a3,%a2 <== NOT EXECUTED 4d6ac: 6006 bras 4d6b4 <_Heap_Walk+0x154> <== NOT EXECUTED error = 1; } } } if (do_dump || error) printk("\n"); 4d6ae: 4bf9 0004 5232 lea 45232 ,%a5 <== NOT EXECUTED if (the_block->prev_size != the_heap->page_size) { printk("PASS: %d !prev_size of 1st block isn't page_size\n", source); error = 1; } while ( the_block != end ) { 4d6b4: bc8a cmpl %a2,%d6 <== NOT EXECUTED 4d6b6: 6600 ff08 bnew 4d5c0 <_Heap_Walk+0x60> <== NOT EXECUTED 4d6ba: 601a bras 4d6d6 <_Heap_Walk+0x176> <== NOT EXECUTED the_block = next_block; } if (the_block != end) { printk("PASS: %d !last block address isn't equal to 'final' %p %p\n", 4d6bc: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d6be: 7401 moveq #1,%d2 <== NOT EXECUTED 4d6c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d6c2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6c4: 4879 0005 8a9a pea 58a9a <_POSIX_Threads_Default_attributes+0x188> <== NOT EXECUTED 4d6ca: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d6d0: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED source, the_block, end); error = 1; } if (_Heap_Block_size(the_block) != the_heap->page_size) { 4d6d6: 202c 0010 movel %a4@(16),%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Heap_Block_size ( Heap_Block *the_block ) { return (the_block->size & ~HEAP_PREV_USED); 4d6da: 72fe moveq #-2,%d1 <== NOT EXECUTED 4d6dc: c2aa 0004 andl %a2@(4),%d1 <== NOT EXECUTED 4d6e0: b081 cmpl %d1,%d0 <== NOT EXECUTED 4d6e2: 671a beqs 4d6fe <_Heap_Walk+0x19e> <== NOT EXECUTED printk("PASS: %d !last block's size isn't page_size (%d != %d)\n", source, 4d6e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d6e6: 7401 moveq #1,%d2 <== NOT EXECUTED 4d6e8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d6ea: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6ec: 4879 0005 8ad5 pea 58ad5 <_POSIX_Threads_Default_attributes+0x1c3> <== NOT EXECUTED 4d6f2: 4eb9 0004 5232 jsr 45232 <== NOT EXECUTED 4d6f8: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4d6fe: 4a82 tstl %d2 <== NOT EXECUTED 4d700: 56c0 sne %d0 <== NOT EXECUTED if(do_dump && error) _Internal_error_Occurred( INTERNAL_ERROR_CORE, TRUE, 0xffff0000 ); return error; } 4d702: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED 4d708: 4e5e unlk %fp <== NOT EXECUTED 4d70a: 4480 negl %d0 <== NOT EXECUTED 4d70c: 4e75 rts <== NOT EXECUTED ... 00045594 <_IO_Initialize_all_drivers>: * * Output Parameters: NONE */ void _IO_Initialize_all_drivers( void ) { 45594: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45598: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) (void) rtems_io_initialize( major, 0, NULL ); 4559a: 45f9 0004 a174 lea 4a174 ,%a2 <== NOT EXECUTED * * Output Parameters: NONE */ void _IO_Initialize_all_drivers( void ) { 455a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 455a2: 4282 clrl %d2 <== NOT EXECUTED 455a4: 6010 bras 455b6 <_IO_Initialize_all_drivers+0x22> <== NOT EXECUTED rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) (void) rtems_io_initialize( major, 0, NULL ); 455a6: 42a7 clrl %sp@- <== NOT EXECUTED 455a8: 42a7 clrl %sp@- <== NOT EXECUTED 455aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 455ac: 4e92 jsr %a2@ <== NOT EXECUTED void _IO_Initialize_all_drivers( void ) { rtems_device_major_number major; for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 455ae: 5282 addql #1,%d2 <== NOT EXECUTED 455b0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 455b6: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 455bc: 65e8 bcss 455a6 <_IO_Initialize_all_drivers+0x12> <== NOT EXECUTED (void) rtems_io_initialize( major, 0, NULL ); } 455be: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 455c2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 455c6: 4e5e unlk %fp <== NOT EXECUTED 455c8: 4e75 rts 000455ca <_IO_Manager_initialization>: void _IO_Manager_initialization( rtems_driver_address_table *driver_table, uint32_t drivers_in_table, uint32_t number_of_drivers ) { 455ca: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 455ce: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 455d2: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 455d6: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 455da: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED /* * 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 ) 455de: ba84 cmpl %d4,%d5 <== NOT EXECUTED 455e0: 6442 bccs 45624 <_IO_Manager_initialization+0x5a> <== NOT EXECUTED /* * 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 *) 455e2: 2004 movel %d4,%d0 <== NOT EXECUTED 455e4: 2404 movel %d4,%d2 <== NOT EXECUTED 455e6: e788 lsll #3,%d0 <== NOT EXECUTED 455e8: eb8a lsll #5,%d2 <== NOT EXECUTED 455ea: 9480 subl %d0,%d2 <== NOT EXECUTED 455ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 455ee: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 455f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) _IO_Driver_address_table[index] = driver_table[index]; 455f6: 4283 clrl %d3 <== NOT EXECUTED 455f8: 4282 clrl %d2 <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 455fa: 42a7 clrl %sp@- <== NOT EXECUTED _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) 455fc: 47f9 0004 bf4c lea 4bf4c ,%a3 <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 45602: 2f00 movel %d0,%sp@- <== NOT EXECUTED _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; 45604: 23c4 0005 8716 movel %d4,58716 <_IO_Number_of_drivers> <== NOT EXECUTED /* * 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 *) 4560a: 23c0 0005 871a movel %d0,5871a <_IO_Driver_address_table> <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); _IO_Number_of_drivers = number_of_drivers; memset( 45610: 4eb9 0004 bfbc jsr 4bfbc <== NOT EXECUTED _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) _IO_Driver_address_table[index] = driver_table[index]; 45616: 2479 0005 871a moveal 5871a <_IO_Driver_address_table>,%a2 <== NOT EXECUTED 4561c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45622: 602a bras 4564e <_IO_Manager_initialization+0x84> <== NOT EXECUTED * 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; 45624: 23cc 0005 871a movel %a4,5871a <_IO_Driver_address_table> <== NOT EXECUTED _IO_Number_of_drivers = number_of_drivers; 4562a: 23c5 0005 8716 movel %d5,58716 <_IO_Number_of_drivers> <== NOT EXECUTED 45630: 6020 bras 45652 <_IO_Manager_initialization+0x88> <== NOT EXECUTED memset( _IO_Driver_address_table, 0, sizeof( rtems_driver_address_table ) * ( number_of_drivers ) ); for ( index = 0 ; index < drivers_in_table ; index++ ) 45632: 4878 0018 pea 18 <== NOT EXECUTED 45636: 4874 2800 pea %a4@(00000000,%d2:l) <== NOT EXECUTED 4563a: 4872 2800 pea %a2@(00000000,%d2:l) <== NOT EXECUTED 4563e: 4e93 jsr %a3@ <== NOT EXECUTED 45640: 5283 addql #1,%d3 <== NOT EXECUTED 45642: 0682 0000 0018 addil #24,%d2 <== NOT EXECUTED 45648: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4564e: ba83 cmpl %d3,%d5 <== NOT EXECUTED 45650: 62e0 bhis 45632 <_IO_Manager_initialization+0x68> <== NOT EXECUTED _IO_Driver_address_table[index] = driver_table[index]; number_of_drivers = drivers_in_table; } 45652: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 45658: 4e5e unlk %fp <== NOT EXECUTED 4565a: 4e75 rts 00046058 <_ISR_Handler_initialization>: * * Output parameters: NONE */ void _ISR_Handler_initialization( void ) { 46058: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4605c: 2f0a movel %a2,%sp@- <== NOT EXECUTED _ISR_Signals_to_thread_executing = FALSE; 4605e: 4200 clrb %d0 <== NOT EXECUTED _ISR_Nest_level = 0; 46060: 42b9 0005 7f1a clrl 57f1a <_ISR_Nest_level> <== NOT EXECUTED #if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE) _ISR_Vector_table = _Workspace_Allocate_or_fatal_error( 46066: 45f9 0004 7ec4 lea 47ec4 <_Workspace_Allocate_or_fatal_error>,%a2 <== NOT EXECUTED * Output parameters: NONE */ void _ISR_Handler_initialization( void ) { _ISR_Signals_to_thread_executing = FALSE; 4606c: 13c0 0005 7fc8 moveb %d0,57fc8 <_ISR_Signals_to_thread_executing> <== NOT EXECUTED _ISR_Nest_level = 0; #if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE) _ISR_Vector_table = _Workspace_Allocate_or_fatal_error( 46072: 4878 0400 pea 400 <== NOT EXECUTED 46076: 4e92 jsr %a2@ <== NOT EXECUTED _CPU_Initialize_vectors(); #if ( CPU_ALLOCATE_INTERRUPT_STACK == TRUE ) if ( !_Stack_Is_enough(_Configuration_Table->interrupt_stack_size) ) 46078: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 4607e: 2228 001c movel %a0@(28),%d1 <== NOT EXECUTED _ISR_Signals_to_thread_executing = FALSE; _ISR_Nest_level = 0; #if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE) _ISR_Vector_table = _Workspace_Allocate_or_fatal_error( 46082: 23c0 0005 7ef6 movel %d0,57ef6 <_ISR_Vector_table> <== NOT EXECUTED _CPU_Initialize_vectors(); #if ( CPU_ALLOCATE_INTERRUPT_STACK == TRUE ) if ( !_Stack_Is_enough(_Configuration_Table->interrupt_stack_size) ) 46088: 588f addql #4,%sp <== NOT EXECUTED 4608a: b2b9 0005 62ee cmpl 562ee ,%d1 <== NOT EXECUTED 46090: 6410 bccs 460a2 <_ISR_Handler_initialization+0x4a> <== NOT EXECUTED _Internal_error_Occurred( 46092: 4878 0005 pea 5 <== NOT EXECUTED 46096: 4878 0001 pea 1 <== NOT EXECUTED 4609a: 42a7 clrl %sp@- <== NOT EXECUTED 4609c: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL ); _CPU_Interrupt_stack_low = _Workspace_Allocate_or_fatal_error( 460a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 460a4: 4e92 jsr %a2@ <== NOT EXECUTED _Configuration_Table->interrupt_stack_size ); _CPU_Interrupt_stack_high = _Addresses_Add_offset( 460a6: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 460ac: 2200 movel %d0,%d1 <== NOT EXECUTED 460ae: d2a8 001c addl %a0@(28),%d1 <== NOT EXECUTED #if ( CPU_HAS_HARDWARE_INTERRUPT_STACK == TRUE ) _CPU_Install_interrupt_stack(); #endif } 460b2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED _CPU_Interrupt_stack_low = _Workspace_Allocate_or_fatal_error( _Configuration_Table->interrupt_stack_size ); _CPU_Interrupt_stack_high = _Addresses_Add_offset( 460b6: 588f addql #4,%sp <== NOT EXECUTED #if ( CPU_HAS_HARDWARE_INTERRUPT_STACK == TRUE ) _CPU_Install_interrupt_stack(); #endif } 460b8: 4e5e unlk %fp <== NOT EXECUTED _CPU_Interrupt_stack_low = _Workspace_Allocate_or_fatal_error( _Configuration_Table->interrupt_stack_size ); _CPU_Interrupt_stack_high = _Addresses_Add_offset( 460ba: 23c1 0005 7e30 movel %d1,57e30 <_CPU_Interrupt_stack_high> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL ); _CPU_Interrupt_stack_low = _Workspace_Allocate_or_fatal_error( 460c0: 23c0 0005 7e8c movel %d0,57e8c <_CPU_Interrupt_stack_low> <== NOT EXECUTED #if ( CPU_HAS_HARDWARE_INTERRUPT_STACK == TRUE ) _CPU_Install_interrupt_stack(); #endif } 460c6: 4e75 rts 00045ffc <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, uint32_t the_error ) { 45ffc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46000: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46002: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 46006: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46008: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED _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 ); 4600c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4600e: 4280 clrl %d0 <== NOT EXECUTED 46010: 1002 moveb %d2,%d0 <== NOT EXECUTED void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, uint32_t the_error ) { 46012: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED _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 ); 46016: 2f00 movel %d0,%sp@- <== NOT EXECUTED uint32_t the_error ) { _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; 46018: 13c2 0005 7f2a moveb %d2,57f2a <_Internal_errors_What_happened+0x4> <== NOT EXECUTED _User_extensions_Fatal( the_source, is_internal, the_error ); _System_state_Set( SYSTEM_STATE_FAILED ); _CPU_Fatal_halt( the_error ); 4601e: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED _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 ); 46024: 2f01 movel %d1,%sp@- <== NOT EXECUTED bool is_internal, uint32_t the_error ) { _Internal_errors_What_happened.the_source = the_source; 46026: 23c1 0005 7f26 movel %d1,57f26 <_Internal_errors_What_happened> <== NOT EXECUTED _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; 4602c: 23c3 0005 7f2c movel %d3,57f2c <_Internal_errors_What_happened+0x6> <== NOT EXECUTED _User_extensions_Fatal( the_source, is_internal, the_error ); 46032: 4eb9 0004 7b5a jsr 47b5a <_User_extensions_Fatal> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state ) { _System_state_Current = state; 46038: 7005 moveq #5,%d0 <== NOT EXECUTED 4603a: 23c0 0005 800e movel %d0,5800e <_System_state_Current> <== NOT EXECUTED _System_state_Set( SYSTEM_STATE_FAILED ); _CPU_Fatal_halt( the_error ); 46040: 40c0 movew %sr,%d0 <== NOT EXECUTED 46042: 8082 orl %d2,%d0 <== NOT EXECUTED 46044: 46c0 movew %d0,%sr <== NOT EXECUTED 46046: 2003 movel %d3,%d0 <== NOT EXECUTED 46048: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED 4604e: 4ac8 halt <== NOT EXECUTED 46050: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46056: 60fe bras 46056 <_Internal_error_Occurred+0x5a> <== NOT EXECUTED 00049db8 <_Interrupt_Manager_initialization>: * * Output parameters: NONE */ void _Interrupt_Manager_initialization( void ) { 49db8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED } 49dbc: 4e5e unlk %fp <== NOT EXECUTED 49dbe: 4e75 rts 000553a0 <_Message_queue_Allocate>: * Output parameters: * the_message_queue - set if successful, NULL otherwise */ Message_queue_Control *_Message_queue_Allocate(void) { 553a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (Message_queue_Control *) 553a4: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 553aa: 4eb9 0005 1334 jsr 51334 <_Objects_Allocate> <== NOT EXECUTED _Objects_Allocate(&_Message_queue_Information); } 553b0: 4e5e unlk %fp <== NOT EXECUTED 553b2: 4e75 rts 00049dc0 <_Message_queue_Manager_initialization>: */ void _Message_queue_Manager_initialization( uint32_t maximum_message_queues ) { 49dc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49dc4: 4878 0004 pea 4 <== NOT EXECUTED 49dc8: 42a7 clrl %sp@- <== NOT EXECUTED 49dca: 4878 0088 pea 88 <== NOT EXECUTED 49dce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49dd2: 4878 0004 pea 4 <== NOT EXECUTED 49dd6: 4878 0002 pea 2 <== NOT EXECUTED 49dda: 4879 0005 8796 pea 58796 <_Message_queue_Information> <== NOT EXECUTED 49de0: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49de6: dffc 0000 001c addal #28,%sp <== NOT EXECUTED MP_PACKET_MESSAGE_QUEUE, _Message_queue_MP_Process_packet ); #endif } 49dec: 4e5e unlk %fp <== NOT EXECUTED 49dee: 4e75 rts 0004f748 <_Message_queue_Translate_core_message_queue_return_code>: }; rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( uint32_t status ) { 4f748: 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]; } 4f74c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED }; rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( uint32_t status ) { 4f750: 41f9 0006 1c78 lea 61c78 <_Message_queue_Translate_core_return_code_>,%a0 <== NOT EXECUTED if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ) return RTEMS_INTERNAL_ERROR; #endif return _Message_queue_Translate_core_return_code_[status]; } 4f756: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4f75a: 4e5e unlk %fp <== NOT EXECUTED 4f75c: 4e75 rts <== NOT EXECUTED ... 0004a5b4 <_Objects_API_maximum_class>: #include int _Objects_API_maximum_class( uint32_t api ) { 4a5b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a5b8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED switch (api) { 4a5bc: 7202 moveq #2,%d1 <== NOT EXECUTED 4a5be: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a5c0: 671c beqs 4a5de <_Objects_API_maximum_class+0x2a> <== NOT EXECUTED 4a5c2: 650a bcss 4a5ce <_Objects_API_maximum_class+0x1a> <== NOT EXECUTED 4a5c4: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4a5c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a5ca: 6622 bnes 4a5ee <_Objects_API_maximum_class+0x3a> <== NOT EXECUTED 4a5cc: 6014 bras 4a5e2 <_Objects_API_maximum_class+0x2e> <== NOT EXECUTED 4a5ce: 7203 moveq #3,%d1 <== NOT EXECUTED 4a5d0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a5d2: 6712 beqs 4a5e6 <_Objects_API_maximum_class+0x32> <== NOT EXECUTED 4a5d4: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 4a5d8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a5da: 6612 bnes 4a5ee <_Objects_API_maximum_class+0x3a> <== NOT EXECUTED 4a5dc: 600c bras 4a5ea <_Objects_API_maximum_class+0x36> <== NOT EXECUTED 4a5de: 700a moveq #10,%d0 <== NOT EXECUTED 4a5e0: 600e bras 4a5f0 <_Objects_API_maximum_class+0x3c> <== NOT EXECUTED 4a5e2: 7002 moveq #2,%d0 <== NOT EXECUTED 4a5e4: 600a bras 4a5f0 <_Objects_API_maximum_class+0x3c> <== NOT EXECUTED 4a5e6: 700c moveq #12,%d0 <== NOT EXECUTED 4a5e8: 6006 bras 4a5f0 <_Objects_API_maximum_class+0x3c> <== NOT EXECUTED case OBJECTS_INTERNAL_API: return OBJECTS_INTERNAL_CLASSES_LAST; case OBJECTS_CLASSIC_API: return OBJECTS_RTEMS_CLASSES_LAST; case OBJECTS_POSIX_API: return OBJECTS_POSIX_CLASSES_LAST; 4a5ea: 7008 moveq #8,%d0 <== NOT EXECUTED 4a5ec: 6002 bras 4a5f0 <_Objects_API_maximum_class+0x3c> <== NOT EXECUTED case OBJECTS_ITRON_API: return OBJECTS_ITRON_CLASSES_LAST; 4a5ee: 70ff moveq #-1,%d0 <== NOT EXECUTED case OBJECTS_NO_API: default: break; } return -1; } 4a5f0: 4e5e unlk %fp <== NOT EXECUTED 4a5f2: 4e75 rts 000460c8 <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) { 460c8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 460cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 460d0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * 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 ) 460d4: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 460d8: 6604 bnes 460de <_Objects_Allocate+0x16> <== NOT EXECUTED 460da: 93c9 subal %a1,%a1 <== NOT EXECUTED 460dc: 6064 bras 46142 <_Objects_Allocate+0x7a> <== NOT EXECUTED /* * 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 ); 460de: 240a movel %a2,%d2 <== NOT EXECUTED 460e0: 0682 0000 001e addil #30,%d2 <== NOT EXECUTED 460e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 460e8: 47f9 0004 a1ec lea 4a1ec <_Chain_Get>,%a3 <== NOT EXECUTED 460ee: 4e93 jsr %a3@ <== NOT EXECUTED if ( information->auto_extend ) { 460f0: 588f addql #4,%sp <== NOT EXECUTED /* * 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 ); 460f2: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( information->auto_extend ) { 460f4: 4a2a 0010 tstb %a2@(16) <== NOT EXECUTED 460f8: 6748 beqs 46142 <_Objects_Allocate+0x7a> <== NOT EXECUTED /* * If the list is empty then we are out of objects and need to * extend information base. */ if ( !the_object ) { 460fa: 4a80 tstl %d0 <== NOT EXECUTED 460fc: 6614 bnes 46112 <_Objects_Allocate+0x4a> <== NOT EXECUTED _Objects_Extend_information( information ); 460fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46100: 4eb9 0004 617c jsr 4617c <_Objects_Extend_information> <== NOT EXECUTED the_object = (Objects_Control *) _Chain_Get( &information->Inactive ); 46106: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46108: 4e93 jsr %a3@ <== NOT EXECUTED } if ( the_object ) { 4610a: 508f addql #8,%sp <== NOT EXECUTED * extend information base. */ if ( !the_object ) { _Objects_Extend_information( information ); the_object = (Objects_Control *) _Chain_Get( &information->Inactive ); 4610c: 2240 moveal %d0,%a1 <== NOT EXECUTED } if ( the_object ) { 4610e: 4a80 tstl %d0 <== NOT EXECUTED 46110: 6730 beqs 46142 <_Objects_Allocate+0x7a> <== NOT EXECUTED uint32_t block; block = _Objects_Get_index( the_object->id ) - 46112: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 46116: 222a 0006 movel %a2@(6),%d1 <== NOT EXECUTED 4611a: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 46120: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 46126: 9081 subl %d1,%d0 <== NOT EXECUTED _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 46128: 4c6a 0000 0012 remul %a2@(18),%d0,%d0 <== NOT EXECUTED 4612e: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED information->inactive--; 46132: 322a 002a movew %a2@(42),%d1 <== NOT EXECUTED block = _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 46136: e588 lsll #2,%d0 <== NOT EXECUTED information->inactive--; 46138: 5381 subql #1,%d1 <== NOT EXECUTED block = _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 4613a: d1c0 addal %d0,%a0 <== NOT EXECUTED information->inactive--; 4613c: 3541 002a movew %d1,%a2@(42) <== NOT EXECUTED block = _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 46140: 5390 subql #1,%a0@ <== NOT EXECUTED information->inactive--; } } return the_object; } 46142: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 46148: 4e5e unlk %fp <== NOT EXECUTED 4614a: 2009 movel %a1,%d0 <== NOT EXECUTED 4614c: 4e75 rts <== NOT EXECUTED ... 00046150 <_Objects_Close>: void _Objects_Close( Objects_Information *information, Objects_Control *the_object ) { 46150: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46154: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46156: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4615a: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4615e: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED 46162: 4280 clrl %d0 <== NOT EXECUTED 46164: 3029 000a movew %a1@(10),%d0 <== NOT EXECUTED 46168: 42b0 0c00 clrl %a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 4616c: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED } 46170: 245f moveal %sp@+,%a2 <== NOT EXECUTED 46172: 4e5e unlk %fp <== NOT EXECUTED Objects_Control *the_object ) { _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 46174: 4ef9 0004 665c jmp 4665c <_Objects_Namespace_remove> <== NOT EXECUTED ... 0004617c <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) { 4617c: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 46180: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 46184: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_index( Objects_Id id ) { return (id >> OBJECTS_INDEX_START_BIT) & OBJECTS_INDEX_VALID_BITS; 46188: 262b 0006 movel %a3@(6),%d3 <== NOT EXECUTED minimum_index = _Objects_Get_index( information->minimum_id ); index_base = minimum_index; block = 0; if ( information->maximum < minimum_index ) 4618c: 4281 clrl %d1 <== NOT EXECUTED 4618e: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED 46194: 322b 000e movew %a3@(14),%d1 <== NOT EXECUTED 46198: b681 cmpl %d1,%d3 <== NOT EXECUTED 4619a: 6308 blss 461a4 <_Objects_Extend_information+0x28> <== NOT EXECUTED 4619c: 2803 movel %d3,%d4 <== NOT EXECUTED 4619e: 4287 clrl %d7 <== NOT EXECUTED 461a0: 4285 clrl %d5 <== NOT EXECUTED 461a2: 6024 bras 461c8 <_Objects_Extend_information+0x4c> <== NOT EXECUTED block_count = 0; else { block_count = information->maximum / information->allocation_size; 461a4: 202b 0012 movel %a3@(18),%d0 <== NOT EXECUTED 461a8: 2401 movel %d1,%d2 <== NOT EXECUTED 461aa: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 461ae: 2e02 movel %d2,%d7 <== NOT EXECUTED 461b0: 2803 movel %d3,%d4 <== NOT EXECUTED 461b2: 4285 clrl %d5 <== NOT EXECUTED 461b4: 600e bras 461c4 <_Objects_Extend_information+0x48> <== NOT EXECUTED for ( ; block < block_count; block++ ) { if ( information->object_blocks[ block ] == NULL ) 461b6: 206b 0030 moveal %a3@(48),%a0 <== NOT EXECUTED 461ba: 4ab0 5c00 tstl %a0@(00000000,%d5:l:4) <== NOT EXECUTED 461be: 6708 beqs 461c8 <_Objects_Extend_information+0x4c> <== NOT EXECUTED break; else index_base += information->allocation_size; 461c0: d880 addl %d0,%d4 <== NOT EXECUTED if ( information->maximum < minimum_index ) block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { 461c2: 5285 addql #1,%d5 <== NOT EXECUTED 461c4: b485 cmpl %d5,%d2 <== NOT EXECUTED 461c6: 62ee bhis 461b6 <_Objects_Extend_information+0x3a> <== NOT EXECUTED /* * If the index_base is the maximum we need to grow the tables. */ if (index_base >= information->maximum ) { 461c8: b284 cmpl %d4,%d1 <== NOT EXECUTED 461ca: 6200 011c bhiw 462e8 <_Objects_Extend_information+0x16c> <== NOT EXECUTED * Up the block count and maximum */ block_count++; maximum = information->maximum + information->allocation_size; 461ce: d2ab 0012 addl %a3@(18),%d1 <== NOT EXECUTED /* * Up the block count and maximum */ block_count++; 461d2: 2407 movel %d7,%d2 <== NOT EXECUTED 461d4: 2001 movel %d1,%d0 <== NOT EXECUTED maximum = information->maximum + information->allocation_size; 461d6: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED /* * Up the block count and maximum */ block_count++; 461da: 5282 addql #1,%d2 <== NOT EXECUTED 461dc: 7203 moveq #3,%d1 <== NOT EXECUTED 461de: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 461e2: d083 addl %d3,%d0 <== NOT EXECUTED /* * Allocate the tables and break it up. */ if ( information->auto_extend ) { 461e4: 4a2b 0010 tstb %a3@(16) <== NOT EXECUTED 461e8: 6718 beqs 46202 <_Objects_Extend_information+0x86> <== NOT EXECUTED object_blocks = (void**) 461ea: d081 addl %d1,%d0 <== NOT EXECUTED 461ec: e588 lsll #2,%d0 <== NOT EXECUTED 461ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461f0: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)) ); if ( !object_blocks ) 461f6: 588f addql #4,%sp <== NOT EXECUTED /* * Allocate the tables and break it up. */ if ( information->auto_extend ) { object_blocks = (void**) 461f8: 2840 moveal %d0,%a4 <== NOT EXECUTED block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)) ); if ( !object_blocks ) 461fa: 4a80 tstl %d0 <== NOT EXECUTED 461fc: 6614 bnes 46212 <_Objects_Extend_information+0x96> <== NOT EXECUTED 461fe: 6000 01be braw 463be <_Objects_Extend_information+0x242> <== NOT EXECUTED return; } else { object_blocks = (void**) 46202: d081 addl %d1,%d0 <== NOT EXECUTED 46204: e588 lsll #2,%d0 <== NOT EXECUTED 46206: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46208: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED 4620e: 588f addql #4,%sp <== NOT EXECUTED 46210: 2840 moveal %d0,%a4 <== NOT EXECUTED /* * Break the block into the various sections. * */ inactive_per_block = (uint32_t *) _Addresses_Add_offset( 46212: 2002 movel %d2,%d0 <== NOT EXECUTED 46214: e588 lsll #2,%d0 <== NOT EXECUTED 46216: 2c0c movel %a4,%d6 <== NOT EXECUTED 46218: dc80 addl %d0,%d6 <== NOT EXECUTED 4621a: 2a46 moveal %d6,%a5 <== NOT EXECUTED 4621c: dbc0 addal %d0,%a5 <== NOT EXECUTED * in the copies. */ block_count--; if ( information->maximum > minimum_index ) { 4621e: 4280 clrl %d0 <== NOT EXECUTED 46220: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 46224: b680 cmpl %d0,%d3 <== NOT EXECUTED 46226: 6506 bcss 4622e <_Objects_Extend_information+0xb2> <== NOT EXECUTED 46228: 204d moveal %a5,%a0 <== NOT EXECUTED 4622a: 4280 clrl %d0 <== NOT EXECUTED 4622c: 603e bras 4626c <_Objects_Extend_information+0xf0> <== NOT EXECUTED /* * 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, 4622e: 2407 movel %d7,%d2 <== NOT EXECUTED 46230: e58a lsll #2,%d2 <== NOT EXECUTED 46232: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46234: 45f9 0004 bf4c lea 4bf4c ,%a2 <== NOT EXECUTED 4623a: 2f2b 0030 movel %a3@(48),%sp@- <== NOT EXECUTED 4623e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46240: 4e92 jsr %a2@ <== NOT EXECUTED information->object_blocks, block_count * sizeof(void*) ); memcpy( inactive_per_block, 46242: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46244: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 46248: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4624a: 4e92 jsr %a2@ <== NOT EXECUTED information->inactive_per_block, block_count * sizeof(uint32_t) ); memcpy( local_table, 4624c: 4280 clrl %d0 <== NOT EXECUTED 4624e: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 46252: d083 addl %d3,%d0 <== NOT EXECUTED 46254: e588 lsll #2,%d0 <== NOT EXECUTED 46256: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46258: 2f2b 001a movel %a3@(26),%sp@- <== NOT EXECUTED 4625c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4625e: 4e92 jsr %a2@ <== NOT EXECUTED 46260: dffc 0000 0024 addal #36,%sp <== NOT EXECUTED 46266: 6008 bras 46270 <_Objects_Extend_information+0xf4> <== NOT EXECUTED else { /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { 46268: 5280 addql #1,%d0 <== NOT EXECUTED local_table[ index ] = NULL; 4626a: 4298 clrl %a0@+ <== NOT EXECUTED else { /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { 4626c: b680 cmpl %d0,%d3 <== NOT EXECUTED 4626e: 62f8 bhis 46268 <_Objects_Extend_information+0xec> <== NOT EXECUTED /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; 46270: 2007 movel %d7,%d0 <== NOT EXECUTED 46272: e588 lsll #2,%d0 <== NOT EXECUTED inactive_per_block[block_count] = 0; 46274: 2046 moveal %d6,%a0 <== NOT EXECUTED 46276: 42b0 0800 clrl %a0@(00000000,%d0:l) <== NOT EXECUTED for ( index=index_base ; index < ( information->allocation_size + index_base ); 4627a: 2204 movel %d4,%d1 <== NOT EXECUTED /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; 4627c: 42b4 0800 clrl %a4@(00000000,%d0:l) <== NOT EXECUTED inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 46280: d2ab 0012 addl %a3@(18),%d1 <== NOT EXECUTED 46284: 41f5 4c00 lea %a5@(00000000,%d4:l:4),%a0 <== NOT EXECUTED 46288: 2004 movel %d4,%d0 <== NOT EXECUTED 4628a: 6004 bras 46290 <_Objects_Extend_information+0x114> <== NOT EXECUTED index++ ) { 4628c: 5280 addql #1,%d0 <== NOT EXECUTED local_table[ index ] = NULL; 4628e: 4298 clrl %a0@+ <== NOT EXECUTED object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 46290: b280 cmpl %d0,%d1 <== NOT EXECUTED 46292: 62f8 bhis 4628c <_Objects_Extend_information+0x110> <== NOT EXECUTED index++ ) { local_table[ index ] = NULL; } _ISR_Disable( level ); 46294: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4629a: 40c2 movew %sr,%d2 <== NOT EXECUTED 4629c: 8082 orl %d2,%d0 <== NOT EXECUTED 4629e: 46c0 movew %d0,%sr <== NOT EXECUTED information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = maximum; information->maximum_id = _Objects_Build_id( 462a0: 2013 movel %a3@,%d0 <== NOT EXECUTED 462a2: 7218 moveq #24,%d1 <== NOT EXECUTED 462a4: e3a8 lsll %d1,%d0 <== NOT EXECUTED 462a6: 4281 clrl %d1 <== NOT EXECUTED 462a8: 322b 0004 movew %a3@(4),%d1 <== NOT EXECUTED 462ac: 761b moveq #27,%d3 <== NOT EXECUTED 462ae: e7a9 lsll %d3,%d1 <== NOT EXECUTED 462b0: 08c0 0010 bset #16,%d0 <== NOT EXECUTED 462b4: 8081 orl %d1,%d0 <== NOT EXECUTED 462b6: 326e fff2 moveaw %fp@(-14),%a1 <== NOT EXECUTED local_table[ index ] = NULL; } _ISR_Disable( level ); old_tables = information->object_blocks; 462ba: 206b 0030 moveal %a3@(48),%a0 <== NOT EXECUTED information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = maximum; information->maximum_id = _Objects_Build_id( 462be: 4281 clrl %d1 <== NOT EXECUTED 462c0: 3209 movew %a1,%d1 <== NOT EXECUTED 462c2: 8081 orl %d1,%d0 <== NOT EXECUTED 462c4: 2740 000a movel %d0,%a3@(10) <== NOT EXECUTED old_tables = information->object_blocks; information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = maximum; 462c8: 3749 000e movew %a1,%a3@(14) <== NOT EXECUTED _ISR_Disable( level ); old_tables = information->object_blocks; information->object_blocks = object_blocks; 462cc: 274c 0030 movel %a4,%a3@(48) <== NOT EXECUTED information->inactive_per_block = inactive_per_block; 462d0: 2746 002c movel %d6,%a3@(44) <== NOT EXECUTED information->local_table = local_table; 462d4: 274d 001a movel %a5,%a3@(26) <== NOT EXECUTED information->the_class, _Objects_Local_node, information->maximum ); _ISR_Enable( level ); 462d8: 46c2 movew %d2,%sr <== NOT EXECUTED if ( old_tables ) 462da: 4a88 tstl %a0 <== NOT EXECUTED 462dc: 670a beqs 462e8 <_Objects_Extend_information+0x16c> <== NOT EXECUTED _Workspace_Free( old_tables ); 462de: 2f08 movel %a0,%sp@- <== NOT EXECUTED 462e0: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 462e6: 588f addql #4,%sp <== NOT EXECUTED 462e8: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED 462ec: 41eb 0012 lea %a3@(18),%a0 <== NOT EXECUTED 462f0: 4c10 0800 mulsl %a0@,%d0 <== NOT EXECUTED 462f4: 2405 movel %d5,%d2 <== NOT EXECUTED 462f6: e58a lsll #2,%d2 <== NOT EXECUTED /* * Allocate the name table, and the objects */ if ( information->auto_extend ) { 462f8: 4a2b 0010 tstb %a3@(16) <== NOT EXECUTED 462fc: 6720 beqs 4631e <_Objects_Extend_information+0x1a2> <== NOT EXECUTED information->object_blocks[ block ] = 462fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46300: 246b 0030 moveal %a3@(48),%a2 <== NOT EXECUTED 46304: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED _Workspace_Allocate( (information->allocation_size * information->size) ); if ( !information->object_blocks[ block ] ) 4630a: 206b 0030 moveal %a3@(48),%a0 <== NOT EXECUTED /* * Allocate the name table, and the objects */ if ( information->auto_extend ) { information->object_blocks[ block ] = 4630e: d5c2 addal %d2,%a2 <== NOT EXECUTED 46310: 2480 movel %d0,%a2@ <== NOT EXECUTED _Workspace_Allocate( (information->allocation_size * information->size) ); if ( !information->object_blocks[ block ] ) 46312: 588f addql #4,%sp <== NOT EXECUTED 46314: 4ab0 2800 tstl %a0@(00000000,%d2:l) <== NOT EXECUTED 46318: 6616 bnes 46330 <_Objects_Extend_information+0x1b4> <== NOT EXECUTED 4631a: 6000 00a2 braw 463be <_Objects_Extend_information+0x242> <== NOT EXECUTED return; } else { information->object_blocks[ block ] = 4631e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46320: 246b 0030 moveal %a3@(48),%a2 <== NOT EXECUTED 46324: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED 4632a: d5c2 addal %d2,%a2 <== NOT EXECUTED 4632c: 588f addql #4,%sp <== NOT EXECUTED 4632e: 2480 movel %d0,%a2@ <== NOT EXECUTED /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 46330: 2f2b 0016 movel %a3@(22),%sp@- <== NOT EXECUTED 46334: 206b 0030 moveal %a3@(48),%a0 <== NOT EXECUTED 46338: 2605 movel %d5,%d3 <== NOT EXECUTED 4633a: 2f2b 0012 movel %a3@(18),%sp@- <== NOT EXECUTED 4633e: e58b lsll #2,%d3 <== NOT EXECUTED 46340: 2f30 3800 movel %a0@(00000000,%d3:l),%sp@- <== NOT EXECUTED 46344: 200e movel %fp,%d0 <== NOT EXECUTED 46346: 0680 ffff fff4 addil #-12,%d0 <== NOT EXECUTED 4634c: 2f00 movel %d0,%sp@- <== NOT EXECUTED information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 4634e: 2404 movel %d4,%d2 <== NOT EXECUTED * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ( (the_object = (Objects_Control *) _Chain_Get( &Inactive ) ) != NULL ) { 46350: 2a00 movel %d0,%d5 <== NOT EXECUTED /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 46352: 4eb9 0004 a220 jsr 4a220 <_Chain_Initialize> <== NOT EXECUTED information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 46358: 280b movel %a3,%d4 <== NOT EXECUTED 4635a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 46360: 0684 0000 001e addil #30,%d4 <== NOT EXECUTED * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ( (the_object = (Objects_Control *) _Chain_Get( &Inactive ) ) != NULL ) { 46366: 49f9 0004 a1ec lea 4a1ec <_Chain_Get>,%a4 <== NOT EXECUTED information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 4636c: 45f9 0004 5964 lea 45964 <_Chain_Append>,%a2 <== NOT EXECUTED 46372: 6026 bras 4639a <_Objects_Extend_information+0x21e> <== NOT EXECUTED index = index_base; while ( (the_object = (Objects_Control *) _Chain_Get( &Inactive ) ) != NULL ) { the_object->id = _Objects_Build_id( 46374: 2013 movel %a3@,%d0 <== NOT EXECUTED 46376: 7218 moveq #24,%d1 <== NOT EXECUTED 46378: e3a8 lsll %d1,%d0 <== NOT EXECUTED 4637a: 4281 clrl %d1 <== NOT EXECUTED 4637c: 322b 0004 movew %a3@(4),%d1 <== NOT EXECUTED 46380: 7c1b moveq #27,%d6 <== NOT EXECUTED 46382: eda9 lsll %d6,%d1 <== NOT EXECUTED 46384: 08c0 0010 bset #16,%d0 <== NOT EXECUTED 46388: 8081 orl %d1,%d0 <== NOT EXECUTED 4638a: 8082 orl %d2,%d0 <== NOT EXECUTED 4638c: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED index ); _Chain_Append( &information->Inactive, &the_object->Node ); index++; 46390: 5282 addql #1,%d2 <== NOT EXECUTED information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 46392: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46394: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46396: 4e92 jsr %a2@ <== NOT EXECUTED index++; 46398: 508f addql #8,%sp <== NOT EXECUTED * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ( (the_object = (Objects_Control *) _Chain_Get( &Inactive ) ) != NULL ) { 4639a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4639c: 4e94 jsr %a4@ <== NOT EXECUTED 4639e: 588f addql #4,%sp <== NOT EXECUTED 463a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 463a2: 4a80 tstl %d0 <== NOT EXECUTED 463a4: 66ce bnes 46374 <_Objects_Extend_information+0x1f8> <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); index++; } information->inactive_per_block[ block ] = information->allocation_size; 463a6: 206b 002c moveal %a3@(44),%a0 <== NOT EXECUTED 463aa: 43eb 0012 lea %a3@(18),%a1 <== NOT EXECUTED 463ae: 2191 3800 movel %a1@,%a0@(00000000,%d3:l) <== NOT EXECUTED information->inactive += information->allocation_size; 463b2: 302b 002a movew %a3@(42),%d0 <== NOT EXECUTED 463b6: d0ab 0012 addl %a3@(18),%d0 <== NOT EXECUTED 463ba: 3740 002a movew %d0,%a3@(42) <== NOT EXECUTED } 463be: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 463c4: 4e5e unlk %fp <== NOT EXECUTED 463c6: 4e75 rts 000463c8 <_Objects_Free>: void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { 463c8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 463cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 463d0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 463d4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED uint32_t allocation_size = information->allocation_size; _Chain_Append( &information->Inactive, &the_object->Node ); 463d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { uint32_t allocation_size = information->allocation_size; 463da: 242a 0012 movel %a2@(18),%d2 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); 463de: 486a 001e pea %a2@(30) <== NOT EXECUTED 463e2: 4eb9 0004 5964 jsr 45964 <_Chain_Append> <== NOT EXECUTED if ( information->auto_extend ) { 463e8: 508f addql #8,%sp <== NOT EXECUTED 463ea: 4a2a 0010 tstb %a2@(16) <== NOT EXECUTED 463ee: 6752 beqs 46442 <_Objects_Free+0x7a> <== NOT EXECUTED uint32_t block; block = 463f0: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED 463f4: 222a 0006 movel %a2@(6),%d1 <== NOT EXECUTED 463f8: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 463fe: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 46404: 9081 subl %d1,%d0 <== NOT EXECUTED _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]++; 46406: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED 4640a: 4c6a 0000 0012 remul %a2@(18),%d0,%d0 <== NOT EXECUTED 46410: e588 lsll #2,%d0 <== NOT EXECUTED 46412: d1c0 addal %d0,%a0 <== NOT EXECUTED information->inactive++; 46414: 302a 002a movew %a2@(42),%d0 <== NOT EXECUTED 46418: 5280 addql #1,%d0 <== 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 ) ) ) { 4641a: 2202 movel %d2,%d1 <== NOT EXECUTED block = _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]++; 4641c: 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 ) ) ) { 4641e: e289 lsrl #1,%d1 <== NOT EXECUTED block = _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]++; information->inactive++; 46420: 3540 002a movew %d0,%a2@(42) <== 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 ) ) ) { 46424: d282 addl %d2,%d1 <== NOT EXECUTED 46426: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 4642c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4642e: 6412 bccs 46442 <_Objects_Free+0x7a> <== NOT EXECUTED _Objects_Shrink_information( information ); 46430: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } } 46434: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4643a: 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 ); 4643c: 4ef9 0004 6704 jmp 46704 <_Objects_Shrink_information> <== NOT EXECUTED } } } 46442: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 46448: 4e5e unlk %fp <== NOT EXECUTED 4644a: 4e75 rts 00046528 <_Objects_Get>: Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46528: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4652c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED * 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; 46530: 7201 moveq #1,%d1 <== NOT EXECUTED 46532: 92a8 0006 subl %a0@(6),%d1 <== NOT EXECUTED Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46536: 2f0a movel %a2,%sp@- <== NOT EXECUTED * 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; 46538: d2ae 000c addl %fp@(12),%d1 <== NOT EXECUTED Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 4653c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * 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 ) { 46540: 4280 clrl %d0 <== NOT EXECUTED Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46542: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * 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 ) { 46544: 3028 000e movew %a0@(14),%d0 <== NOT EXECUTED 46548: b081 cmpl %d1,%d0 <== NOT EXECUTED 4654a: 6524 bcss 46570 <_Objects_Get+0x48> <== NOT EXECUTED 4654c: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46552: 5280 addql #1,%d0 <== NOT EXECUTED 46554: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); if ( (the_object = information->local_table[ index ]) != NULL ) { 4655a: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED 4655e: 2430 1c00 movel %a0@(00000000,%d1:l:4),%d2 <== NOT EXECUTED 46562: 6704 beqs 46568 <_Objects_Get+0x40> <== NOT EXECUTED *location = OBJECTS_LOCAL; 46564: 4292 clrl %a2@ <== NOT EXECUTED 46566: 600e bras 46576 <_Objects_Get+0x4e> <== NOT EXECUTED /* * Valid Id for this API, Class and Node but the object has not * been allocated yet. */ _Thread_Enable_dispatch(); 46568: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 4656e: 6002 bras 46572 <_Objects_Get+0x4a> <== NOT EXECUTED /* * 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; 46570: 4282 clrl %d2 <== NOT EXECUTED 46572: 7001 moveq #1,%d0 <== NOT EXECUTED 46574: 2480 movel %d0,%a2@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 46576: 2002 movel %d2,%d0 <== NOT EXECUTED 46578: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4657c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46580: 4e5e unlk %fp <== NOT EXECUTED 46582: 4e75 rts 00046478 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint32_t the_class ) { 46478: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4647c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4647e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 46482: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46484: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 46488: 2002 movel %d2,%d0 <== NOT EXECUTED 4648a: 5380 subql #1,%d0 <== NOT EXECUTED 4648c: 7203 moveq #3,%d1 <== NOT EXECUTED 4648e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46490: 6530 bcss 464c2 <_Objects_Get_information+0x4a> <== NOT EXECUTED 46492: 603e bras 464d2 <_Objects_Get_information+0x5a> <== NOT EXECUTED return NULL; if ( !the_class ) return NULL; the_class_api_maximum = _Objects_API_maximum_class( the_api ); 46494: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46496: 4eb9 0004 a5b4 jsr 4a5b4 <_Objects_API_maximum_class> <== NOT EXECUTED if ( the_class_api_maximum < 0 || 4649c: 588f addql #4,%sp <== NOT EXECUTED 4649e: 4a80 tstl %d0 <== NOT EXECUTED 464a0: 6d20 blts 464c2 <_Objects_Get_information+0x4a> <== NOT EXECUTED 464a2: b083 cmpl %d3,%d0 <== NOT EXECUTED 464a4: 651c bcss 464c2 <_Objects_Get_information+0x4a> <== NOT EXECUTED the_class > (uint32_t) the_class_api_maximum ) return NULL; if ( !_Objects_Information_table[ the_api ] ) 464a6: 41f9 0005 7e34 lea 57e34 <_Objects_Information_table>,%a0 <== NOT EXECUTED 464ac: 2070 2c00 moveal %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 464b0: 4a88 tstl %a0 <== NOT EXECUTED 464b2: 670e beqs 464c2 <_Objects_Get_information+0x4a> <== NOT EXECUTED return NULL; info = _Objects_Information_table[ the_api ][ the_class ]; 464b4: 2070 3c00 moveal %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED if ( !info ) 464b8: 4a88 tstl %a0 <== NOT EXECUTED 464ba: 6708 beqs 464c4 <_Objects_Get_information+0x4c> <== NOT EXECUTED * In a multprocessing configuration, we may access remote objects. * Thus we may have 0 local instances and still have a valid object * pointer. */ #if !defined(RTEMS_MULTIPROCESSING) if ( info->maximum == 0 ) 464bc: 4a68 000e tstw %a0@(14) <== NOT EXECUTED 464c0: 6602 bnes 464c4 <_Objects_Get_information+0x4c> <== NOT EXECUTED 464c2: 91c8 subal %a0,%a0 <== NOT EXECUTED return NULL; #endif return info; } 464c4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 464c8: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 464cc: 4e5e unlk %fp <== NOT EXECUTED 464ce: 2008 movel %a0,%d0 <== NOT EXECUTED 464d0: 4e75 rts <== NOT EXECUTED int the_class_api_maximum; if ( !_Objects_Is_api_valid( the_api ) ) return NULL; if ( !the_class ) 464d2: 4a83 tstl %d3 <== NOT EXECUTED 464d4: 67ec beqs 464c2 <_Objects_Get_information+0x4a> <== NOT EXECUTED 464d6: 60bc bras 46494 <_Objects_Get_information+0x1c> <== NOT EXECUTED 0004644c <_Objects_Get_information_id>: #include Objects_Information *_Objects_Get_information_id( Objects_Id id ) { 4644c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46450: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46454: 2f02 movel %d2,%sp@- <== NOT EXECUTED return _Objects_Get_information( 46456: 2200 movel %d0,%d1 <== NOT EXECUTED 46458: 741b moveq #27,%d2 <== NOT EXECUTED 4645a: e4a9 lsrl %d2,%d1 <== NOT EXECUTED 4645c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4645e: 7218 moveq #24,%d1 <== NOT EXECUTED 46460: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 46462: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 46466: c480 andl %d0,%d2 <== NOT EXECUTED 46468: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4646a: 4eb9 0004 6478 jsr 46478 <_Objects_Get_information> <== NOT EXECUTED _Objects_Get_API( id ), _Objects_Get_class( id ) ); } 46470: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46474: 4e5e unlk %fp <== NOT EXECUTED 46476: 4e75 rts 000464d8 <_Objects_Get_isr_disable>: Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_Level *level_p ) { 464d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 464dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464de: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 464e2: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) index = id - information->minimum_id + 1; #else /* index = _Objects_Get_index( id ); */ index = id & 0x0000ffff; 464e6: 4282 clrl %d2 <== NOT EXECUTED /* This should work but doesn't always :( */ /* index = (uint16_t ) id; */ #endif _ISR_Disable( level ); 464e8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) index = id - information->minimum_id + 1; #else /* index = _Objects_Get_index( id ); */ index = id & 0x0000ffff; 464ee: 342e 000e movew %fp@(14),%d2 <== NOT EXECUTED /* This should work but doesn't always :( */ /* index = (uint16_t ) id; */ #endif _ISR_Disable( level ); 464f2: 40c1 movew %sr,%d1 <== NOT EXECUTED 464f4: 8081 orl %d1,%d0 <== NOT EXECUTED 464f6: 46c0 movew %d0,%sr <== NOT EXECUTED if ( information->maximum >= index ) { 464f8: 4280 clrl %d0 <== NOT EXECUTED 464fa: 3028 000e movew %a0@(14),%d0 <== NOT EXECUTED 464fe: b480 cmpl %d0,%d2 <== NOT EXECUTED 46500: 6218 bhis 4651a <_Objects_Get_isr_disable+0x42> <== NOT EXECUTED if ( (the_object = information->local_table[ index ]) != NULL ) { 46502: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED 46506: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED 4650a: 670a beqs 46516 <_Objects_Get_isr_disable+0x3e> <== NOT EXECUTED *location = OBJECTS_LOCAL; *level_p = level; 4650c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED #endif _ISR_Disable( level ); if ( information->maximum >= index ) { if ( (the_object = information->local_table[ index ]) != NULL ) { *location = OBJECTS_LOCAL; 46510: 4291 clrl %a1@ <== NOT EXECUTED *level_p = level; 46512: 2081 movel %d1,%a0@ <== NOT EXECUTED 46514: 600c bras 46522 <_Objects_Get_isr_disable+0x4a> <== NOT EXECUTED return the_object; } _ISR_Enable( level ); 46516: 46c1 movew %d1,%sr <== NOT EXECUTED 46518: 6004 bras 4651e <_Objects_Get_isr_disable+0x46> <== NOT EXECUTED *location = OBJECTS_ERROR; return NULL; } _ISR_Enable( level ); 4651a: 46c1 movew %d1,%sr <== NOT EXECUTED *location = OBJECTS_ERROR; 4651c: 4280 clrl %d0 <== NOT EXECUTED 4651e: 7201 moveq #1,%d1 <== NOT EXECUTED 46520: 2281 movel %d1,%a1@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 46522: 241f movel %sp@+,%d2 <== NOT EXECUTED 46524: 4e5e unlk %fp <== NOT EXECUTED 46526: 4e75 rts 00050230 <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) { 50230: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 50234: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 50238: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5023c: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 50240: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED char lname[5]; Objects_Control *the_object; Objects_Locations location; Objects_Id tmpId; if ( length == 0 ) 50244: 4a85 tstl %d5 <== NOT EXECUTED 50246: 6700 00c6 beqw 5030e <_Objects_Get_name_as_string+0xde> <== NOT EXECUTED return NULL; if ( name == NULL ) 5024a: 4a84 tstl %d4 <== NOT EXECUTED 5024c: 6700 00c2 beqw 50310 <_Objects_Get_name_as_string+0xe0> <== NOT EXECUTED return NULL; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 50250: 4a80 tstl %d0 <== NOT EXECUTED 50252: 6704 beqs 50258 <_Objects_Get_name_as_string+0x28> <== NOT EXECUTED 50254: 2400 movel %d0,%d2 <== NOT EXECUTED 50256: 600a bras 50262 <_Objects_Get_name_as_string+0x32> <== NOT EXECUTED 50258: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== NOT EXECUTED 5025e: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 50262: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50264: 4eb9 0004 a008 jsr 4a008 <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 5026a: 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 ); 5026c: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !information ) 5026e: 4a80 tstl %d0 <== NOT EXECUTED 50270: 6700 009c beqw 5030e <_Objects_Get_name_as_string+0xde> <== NOT EXECUTED return NULL; the_object = _Objects_Get( information, tmpId, &location ); 50274: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50278: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5027a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5027c: 4eb9 0004 a0e4 jsr 4a0e4 <_Objects_Get> <== NOT EXECUTED switch ( location ) { 50282: dffc 0000 000c addal #12,%sp <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); if ( !information ) return NULL; the_object = _Objects_Get( information, tmpId, &location ); 50288: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 5028a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5028e: 667e bnes 5030e <_Objects_Get_name_as_string+0xde> <== NOT EXECUTED case OBJECTS_ERROR: return NULL; case OBJECTS_LOCAL: if ( information->is_string ) { 50290: 4a2a 0034 tstb %a2@(52) <== NOT EXECUTED 50294: 670c beqs 502a2 <_Objects_Get_name_as_string+0x72> <== NOT EXECUTED s = the_object->name.name_p; 50296: 2668 000c moveal %a0@(12),%a3 <== NOT EXECUTED lname[ 4 ] = '\0'; s = lname; } d = name; if ( s ) { 5029a: 4a8b tstl %a3 <== NOT EXECUTED 5029c: 6632 bnes 502d0 <_Objects_Get_name_as_string+0xa0> <== NOT EXECUTED 5029e: 2444 moveal %d4,%a2 <== NOT EXECUTED 502a0: 6062 bras 50304 <_Objects_Get_name_as_string+0xd4> <== NOT EXECUTED case OBJECTS_LOCAL: if ( information->is_string ) { s = the_object->name.name_p; } else { uint32_t u32_name = (uint32_t) the_object->name.name_u32; 502a2: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; 502a6: 7418 moveq #24,%d2 <== NOT EXECUTED 502a8: 2200 movel %d0,%d1 <== NOT EXECUTED 502aa: e4a9 lsrl %d2,%d1 <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; 502ac: 2400 movel %d0,%d2 <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 502ae: 2600 movel %d0,%d3 <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; 502b0: 1d40 fffa moveb %d0,%fp@(-6) <== NOT EXECUTED s = the_object->name.name_p; } else { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; 502b4: 4242 clrw %d2 <== NOT EXECUTED 502b6: 4842 swap %d2 <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 502b8: e08b lsrl #8,%d3 <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 502ba: 4200 clrb %d0 <== NOT EXECUTED if ( information->is_string ) { s = the_object->name.name_p; } else { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; 502bc: 1d41 fff7 moveb %d1,%fp@(-9) <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; 502c0: 1d42 fff8 moveb %d2,%fp@(-8) <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 502c4: 1d43 fff9 moveb %d3,%fp@(-7) <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 502c8: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED 502cc: 47ee fff7 lea %fp@(-9),%a3 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 502d0: 2405 movel %d5,%d2 <== NOT EXECUTED 502d2: 5382 subql #1,%d2 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; lname[ 2 ] = (u32_name >> 8) & 0xff; lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 502d4: 2444 moveal %d4,%a2 <== NOT EXECUTED 502d6: 93c9 subal %a1,%a1 <== NOT EXECUTED 502d8: 601a bras 502f4 <_Objects_Get_name_as_string+0xc4> <== NOT EXECUTED } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { *d = (isprint(*s)) ? *s : '*'; 502da: 2079 0006 1e78 moveal 61e78 <__ctype_ptr>,%a0 <== NOT EXECUTED 502e0: 1030 0800 moveb %a0@(00000000,%d0:l),%d0 <== NOT EXECUTED 502e4: 49c0 extbl %d0 <== NOT EXECUTED 502e6: 0280 0000 0097 andil #151,%d0 <== NOT EXECUTED 502ec: 6602 bnes 502f0 <_Objects_Get_name_as_string+0xc0> <== NOT EXECUTED 502ee: 722a moveq #42,%d1 <== NOT EXECUTED 502f0: 14c1 moveb %d1,%a2@+ <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 502f2: 5289 addql #1,%a1 <== NOT EXECUTED 502f4: b489 cmpl %a1,%d2 <== NOT EXECUTED 502f6: 630c blss 50304 <_Objects_Get_name_as_string+0xd4> <== NOT EXECUTED 502f8: 1233 9800 moveb %a3@(00000000,%a1:l),%d1 <== NOT EXECUTED *d = (isprint(*s)) ? *s : '*'; 502fc: 1001 moveb %d1,%d0 <== NOT EXECUTED 502fe: 49c0 extbl %d0 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 50300: 4a01 tstb %d1 <== NOT EXECUTED 50302: 66d6 bnes 502da <_Objects_Get_name_as_string+0xaa> <== NOT EXECUTED *d = (isprint(*s)) ? *s : '*'; } } *d = '\0'; 50304: 4212 clrb %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 50306: 4eb9 0004 a936 jsr 4a936 <_Thread_Enable_dispatch> <== NOT EXECUTED 5030c: 6002 bras 50310 <_Objects_Get_name_as_string+0xe0> <== NOT EXECUTED return name; 5030e: 4284 clrl %d4 <== NOT EXECUTED } return NULL; /* unreachable path */ } 50310: 2004 movel %d4,%d0 <== NOT EXECUTED 50312: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 50318: 4e5e unlk %fp <== NOT EXECUTED 5031a: 4e75 rts 00052bd4 <_Objects_Get_next>: Objects_Information *information, Objects_Id id, Objects_Locations *location_p, Objects_Id *next_id_p ) { 52bd4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 52bd8: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 52bdc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 52be0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 52be4: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 52be8: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED Objects_Control *object; Objects_Id next_id; if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX) 52bec: 4a41 tstw %d1 <== NOT EXECUTED 52bee: 6704 beqs 52bf4 <_Objects_Get_next+0x20> <== NOT EXECUTED 52bf0: 2401 movel %d1,%d2 <== NOT EXECUTED 52bf2: 6004 bras 52bf8 <_Objects_Get_next+0x24> <== NOT EXECUTED next_id = information->minimum_id; 52bf4: 242b 0006 movel %a3@(6),%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 52bf8: 49f9 0004 a0e4 lea 4a0e4 <_Objects_Get>,%a4 <== NOT EXECUTED else next_id = id; do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) 52bfe: 2202 movel %d2,%d1 <== NOT EXECUTED 52c00: 4280 clrl %d0 <== NOT EXECUTED 52c02: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 52c08: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 52c0c: b081 cmpl %d1,%d0 <== NOT EXECUTED 52c0e: 640c bccs 52c1c <_Objects_Get_next+0x48> <== NOT EXECUTED { *location_p = OBJECTS_ERROR; 52c10: 7401 moveq #1,%d2 <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 52c12: 72ff moveq #-1,%d1 <== NOT EXECUTED do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) { *location_p = OBJECTS_ERROR; 52c14: 2482 movel %d2,%a2@ <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 52c16: 4280 clrl %d0 <== NOT EXECUTED 52c18: 2a81 movel %d1,%a5@ <== NOT EXECUTED 52c1a: 6016 bras 52c32 <_Objects_Get_next+0x5e> <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 52c1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 52c1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED next_id++; 52c20: 5282 addql #1,%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 52c22: 2f0b movel %a3,%sp@- <== NOT EXECUTED 52c24: 4e94 jsr %a4@ <== NOT EXECUTED next_id++; } while (*location_p != OBJECTS_LOCAL); 52c26: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 52c2c: 4a92 tstl %a2@ <== NOT EXECUTED 52c2e: 66ce bnes 52bfe <_Objects_Get_next+0x2a> <== NOT EXECUTED *next_id_p = next_id; 52c30: 2a82 movel %d2,%a5@ <== NOT EXECUTED return object; final: *next_id_p = OBJECTS_ID_FINAL; return 0; } 52c32: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 52c38: 4e5e unlk %fp <== NOT EXECUTED 52c3a: 4e75 rts 00051794 <_Objects_Get_no_protection>: Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 51794: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 51798: 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; 5179c: 7201 moveq #1,%d1 <== NOT EXECUTED 5179e: 92a8 0006 subl %a0@(6),%d1 <== NOT EXECUTED 517a2: d2ae 000c addl %fp@(12),%d1 <== NOT EXECUTED Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 517a6: 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 ) { 517aa: 4280 clrl %d0 <== NOT EXECUTED 517ac: 3028 000e movew %a0@(14),%d0 <== NOT EXECUTED 517b0: b280 cmpl %d0,%d1 <== NOT EXECUTED 517b2: 620e bhis 517c2 <_Objects_Get_no_protection+0x2e> <== NOT EXECUTED if ( (the_object = information->local_table[ index ]) != NULL ) { 517b4: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED 517b8: 2030 1c00 movel %a0@(00000000,%d1:l:4),%d0 <== NOT EXECUTED 517bc: 6704 beqs 517c2 <_Objects_Get_no_protection+0x2e> <== NOT EXECUTED *location = OBJECTS_LOCAL; 517be: 4291 clrl %a1@ <== NOT EXECUTED 517c0: 6006 bras 517c8 <_Objects_Get_no_protection+0x34> <== 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; 517c2: 7201 moveq #1,%d1 <== NOT EXECUTED 517c4: 4280 clrl %d0 <== NOT EXECUTED 517c6: 2281 movel %d1,%a1@ <== NOT EXECUTED return NULL; } 517c8: 4e5e unlk %fp <== NOT EXECUTED 517ca: 4e75 rts 000466fc <_Objects_Handler_initialization>: uint32_t maximum_nodes, uint32_t maximum_global_objects ) #else void _Objects_Handler_initialization(void) #endif { 466fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED node, maximum_nodes, maximum_global_objects ); #endif } 46700: 4e5e unlk %fp <== NOT EXECUTED 46702: 4e75 rts 0004725c <_Objects_Id_to_name>: Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) { 4725c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47260: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 47264: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 47268: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Id tmpId; Objects_Information *information; Objects_Control *the_object = (Objects_Control *) 0; Objects_Locations ignored_location; if ( !name ) 4726c: 4a8a tstl %a2 <== NOT EXECUTED 4726e: 6604 bnes 47274 <_Objects_Id_to_name+0x18> <== NOT EXECUTED 47270: 7001 moveq #1,%d0 <== NOT EXECUTED 47272: 6068 bras 472dc <_Objects_Id_to_name+0x80> <== NOT EXECUTED return OBJECTS_INVALID_NAME; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 47274: 4a80 tstl %d0 <== NOT EXECUTED 47276: 6704 beqs 4727c <_Objects_Id_to_name+0x20> <== NOT EXECUTED 47278: 2400 movel %d0,%d2 <== NOT EXECUTED 4727a: 600a bras 47286 <_Objects_Id_to_name+0x2a> <== NOT EXECUTED 4727c: 2079 0005 a022 moveal 5a022 <_Thread_Executing>,%a0 <== NOT EXECUTED 47282: 2428 0008 movel %a0@(8),%d2 <== 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); 47286: 7018 moveq #24,%d0 <== NOT EXECUTED 47288: 2202 movel %d2,%d1 <== NOT EXECUTED 4728a: e0a9 lsrl %d0,%d1 <== NOT EXECUTED 4728c: 7607 moveq #7,%d3 <== NOT EXECUTED 4728e: c283 andl %d3,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 47290: 2001 movel %d1,%d0 <== NOT EXECUTED 47292: 5380 subql #1,%d0 <== NOT EXECUTED 47294: 163c 0003 moveb #3,%d3 <== NOT EXECUTED 47298: b680 cmpl %d0,%d3 <== NOT EXECUTED 4729a: 653e bcss 472da <_Objects_Id_to_name+0x7e> <== NOT EXECUTED 4729c: 6048 bras 472e6 <_Objects_Id_to_name+0x8a> <== NOT EXECUTED if ( !_Objects_Information_table[ the_api ] ) return OBJECTS_INVALID_ID; the_class = _Objects_Get_class( tmpId ); information = _Objects_Information_table[ the_api ][ the_class ]; 4729e: 2002 movel %d2,%d0 <== NOT EXECUTED 472a0: 721b moveq #27,%d1 <== NOT EXECUTED 472a2: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 472a4: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED if ( !information ) 472a8: 4a88 tstl %a0 <== NOT EXECUTED 472aa: 672e beqs 472da <_Objects_Id_to_name+0x7e> <== NOT EXECUTED return OBJECTS_INVALID_ID; if ( information->is_string ) 472ac: 4a28 0034 tstb %a0@(52) <== NOT EXECUTED 472b0: 6628 bnes 472da <_Objects_Id_to_name+0x7e> <== NOT EXECUTED return OBJECTS_INVALID_ID; the_object = _Objects_Get( information, tmpId, &ignored_location ); 472b2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 472b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 472b8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 472ba: 4eb9 0004 7200 jsr 47200 <_Objects_Get> <== NOT EXECUTED if ( !the_object ) 472c0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED return OBJECTS_INVALID_ID; if ( information->is_string ) return OBJECTS_INVALID_ID; the_object = _Objects_Get( information, tmpId, &ignored_location ); 472c6: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !the_object ) 472c8: 4a80 tstl %d0 <== NOT EXECUTED 472ca: 670e beqs 472da <_Objects_Id_to_name+0x7e> <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; 472cc: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 472d0: 4eb9 0004 7a7e jsr 47a7e <_Thread_Enable_dispatch> <== NOT EXECUTED 472d6: 4280 clrl %d0 <== NOT EXECUTED 472d8: 6002 bras 472dc <_Objects_Id_to_name+0x80> <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 472da: 7003 moveq #3,%d0 <== NOT EXECUTED } 472dc: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 472e2: 4e5e unlk %fp <== NOT EXECUTED 472e4: 4e75 rts <== 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 ] ) 472e6: 41f9 0005 9f1c lea 59f1c <_Objects_Information_table>,%a0 <== NOT EXECUTED 472ec: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED 472f0: 4a88 tstl %a0 <== NOT EXECUTED 472f2: 66aa bnes 4729e <_Objects_Id_to_name+0x42> <== NOT EXECUTED 472f4: 60e4 bras 472da <_Objects_Id_to_name+0x7e> <== NOT EXECUTED ... 00046584 <_Objects_Initialize_information>: , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) { 46584: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46588: 48d7 007c moveml %d2-%d6,%sp@ <== NOT EXECUTED 4658c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46590: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 46594: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED /* * Set the entry in the object information table. */ _Objects_Information_table[ the_api ][ the_class ] = information; 46598: 41f9 0005 7e34 lea 57e34 <_Objects_Information_table>,%a0 <== NOT EXECUTED 4659e: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) { 465a2: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED * Are we operating in unlimited, or auto-extend mode */ information->auto_extend = (maximum & OBJECTS_UNLIMITED_OBJECTS) ? TRUE : FALSE; maximum &= ~OBJECTS_UNLIMITED_OBJECTS; 465a6: 2c04 movel %d4,%d6 <== NOT EXECUTED 465a8: 0886 001f bclr #31,%d6 <== NOT EXECUTED */ if ( maximum == 0 ) minimum_index = 0; else minimum_index = 1; information->minimum_id = 465ac: 7218 moveq #24,%d1 <== NOT EXECUTED uint32_t name_length; #if defined(RTEMS_MULTIPROCESSING) uint32_t index; #endif information->the_api = the_api; 465ae: 2280 movel %d0,%a1@ <== NOT EXECUTED */ if ( maximum == 0 ) minimum_index = 0; else minimum_index = 1; information->minimum_id = 465b0: e3a8 lsll %d1,%d0 <== NOT EXECUTED 465b2: 4a86 tstl %d6 <== NOT EXECUTED 465b4: 56c3 sne %d3 <== NOT EXECUTED 465b6: 123c 001b moveb #27,%d1 <== NOT EXECUTED /* * Set the entry in the object information table. */ _Objects_Information_table[ the_api ][ the_class ] = information; 465ba: 2189 2c00 movel %a1,%a0@(00000000,%d2:l:4) <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) uint32_t index; #endif information->the_api = the_api; information->the_class = the_class; 465be: 3342 0004 movew %d2,%a1@(4) <== NOT EXECUTED , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) { 465c2: 2a2e 0020 movel %fp@(32),%d5 <== NOT EXECUTED */ if ( maximum == 0 ) minimum_index = 0; else minimum_index = 1; information->minimum_id = 465c6: e3aa lsll %d1,%d2 <== NOT EXECUTED 465c8: 08c0 0010 bset #16,%d0 <== NOT EXECUTED 465cc: 49c3 extbl %d3 <== NOT EXECUTED 465ce: 8082 orl %d2,%d0 <== NOT EXECUTED 465d0: 4483 negl %d3 <== NOT EXECUTED 465d2: 8083 orl %d3,%d0 <== NOT EXECUTED , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) { 465d4: 4281 clrl %d1 <== NOT EXECUTED */ if ( maximum == 0 ) minimum_index = 0; else minimum_index = 1; information->minimum_id = 465d6: 2340 0006 movel %d0,%a1@(6) <== NOT EXECUTED , bool supports_global, Objects_Thread_queue_Extract_callout extract #endif ) { 465da: 322e 001a movew %fp@(26),%d1 <== NOT EXECUTED information->local_table = 0; information->inactive_per_block = 0; information->object_blocks = 0; information->inactive = 0; 465de: 4240 clrw %d0 <== NOT EXECUTED /* * Set the size of the object */ information->size = size; 465e0: 2341 0016 movel %d1,%a1@(22) <== NOT EXECUTED information->local_table = 0; information->inactive_per_block = 0; information->object_blocks = 0; information->inactive = 0; 465e4: 3340 002a movew %d0,%a1@(42) <== NOT EXECUTED /* * Are we operating in unlimited, or auto-extend mode */ information->auto_extend = 465e8: d884 addl %d4,%d4 <== NOT EXECUTED 465ea: 9984 subxl %d4,%d4 <== NOT EXECUTED 465ec: 4484 negl %d4 <== NOT EXECUTED uint32_t index; #endif information->the_api = the_api; information->the_class = the_class; information->is_string = is_string; 465ee: 136e 001f 0034 moveb %fp@(31),%a1@(52) <== NOT EXECUTED * Calculate the maximum name length */ name_length = maximum_name_length; if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) ) 465f4: 7003 moveq #3,%d0 <== NOT EXECUTED /* * Provide a null local table entry for the case of any empty table. */ information->local_table = &null_local_table; 465f6: 223c 0005 762c movel #357932,%d1 <== NOT EXECUTED /* * Are we operating in unlimited, or auto-extend mode */ information->auto_extend = 465fc: 1344 0010 moveb %d4,%a1@(16) <== NOT EXECUTED information->the_api = the_api; information->the_class = the_class; information->is_string = is_string; information->local_table = 0; information->inactive_per_block = 0; 46600: 42a9 002c clrl %a1@(44) <== NOT EXECUTED * Calculate the maximum name length */ name_length = maximum_name_length; if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) ) 46604: c085 andl %d5,%d0 <== NOT EXECUTED /* * Provide a null local table entry for the case of any empty table. */ information->local_table = &null_local_table; 46606: 2341 001a movel %d1,%a1@(26) <== NOT EXECUTED information->the_class = the_class; information->is_string = is_string; information->local_table = 0; information->inactive_per_block = 0; information->object_blocks = 0; 4660a: 42a9 0030 clrl %a1@(48) <== NOT EXECUTED /* * The allocation unit is the maximum value */ information->allocation_size = maximum; 4660e: 2346 0012 movel %d6,%a1@(18) <== NOT EXECUTED * Calculate the maximum name length */ name_length = maximum_name_length; if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) ) 46612: 4a80 tstl %d0 <== NOT EXECUTED 46614: 6604 bnes 4661a <_Objects_Initialize_information+0x96> <== NOT EXECUTED 46616: 2005 movel %d5,%d0 <== NOT EXECUTED 46618: 6008 bras 46622 <_Objects_Initialize_information+0x9e> <== NOT EXECUTED name_length = (name_length + OBJECTS_NAME_ALIGNMENT) & 4661a: 2005 movel %d5,%d0 <== NOT EXECUTED 4661c: 5880 addql #4,%d0 <== NOT EXECUTED 4661e: 72fc moveq #-4,%d1 <== NOT EXECUTED 46620: c081 andl %d1,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 46622: 41e9 0022 lea %a1@(34),%a0 <== NOT EXECUTED 46626: 2348 001e movel %a0,%a1@(30) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4662a: 41e9 001e lea %a1@(30),%a0 <== NOT EXECUTED ~(OBJECTS_NAME_ALIGNMENT-1); information->name_length = name_length; 4662e: 3340 0036 movew %d0,%a1@(54) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 46632: 42a9 0022 clrl %a1@(34) <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 46636: 2348 0026 movel %a0,%a1@(38) <== NOT EXECUTED /* * Initialize objects .. if there are any */ if ( maximum ) { 4663a: 4a86 tstl %d6 <== NOT EXECUTED 4663c: 6716 beqs 46654 <_Objects_Initialize_information+0xd0> <== NOT EXECUTED * Always have the maximum size available so the current performance * figures are create are met. If the user moves past the maximum * number then a performance hit is taken. */ _Objects_Extend_information( information ); 4663e: 2d49 0008 movel %a1,%fp@(8) <== NOT EXECUTED _Chain_Initialize_empty( &information->global_table[ index ] ); } else information->global_table = NULL; #endif } 46642: 4cd7 007c moveml %sp@,%d2-%d6 <== NOT EXECUTED 46646: 4e5e unlk %fp <== NOT EXECUTED /* * Reset the maximum value. It will be updated when the information is * extended. */ information->maximum = 0; 46648: 4240 clrw %d0 <== NOT EXECUTED 4664a: 3340 000e movew %d0,%a1@(14) <== NOT EXECUTED * Always have the maximum size available so the current performance * figures are create are met. If the user moves past the maximum * number then a performance hit is taken. */ _Objects_Extend_information( information ); 4664e: 4ef9 0004 617c jmp 4617c <_Objects_Extend_information> <== NOT EXECUTED _Chain_Initialize_empty( &information->global_table[ index ] ); } else information->global_table = NULL; #endif } 46654: 4cd7 007c moveml %sp@,%d2-%d6 <== NOT EXECUTED 46658: 4e5e unlk %fp <== NOT EXECUTED 4665a: 4e75 rts 000500bc <_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 ) { 500bc: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 500c0: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 500c4: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 500c8: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 500cc: 2a6e 0010 moveal %fp@(16),%a5 <== NOT EXECUTED uint32_t index; uint32_t name_length; /* ASSERT: information->is_string == TRUE */ if ( !id ) 500d0: 4a8d tstl %a5 <== NOT EXECUTED 500d2: 6604 bnes 500d8 <_Objects_Name_to_id_string+0x1c> <== NOT EXECUTED 500d4: 7002 moveq #2,%d0 <== NOT EXECUTED 500d6: 6050 bras 50128 <_Objects_Name_to_id_string+0x6c> <== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( !name ) 500d8: 4a84 tstl %d4 <== NOT EXECUTED 500da: 674a beqs 50126 <_Objects_Name_to_id_string+0x6a> <== NOT EXECUTED return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { 500dc: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 500e0: 6744 beqs 50126 <_Objects_Name_to_id_string+0x6a> <== NOT EXECUTED name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { 500e2: 4283 clrl %d3 <== NOT EXECUTED 500e4: 3600 movew %d0,%d3 <== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { 500e6: 7401 moveq #1,%d2 <== NOT EXECUTED continue; if ( !the_object->name.name_p ) continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { 500e8: 49f9 0005 2e1c lea 52e1c ,%a4 <== NOT EXECUTED 500ee: 6032 bras 50122 <_Objects_Name_to_id_string+0x66> <== NOT EXECUTED if ( information->maximum != 0 ) { name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { the_object = information->local_table[ index ]; 500f0: 206b 001a moveal %a3@(26),%a0 <== NOT EXECUTED 500f4: 2470 2c00 moveal %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED if ( !the_object ) 500f8: 4a8a tstl %a2 <== NOT EXECUTED 500fa: 6724 beqs 50120 <_Objects_Name_to_id_string+0x64> <== NOT EXECUTED continue; if ( !the_object->name.name_p ) 500fc: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 50100: 671e beqs 50120 <_Objects_Name_to_id_string+0x64> <== NOT EXECUTED continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { 50102: 4280 clrl %d0 <== NOT EXECUTED 50104: 302b 0036 movew %a3@(54),%d0 <== NOT EXECUTED 50108: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5010a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5010c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5010e: 4e94 jsr %a4@ <== NOT EXECUTED 50110: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 50116: 4a80 tstl %d0 <== NOT EXECUTED 50118: 6606 bnes 50120 <_Objects_Name_to_id_string+0x64> <== NOT EXECUTED *id = the_object->id; 5011a: 2aaa 0008 movel %a2@(8),%a5@ <== NOT EXECUTED 5011e: 6008 bras 50128 <_Objects_Name_to_id_string+0x6c> <== NOT EXECUTED return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { 50120: 5282 addql #1,%d2 <== NOT EXECUTED 50122: b682 cmpl %d2,%d3 <== NOT EXECUTED 50124: 64ca bccs 500f0 <_Objects_Name_to_id_string+0x34> <== NOT EXECUTED 50126: 7001 moveq #1,%d0 <== NOT EXECUTED } } } return OBJECTS_INVALID_NAME; } 50128: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 5012e: 4e5e unlk %fp <== NOT EXECUTED 50130: 4e75 rts <== NOT EXECUTED ... 0004668c <_Objects_Name_to_id_u32>: Objects_Information *information, uint32_t name, uint32_t node, Objects_Id *id ) { 4668c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46690: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46694: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46698: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4669c: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 466a0: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED Objects_Name name_for_mp; #endif /* ASSERT: information->is_string == FALSE */ if ( !id ) 466a4: 4a89 tstl %a1 <== NOT EXECUTED 466a6: 6604 bnes 466ac <_Objects_Name_to_id_u32+0x20> <== NOT EXECUTED 466a8: 7002 moveq #2,%d0 <== NOT EXECUTED 466aa: 6048 bras 466f4 <_Objects_Name_to_id_u32+0x68> <== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( name == 0 ) 466ac: 4a82 tstl %d2 <== NOT EXECUTED 466ae: 6742 beqs 466f2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED return OBJECTS_INVALID_NAME; search_local_node = FALSE; if ( information->maximum != 0 && 466b0: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 466b4: 673c beqs 466f2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED 466b6: 4a80 tstl %d0 <== NOT EXECUTED 466b8: 672c beqs 466e6 <_Objects_Name_to_id_u32+0x5a> <== NOT EXECUTED 466ba: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 466c0: 6724 beqs 466e6 <_Objects_Name_to_id_u32+0x5a> <== NOT EXECUTED 466c2: 7601 moveq #1,%d3 <== NOT EXECUTED 466c4: b680 cmpl %d0,%d3 <== NOT EXECUTED 466c6: 662a bnes 466f2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED 466c8: 601c bras 466e6 <_Objects_Name_to_id_u32+0x5a> <== NOT EXECUTED if ( search_local_node ) { name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { the_object = information->local_table[ index ]; 466ca: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED 466ce: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED search_local_node = TRUE; if ( search_local_node ) { name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { 466d2: 5280 addql #1,%d0 <== NOT EXECUTED the_object = information->local_table[ index ]; if ( !the_object ) 466d4: 4a88 tstl %a0 <== NOT EXECUTED 466d6: 6716 beqs 466ee <_Objects_Name_to_id_u32+0x62> <== NOT EXECUTED continue; if ( name == the_object->name.name_u32 ) { 466d8: b4a8 000c cmpl %a0@(12),%d2 <== NOT EXECUTED 466dc: 6610 bnes 466ee <_Objects_Name_to_id_u32+0x62> <== NOT EXECUTED *id = the_object->id; 466de: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED 466e2: 4280 clrl %d0 <== NOT EXECUTED 466e4: 600e bras 466f4 <_Objects_Name_to_id_u32+0x68> <== NOT EXECUTED search_local_node = TRUE; if ( search_local_node ) { name_length = information->name_length; for ( index = 1; index <= information->maximum; index++ ) { 466e6: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 466ec: 7001 moveq #1,%d0 <== NOT EXECUTED 466ee: b280 cmpl %d0,%d1 <== NOT EXECUTED 466f0: 64d8 bccs 466ca <_Objects_Name_to_id_u32+0x3e> <== NOT EXECUTED 466f2: 7001 moveq #1,%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 } 466f4: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 466f8: 4e5e unlk %fp <== NOT EXECUTED 466fa: 4e75 rts 0004665c <_Objects_Namespace_remove>: void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 4665c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46660: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 46662: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 46666: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 4666a: 4a28 0034 tstb %a0@(52) <== NOT EXECUTED 4666e: 6710 beqs 46680 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED 46670: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 46674: 670a beqs 46680 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 46676: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46678: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 4667e: 588f addql #4,%sp <== NOT EXECUTED /* * Clear out either format. */ the_object->name.name_p = NULL; the_object->name.name_u32 = 0; 46680: 42aa 000c clrl %a2@(12) <== NOT EXECUTED } 46684: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46688: 4e5e unlk %fp <== NOT EXECUTED 4668a: 4e75 rts 00046aa0 <_Objects_Set_name>: bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 46aa0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46aa4: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 46aa8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ) + 1; 46aac: 4280 clrl %d0 <== NOT EXECUTED 46aae: 302a 0036 movew %a2@(54),%d0 <== NOT EXECUTED 46ab2: 2f00 movel %d0,%sp@- <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 46ab4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 46ab8: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ) + 1; 46abc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46abe: 4eb9 0004 d888 jsr 4d888 <== NOT EXECUTED 46ac4: 2600 movel %d0,%d3 <== NOT EXECUTED if ( information->is_string ) { 46ac6: 508f addql #8,%sp <== NOT EXECUTED { size_t length; const char *s; s = name; length = strnlen( name, information->name_length ) + 1; 46ac8: 5283 addql #1,%d3 <== NOT EXECUTED if ( information->is_string ) { 46aca: 4a2a 0034 tstb %a2@(52) <== NOT EXECUTED 46ace: 6748 beqs 46b18 <_Objects_Set_name+0x78> <== NOT EXECUTED char *d; d = _Workspace_Allocate( length ); 46ad0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ad2: 4eb9 0004 8330 jsr 48330 <_Workspace_Allocate> <== NOT EXECUTED if ( !d ) 46ad8: 588f addql #4,%sp <== NOT EXECUTED length = strnlen( name, information->name_length ) + 1; if ( information->is_string ) { char *d; d = _Workspace_Allocate( length ); 46ada: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !d ) 46adc: 4a80 tstl %d0 <== NOT EXECUTED 46ade: 6606 bnes 46ae6 <_Objects_Set_name+0x46> <== NOT EXECUTED 46ae0: 4200 clrb %d0 <== NOT EXECUTED 46ae2: 6000 0088 braw 46b6c <_Objects_Set_name+0xcc> <== NOT EXECUTED return FALSE; if ( the_object->name.name_p ) { 46ae6: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED 46aea: 670e beqs 46afa <_Objects_Set_name+0x5a> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 46aec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46aee: 4eb9 0004 8318 jsr 48318 <_Workspace_Free> <== NOT EXECUTED the_object->name.name_p = NULL; 46af4: 588f addql #4,%sp <== NOT EXECUTED 46af6: 42ac 000c clrl %a4@(12) <== NOT EXECUTED } strncpy( d, name, length ); 46afa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46afc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46afe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46b00: 4eb9 0004 d7fc jsr 4d7fc <== NOT EXECUTED d[ length ] = '\0'; 46b06: 4200 clrb %d0 <== NOT EXECUTED 46b08: 1580 3800 moveb %d0,%a2@(00000000,%d3:l) <== NOT EXECUTED the_object->name.name_p = d; 46b0c: 294a 000c movel %a2,%a4@(12) <== NOT EXECUTED 46b10: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46b16: 6052 bras 46b6a <_Objects_Set_name+0xca> <== NOT EXECUTED } else { the_object->name.name_u32 = _Objects_Build_name( 46b18: 203c 2000 0000 movel #536870912,%d0 <== NOT EXECUTED 46b1e: 4a83 tstl %d3 <== NOT EXECUTED 46b20: 675e beqs 46b80 <_Objects_Set_name+0xe0> <== NOT EXECUTED 46b22: 1013 moveb %a3@,%d0 <== NOT EXECUTED 46b24: 7218 moveq #24,%d1 <== NOT EXECUTED 46b26: 49c0 extbl %d0 <== NOT EXECUTED 46b28: e3a8 lsll %d1,%d0 <== NOT EXECUTED 46b2a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 46b2e: b283 cmpl %d3,%d1 <== NOT EXECUTED 46b30: 674e beqs 46b80 <_Objects_Set_name+0xe0> <== NOT EXECUTED 46b32: 182b 0001 moveb %a3@(1),%d4 <== NOT EXECUTED 46b36: 49c4 extbl %d4 <== NOT EXECUTED 46b38: 4844 swap %d4 <== NOT EXECUTED 46b3a: 4244 clrw %d4 <== NOT EXECUTED 46b3c: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 46b40: b283 cmpl %d3,%d1 <== NOT EXECUTED 46b42: 6432 bccs 46b76 <_Objects_Set_name+0xd6> <== NOT EXECUTED 46b44: 142b 0002 moveb %a3@(2),%d2 <== NOT EXECUTED 46b48: 49c2 extbl %d2 <== NOT EXECUTED 46b4a: e18a lsll #8,%d2 <== NOT EXECUTED 46b4c: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 46b50: b283 cmpl %d3,%d1 <== NOT EXECUTED 46b52: 6506 bcss 46b5a <_Objects_Set_name+0xba> <== NOT EXECUTED 46b54: 123c 0020 moveb #32,%d1 <== NOT EXECUTED 46b58: 6006 bras 46b60 <_Objects_Set_name+0xc0> <== NOT EXECUTED 46b5a: 122b 0003 moveb %a3@(3),%d1 <== NOT EXECUTED 46b5e: 49c1 extbl %d1 <== NOT EXECUTED 46b60: 8084 orl %d4,%d0 <== NOT EXECUTED 46b62: 8082 orl %d2,%d0 <== NOT EXECUTED 46b64: 8081 orl %d1,%d0 <== NOT EXECUTED 46b66: 2940 000c movel %d0,%a4@(12) <== NOT EXECUTED 46b6a: 7001 moveq #1,%d0 <== NOT EXECUTED ); } return TRUE; } 46b6c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 46b72: 4e5e unlk %fp <== NOT EXECUTED 46b74: 4e75 rts <== NOT EXECUTED strncpy( d, name, length ); d[ length ] = '\0'; the_object->name.name_p = d; } else { the_object->name.name_u32 = _Objects_Build_name( 46b76: 7220 moveq #32,%d1 <== NOT EXECUTED 46b78: 243c 0000 2000 movel #8192,%d2 <== NOT EXECUTED 46b7e: 60e0 bras 46b60 <_Objects_Set_name+0xc0> <== NOT EXECUTED 46b80: 7820 moveq #32,%d4 <== NOT EXECUTED 46b82: 4844 swap %d4 <== NOT EXECUTED 46b84: 60f0 bras 46b76 <_Objects_Set_name+0xd6> <== NOT EXECUTED ... 00046704 <_Objects_Shrink_information>: */ void _Objects_Shrink_information( Objects_Information *information ) { 46704: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46708: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4670c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_index( Objects_Id id ) { return (id >> OBJECTS_INDEX_START_BIT) & OBJECTS_INDEX_VALID_BITS; 46710: 262a 0006 movel %a2@(6),%d3 <== NOT EXECUTED /* * Search the list to find block or chunnk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); block_count = ( information->maximum - index_base ) / information->allocation_size; 46714: 242a 0012 movel %a2@(18),%d2 <== NOT EXECUTED 46718: 4280 clrl %d0 <== NOT EXECUTED 4671a: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED 46720: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 46724: 9083 subl %d3,%d0 <== NOT EXECUTED 46726: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED 4672a: 4281 clrl %d1 <== NOT EXECUTED 4672c: 6074 bras 467a2 <_Objects_Shrink_information+0x9e> <== NOT EXECUTED for ( block = 0; block < block_count; block++ ) { if ( information->inactive_per_block[ block ] == information->allocation_size ) { 4672e: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED 46732: b4b0 4800 cmpl %a0@(00000000,%d4:l),%d2 <== NOT EXECUTED 46736: 6666 bnes 4679e <_Objects_Shrink_information+0x9a> <== NOT EXECUTED /* * XXX - Not to sure how to use a chain where you need to iterate and * and remove elements. */ the_object = (Objects_Control *) information->Inactive.first; 46738: 206a 001e moveal %a2@(30),%a0 <== NOT EXECUTED if ( !_Chain_Is_last( &the_object->Node ) ) the_object = (Objects_Control *) the_object->Node.next; else the_object = NULL; _Chain_Extract( &extract_me->Node ); 4673c: 47f9 0004 a1c4 lea 4a1c4 <_Chain_Extract>,%a3 <== NOT EXECUTED 46742: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 46746: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED */ do { index = _Objects_Get_index( the_object->id ); if ((index >= index_base) && 4674c: b681 cmpl %d1,%d3 <== NOT EXECUTED 4674e: 6216 bhis 46766 <_Objects_Shrink_information+0x62> <== NOT EXECUTED 46750: 2003 movel %d3,%d0 <== NOT EXECUTED 46752: d0aa 0012 addl %a2@(18),%d0 <== NOT EXECUTED 46756: b081 cmpl %d1,%d0 <== NOT EXECUTED 46758: 630c blss 46766 <_Objects_Shrink_information+0x62> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_last( const Chain_Node *the_node ) { return (the_node->next == NULL); 4675a: 2410 movel %a0@,%d2 <== NOT EXECUTED if ( !_Chain_Is_last( &the_object->Node ) ) the_object = (Objects_Control *) the_object->Node.next; else the_object = NULL; _Chain_Extract( &extract_me->Node ); 4675c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4675e: 4e93 jsr %a3@ <== NOT EXECUTED 46760: 2042 moveal %d2,%a0 <== NOT EXECUTED 46762: 588f addql #4,%sp <== NOT EXECUTED 46764: 6002 bras 46768 <_Objects_Shrink_information+0x64> <== NOT EXECUTED } else { the_object = (Objects_Control *) the_object->Node.next; 46766: 2050 moveal %a0@,%a0 <== NOT EXECUTED } } while ( the_object && !_Chain_Is_last( &the_object->Node ) ); 46768: 4a88 tstl %a0 <== NOT EXECUTED 4676a: 6704 beqs 46770 <_Objects_Shrink_information+0x6c> <== NOT EXECUTED 4676c: 4a90 tstl %a0@ <== NOT EXECUTED 4676e: 66d2 bnes 46742 <_Objects_Shrink_information+0x3e> <== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); 46770: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED 46774: 2f30 4800 movel %a0@(00000000,%d4:l),%sp@- <== NOT EXECUTED 46778: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED information->object_blocks[ block ] = NULL; information->inactive_per_block[ block ] = 0; 4677e: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED 46782: 42b0 4800 clrl %a0@(00000000,%d4:l) <== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; 46786: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED information->inactive_per_block[ block ] = 0; information->inactive -= information->allocation_size; 4678a: 302a 002a movew %a2@(42),%d0 <== NOT EXECUTED 4678e: 90aa 0012 subl %a2@(18),%d0 <== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; 46792: 42b0 4800 clrl %a0@(00000000,%d4:l) <== NOT EXECUTED information->inactive_per_block[ block ] = 0; information->inactive -= information->allocation_size; 46796: 3540 002a movew %d0,%a2@(42) <== NOT EXECUTED 4679a: 588f addql #4,%sp <== NOT EXECUTED 4679c: 600c bras 467aa <_Objects_Shrink_information+0xa6> <== NOT EXECUTED return; } index_base += information->allocation_size; 4679e: d682 addl %d2,%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++ ) { 467a0: 5281 addql #1,%d1 <== NOT EXECUTED 467a2: 2801 movel %d1,%d4 <== NOT EXECUTED 467a4: e58c lsll #2,%d4 <== NOT EXECUTED 467a6: b081 cmpl %d1,%d0 <== NOT EXECUTED 467a8: 6284 bhis 4672e <_Objects_Shrink_information+0x2a> <== NOT EXECUTED return; } index_base += information->allocation_size; } } 467aa: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 467b0: 4e5e unlk %fp <== NOT EXECUTED 467b2: 4e75 rts 0004565c <_POSIX_API_Initialize>: void _POSIX_API_Initialize( rtems_configuration_table *configuration_table ) { 4565c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45660: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45664: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* XXX need to assert here based on size assumptions */ assert( sizeof(pthread_t) == sizeof(Objects_Id) ); api_configuration = configuration_table->POSIX_api_configuration; 45666: 2468 0042 moveal %a0@(66),%a2 <== NOT EXECUTED if ( !api_configuration ) 4566a: 4a8a tstl %a2 <== NOT EXECUTED 4566c: 6606 bnes 45674 <_POSIX_API_Initialize+0x18> <== NOT EXECUTED 4566e: 45f9 0005 5106 lea 55106 <_POSIX_Default_configuration>,%a2 <== NOT EXECUTED api_configuration = &_POSIX_Default_configuration; _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; _POSIX_signals_Manager_Initialization( 45674: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED api_configuration = configuration_table->POSIX_api_configuration; if ( !api_configuration ) api_configuration = &_POSIX_Default_configuration; _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; 45678: 203c 0005 828e movel #361102,%d0 <== NOT EXECUTED 4567e: 23c0 0005 7e40 movel %d0,57e40 <_Objects_Information_table+0xc> <== NOT EXECUTED _POSIX_signals_Manager_Initialization( 45684: 4eb9 0004 980c jsr 4980c <_POSIX_signals_Manager_Initialization> <== NOT EXECUTED api_configuration->maximum_queued_signals ); _POSIX_Threads_Manager_initialization( 4568a: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4568e: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 45692: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45694: 4eb9 0004 99dc jsr 499dc <_POSIX_Threads_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_threads, api_configuration->number_of_initialization_threads, api_configuration->User_initialization_threads_table ); _POSIX_Condition_variables_Manager_initialization( 4569a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4569e: 4eb9 0004 96a8 jsr 496a8 <_POSIX_Condition_variables_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_condition_variables ); _POSIX_Key_Manager_initialization( api_configuration->maximum_keys ); 456a4: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 456a8: 4eb9 0004 96dc jsr 496dc <_POSIX_Key_Manager_initialization> <== NOT EXECUTED _POSIX_Mutex_Manager_initialization( 456ae: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 456b2: 4eb9 0004 9770 jsr 49770 <_POSIX_Mutex_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_mutexes ); _POSIX_Message_queue_Manager_initialization( 456b8: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 456bc: 4eb9 0004 9710 jsr 49710 <_POSIX_Message_queue_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_message_queues ); _POSIX_Semaphore_Manager_initialization( 456c2: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 456c8: 2eaa 001c movel %a2@(28),%sp@ <== NOT EXECUTED 456cc: 4eb9 0004 9cf0 jsr 49cf0 <_POSIX_Semaphore_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_semaphores ); _POSIX_Timer_Manager_initialization( api_configuration->maximum_timers ); 456d2: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 456d6: 4eb9 0004 9cbc jsr 49cbc <_POSIX_Timer_Manager_initialization> <== NOT EXECUTED _POSIX_Barrier_Manager_initialization( api_configuration->maximum_barriers ); 456dc: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 456e0: 4eb9 0004 97a4 jsr 497a4 <_POSIX_Barrier_Manager_initialization> <== NOT EXECUTED _POSIX_RWLock_Manager_initialization( api_configuration->maximum_rwlocks ); 456e6: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 456ea: 4eb9 0004 97d8 jsr 497d8 <_POSIX_RWLock_Manager_initialization> <== NOT EXECUTED _POSIX_Spinlock_Manager_initialization(api_configuration->maximum_spinlocks); 456f0: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 456f6: 2d6a 0028 0008 movel %a2@(40),%fp@(8) <== NOT EXECUTED } 456fc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45700: 4e5e unlk %fp <== NOT EXECUTED _POSIX_Barrier_Manager_initialization( api_configuration->maximum_barriers ); _POSIX_RWLock_Manager_initialization( api_configuration->maximum_rwlocks ); _POSIX_Spinlock_Manager_initialization(api_configuration->maximum_spinlocks); 45702: 4ef9 0004 9990 jmp 49990 <_POSIX_Spinlock_Manager_initialization> <== NOT EXECUTED 00046a90 <_POSIX_Absolute_timeout_to_ticks>: */ POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks( const struct timespec *abstime, Watchdog_Interval *ticks_out ) { 46a90: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46a94: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 46a98: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 46a9c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED *ticks_out = 0; /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) 46aa0: 2f04 movel %d4,%sp@- <== NOT EXECUTED /* * Make sure there is always a value returned. */ *ticks_out = 0; 46aa2: 4292 clrl %a2@ <== NOT EXECUTED /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) 46aa4: 4eb9 0004 a68c jsr 4a68c <_Timespec_Is_valid> <== NOT EXECUTED 46aaa: 588f addql #4,%sp <== NOT EXECUTED 46aac: 4a00 tstb %d0 <== NOT EXECUTED 46aae: 6604 bnes 46ab4 <_POSIX_Absolute_timeout_to_ticks+0x24> <== NOT EXECUTED 46ab0: 4281 clrl %d1 <== NOT EXECUTED 46ab2: 6050 bras 46b04 <_POSIX_Absolute_timeout_to_ticks+0x74> <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_INVALID; /* * Is the absolute time in the past? */ _TOD_Get( ¤t_time ); 46ab4: 260e movel %fp,%d3 <== NOT EXECUTED 46ab6: 5183 subql #8,%d3 <== NOT EXECUTED 46ab8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46aba: 4eb9 0004 89a4 jsr 489a4 <_TOD_Get> <== NOT EXECUTED if ( _Timespec_Less_than( abstime, ¤t_time ) ) 46ac0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ac2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46ac4: 4eb9 0004 a6b4 jsr 4a6b4 <_Timespec_Less_than> <== NOT EXECUTED 46aca: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46ad0: 4a00 tstb %d0 <== NOT EXECUTED 46ad2: 6704 beqs 46ad8 <_POSIX_Absolute_timeout_to_ticks+0x48> <== NOT EXECUTED 46ad4: 7201 moveq #1,%d1 <== NOT EXECUTED 46ad6: 602c bras 46b04 <_POSIX_Absolute_timeout_to_ticks+0x74> <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST; /* * How long until the requested absolute time? */ _Timespec_Subtract( ¤t_time, abstime, &difference ); 46ad8: 240e movel %fp,%d2 <== NOT EXECUTED 46ada: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED 46ae0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ae2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46ae4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ae6: 4eb9 0004 a6e4 jsr 4a6e4 <_Timespec_Subtract> <== NOT EXECUTED /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 46aec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46aee: 4eb9 0004 a734 jsr 4a734 <_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 ) 46af4: 4a80 tstl %d0 <== NOT EXECUTED 46af6: 57c1 seq %d1 <== NOT EXECUTED 46af8: 49c1 extbl %d1 <== NOT EXECUTED 46afa: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 46b00: 5681 addql #3,%d1 <== NOT EXECUTED _Timespec_Subtract( ¤t_time, abstime, &difference ); /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 46b02: 2480 movel %d0,%a2@ <== NOT EXECUTED /* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; } 46b04: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 46b0a: 4e5e unlk %fp <== NOT EXECUTED 46b0c: 2001 movel %d1,%d0 <== NOT EXECUTED 46b0e: 4e75 rts 000497a4 <_POSIX_Barrier_Manager_initialization>: */ void _POSIX_Barrier_Manager_initialization( uint32_t maximum_barriers ) { 497a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 497a8: 4878 00ff pea ff <== NOT EXECUTED 497ac: 4878 0001 pea 1 <== NOT EXECUTED 497b0: 4878 005c pea 5c <== NOT EXECUTED 497b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 497b8: 4878 000a pea a <== NOT EXECUTED 497bc: 4878 0003 pea 3 <== NOT EXECUTED 497c0: 4879 0005 81d6 pea 581d6 <_POSIX_Barrier_Information> <== NOT EXECUTED 497c6: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 497cc: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 497d2: 4e5e unlk %fp <== NOT EXECUTED 497d4: 4e75 rts <== NOT EXECUTED ... 0004a968 <_POSIX_Barrier_Translate_core_barrier_return_code>: int _POSIX_Barrier_Translate_core_barrier_return_code( CORE_barrier_Status the_barrier_status ) { 4a968: 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]; } 4a96c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_Barrier_Translate_core_barrier_return_code( CORE_barrier_Status the_barrier_status ) { 4a970: 41f9 0005 693e lea 5693e <_POSIX_Barrier_Return_codes>,%a0 <== 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]; } 4a976: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4a97a: 4e5e unlk %fp <== NOT EXECUTED 4a97c: 4e75 rts <== NOT EXECUTED ... 00045868 <_POSIX_Condition_variables_Get>: POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get ( pthread_cond_t *cond, Objects_Locations *location ) { 45868: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4586c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4586e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45872: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45874: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Id *id = (Objects_Id *)cond; int status; if ( !id ) { 45878: 4a8a tstl %a2 <== NOT EXECUTED 4587a: 6716 beqs 45892 <_POSIX_Condition_variables_Get+0x2a> <== NOT EXECUTED *location = OBJECTS_ERROR; return (POSIX_Condition_variables_Control *) 0; } if ( *id == PTHREAD_COND_INITIALIZER ) { 4587c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4587e: b092 cmpl %a2@,%d0 <== NOT EXECUTED 45880: 6618 bnes 4589a <_POSIX_Condition_variables_Get+0x32> <== NOT EXECUTED /* * Do an "auto-create" here. */ status = pthread_cond_init( (pthread_cond_t *)id, 0 ); 45882: 42a7 clrl %sp@- <== NOT EXECUTED 45884: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45886: 4eb9 0004 58bc jsr 458bc <== NOT EXECUTED if ( status ) { 4588c: 508f addql #8,%sp <== NOT EXECUTED 4588e: 4a80 tstl %d0 <== NOT EXECUTED 45890: 6708 beqs 4589a <_POSIX_Condition_variables_Get+0x32> <== NOT EXECUTED *location = OBJECTS_ERROR; 45892: 7001 moveq #1,%d0 <== NOT EXECUTED 45894: 2680 movel %d0,%a3@ <== NOT EXECUTED 45896: 4280 clrl %d0 <== NOT EXECUTED 45898: 6016 bras 458b0 <_POSIX_Condition_variables_Get+0x48> <== NOT EXECUTED /* * Now call Objects_Get() */ return (POSIX_Condition_variables_Control *) 4589a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4589c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4589e: 4879 0005 b806 pea 5b806 <_POSIX_Condition_variables_Information> <== NOT EXECUTED 458a4: 4eb9 0004 83f8 jsr 483f8 <_Objects_Get> <== NOT EXECUTED 458aa: dffc 0000 000c addal #12,%sp <== NOT EXECUTED _Objects_Get( &_POSIX_Condition_variables_Information, *id, location ); } 458b0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 458b4: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 458b8: 4e5e unlk %fp <== NOT EXECUTED 458ba: 4e75 rts 000496a8 <_POSIX_Condition_variables_Manager_initialization>: */ void _POSIX_Condition_variables_Manager_initialization( uint32_t maximum_condition_variables ) { 496a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 496ac: 4878 00ff pea ff <== NOT EXECUTED 496b0: 4878 0001 pea 1 <== NOT EXECUTED 496b4: 4878 0058 pea 58 <== NOT EXECUTED 496b8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 496bc: 4878 0008 pea 8 <== NOT EXECUTED 496c0: 4878 0003 pea 3 <== NOT EXECUTED 496c4: 4879 0005 8252 pea 58252 <_POSIX_Condition_variables_Information> <== NOT EXECUTED 496ca: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 496d0: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 496d6: 4e5e unlk %fp <== NOT EXECUTED 496d8: 4e75 rts <== NOT EXECUTED ... 00045974 <_POSIX_Condition_variables_Signal_support>: int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 45974: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45978: 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 ); 4597c: 486e fffc pea %fp@(-4) <== NOT EXECUTED int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 45980: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; Thread_Control *the_thread; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 45984: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45988: 4eb9 0004 5868 jsr 45868 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 4598e: 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 ); 45990: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 45992: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45996: 6704 beqs 4599c <_POSIX_Condition_variables_Signal_support+0x28> <== NOT EXECUTED 45998: 7016 moveq #22,%d0 <== NOT EXECUTED 4599a: 602c bras 459c8 <_POSIX_Condition_variables_Signal_support+0x54> <== NOT EXECUTED case OBJECTS_LOCAL: do { the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue ); 4599c: 2400 movel %d0,%d2 <== NOT EXECUTED 4599e: 0682 0000 0018 addil #24,%d2 <== NOT EXECUTED 459a4: 47f9 0004 8e8c lea 48e8c <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED 459aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 459ac: 4e93 jsr %a3@ <== NOT EXECUTED if ( !the_thread ) 459ae: 588f addql #4,%sp <== NOT EXECUTED 459b0: 4a80 tstl %d0 <== NOT EXECUTED 459b2: 6604 bnes 459b8 <_POSIX_Condition_variables_Signal_support+0x44> <== NOT EXECUTED the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 459b4: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED } while ( is_broadcast && the_thread ); 459b8: 4a03 tstb %d3 <== NOT EXECUTED 459ba: 6704 beqs 459c0 <_POSIX_Condition_variables_Signal_support+0x4c> <== NOT EXECUTED 459bc: 4a80 tstl %d0 <== NOT EXECUTED 459be: 66ea bnes 459aa <_POSIX_Condition_variables_Signal_support+0x36> <== NOT EXECUTED _Thread_Enable_dispatch(); 459c0: 4eb9 0004 8b6a jsr 48b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 459c6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 459c8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 459ce: 4e5e unlk %fp <== NOT EXECUTED 459d0: 4e75 rts <== NOT EXECUTED ... 00045a40 <_POSIX_Condition_variables_Wait_support>: pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 45a40: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 45a44: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 45a48: 240e movel %fp,%d2 <== NOT EXECUTED 45a4a: 5982 subql #4,%d2 <== NOT EXECUTED 45a4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 45a4e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45a52: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 45a56: 2f0b movel %a3,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 45a58: 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 ) ) { 45a5c: 4eb9 0004 5bf8 jsr 45bf8 <_POSIX_Mutex_Get> <== NOT EXECUTED 45a62: 508f addql #8,%sp <== NOT EXECUTED 45a64: 4a80 tstl %d0 <== NOT EXECUTED 45a66: 6700 00b2 beqw 45b1a <_POSIX_Condition_variables_Wait_support+0xda> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 45a6a: 2039 0005 b430 movel 5b430 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 45a70: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45a72: 5380 subql #1,%d0 <== NOT EXECUTED 45a74: 2f0d movel %a5,%sp@- <== NOT EXECUTED 45a76: 23c0 0005 b430 movel %d0,5b430 <_Thread_Dispatch_disable_level> <== NOT EXECUTED 45a7c: 4eb9 0004 5868 jsr 45868 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 45a82: 508f addql #8,%sp <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 45a84: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 45a86: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45a8a: 6600 008e bnew 45b1a <_POSIX_Condition_variables_Wait_support+0xda> <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) { 45a8e: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 45a92: 670e beqs 45aa2 <_POSIX_Condition_variables_Wait_support+0x62> <== NOT EXECUTED 45a94: b093 cmpl %a3@,%d0 <== NOT EXECUTED 45a96: 670a beqs 45aa2 <_POSIX_Condition_variables_Wait_support+0x62> <== NOT EXECUTED _Thread_Enable_dispatch(); 45a98: 7416 moveq #22,%d2 <== NOT EXECUTED 45a9a: 4eb9 0004 8b6a jsr 48b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 45aa0: 607a bras 45b1c <_POSIX_Condition_variables_Wait_support+0xdc> <== NOT EXECUTED return EINVAL; } (void) pthread_mutex_unlock( mutex ); 45aa2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45aa4: 4eb9 0004 5e00 jsr 45e00 <== NOT EXECUTED _Thread_Enable_dispatch(); return EINVAL; } */ if ( !already_timedout ) { 45aaa: 588f addql #4,%sp <== NOT EXECUTED 45aac: 49f9 0004 8b6a lea 48b6a <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 45ab2: 4a03 tstb %d3 <== NOT EXECUTED 45ab4: 6652 bnes 45b08 <_POSIX_Condition_variables_Wait_support+0xc8> <== NOT EXECUTED the_cond->Mutex = *mutex; _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; 45ab6: 2079 0005 b4ee moveal 5b4ee <_Thread_Executing>,%a0 <== NOT EXECUTED return EINVAL; } */ if ( !already_timedout ) { the_cond->Mutex = *mutex; 45abc: 2553 0014 movel %a3@,%a2@(20) <== 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; 45ac0: 200a movel %a2,%d0 <== NOT EXECUTED _Thread_Executing->Wait.id = *cond; 45ac2: 2155 0020 movel %a5@,%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; 45ac6: 0680 0000 0018 addil #24,%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; 45acc: 7201 moveq #1,%d1 <== NOT EXECUTED if ( !already_timedout ) { the_cond->Mutex = *mutex; _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; 45ace: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED _Thread_Executing->Wait.queue = &the_cond->Wait_queue; 45ad2: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED 45ad6: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED _Thread_Executing->Wait.id = *cond; _Thread_queue_Enqueue( &the_cond->Wait_queue, timeout ); 45ada: 4879 0004 9368 pea 49368 <_Thread_queue_Timeout> <== NOT EXECUTED 45ae0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 45ae4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45ae6: 4eb9 0004 8fd0 jsr 48fd0 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); 45aec: 4e94 jsr %a4@ <== NOT EXECUTED /* * Switch ourself out because we blocked as a result of the * _Thread_queue_Enqueue. */ status = _Thread_Executing->Wait.return_code; 45aee: 2079 0005 b4ee moveal 5b4ee <_Thread_Executing>,%a0 <== NOT EXECUTED 45af4: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED if ( status && status != ETIMEDOUT ) 45af8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45afe: 670c beqs 45b0c <_POSIX_Condition_variables_Wait_support+0xcc> <== NOT EXECUTED 45b00: 7074 moveq #116,%d0 <== NOT EXECUTED 45b02: b082 cmpl %d2,%d0 <== NOT EXECUTED 45b04: 6616 bnes 45b1c <_POSIX_Condition_variables_Wait_support+0xdc> <== NOT EXECUTED 45b06: 6004 bras 45b0c <_POSIX_Condition_variables_Wait_support+0xcc> <== NOT EXECUTED return status; } else { _Thread_Enable_dispatch(); 45b08: 4e94 jsr %a4@ <== NOT EXECUTED 45b0a: 7474 moveq #116,%d2 <== NOT EXECUTED /* * When we get here the dispatch disable level is 0. */ mutex_status = pthread_mutex_lock( mutex ); 45b0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45b0e: 4eb9 0004 5d68 jsr 45d68 <== NOT EXECUTED if ( mutex_status ) 45b14: 588f addql #4,%sp <== NOT EXECUTED 45b16: 4a80 tstl %d0 <== NOT EXECUTED 45b18: 6702 beqs 45b1c <_POSIX_Condition_variables_Wait_support+0xdc> <== NOT EXECUTED 45b1a: 7416 moveq #22,%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45b1c: 2002 movel %d2,%d0 <== NOT EXECUTED 45b1e: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED 45b24: 4e5e unlk %fp <== NOT EXECUTED 45b26: 4e75 rts 000496dc <_POSIX_Key_Manager_initialization>: */ void _POSIX_Key_Manager_initialization( uint32_t maximum_keys ) { 496dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 496e0: 4878 00ff pea ff <== NOT EXECUTED 496e4: 4878 0001 pea 1 <== NOT EXECUTED 496e8: 4878 002a pea 2a <== NOT EXECUTED 496ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 496f0: 4878 0002 pea 2 <== NOT EXECUTED 496f4: 4878 0003 pea 3 <== NOT EXECUTED 496f8: 4879 0005 8216 pea 58216 <_POSIX_Keys_Information> <== NOT EXECUTED 496fe: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49704: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4970a: 4e5e unlk %fp <== NOT EXECUTED 4970c: 4e75 rts <== NOT EXECUTED ... 0004b02c <_POSIX_Keys_Run_destructors>: */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) { 4b02c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4b030: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED uint32_t iterations; bool are_all_null; POSIX_Keys_Control *the_key; void *value; thread_index = _Objects_Get_index( thread->Object.id ); 4b034: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) { 4b038: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED the_key = (POSIX_Keys_Control *) _POSIX_Keys_Information.local_table[ index ]; if ( the_key && the_key->is_active && the_key->destructor ) { value = the_key->Values[ thread_api ][ thread_index ]; 4b03c: 2a00 movel %d0,%d5 <== 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); 4b03e: 2800 movel %d0,%d4 <== NOT EXECUTED 4b040: 7218 moveq #24,%d1 <== NOT EXECUTED 4b042: 0285 0000 ffff andil #65535,%d5 <== NOT EXECUTED 4b048: e2ac lsrl %d1,%d4 <== NOT EXECUTED 4b04a: 7007 moveq #7,%d0 <== NOT EXECUTED 4b04c: c880 andl %d0,%d4 <== NOT EXECUTED 4b04e: e58d lsll #2,%d5 <== NOT EXECUTED 4b050: 4286 clrl %d6 <== NOT EXECUTED 4b052: 7401 moveq #1,%d2 <== NOT EXECUTED 4b054: 7601 moveq #1,%d3 <== NOT EXECUTED 4b056: 603a bras 4b092 <_POSIX_Keys_Run_destructors+0x66> <== NOT EXECUTED are_all_null = TRUE; for ( index=1 ; index <= _POSIX_Keys_Information.maximum ; index++ ) { the_key = (POSIX_Keys_Control *) 4b058: 2079 0005 8230 moveal 58230 <_POSIX_Keys_Information+0x1a>,%a0 <== NOT EXECUTED 4b05e: 2470 2c00 moveal %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED _POSIX_Keys_Information.local_table[ index ]; if ( the_key && the_key->is_active && the_key->destructor ) { 4b062: 4a8a tstl %a2 <== NOT EXECUTED 4b064: 672a beqs 4b090 <_POSIX_Keys_Run_destructors+0x64> <== NOT EXECUTED 4b066: 4a2a 0010 tstb %a2@(16) <== NOT EXECUTED 4b06a: 6724 beqs 4b090 <_POSIX_Keys_Run_destructors+0x64> <== NOT EXECUTED 4b06c: 226a 0012 moveal %a2@(18),%a1 <== NOT EXECUTED 4b070: 4a89 tstl %a1 <== NOT EXECUTED 4b072: 671c beqs 4b090 <_POSIX_Keys_Run_destructors+0x64> <== NOT EXECUTED value = the_key->Values[ thread_api ][ thread_index ]; 4b074: 2072 4c16 moveal %a2@(00000016,%d4:l:4),%a0 <== NOT EXECUTED 4b078: 2030 5800 movel %a0@(00000000,%d5:l),%d0 <== NOT EXECUTED if ( value ) { 4b07c: 6712 beqs 4b090 <_POSIX_Keys_Run_destructors+0x64> <== NOT EXECUTED (*the_key->destructor)( value ); 4b07e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b080: 4e91 jsr %a1@ <== NOT EXECUTED if ( the_key->Values[ thread_api ][ thread_index ] ) 4b082: 588f addql #4,%sp <== NOT EXECUTED 4b084: 2072 4c16 moveal %a2@(00000016,%d4:l:4),%a0 <== NOT EXECUTED 4b088: 4ab0 5800 tstl %a0@(00000000,%d5:l) <== NOT EXECUTED 4b08c: 57c0 seq %d0 <== NOT EXECUTED 4b08e: c680 andl %d0,%d3 <== NOT EXECUTED for ( ; ; ) { are_all_null = TRUE; for ( index=1 ; index <= _POSIX_Keys_Information.maximum ; index++ ) { 4b090: 5282 addql #1,%d2 <== NOT EXECUTED 4b092: 4280 clrl %d0 <== NOT EXECUTED 4b094: 3039 0005 8224 movew 58224 <_POSIX_Keys_Information+0xe>,%d0 <== NOT EXECUTED 4b09a: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b09c: 64ba bccs 4b058 <_POSIX_Keys_Run_destructors+0x2c> <== NOT EXECUTED are_all_null = FALSE; } } } if ( are_all_null == TRUE ) 4b09e: 4a03 tstb %d3 <== NOT EXECUTED 4b0a0: 6608 bnes 4b0aa <_POSIX_Keys_Run_destructors+0x7e> <== NOT EXECUTED return; iterations++; 4b0a2: 5286 addql #1,%d6 <== NOT EXECUTED * loop. It seems rude to unnecessarily lock up a system. * * Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99. */ if ( iterations >= PTHREAD_DESTRUCTOR_ITERATIONS ) 4b0a4: 7204 moveq #4,%d1 <== NOT EXECUTED 4b0a6: b286 cmpl %d6,%d1 <== NOT EXECUTED 4b0a8: 66a8 bnes 4b052 <_POSIX_Keys_Run_destructors+0x26> <== NOT EXECUTED return; } } 4b0aa: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4b0b0: 4e5e unlk %fp <== NOT EXECUTED 4b0b2: 4e75 rts 0004efb4 <_POSIX_Message_queue_Create_support>: const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 4efb4: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4efb8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%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 ); 4efbc: 4878 00ff pea ff <== NOT EXECUTED const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 4efc0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4efc4: 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 ); 4efc8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4efca: 4eb9 0005 2f84 jsr 52f84 <== NOT EXECUTED if ( n > NAME_MAX ) 4efd0: 508f addql #8,%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 ); 4efd2: 2400 movel %d0,%d2 <== NOT EXECUTED if ( n > NAME_MAX ) 4efd4: 0c80 0000 00ff cmpil #255,%d0 <== NOT EXECUTED 4efda: 6306 blss 4efe2 <_POSIX_Message_queue_Create_support+0x2e> <== NOT EXECUTED 4efdc: 705b moveq #91,%d0 <== NOT EXECUTED 4efde: 6000 0146 braw 4f126 <_POSIX_Message_queue_Create_support+0x172> <== NOT EXECUTED 4efe2: 2039 0006 0168 movel 60168 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4efe8: 5280 addql #1,%d0 <== NOT EXECUTED 4efea: 23c0 0006 0168 movel %d0,60168 <_Thread_Dispatch_disable_level> <== 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 ) { 4eff0: 4a8a tstl %a2 <== NOT EXECUTED 4eff2: 6606 bnes 4effa <_POSIX_Message_queue_Create_support+0x46> <== NOT EXECUTED 4eff4: 7810 moveq #16,%d4 <== NOT EXECUTED 4eff6: 760a moveq #10,%d3 <== NOT EXECUTED 4eff8: 6040 bras 4f03a <_POSIX_Message_queue_Create_support+0x86> <== NOT EXECUTED attr.mq_maxmsg = 10; attr.mq_msgsize = 16; } else { if ( attr_ptr->mq_maxmsg <= 0 ){ 4effa: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4effe: 6f06 bles 4f006 <_POSIX_Message_queue_Create_support+0x52> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } if ( attr_ptr->mq_msgsize <= 0 ){ 4f000: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4f004: 6e16 bgts 4f01c <_POSIX_Message_queue_Create_support+0x68> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); 4f006: 7616 moveq #22,%d3 <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } if ( attr_ptr->mq_msgsize <= 0 ){ _Thread_Enable_dispatch(); 4f008: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4f00e: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 4f014: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f016: 2083 movel %d3,%a0@ <== NOT EXECUTED 4f018: 6000 00ea braw 4f104 <_POSIX_Message_queue_Create_support+0x150> <== NOT EXECUTED } attr = *attr_ptr; 4f01c: 4878 0010 pea 10 <== NOT EXECUTED 4f020: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f022: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 4f026: 4eb9 0005 1bd4 jsr 51bd4 <== NOT EXECUTED 4f02c: 282e fff8 movel %fp@(-8),%d4 <== NOT EXECUTED 4f030: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 4f034: dffc 0000 000c addal #12,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void ) { return (POSIX_Message_queue_Control *) 4f03a: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 4f040: 4eb9 0004 b7f0 jsr 4b7f0 <_Objects_Allocate> <== NOT EXECUTED } the_mq = _POSIX_Message_queue_Allocate(); if ( !the_mq ) { 4f046: 588f addql #4,%sp <== NOT EXECUTED 4f048: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f04a: 4a80 tstl %d0 <== NOT EXECUTED 4f04c: 6616 bnes 4f064 <_POSIX_Message_queue_Create_support+0xb0> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); 4f04e: 7417 moveq #23,%d2 <== NOT EXECUTED attr = *attr_ptr; } the_mq = _POSIX_Message_queue_Allocate(); if ( !the_mq ) { _Thread_Enable_dispatch(); 4f050: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 4f056: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 4f05c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f05e: 2082 movel %d2,%a0@ <== NOT EXECUTED 4f060: 6000 00a2 braw 4f104 <_POSIX_Message_queue_Create_support+0x150> <== NOT EXECUTED } the_mq->process_shared = pshared; the_mq->named = TRUE; the_mq->open_count = 1; 4f064: 7001 moveq #1,%d0 <== NOT EXECUTED if ( !the_mq ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq->process_shared = pshared; 4f066: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED the_mq->named = TRUE; 4f06c: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_mq->open_count = 1; 4f070: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED the_mq->linked = TRUE; 4f074: 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); 4f078: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f07a: 4eb9 0004 d71c jsr 4d71c <_Workspace_Allocate> <== NOT EXECUTED if (!name) { 4f080: 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); 4f082: 2400 movel %d0,%d2 <== NOT EXECUTED if (!name) { 4f084: 6624 bnes 4f0aa <_POSIX_Message_queue_Create_support+0xf6> <== 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 ); 4f086: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f088: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 4f08e: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free( the_mq ); _Thread_Enable_dispatch(); 4f094: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 4f09a: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 4f0a0: 720c moveq #12,%d1 <== NOT EXECUTED 4f0a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f0a4: 2081 movel %d1,%a0@ <== NOT EXECUTED 4f0a6: 508f addql #8,%sp <== NOT EXECUTED 4f0a8: 605a bras 4f104 <_POSIX_Message_queue_Create_support+0x150> <== NOT EXECUTED } strcpy( name, name_arg ); 4f0aa: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4f0ac: 47f9 0004 c48a lea 4c48a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4f0b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f0b4: 4eb9 0005 2950 jsr 52950 <== NOT EXECUTED * Note that thread blocking discipline should be based on the * current scheduling policy. */ the_mq_attr = &the_mq->Message_queue.Attributes; the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; 4f0ba: 42aa 005a clrl %a2@(90) <== NOT EXECUTED if ( ! _CORE_message_queue_Initialize( 4f0be: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4f0c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f0c2: 486a 005a pea %a2@(90) <== NOT EXECUTED 4f0c6: 486a 001a pea %a2@(26) <== NOT EXECUTED 4f0ca: 4eb9 0004 fc4c jsr 4fc4c <_CORE_message_queue_Initialize> <== NOT EXECUTED 4f0d0: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 4f0d6: 4a00 tstb %d0 <== NOT EXECUTED 4f0d8: 662e bnes 4f108 <_POSIX_Message_queue_Create_support+0x154> <== NOT EXECUTED 4f0da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f0dc: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 4f0e2: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED attr.mq_maxmsg, attr.mq_msgsize ) ) { _POSIX_Message_queue_Free( the_mq ); _Workspace_Free(name); 4f0e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f0ea: 4eb9 0004 d704 jsr 4d704 <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 4f0f0: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4f0f2: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 4f0f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f0fa: 701c moveq #28,%d0 <== NOT EXECUTED 4f0fc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f102: 2080 movel %d0,%a0@ <== NOT EXECUTED 4f104: 70ff moveq #-1,%d0 <== NOT EXECUTED 4f106: 601e bras 4f126 <_POSIX_Message_queue_Create_support+0x172> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4f108: 2079 0006 0464 moveal 60464 <_POSIX_Message_queue_Information+0x1a>,%a0 <== NOT EXECUTED 4f10e: 4280 clrl %d0 <== NOT EXECUTED 4f110: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 4f114: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string */ the_object->name.name_p = name; 4f118: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED &_POSIX_Message_queue_Information, &the_mq->Object, name ); *message_queue = the_mq; 4f11c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4f120: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4f122: 4e93 jsr %a3@ <== NOT EXECUTED 4f124: 4280 clrl %d0 <== NOT EXECUTED return 0; } 4f126: 4cee 0c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4f12c: 4e5e unlk %fp <== NOT EXECUTED 4f12e: 4e75 rts 0004887c <_POSIX_Message_queue_Delete>: */ void _POSIX_Message_queue_Delete( POSIX_Message_queue_Control *the_mq ) { 4887c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48880: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48882: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_mq->linked && !the_mq->open_count ) { 48886: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4888a: 6648 bnes 488d4 <_POSIX_Message_queue_Delete+0x58> <== NOT EXECUTED 4888c: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 48890: 6642 bnes 488d4 <_POSIX_Message_queue_Delete+0x58> <== NOT EXECUTED /* the name memory may have been freed by unlink. */ Objects_Control *the_object = &the_mq->Object; if ( the_object->name.name_p ) 48892: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 48896: 670a beqs 488a2 <_POSIX_Message_queue_Delete+0x26> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 48898: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4889a: 4eb9 0004 d704 jsr 4d704 <_Workspace_Free> <== NOT EXECUTED 488a0: 588f addql #4,%sp <== NOT EXECUTED _Objects_Close( &_POSIX_Message_queue_Information, the_object ); 488a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 488a4: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 488aa: 4eb9 0004 b878 jsr 4b878 <_Objects_Close> <== NOT EXECUTED _CORE_message_queue_Close( 488b0: 4878 0005 pea 5 <== NOT EXECUTED 488b4: 42a7 clrl %sp@- <== NOT EXECUTED 488b6: 486a 001a pea %a2@(26) <== NOT EXECUTED 488ba: 4eb9 0004 ad70 jsr 4ad70 <_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 ); 488c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 488c2: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 488c8: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED 488ce: dffc 0000 001c addal #28,%sp <== NOT EXECUTED ); _POSIX_Message_queue_Free( the_mq ); } } 488d4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 488d8: 4e5e unlk %fp <== NOT EXECUTED 488da: 4e75 rts 00049710 <_POSIX_Message_queue_Manager_initialization>: */ void _POSIX_Message_queue_Manager_initialization( uint32_t maximum_message_queues ) { 49710: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49714: 2f0a movel %a2,%sp@- <== NOT EXECUTED _Objects_Initialize_information( 49716: 45f9 0004 6584 lea 46584 <_Objects_Initialize_information>,%a2 <== NOT EXECUTED */ void _POSIX_Message_queue_Manager_initialization( uint32_t maximum_message_queues ) { 4971c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4971e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED _Objects_Initialize_information( 49722: 4878 00ff pea ff <== NOT EXECUTED 49726: 4878 0001 pea 1 <== NOT EXECUTED 4972a: 4878 00a2 pea a2 <== NOT EXECUTED 4972e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49730: 4878 0005 pea 5 <== NOT EXECUTED 49734: 4878 0003 pea 3 <== NOT EXECUTED 49738: 4879 0005 815e pea 5815e <_POSIX_Message_queue_Information> <== NOT EXECUTED 4973e: 4e92 jsr %a2@ <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); _Objects_Initialize_information( 49740: 4878 00ff pea ff <== NOT EXECUTED 49744: 4878 0001 pea 1 <== NOT EXECUTED 49748: 4878 0018 pea 18 <== NOT EXECUTED 4974c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4974e: 4878 0004 pea 4 <== NOT EXECUTED 49752: 4878 0003 pea 3 <== NOT EXECUTED 49756: 4879 0005 82c6 pea 582c6 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 4975c: 4e92 jsr %a2@ <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4975e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 49762: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); _Objects_Initialize_information( 49766: dffc 0000 0038 addal #56,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4976c: 4e5e unlk %fp <== NOT EXECUTED 4976e: 4e75 rts 0004f130 <_POSIX_Message_queue_Name_to_id>: int _POSIX_Message_queue_Name_to_id( const char *name, Objects_Id *id ) { 4f130: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4f134: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f136: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; if ( !name ) 4f13a: 4a8a tstl %a2 <== NOT EXECUTED 4f13c: 673e beqs 4f17c <_POSIX_Message_queue_Name_to_id+0x4c> <== NOT EXECUTED return EINVAL; if ( !name[0] ) 4f13e: 4a12 tstb %a2@ <== NOT EXECUTED 4f140: 673a beqs 4f17c <_POSIX_Message_queue_Name_to_id+0x4c> <== NOT EXECUTED return EINVAL; if( strlen(name) > PATH_MAX ) 4f142: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f144: 4eb9 0005 2e04 jsr 52e04 <== NOT EXECUTED 4f14a: 588f addql #4,%sp <== NOT EXECUTED 4f14c: 0c80 0000 00ff cmpil #255,%d0 <== NOT EXECUTED 4f152: 6304 blss 4f158 <_POSIX_Message_queue_Name_to_id+0x28> <== NOT EXECUTED 4f154: 705b moveq #91,%d0 <== NOT EXECUTED 4f156: 6026 bras 4f17e <_POSIX_Message_queue_Name_to_id+0x4e> <== NOT EXECUTED return ENAMETOOLONG; status = _Objects_Name_to_id_string( 4f158: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f15c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f15e: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 4f164: 4eb9 0005 00bc jsr 500bc <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Message_queue_Information, name, id ); if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4f16a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f170: 4a80 tstl %d0 <== NOT EXECUTED 4f172: 6704 beqs 4f178 <_POSIX_Message_queue_Name_to_id+0x48> <== NOT EXECUTED 4f174: 7002 moveq #2,%d0 <== NOT EXECUTED 4f176: 6006 bras 4f17e <_POSIX_Message_queue_Name_to_id+0x4e> <== NOT EXECUTED 4f178: 4280 clrl %d0 <== NOT EXECUTED 4f17a: 6002 bras 4f17e <_POSIX_Message_queue_Name_to_id+0x4e> <== NOT EXECUTED 4f17c: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; return ENOENT; } 4f17e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4f182: 4e5e unlk %fp <== NOT EXECUTED 4f184: 4e75 rts <== NOT EXECUTED ... 00048a04 <_POSIX_Message_queue_Notify_handler>: */ void _POSIX_Message_queue_Notify_handler( void *user_data ) { 48a04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48a08: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48a0a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 48a0e: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; the_mq = user_data; kill( getpid(), the_mq->notification.sigev_signo ); 48a10: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED 48a14: 4eb9 0004 e820 jsr 4e820 <== NOT EXECUTED 48a1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48a1c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48a1e: 4eb9 0004 ef9c jsr 4ef9c <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 48a24: 42aa 007e clrl %a2@(126) <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } 48a28: 242e fff8 movel %fp@(-8),%d2 <== 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; 48a2c: 42aa 007a clrl %a2@(122) <== NOT EXECUTED 48a30: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 48a34: 508f addql #8,%sp <== NOT EXECUTED 48a36: 4e5e unlk %fp <== NOT EXECUTED 48a38: 4e75 rts <== NOT EXECUTED ... 00048bdc <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) { 48bdc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 48be0: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) 48be4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48be8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 48bec: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED 48bf0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48bf2: 242e 0018 movel %fp@(24),%d2 <== NOT EXECUTED 48bf6: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48bfc: 4eb9 0004 bc50 jsr 4bc50 <_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 ) { 48c02: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48c08: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c0a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48c0e: 6600 00d0 bnew 48ce0 <_POSIX_Message_queue_Receive_support+0x104> <== NOT EXECUTED case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { 48c12: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 48c16: 7003 moveq #3,%d0 <== NOT EXECUTED 48c18: c081 andl %d1,%d0 <== NOT EXECUTED 48c1a: 7801 moveq #1,%d4 <== NOT EXECUTED 48c1c: b880 cmpl %d0,%d4 <== NOT EXECUTED 48c1e: 6614 bnes 48c34 <_POSIX_Message_queue_Receive_support+0x58> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); 48c20: 7609 moveq #9,%d3 <== 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(); 48c22: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); 48c28: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48c2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c30: 2083 movel %d3,%a0@ <== NOT EXECUTED 48c32: 6020 bras 48c54 <_POSIX_Message_queue_Receive_support+0x78> <== NOT EXECUTED } the_mq = the_mq_fd->Queue; 48c34: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED if ( msg_len < the_mq->Message_queue.maximum_message_size ) { 48c38: 2028 0066 movel %a0@(102),%d0 <== NOT EXECUTED 48c3c: b0ae 0010 cmpl %fp@(16),%d0 <== NOT EXECUTED 48c40: 6318 blss 48c5a <_POSIX_Message_queue_Receive_support+0x7e> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EMSGSIZE ); 48c42: 747a moveq #122,%d2 <== NOT EXECUTED } the_mq = the_mq_fd->Queue; if ( msg_len < the_mq->Message_queue.maximum_message_size ) { _Thread_Enable_dispatch(); 48c44: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMSGSIZE ); 48c4a: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48c50: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c52: 2082 movel %d2,%a0@ <== NOT EXECUTED 48c54: 70ff moveq #-1,%d0 <== NOT EXECUTED 48c56: 6000 0096 braw 48cee <_POSIX_Message_queue_Receive_support+0x112> <== NOT EXECUTED length_out = -1; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 48c5a: 4a02 tstb %d2 <== NOT EXECUTED 48c5c: 6604 bnes 48c62 <_POSIX_Message_queue_Receive_support+0x86> <== NOT EXECUTED 48c5e: 4200 clrb %d0 <== NOT EXECUTED 48c60: 600a bras 48c6c <_POSIX_Message_queue_Receive_support+0x90> <== NOT EXECUTED do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? FALSE : TRUE; 48c62: 780e moveq #14,%d4 <== NOT EXECUTED 48c64: 7001 moveq #1,%d0 <== NOT EXECUTED 48c66: e8a9 lsrl %d4,%d1 <== NOT EXECUTED 48c68: b181 eorl %d0,%d1 <== NOT EXECUTED 48c6a: c081 andl %d1,%d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 48c6c: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 48c70: 7201 moveq #1,%d1 <== NOT EXECUTED 48c72: c280 andl %d0,%d1 <== NOT EXECUTED 48c74: 2f01 movel %d1,%sp@- <== NOT EXECUTED /* * Now if something goes wrong, we return a "length" of -1 * to indicate an error. */ length_out = -1; 48c76: 78ff moveq #-1,%d4 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 48c78: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48c7c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48c80: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48c82: 4868 001a pea %a0@(26) <== NOT EXECUTED /* * Now if something goes wrong, we return a "length" of -1 * to indicate an error. */ length_out = -1; 48c86: 2d44 fff8 movel %d4,%fp@(-8) <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 48c8a: 4eb9 0004 ae10 jsr 4ae10 <_CORE_message_queue_Seize> <== NOT EXECUTED &length_out, do_wait, timeout ); _Thread_Enable_dispatch(); 48c90: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED *msg_prio = 48c96: 2079 0006 0226 moveal 60226 <_Thread_Executing>,%a0 <== NOT EXECUTED 48c9c: 24a8 0024 movel %a0@(36),%a2@ <== NOT EXECUTED 48ca0: 6c06 bges 48ca8 <_POSIX_Message_queue_Receive_support+0xcc> <== NOT EXECUTED 48ca2: 2012 movel %a2@,%d0 <== NOT EXECUTED 48ca4: 4480 negl %d0 <== NOT EXECUTED 48ca6: 2480 movel %d0,%a2@ <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) 48ca8: 2079 0006 0226 moveal 60226 <_Thread_Executing>,%a0 <== NOT EXECUTED 48cae: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 48cb4: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 48cb8: 6606 bnes 48cc0 <_POSIX_Message_queue_Receive_support+0xe4> <== NOT EXECUTED return length_out; 48cba: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 48cbe: 602e bras 48cee <_POSIX_Message_queue_Receive_support+0x112> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( 48cc0: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48cc6: 2079 0006 0226 moveal 60226 <_Thread_Executing>,%a0 <== NOT EXECUTED 48ccc: 2440 moveal %d0,%a2 <== NOT EXECUTED 48cce: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 48cd2: 4eb9 0004 8f2c jsr 48f2c <_POSIX_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 48cd8: 2480 movel %d0,%a2@ <== NOT EXECUTED 48cda: 588f addql #4,%sp <== NOT EXECUTED 48cdc: 6000 ff76 braw 48c54 <_POSIX_Message_queue_Receive_support+0x78> <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 48ce0: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48ce6: 2040 moveal %d0,%a0 <== NOT EXECUTED 48ce8: 7209 moveq #9,%d1 <== NOT EXECUTED 48cea: 70ff moveq #-1,%d0 <== NOT EXECUTED 48cec: 2081 movel %d1,%a0@ <== NOT EXECUTED } 48cee: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 48cf4: 4e5e unlk %fp <== NOT EXECUTED 48cf6: 4e75 rts 00048d1c <_POSIX_Message_queue_Send_support>: size_t msg_len, uint32_t msg_prio, bool wait, Watchdog_Interval timeout ) { 48d1c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48d20: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 48d24: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 48d28: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48d2c: 242e 0018 movel %fp@(24),%d2 <== NOT EXECUTED /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) 48d30: 7020 moveq #32,%d0 <== NOT EXECUTED 48d32: b083 cmpl %d3,%d0 <== NOT EXECUTED 48d34: 640e bccs 48d44 <_POSIX_Message_queue_Send_support+0x28> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 48d36: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48d3c: 7616 moveq #22,%d3 <== NOT EXECUTED 48d3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d40: 2083 movel %d3,%a0@ <== NOT EXECUTED 48d42: 603e bras 48d82 <_POSIX_Message_queue_Send_support+0x66> <== NOT EXECUTED 48d44: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48d48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d4a: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48d50: 4eb9 0004 bc50 jsr 4bc50 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 48d56: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48d5c: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d5e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48d62: 6600 009c bnew 48e00 <_POSIX_Message_queue_Send_support+0xe4> <== NOT EXECUTED case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) { 48d66: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 48d6a: 7003 moveq #3,%d0 <== NOT EXECUTED 48d6c: c081 andl %d1,%d0 <== NOT EXECUTED 48d6e: 6618 bnes 48d88 <_POSIX_Message_queue_Send_support+0x6c> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBADF ); 48d70: 7409 moveq #9,%d2 <== 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(); 48d72: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); 48d78: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48d7e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d80: 2082 movel %d2,%a0@ <== NOT EXECUTED 48d82: 70ff moveq #-1,%d0 <== NOT EXECUTED 48d84: 6000 0088 braw 48e0e <_POSIX_Message_queue_Send_support+0xf2> <== NOT EXECUTED } the_mq = the_mq_fd->Queue; 48d88: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 48d8c: 4a02 tstb %d2 <== NOT EXECUTED 48d8e: 6604 bnes 48d94 <_POSIX_Message_queue_Send_support+0x78> <== NOT EXECUTED 48d90: 4200 clrb %d0 <== NOT EXECUTED 48d92: 600c bras 48da0 <_POSIX_Message_queue_Send_support+0x84> <== NOT EXECUTED do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? FALSE : TRUE; 48d94: 700e moveq #14,%d0 <== NOT EXECUTED 48d96: e0a9 lsrl %d0,%d1 <== NOT EXECUTED 48d98: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 48d9c: b181 eorl %d0,%d1 <== NOT EXECUTED 48d9e: c081 andl %d1,%d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 48da0: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 48da4: 7201 moveq #1,%d1 <== NOT EXECUTED 48da6: c280 andl %d0,%d1 <== NOT EXECUTED 48da8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48daa: 4483 negl %d3 <== NOT EXECUTED 48dac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48dae: 42a7 clrl %sp@- <== NOT EXECUTED 48db0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48db2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48db6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48dba: 4868 001a pea %a0@(26) <== NOT EXECUTED 48dbe: 4eb9 0004 af50 jsr 4af50 <_CORE_message_queue_Submit> <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 48dc4: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 48dca: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 48dcc: 4eb9 0004 c48a jsr 4c48a <_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 ) 48dd2: 7007 moveq #7,%d0 <== NOT EXECUTED 48dd4: b082 cmpl %d2,%d0 <== NOT EXECUTED 48dd6: 660a bnes 48de2 <_POSIX_Message_queue_Send_support+0xc6> <== NOT EXECUTED msg_status = _Thread_Executing->Wait.return_code; 48dd8: 2079 0006 0226 moveal 60226 <_Thread_Executing>,%a0 <== NOT EXECUTED 48dde: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED if ( !msg_status ) 48de2: 4a82 tstl %d2 <== NOT EXECUTED 48de4: 6604 bnes 48dea <_POSIX_Message_queue_Send_support+0xce> <== NOT EXECUTED 48de6: 4280 clrl %d0 <== NOT EXECUTED 48de8: 6024 bras 48e0e <_POSIX_Message_queue_Send_support+0xf2> <== NOT EXECUTED return msg_status; rtems_set_errno_and_return_minus_one( 48dea: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48df0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48df2: 2440 moveal %d0,%a2 <== NOT EXECUTED 48df4: 4eb9 0004 8f2c jsr 48f2c <_POSIX_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 48dfa: 2480 movel %d0,%a2@ <== NOT EXECUTED 48dfc: 588f addql #4,%sp <== NOT EXECUTED 48dfe: 6082 bras 48d82 <_POSIX_Message_queue_Send_support+0x66> <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 48e00: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48e06: 2040 moveal %d0,%a0 <== NOT EXECUTED 48e08: 7209 moveq #9,%d1 <== NOT EXECUTED 48e0a: 70ff moveq #-1,%d0 <== NOT EXECUTED 48e0c: 2081 movel %d1,%a0@ <== NOT EXECUTED } 48e0e: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 48e14: 4e5e unlk %fp <== NOT EXECUTED 48e16: 4e75 rts 00048f2c <_POSIX_Message_queue_Translate_core_message_queue_return_code>: int _POSIX_Message_queue_Translate_core_message_queue_return_code( uint32_t the_message_queue_status ) { 48f2c: 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]; } 48f30: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_Message_queue_Translate_core_message_queue_return_code( uint32_t the_message_queue_status ) { 48f34: 41f9 0005 ce30 lea 5ce30 <_POSIX_Message_queue_Return_codes>,%a0 <== 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]; } 48f3a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 48f3e: 4e5e unlk %fp <== NOT EXECUTED 48f40: 4e75 rts <== NOT EXECUTED ... 00046708 <_POSIX_Mutex_Get>: POSIX_Mutex_Control *_POSIX_Mutex_Get ( pthread_mutex_t *mutex, Objects_Locations *location ) { 46708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4670c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4670e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 46712: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46714: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Id *id = (Objects_Id *)mutex; ___POSIX_Mutex_Get_support( id, location ); 46718: 4a8a tstl %a2 <== NOT EXECUTED 4671a: 6716 beqs 46732 <_POSIX_Mutex_Get+0x2a> <== NOT EXECUTED 4671c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4671e: b092 cmpl %a2@,%d0 <== NOT EXECUTED 46720: 6618 bnes 4673a <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED 46722: 42a7 clrl %sp@- <== NOT EXECUTED 46724: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46726: 4eb9 0004 67a4 jsr 467a4 <== NOT EXECUTED 4672c: 508f addql #8,%sp <== NOT EXECUTED 4672e: 4a80 tstl %d0 <== NOT EXECUTED 46730: 6708 beqs 4673a <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED 46732: 7201 moveq #1,%d1 <== NOT EXECUTED 46734: 2681 movel %d1,%a3@ <== NOT EXECUTED 46736: 4280 clrl %d0 <== NOT EXECUTED 46738: 6016 bras 46750 <_POSIX_Mutex_Get+0x48> <== NOT EXECUTED return (POSIX_Mutex_Control *) 4673a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4673c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4673e: 4879 0005 d336 pea 5d336 <_POSIX_Mutex_Information> <== NOT EXECUTED 46744: 4eb9 0004 9224 jsr 49224 <_Objects_Get> <== NOT EXECUTED 4674a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED _Objects_Get( &_POSIX_Mutex_Information, *id, location ); } 46750: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46754: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46758: 4e5e unlk %fp <== NOT EXECUTED 4675a: 4e75 rts 000466b0 <_POSIX_Mutex_Get_interrupt_disable>: POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( pthread_mutex_t *mutex, Objects_Locations *location, ISR_Level *level ) { 466b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 466b4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 466b6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 466ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466bc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Id *id = (Objects_Id *)mutex; ___POSIX_Mutex_Get_support( id, location ); 466c0: 4a8a tstl %a2 <== NOT EXECUTED 466c2: 6716 beqs 466da <_POSIX_Mutex_Get_interrupt_disable+0x2a> <== NOT EXECUTED 466c4: 70ff moveq #-1,%d0 <== NOT EXECUTED 466c6: b092 cmpl %a2@,%d0 <== NOT EXECUTED 466c8: 6618 bnes 466e2 <_POSIX_Mutex_Get_interrupt_disable+0x32> <== NOT EXECUTED 466ca: 42a7 clrl %sp@- <== NOT EXECUTED 466cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466ce: 4eb9 0004 67a4 jsr 467a4 <== NOT EXECUTED 466d4: 508f addql #8,%sp <== NOT EXECUTED 466d6: 4a80 tstl %d0 <== NOT EXECUTED 466d8: 6708 beqs 466e2 <_POSIX_Mutex_Get_interrupt_disable+0x32> <== NOT EXECUTED 466da: 7001 moveq #1,%d0 <== NOT EXECUTED 466dc: 2680 movel %d0,%a3@ <== NOT EXECUTED 466de: 4280 clrl %d0 <== NOT EXECUTED 466e0: 601a bras 466fc <_POSIX_Mutex_Get_interrupt_disable+0x4c> <== NOT EXECUTED return (POSIX_Mutex_Control *) 466e2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 466e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 466e8: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 466ea: 4879 0005 d336 pea 5d336 <_POSIX_Mutex_Information> <== NOT EXECUTED 466f0: 4eb9 0004 91d4 jsr 491d4 <_Objects_Get_isr_disable> <== NOT EXECUTED 466f6: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED _Objects_Get_isr_disable( &_POSIX_Mutex_Information, *id, location, level ); } 466fc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46700: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46704: 4e5e unlk %fp <== NOT EXECUTED 46706: 4e75 rts 000468d8 <_POSIX_Mutex_Lock_support>: int _POSIX_Mutex_Lock_support( pthread_mutex_t *mutex, bool blocking, Watchdog_Interval timeout ) { 468d8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 468dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 468de: 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 ); 468e2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 468e6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 468ea: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 468ee: 4eb9 0004 66b0 jsr 466b0 <_POSIX_Mutex_Get_interrupt_disable> <== NOT EXECUTED switch ( location ) { 468f4: dffc 0000 000c addal #12,%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 ); 468fa: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 468fc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46900: 6704 beqs 46906 <_POSIX_Mutex_Lock_support+0x2e> <== NOT EXECUTED 46902: 7016 moveq #22,%d0 <== NOT EXECUTED 46904: 6032 bras 46938 <_POSIX_Mutex_Lock_support+0x60> <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_mutex_Seize( 46906: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4690a: 4280 clrl %d0 <== NOT EXECUTED 4690c: 1002 moveb %d2,%d0 <== NOT EXECUTED 4690e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 46912: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46914: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 46918: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4691c: 4eb9 0004 874c jsr 4874c <_CORE_mutex_Seize> <== NOT EXECUTED the_mutex->Object.id, blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( 46922: 2079 0005 d0d6 moveal 5d0d6 <_Thread_Executing>,%a0 <== NOT EXECUTED 46928: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4692c: 4eb9 0004 6a10 jsr 46a10 <_POSIX_Mutex_Translate_core_mutex_return_code> <== NOT EXECUTED 46932: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46938: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4693c: 4e5e unlk %fp <== NOT EXECUTED 4693e: 4e75 rts 00049770 <_POSIX_Mutex_Manager_initialization>: */ void _POSIX_Mutex_Manager_initialization( uint32_t maximum_mutexes ) { 49770: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49774: 4878 00ff pea ff <== NOT EXECUTED 49778: 4878 0001 pea 1 <== NOT EXECUTED 4977c: 4878 0076 pea 76 <== NOT EXECUTED 49780: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49784: 4878 0006 pea 6 <== NOT EXECUTED 49788: 4878 0003 pea 3 <== NOT EXECUTED 4978c: 4879 0005 819a pea 5819a <_POSIX_Mutex_Information> <== NOT EXECUTED 49792: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49798: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4979e: 4e5e unlk %fp <== NOT EXECUTED 497a0: 4e75 rts <== NOT EXECUTED ... 00046a10 <_POSIX_Mutex_Translate_core_mutex_return_code>: int _POSIX_Mutex_Translate_core_mutex_return_code( CORE_mutex_Status the_mutex_status ) { 46a10: 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]; } 46a14: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_Mutex_Translate_core_mutex_return_code( CORE_mutex_Status the_mutex_status ) { 46a18: 41f9 0005 a1be lea 5a1be <_POSIX_Mutex_Return_codes>,%a0 <== 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]; } 46a1e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 46a22: 4e5e unlk %fp <== NOT EXECUTED 46a24: 4e75 rts <== NOT EXECUTED ... 000497d8 <_POSIX_RWLock_Manager_initialization>: */ void _POSIX_RWLock_Manager_initialization( uint32_t maximum_rwlocks ) { 497d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 497dc: 4878 00ff pea ff <== NOT EXECUTED 497e0: 4878 0001 pea 1 <== NOT EXECUTED 497e4: 4878 005c pea 5c <== NOT EXECUTED 497e8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 497ec: 4878 000b pea b <== NOT EXECUTED 497f0: 4878 0003 pea 3 <== NOT EXECUTED 497f4: 4879 0005 8032 pea 58032 <_POSIX_RWLock_Information> <== NOT EXECUTED 497fa: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49800: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49806: 4e5e unlk %fp <== NOT EXECUTED 49808: 4e75 rts <== NOT EXECUTED ... 0004573c <_POSIX_RWLock_Translate_core_RWLock_return_code>: int _POSIX_RWLock_Translate_core_RWLock_return_code( CORE_RWLock_Status the_rwlock_status ) { 4573c: 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]; } 45740: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_RWLock_Translate_core_RWLock_return_code( CORE_RWLock_Status the_rwlock_status ) { 45744: 41f9 0005 74cc lea 574cc <_POSIX_RWLock_Return_codes>,%a0 <== 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]; } 4574a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4574e: 4e5e unlk %fp <== NOT EXECUTED 45750: 4e75 rts <== NOT EXECUTED ... 0004cf0c <_POSIX_Semaphore_Create_support>: const char *name, int pshared, unsigned int value, POSIX_Semaphore_Control **the_sem ) { 4cf0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cf10: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cf12: 2039 0005 cdf0 movel 5cdf0 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4cf18: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cf1a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4cf1e: 5280 addql #1,%d0 <== NOT EXECUTED 4cf20: 23c0 0005 cdf0 movel %d0,5cdf0 <_Thread_Dispatch_disable_level> <== NOT EXECUTED char *name_p = (char *)name; _Thread_Disable_dispatch(); /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) { 4cf26: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4cf2a: 6714 beqs 4cf40 <_POSIX_Semaphore_Create_support+0x34> <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENOSYS ); 4cf2c: 7458 moveq #88,%d2 <== NOT EXECUTED _Thread_Disable_dispatch(); /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) { _Thread_Enable_dispatch(); 4cf2e: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4cf34: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4cf3a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cf3c: 2082 movel %d2,%a0@ <== NOT EXECUTED 4cf3e: 6028 bras 4cf68 <_POSIX_Semaphore_Create_support+0x5c> <== NOT EXECUTED } if ( name ) { 4cf40: 4a82 tstl %d2 <== NOT EXECUTED 4cf42: 672a beqs 4cf6e <_POSIX_Semaphore_Create_support+0x62> <== NOT EXECUTED if( strlen(name) > PATH_MAX ) { 4cf44: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cf46: 4eb9 0005 06dc jsr 506dc <== NOT EXECUTED 4cf4c: 588f addql #4,%sp <== NOT EXECUTED 4cf4e: 0c80 0000 00ff cmpil #255,%d0 <== NOT EXECUTED 4cf54: 6318 blss 4cf6e <_POSIX_Semaphore_Create_support+0x62> <== NOT EXECUTED _Thread_Enable_dispatch(); 4cf56: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4cf5c: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4cf62: 725b moveq #91,%d1 <== NOT EXECUTED 4cf64: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cf66: 2081 movel %d1,%a0@ <== NOT EXECUTED 4cf68: 70ff moveq #-1,%d0 <== NOT EXECUTED 4cf6a: 6000 008c braw 4cff8 <_POSIX_Semaphore_Create_support+0xec> <== NOT EXECUTED * _POSIX_Semaphore_Allocate */ RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void ) { return (POSIX_Semaphore_Control *) 4cf6e: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4cf74: 4eb9 0004 9028 jsr 49028 <_Objects_Allocate> <== NOT EXECUTED } } the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { 4cf7a: 588f addql #4,%sp <== NOT EXECUTED 4cf7c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4cf7e: 4a80 tstl %d0 <== NOT EXECUTED 4cf80: 6614 bnes 4cf96 <_POSIX_Semaphore_Create_support+0x8a> <== NOT EXECUTED _Thread_Enable_dispatch(); 4cf82: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4cf88: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4cf8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cf90: 701c moveq #28,%d0 <== NOT EXECUTED 4cf92: 2080 movel %d0,%a0@ <== NOT EXECUTED 4cf94: 60d2 bras 4cf68 <_POSIX_Semaphore_Create_support+0x5c> <== NOT EXECUTED } the_semaphore->process_shared = pshared; 4cf96: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED if ( name ) { 4cf9a: 4a82 tstl %d2 <== NOT EXECUTED 4cf9c: 6708 beqs 4cfa6 <_POSIX_Semaphore_Create_support+0x9a> <== NOT EXECUTED the_semaphore->named = TRUE; the_semaphore->open_count = 1; 4cf9e: 7001 moveq #1,%d0 <== NOT EXECUTED 4cfa0: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED 4cfa4: 6006 bras 4cfac <_POSIX_Semaphore_Create_support+0xa0> <== NOT EXECUTED the_semaphore->linked = TRUE; } else { the_semaphore->named = FALSE; 4cfa6: 4200 clrb %d0 <== NOT EXECUTED the_semaphore->open_count = 0; 4cfa8: 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; 4cfac: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_semaphore->open_count = 0; the_semaphore->linked = FALSE; 4cfb0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED /* * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; 4cfb4: 70ff moveq #-1,%d0 <== NOT EXECUTED 4cfb6: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED * 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; 4cfba: 42aa 005e clrl %a2@(94) <== NOT EXECUTED * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value ); 4cfbe: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4cfc2: 486a 005a pea %a2@(90) <== NOT EXECUTED 4cfc6: 486a 001a pea %a2@(26) <== NOT EXECUTED 4cfca: 4eb9 0004 8bdc jsr 48bdc <_CORE_semaphore_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4cfd0: 2079 0005 d074 moveal 5d074 <_POSIX_Semaphore_Information+0x1a>,%a0 <== NOT EXECUTED 4cfd6: 4280 clrl %d0 <== NOT EXECUTED 4cfd8: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 4cfdc: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string */ the_object->name.name_p = name; 4cfe0: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED &_POSIX_Semaphore_Information, &the_semaphore->Object, name_p ); *the_sem = the_semaphore; 4cfe4: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4cfe8: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4cfea: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED 4cff0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4cff6: 4280 clrl %d0 <== NOT EXECUTED return 0; } 4cff8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4cffc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4d000: 4e5e unlk %fp <== NOT EXECUTED 4d002: 4e75 rts 0004d004 <_POSIX_Semaphore_Delete>: */ void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore ) { 4d004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d008: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d00a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_semaphore->linked && !the_semaphore->open_count ) { 4d00e: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4d012: 6638 bnes 4d04c <_POSIX_Semaphore_Delete+0x48> <== NOT EXECUTED 4d014: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4d018: 6632 bnes 4d04c <_POSIX_Semaphore_Delete+0x48> <== NOT EXECUTED _Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object ); 4d01a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d01c: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4d022: 4eb9 0004 90b0 jsr 490b0 <_Objects_Close> <== NOT EXECUTED _CORE_semaphore_Flush( 4d028: 4878 ffff pea ffffffff <== NOT EXECUTED 4d02c: 42a7 clrl %sp@- <== NOT EXECUTED 4d02e: 486a 001a pea %a2@(26) <== NOT EXECUTED 4d032: 4eb9 0004 8bd0 jsr 48bd0 <_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 ); 4d038: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d03a: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4d040: 4eb9 0004 9328 jsr 49328 <_Objects_Free> <== NOT EXECUTED 4d046: dffc 0000 001c addal #28,%sp <== NOT EXECUTED -1 ); _POSIX_Semaphore_Free( the_semaphore ); } } 4d04c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4d050: 4e5e unlk %fp <== NOT EXECUTED 4d052: 4e75 rts 00049cf0 <_POSIX_Semaphore_Manager_initialization>: */ void _POSIX_Semaphore_Manager_initialization( uint32_t maximum_semaphores ) { 49cf0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49cf4: 4878 00ff pea ff <== NOT EXECUTED 49cf8: 4878 0001 pea 1 <== NOT EXECUTED 49cfc: 4878 0066 pea 66 <== NOT EXECUTED 49d00: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49d04: 4878 0007 pea 7 <== NOT EXECUTED 49d08: 4878 0003 pea 3 <== NOT EXECUTED 49d0c: 4879 0005 80e6 pea 580e6 <_POSIX_Semaphore_Information> <== NOT EXECUTED 49d12: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49d18: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49d1e: 4e5e unlk %fp <== NOT EXECUTED 49d20: 4e75 rts <== NOT EXECUTED ... 0004d054 <_POSIX_Semaphore_Name_to_id>: int _POSIX_Semaphore_Name_to_id( const char *name, sem_t *id ) { 4d054: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d058: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; if ( !name ) 4d05c: 4a88 tstl %a0 <== NOT EXECUTED 4d05e: 6728 beqs 4d088 <_POSIX_Semaphore_Name_to_id+0x34> <== NOT EXECUTED return EINVAL; if ( !name[0] ) 4d060: 4a10 tstb %a0@ <== NOT EXECUTED 4d062: 6724 beqs 4d088 <_POSIX_Semaphore_Name_to_id+0x34> <== NOT EXECUTED return EINVAL; status = _Objects_Name_to_id_string( 4d064: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d068: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d06a: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4d070: 4eb9 0004 dab8 jsr 4dab8 <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Semaphore_Information, name, (Objects_Id*)id ); if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4d076: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d07c: 4a80 tstl %d0 <== NOT EXECUTED 4d07e: 6704 beqs 4d084 <_POSIX_Semaphore_Name_to_id+0x30> <== NOT EXECUTED 4d080: 7002 moveq #2,%d0 <== NOT EXECUTED 4d082: 6006 bras 4d08a <_POSIX_Semaphore_Name_to_id+0x36> <== NOT EXECUTED 4d084: 4280 clrl %d0 <== NOT EXECUTED 4d086: 6002 bras 4d08a <_POSIX_Semaphore_Name_to_id+0x36> <== NOT EXECUTED 4d088: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; return ENOENT; } 4d08a: 4e5e unlk %fp <== NOT EXECUTED 4d08c: 4e75 rts <== NOT EXECUTED ... 0004e870 <_POSIX_Semaphore_Translate_core_semaphore_return_code>: int _POSIX_Semaphore_Translate_core_semaphore_return_code( CORE_semaphore_Status the_semaphore_status ) { 4e870: 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]; } 4e874: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_Semaphore_Translate_core_semaphore_return_code( CORE_semaphore_Status the_semaphore_status ) { 4e878: 41f9 0005 a70c lea 5a70c <_POSIX_Semaphore_Return_codes>,%a0 <== 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]; } 4e87e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4e882: 4e5e unlk %fp <== NOT EXECUTED 4e884: 4e75 rts <== NOT EXECUTED ... 0004d0c4 <_POSIX_Semaphore_Wait_support>: int _POSIX_Semaphore_Wait_support( sem_t *sem, bool blocking, Watchdog_Interval timeout ) { 4d0c4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d0c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d0ca: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d0ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d0d0: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get ( sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) 4d0d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d0d8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d0da: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4d0e0: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 4d0e6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d0ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d0ee: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d0f2: 6654 bnes 4d148 <_POSIX_Semaphore_Wait_support+0x84> <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_semaphore_Seize( 4d0f4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4d0f8: 4280 clrl %d0 <== NOT EXECUTED 4d0fa: 1002 moveb %d2,%d0 <== NOT EXECUTED 4d0fc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d0fe: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4d102: 4868 001a pea %a0@(26) <== NOT EXECUTED 4d106: 4eb9 0004 d790 jsr 4d790 <_CORE_semaphore_Seize> <== NOT EXECUTED &the_semaphore->Semaphore, the_semaphore->Object.id, blocking, timeout ); _Thread_Enable_dispatch(); 4d10c: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !_Thread_Executing->Wait.return_code ) 4d112: 2079 0005 ceae moveal 5ceae <_Thread_Executing>,%a0 <== NOT EXECUTED 4d118: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4d11e: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4d122: 6604 bnes 4d128 <_POSIX_Semaphore_Wait_support+0x64> <== NOT EXECUTED 4d124: 4280 clrl %d0 <== NOT EXECUTED 4d126: 602e bras 4d156 <_POSIX_Semaphore_Wait_support+0x92> <== NOT EXECUTED return 0; rtems_set_errno_and_return_minus_one( 4d128: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4d12e: 2079 0005 ceae moveal 5ceae <_Thread_Executing>,%a0 <== NOT EXECUTED 4d134: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d136: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4d13a: 4eb9 0004 e870 jsr 4e870 <_POSIX_Semaphore_Translate_core_semaphore_return_code> <== NOT EXECUTED 4d140: 2480 movel %d0,%a2@ <== NOT EXECUTED 4d142: 588f addql #4,%sp <== NOT EXECUTED 4d144: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d146: 600e bras 4d156 <_POSIX_Semaphore_Wait_support+0x92> <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4d148: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4d14e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d150: 7216 moveq #22,%d1 <== NOT EXECUTED 4d152: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d154: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4d156: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4d15a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4d15e: 4e5e unlk %fp <== NOT EXECUTED 4d160: 4e75 rts <== NOT EXECUTED ... 00049990 <_POSIX_Spinlock_Manager_initialization>: */ void _POSIX_Spinlock_Manager_initialization( uint32_t maximum_spinlocks ) { 49990: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49994: 4878 00ff pea ff <== NOT EXECUTED 49998: 4878 0001 pea 1 <== NOT EXECUTED 4999c: 4878 0020 pea 20 <== NOT EXECUTED 499a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 499a4: 4878 000b pea b <== NOT EXECUTED 499a8: 4878 0003 pea 3 <== NOT EXECUTED 499ac: 4879 0005 80aa pea 580aa <_POSIX_Spinlock_Information> <== NOT EXECUTED 499b2: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 499b8: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 499be: 4e5e unlk %fp <== NOT EXECUTED 499c0: 4e75 rts <== NOT EXECUTED ... 00044d7c <_POSIX_Spinlock_Translate_core_spinlock_return_code>: int _POSIX_Spinlock_Translate_core_spinlock_return_code( CORE_spinlock_Status the_spinlock_status ) { 44d7c: 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]; } 44d80: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int _POSIX_Spinlock_Translate_core_spinlock_return_code( CORE_spinlock_Status the_spinlock_status ) { 44d84: 41f9 0005 5f8e lea 55f8e <_POSIX_Spinlock_Return_codes>,%a0 <== 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]; } 44d8a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 44d8e: 4e5e unlk %fp <== NOT EXECUTED 44d90: 4e75 rts <== NOT EXECUTED ... 0004b250 <_POSIX_Thread_Exit>: void _POSIX_Thread_Exit( Thread_Control *the_thread, void *value_ptr ) { 4b250: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b254: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b258: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b25c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4b260: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4b264: 4eb9 0004 644c jsr 4644c <_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(); 4b26a: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED void *value_ptr ) { Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4b270: 2400 movel %d0,%d2 <== 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(); 4b272: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4b278: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4b27e: 5280 addql #1,%d0 <== NOT EXECUTED 4b280: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.return_argument = value_ptr; _Thread_Close( the_information, the_thread ); 4b286: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b288: 2f02 movel %d2,%sp@- <== NOT EXECUTED */ _RTEMS_Lock_allocator(); _Thread_Disable_dispatch(); the_thread->Wait.return_argument = value_ptr; 4b28a: 2543 0028 movel %d3,%a2@(40) <== NOT EXECUTED _Thread_Close( the_information, the_thread ); 4b28e: 4eb9 0004 69f4 jsr 469f4 <_Thread_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 4b294: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b296: 4879 0005 806e pea 5806e <_POSIX_Threads_Information> <== NOT EXECUTED 4b29c: 4eb9 0004 63c8 jsr 463c8 <_Objects_Free> <== NOT EXECUTED _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 4b2a2: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4b2a8: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED _Thread_Enable_dispatch(); 4b2ae: dffc 0000 001c addal #28,%sp <== NOT EXECUTED } 4b2b4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b2ba: 4e5e unlk %fp <== NOT EXECUTED _Thread_Close( the_information, the_thread ); _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); _Thread_Enable_dispatch(); 4b2bc: 4ef9 0004 6d0a jmp 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 00049ada <_POSIX_Threads_Create_extension>: bool _POSIX_Threads_Create_extension( Thread_Control *executing, Thread_Control *created ) { 49ada: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 49ade: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 49ae2: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 49ae6: 4878 00e4 pea e4 <== NOT EXECUTED 49aea: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED if ( !api ) 49af0: 588f addql #4,%sp <== NOT EXECUTED ) { POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 49af2: 2640 moveal %d0,%a3 <== NOT EXECUTED if ( !api ) 49af4: 4a80 tstl %d0 <== NOT EXECUTED 49af6: 6606 bnes 49afe <_POSIX_Threads_Create_extension+0x24> <== NOT EXECUTED 49af8: 4201 clrb %d1 <== NOT EXECUTED 49afa: 6000 00dc braw 49bd8 <_POSIX_Threads_Create_extension+0xfe> <== NOT EXECUTED return false; created->API_Extensions[ THREAD_API_POSIX ] = api; /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 49afe: 4878 0038 pea 38 <== NOT EXECUTED 49b02: 45f9 0004 bf4c lea 4bf4c ,%a2 <== NOT EXECUTED 49b08: 4879 0005 560a pea 5560a <_POSIX_Threads_Default_attributes> <== NOT EXECUTED * by default. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API && 49b0e: 7418 moveq #24,%d2 <== NOT EXECUTED api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); if ( !api ) return false; created->API_Extensions[ THREAD_API_POSIX ] = api; 49b10: 2940 0110 movel %d0,%a4@(272) <== NOT EXECUTED /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 49b14: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49b16: 4e92 jsr %a2@ <== NOT EXECUTED api->detachstate = _POSIX_Threads_Default_attributes.detachstate; 49b18: 7001 moveq #1,%d0 <== NOT EXECUTED 49b1a: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy; 49b1e: 2740 007c movel %d0,%a3@(124) <== NOT EXECUTED api->schedparam = _POSIX_Threads_Default_attributes.schedparam; 49b22: 4878 0018 pea 18 <== NOT EXECUTED 49b26: 4879 0005 5622 pea 55622 <_POSIX_Threads_Default_attributes+0x18> <== NOT EXECUTED 49b2c: 486b 0080 pea %a3@(128) <== NOT EXECUTED 49b30: 4e92 jsr %a2@ <== NOT EXECUTED api->schedparam.sched_priority = 49b32: 223c 0000 00ff movel #255,%d1 <== NOT EXECUTED 49b38: 92ac 0014 subl %a4@(20),%d1 <== NOT EXECUTED * If the thread is not a posix thread, then all posix signals are blocked * by default. */ /* XXX use signal constants */ api->signals_pending = 0; 49b3c: 42ab 00c8 clrl %a3@(200) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 49b40: 41eb 00dc lea %a3@(220),%a0 <== NOT EXECUTED if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API && 49b44: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED /* 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; api->schedparam.sched_priority = 49b4a: 2741 0080 movel %d1,%a3@(128) <== NOT EXECUTED * by default. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API && 49b4e: 222c 0008 movel %a4@(8),%d1 <== NOT EXECUTED 49b52: 2001 movel %d1,%d0 <== NOT EXECUTED 49b54: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 49b56: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 49b5a: 2748 00d8 movel %a0,%a3@(216) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 49b5e: 41eb 00d8 lea %a3@(216),%a0 <== NOT EXECUTED 49b62: c082 andl %d2,%d0 <== NOT EXECUTED 49b64: 2748 00e0 movel %a0,%a3@(224) <== NOT EXECUTED 49b68: 143c 0003 moveb #3,%d2 <== NOT EXECUTED _POSIX_Priority_From_core( created->current_priority ); /* * POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; 49b6c: 42ab 00d4 clrl %a3@(212) <== NOT EXECUTED api->cancelability_state = PTHREAD_CANCEL_ENABLE; 49b70: 42ab 00cc clrl %a3@(204) <== NOT EXECUTED api->cancelability_type = PTHREAD_CANCEL_DEFERRED; 49b74: 42ab 00d0 clrl %a3@(208) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 49b78: 42ab 00dc clrl %a3@(220) <== NOT EXECUTED * by default. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API && 49b7c: b480 cmpl %d0,%d2 <== NOT EXECUTED 49b7e: 661e bnes 49b9e <_POSIX_Threads_Create_extension+0xc4> <== NOT EXECUTED 49b80: 701b moveq #27,%d0 <== NOT EXECUTED 49b82: e0a9 lsrl %d0,%d1 <== NOT EXECUTED 49b84: 143c 0001 moveb #1,%d2 <== NOT EXECUTED 49b88: b481 cmpl %d1,%d2 <== NOT EXECUTED 49b8a: 6612 bnes 49b9e <_POSIX_Threads_Create_extension+0xc4> <== NOT EXECUTED _Objects_Get_class( created->Object.id ) == 1 ) { executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; api->signals_blocked = executing_api->signals_blocked; 49b8c: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 49b92: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED 49b96: 2768 00c4 00c4 movel %a0@(196),%a3@(196) <== NOT EXECUTED 49b9c: 6006 bras 49ba4 <_POSIX_Threads_Create_extension+0xca> <== NOT EXECUTED } else { api->signals_blocked = 0xffffffff; 49b9e: 70ff moveq #-1,%d0 <== NOT EXECUTED 49ba0: 2740 00c4 movel %d0,%a3@(196) <== NOT EXECUTED } _Thread_queue_Initialize( 49ba4: 42a7 clrl %sp@- <== NOT EXECUTED 49ba6: 4878 1000 pea 1000 <== NOT EXECUTED 49baa: 42a7 clrl %sp@- <== NOT EXECUTED 49bac: 486b 003c pea %a3@(60) <== NOT EXECUTED 49bb0: 4eb9 0004 73bc jsr 473bc <_Thread_queue_Initialize> <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 49bb6: 223c 0004 9c28 movel #302120,%d1 <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_JOIN_AT_EXIT, 0 ); _Watchdog_Initialize( 49bbc: 202c 0008 movel %a4@(8),%d0 <== NOT EXECUTED 49bc0: 2741 00b8 movel %d1,%a3@(184) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 49bc4: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 49bca: 7201 moveq #1,%d1 <== NOT EXECUTED 49bcc: 274c 00c0 movel %a4,%a3@(192) <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 49bd0: 2740 00bc movel %d0,%a3@(188) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 49bd4: 42ab 00a4 clrl %a3@(164) <== NOT EXECUTED created->Object.id, created ); return true; } 49bd8: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49bde: 4e5e unlk %fp <== NOT EXECUTED 49be0: 1001 moveb %d1,%d0 <== NOT EXECUTED 49be2: 4e75 rts 00049a68 <_POSIX_Threads_Delete_extension>: User_extensions_routine _POSIX_Threads_Delete_extension( Thread_Control *executing, Thread_Control *deleted ) { 49a68: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 49a6c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 49a70: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Thread_Control *the_thread; POSIX_API_Control *api; void **value_ptr; api = deleted->API_Extensions[ THREAD_API_POSIX ]; 49a74: 266a 0110 moveal %a2@(272),%a3 <== NOT EXECUTED /* * Run the POSIX cancellation handlers */ _POSIX_Threads_cancel_run( deleted ); 49a78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49a7a: 4eb9 0004 afc8 jsr 4afc8 <_POSIX_Threads_cancel_run> <== 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 )) ) 49a80: 260b movel %a3,%d3 <== NOT EXECUTED _POSIX_Threads_cancel_run( deleted ); /* * Run all the key destructors */ _POSIX_Keys_Run_destructors( deleted ); 49a82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49a84: 4eb9 0004 b02c jsr 4b02c <_POSIX_Keys_Run_destructors> <== NOT EXECUTED /* * Wakeup all the tasks which joined with this one */ value_ptr = (void **) deleted->Wait.return_argument; 49a8a: 242a 0028 movel %a2@(40),%d2 <== NOT EXECUTED while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) 49a8e: 0683 0000 003c addil #60,%d3 <== NOT EXECUTED 49a94: 508f addql #8,%sp <== NOT EXECUTED 49a96: 49f9 0004 702c lea 4702c <_Thread_queue_Dequeue>,%a4 <== NOT EXECUTED 49a9c: 6006 bras 49aa4 <_POSIX_Threads_Delete_extension+0x3c> <== NOT EXECUTED *(void **)the_thread->Wait.return_argument = value_ptr; 49a9e: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED 49aa2: 2082 movel %d2,%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 )) ) 49aa4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49aa6: 4e94 jsr %a4@ <== NOT EXECUTED 49aa8: 588f addql #4,%sp <== NOT EXECUTED 49aaa: 2040 moveal %d0,%a0 <== NOT EXECUTED 49aac: 4a80 tstl %d0 <== NOT EXECUTED 49aae: 66ee bnes 49a9e <_POSIX_Threads_Delete_extension+0x36> <== NOT EXECUTED *(void **)the_thread->Wait.return_argument = value_ptr; if ( api->schedpolicy == SCHED_SPORADIC ) 49ab0: 7003 moveq #3,%d0 <== NOT EXECUTED 49ab2: b0ab 007c cmpl %a3@(124),%d0 <== NOT EXECUTED 49ab6: 660c bnes 49ac4 <_POSIX_Threads_Delete_extension+0x5c> <== NOT EXECUTED (void) _Watchdog_Remove( &api->Sporadic_timer ); 49ab8: 486b 009c pea %a3@(156) <== NOT EXECUTED 49abc: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 49ac2: 588f addql #4,%sp <== NOT EXECUTED deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 49ac4: 42aa 0110 clrl %a2@(272) <== NOT EXECUTED (void) _Workspace_Free( api ); 49ac8: 2d4b 0008 movel %a3,%fp@(8) <== NOT EXECUTED } 49acc: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 49ad2: 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 ); 49ad4: 4ef9 0004 7e94 jmp 47e94 <_Workspace_Free> <== NOT EXECUTED 00049a3c <_POSIX_Threads_Exitted_extension>: */ User_extensions_routine _POSIX_Threads_Exitted_extension( Thread_Control *executing ) { 49a3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49a40: 206e 0008 moveal %fp@(8),%a0 <== 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 ) 49a44: 4280 clrl %d0 <== NOT EXECUTED 49a46: 1028 0008 moveb %a0@(8),%d0 <== NOT EXECUTED 49a4a: 7207 moveq #7,%d1 <== NOT EXECUTED 49a4c: c081 andl %d1,%d0 <== NOT EXECUTED 49a4e: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 49a52: b280 cmpl %d0,%d1 <== NOT EXECUTED 49a54: 660e bnes 49a64 <_POSIX_Threads_Exitted_extension+0x28> <== NOT EXECUTED pthread_exit( executing->Wait.return_argument ); 49a56: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED } 49a5c: 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 ); 49a5e: 4ef9 0004 b2c2 jmp 4b2c2 <== NOT EXECUTED } 49a64: 4e5e unlk %fp <== NOT EXECUTED 49a66: 4e75 rts 000499c4 <_POSIX_Threads_Initialize_user_threads>: * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads( void ) { if ( _POSIX_Threads_Initialize_user_threads_p ) 499c4: 2039 0005 6d04 movel 56d04 <_POSIX_Threads_Initialize_user_threads_p>,%d0 <== NOT EXECUTED * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads( void ) { 499ca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( _POSIX_Threads_Initialize_user_threads_p ) 499ce: 4a80 tstl %d0 <== NOT EXECUTED 499d0: 6706 beqs 499d8 <_POSIX_Threads_Initialize_user_threads+0x14> <== NOT EXECUTED (*_POSIX_Threads_Initialize_user_threads_p)(); } 499d2: 4e5e unlk %fp <== NOT EXECUTED */ void _POSIX_Threads_Initialize_user_threads( void ) { if ( _POSIX_Threads_Initialize_user_threads_p ) (*_POSIX_Threads_Initialize_user_threads_p)(); 499d4: 2240 moveal %d0,%a1 <== NOT EXECUTED 499d6: 4ed1 jmp %a1@ <== NOT EXECUTED } 499d8: 4e5e unlk %fp <== NOT EXECUTED 499da: 4e75 rts 00045b64 <_POSIX_Threads_Initialize_user_threads_body>: * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads_body( void ) { 45b64: 4e56 ffa0 linkw %fp,#-96 <== NOT EXECUTED 45b68: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED uint32_t maximum; posix_initialization_threads_table *user_threads; pthread_t thread_id; pthread_attr_t attr; user_threads = _POSIX_Threads_User_initialization_threads; 45b6c: 2039 0005 b906 movel 5b906 <_POSIX_Threads_User_initialization_threads>,%d0 <== NOT EXECUTED maximum = _POSIX_Threads_Number_of_initialization_threads; 45b72: 2839 0005 b9b6 movel 5b9b6 <_POSIX_Threads_Number_of_initialization_threads>,%d4 <== NOT EXECUTED if ( !user_threads || maximum == 0 ) 45b78: 4a80 tstl %d0 <== NOT EXECUTED 45b7a: 6770 beqs 45bec <_POSIX_Threads_Initialize_user_threads_body+0x88> <== NOT EXECUTED 45b7c: 4a84 tstl %d4 <== NOT EXECUTED 45b7e: 676c beqs 45bec <_POSIX_Threads_Initialize_user_threads_body+0x88> <== NOT EXECUTED for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 45b80: 260e movel %fp,%d3 <== NOT EXECUTED (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); status = pthread_create( 45b82: 2a0e movel %fp,%d5 <== NOT EXECUTED pthread_attr_t attr; user_threads = _POSIX_Threads_User_initialization_threads; maximum = _POSIX_Threads_Number_of_initialization_threads; if ( !user_threads || maximum == 0 ) 45b84: 2440 moveal %d0,%a2 <== NOT EXECUTED 45b86: 4282 clrl %d2 <== NOT EXECUTED for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 45b88: 0683 ffff ffc4 addil #-60,%d3 <== NOT EXECUTED 45b8e: 2c3c 0004 b734 movel #309044,%d6 <== NOT EXECUTED (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); 45b94: 4bf9 0004 b764 lea 4b764 ,%a5 <== NOT EXECUTED (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); 45b9a: 49f9 0004 b79c lea 4b79c ,%a4 <== NOT EXECUTED status = pthread_create( 45ba0: 5985 subql #4,%d5 <== NOT EXECUTED 45ba2: 47f9 0004 5850 lea 45850 ,%a3 <== NOT EXECUTED 45ba8: 603e bras 45be8 <_POSIX_Threads_Initialize_user_threads_body+0x84> <== NOT EXECUTED for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 45baa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45bac: 2046 moveal %d6,%a0 <== NOT EXECUTED 45bae: 4e90 jsr %a0@ <== NOT EXECUTED (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); 45bb0: 4878 0002 pea 2 <== NOT EXECUTED 45bb4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45bb6: 4e95 jsr %a5@ <== NOT EXECUTED (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); 45bb8: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 45bbc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45bbe: 4e94 jsr %a4@ <== NOT EXECUTED status = pthread_create( 45bc0: 42a7 clrl %sp@- <== NOT EXECUTED 45bc2: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45bc4: 508a addql #8,%a2 <== NOT EXECUTED 45bc6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45bc8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 45bca: 4e93 jsr %a3@ <== NOT EXECUTED &thread_id, &attr, user_threads[ index ].thread_entry, NULL ); if ( status ) 45bcc: dffc 0000 0024 addal #36,%sp <== NOT EXECUTED 45bd2: 4a80 tstl %d0 <== NOT EXECUTED 45bd4: 6710 beqs 45be6 <_POSIX_Threads_Initialize_user_threads_body+0x82> <== NOT EXECUTED _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, status ); 45bd6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45bd8: 4878 0001 pea 1 <== NOT EXECUTED 45bdc: 4878 0002 pea 2 <== NOT EXECUTED 45be0: 4eb9 0004 7b9c jsr 47b9c <_Internal_error_Occurred> <== NOT EXECUTED * * Setting the attributes explicitly is critical, since we don't want * to inherit the idle tasks attributes. */ for ( index=0 ; index < maximum ; index++ ) { 45be6: 5282 addql #1,%d2 <== NOT EXECUTED 45be8: b882 cmpl %d2,%d4 <== NOT EXECUTED 45bea: 62be bhis 45baa <_POSIX_Threads_Initialize_user_threads_body+0x46> <== NOT EXECUTED NULL ); if ( status ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, status ); } } 45bec: 4cee 3c7c ffa0 moveml %fp@(-96),%d2-%d6/%a2-%a5 <== NOT EXECUTED 45bf2: 4e5e unlk %fp <== NOT EXECUTED 45bf4: 4e75 rts <== NOT EXECUTED ... 000499dc <_POSIX_Threads_Manager_initialization>: uint32_t maximum_pthreads, uint32_t number_of_initialization_threads, posix_initialization_threads_table *user_threads ) { 499dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if 0 if ( user_threads == NULL || number_of_initialization_threads == 0 ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, EINVAL ); #endif _Objects_Initialize_information( 499e0: 4878 00ff pea ff <== NOT EXECUTED uint32_t number_of_initialization_threads, posix_initialization_threads_table *user_threads ) { _POSIX_Threads_Number_of_initialization_threads = 499e4: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED #if 0 if ( user_threads == NULL || number_of_initialization_threads == 0 ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, EINVAL ); #endif _Objects_Initialize_information( 499e8: 4878 0001 pea 1 <== NOT EXECUTED 499ec: 4878 0120 pea 120 <== NOT EXECUTED uint32_t number_of_initialization_threads, posix_initialization_threads_table *user_threads ) { _POSIX_Threads_Number_of_initialization_threads = 499f0: 23d0 0005 82c2 movel %a0@,582c2 <_POSIX_Threads_Number_of_initialization_threads> <== NOT EXECUTED number_of_initialization_threads; _POSIX_Threads_User_initialization_threads = user_threads; 499f6: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED #if 0 if ( user_threads == NULL || number_of_initialization_threads == 0 ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, EINVAL ); #endif _Objects_Initialize_information( 499fa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 499fe: 4878 0001 pea 1 <== NOT EXECUTED 49a02: 4878 0003 pea 3 <== NOT EXECUTED 49a06: 4879 0005 806e pea 5806e <_POSIX_Threads_Information> <== NOT EXECUTED ) { _POSIX_Threads_Number_of_initialization_threads = number_of_initialization_threads; _POSIX_Threads_User_initialization_threads = user_threads; 49a0c: 23d0 0005 8212 movel %a0@,58212 <_POSIX_Threads_User_initialization_threads> <== NOT EXECUTED #if 0 if ( user_threads == NULL || number_of_initialization_threads == 0 ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, TRUE, EINVAL ); #endif _Objects_Initialize_information( 49a12: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED /* * Add all the extensions for this API */ _User_extensions_Add_API_set( &_POSIX_Threads_User_extensions ); 49a18: 4879 0005 677c pea 5677c <_POSIX_Threads_User_extensions> <== NOT EXECUTED 49a1e: 4eb9 0004 aa98 jsr 4aa98 <_User_extensions_Add_API_set> <== NOT EXECUTED _API_extensions_Add( &_POSIX_Threads_API_extensions ); 49a24: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 49a2a: 203c 0005 6768 movel #354152,%d0 <== NOT EXECUTED 49a30: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED /* * If we supported MP, then here we would ... * Register the MP Process Packet routine. */ } 49a34: 4e5e unlk %fp <== NOT EXECUTED * Add all the extensions for this API */ _User_extensions_Add_API_set( &_POSIX_Threads_User_extensions ); _API_extensions_Add( &_POSIX_Threads_API_extensions ); 49a36: 4ef9 0004 5842 jmp 45842 <_API_extensions_Add> <== NOT EXECUTED 00049c28 <_POSIX_Threads_Sporadic_budget_TSR>: void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id, void *argument ) { 49c28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49c2c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 49c2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c30: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Thread_Control *the_thread; POSIX_API_Control *api; the_thread = argument; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 49c34: 266a 0110 moveal %a2@(272),%a3 <== NOT EXECUTED ticks = _Timespec_To_ticks( &api->schedparam.ss_initial_budget ); 49c38: 486b 0090 pea %a3@(144) <== NOT EXECUTED 49c3c: 4eb9 0004 aa44 jsr 4aa44 <_Timespec_To_ticks> <== NOT EXECUTED if ( !ticks ) 49c42: 588f addql #4,%sp <== NOT EXECUTED 49c44: 4a80 tstl %d0 <== NOT EXECUTED 49c46: 6604 bnes 49c4c <_POSIX_Threads_Sporadic_budget_TSR+0x24> <== NOT EXECUTED 49c48: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 49c4c: 223c 0000 00ff movel #255,%d1 <== NOT EXECUTED 49c52: 92ab 0098 subl %a3@(152),%d1 <== NOT EXECUTED ticks = 1; the_thread->cpu_time_budget = ticks; 49c56: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED new_priority = _POSIX_Priority_To_core( api->ss_high_priority ); the_thread->real_priority = new_priority; 49c5a: 2541 0018 movel %d1,%a2@(24) <== NOT EXECUTED if ( the_thread->resource_count == 0 || 49c5e: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED 49c62: 6706 beqs 49c6a <_POSIX_Threads_Sporadic_budget_TSR+0x42> <== NOT EXECUTED 49c64: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED 49c68: 6414 bccs 49c7e <_POSIX_Threads_Sporadic_budget_TSR+0x56> <== NOT EXECUTED the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, TRUE ); 49c6a: 4878 0001 pea 1 <== NOT EXECUTED 49c6e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 49c70: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c72: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED 49c78: dffc 0000 000c addal #12,%sp <== NOT EXECUTED ticks = _Timespec_To_ticks( &api->schedparam.ss_replenish_period ); 49c7e: 486b 0088 pea %a3@(136) <== NOT EXECUTED 49c82: 4eb9 0004 aa44 jsr 4aa44 <_Timespec_To_ticks> <== NOT EXECUTED if ( !ticks ) 49c88: 588f addql #4,%sp <== NOT EXECUTED 49c8a: 4a80 tstl %d0 <== NOT EXECUTED 49c8c: 6604 bnes 49c92 <_POSIX_Threads_Sporadic_budget_TSR+0x6a> <== NOT EXECUTED 49c8e: 103c 0001 moveb #1,%d0 <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 49c92: 2740 00a8 movel %d0,%a3@(168) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 49c96: d7fc 0000 009c addal #156,%a3 <== NOT EXECUTED 49c9c: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED ticks = 1; _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks ); } 49ca0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 49ca4: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 49ca8: 203c 0005 7f58 movel #360280,%d0 <== NOT EXECUTED 49cae: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 49cb2: 4e5e unlk %fp <== NOT EXECUTED 49cb4: 4ef9 0004 7c80 jmp 47c80 <_Watchdog_Insert> <== NOT EXECUTED ... 00049be4 <_POSIX_Threads_Sporadic_budget_callout>: */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) { 49be4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49be8: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED POSIX_API_Control *api; uint32_t new_priority; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 49bec: 2069 0110 moveal %a1@(272),%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (255 - priority); 49bf0: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 49bf6: 90a8 0084 subl %a0@(132),%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 */ 49bfa: 72ff moveq #-1,%d1 <== NOT EXECUTED 49bfc: 2341 0078 movel %d1,%a1@(120) <== NOT EXECUTED new_priority = _POSIX_Priority_To_core( api->schedparam.ss_low_priority ); the_thread->real_priority = new_priority; 49c00: 2340 0018 movel %d0,%a1@(24) <== NOT EXECUTED if ( the_thread->resource_count == 0 || 49c04: 4aa9 001c tstl %a1@(28) <== NOT EXECUTED 49c08: 6706 beqs 49c10 <_POSIX_Threads_Sporadic_budget_callout+0x2c> <== NOT EXECUTED 49c0a: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 49c0e: 6414 bccs 49c24 <_POSIX_Threads_Sporadic_budget_callout+0x40> <== NOT EXECUTED the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, TRUE ); 49c10: 4878 0001 pea 1 <== NOT EXECUTED 49c14: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49c16: 2f09 movel %a1,%sp@- <== NOT EXECUTED 49c18: 4eb9 0004 6804 jsr 46804 <_Thread_Change_priority> <== NOT EXECUTED 49c1e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } 49c24: 4e5e unlk %fp <== NOT EXECUTED 49c26: 4e75 rts 0004afc8 <_POSIX_Threads_cancel_run>: #include void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) { 4afc8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4afcc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4afd0: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 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 ]; 4afd4: 2668 0110 moveal %a0@(272),%a3 <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; 4afd8: 7001 moveq #1,%d0 <== NOT EXECUTED 4afda: 2740 00cc movel %d0,%a3@(204) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4afde: 49eb 00dc lea %a3@(220),%a4 <== NOT EXECUTED while ( !_Chain_Is_empty( handler_stack ) ) { _ISR_Disable( level ); 4afe2: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); (*handler->routine)( handler->arg ); _Workspace_Free( handler ); 4afe8: 4bf9 0004 7e94 lea 47e94 <_Workspace_Free>,%a5 <== NOT EXECUTED 4afee: 6028 bras 4b018 <_POSIX_Threads_cancel_run+0x50> <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; while ( !_Chain_Is_empty( handler_stack ) ) { _ISR_Disable( level ); 4aff0: 40c0 movew %sr,%d0 <== NOT EXECUTED 4aff2: 8280 orl %d0,%d1 <== NOT EXECUTED 4aff4: 46c1 movew %d1,%sr <== NOT EXECUTED handler = (POSIX_Cancel_Handler_control *) 4aff6: 246c 0004 moveal %a4@(4),%a2 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4affa: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 4affc: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; previous->next = next; 4b000: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 4b002: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 4b006: 46c0 movew %d0,%sr <== NOT EXECUTED (*handler->routine)( handler->arg ); 4b008: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4b00c: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 4b010: 4e90 jsr %a0@ <== NOT EXECUTED _Workspace_Free( handler ); 4b012: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b014: 4e95 jsr %a5@ <== NOT EXECUTED 4b016: 508f addql #8,%sp <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; while ( !_Chain_Is_empty( handler_stack ) ) { _ISR_Disable( level ); 4b018: 2202 movel %d2,%d1 <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; while ( !_Chain_Is_empty( handler_stack ) ) { 4b01a: b9eb 00d8 cmpal %a3@(216),%a4 <== NOT EXECUTED 4b01e: 66d0 bnes 4aff0 <_POSIX_Threads_cancel_run+0x28> <== NOT EXECUTED (*handler->routine)( handler->arg ); _Workspace_Free( handler ); } } 4b020: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4b026: 4e5e unlk %fp <== NOT EXECUTED 4b028: 4e75 rts <== NOT EXECUTED ... 0004b9cc <_POSIX_Timer_Insert_helper>: Watchdog_Interval ticks, Objects_Id id, Watchdog_Service_routine_entry TSR, void *arg ) { 4b9cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b9d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b9d2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b9d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; (void) _Watchdog_Remove( timer ); 4b9d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b9da: 4eb9 0004 9838 jsr 49838 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 4b9e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4b9e6: 40c2 movew %sr,%d2 <== NOT EXECUTED 4b9e8: 8082 orl %d2,%d0 <== NOT EXECUTED 4b9ea: 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 ) { 4b9ec: 588f addql #4,%sp <== NOT EXECUTED 4b9ee: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4b9f2: 6706 beqs 4b9fa <_POSIX_Timer_Insert_helper+0x2e> <== NOT EXECUTED _ISR_Enable( level ); 4b9f4: 46c2 movew %d2,%sr <== NOT EXECUTED 4b9f6: 4200 clrb %d0 <== NOT EXECUTED 4b9f8: 6030 bras 4ba2a <_POSIX_Timer_Insert_helper+0x5e> <== NOT EXECUTED 4b9fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b9fc: 4879 0005 b290 pea 5b290 <_Watchdog_Ticks_chain> <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 4ba02: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4ba08: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 4ba0e: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4ba14: 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; 4ba1a: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4ba1e: 4eb9 0004 971c jsr 4971c <_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 ); 4ba24: 46c2 movew %d2,%sr <== NOT EXECUTED 4ba26: 7001 moveq #1,%d0 <== NOT EXECUTED 4ba28: 508f addql #8,%sp <== NOT EXECUTED return true; } 4ba2a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ba2e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ba32: 4e5e unlk %fp <== NOT EXECUTED 4ba34: 4e75 rts <== NOT EXECUTED ... 00049cbc <_POSIX_Timer_Manager_initialization>: * Description: Initialize the internal structure in which the data of all * the timers are stored */ void _POSIX_Timer_Manager_initialization ( int maximum_timers ) { 49cbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49cc0: 4878 00ff pea ff <== NOT EXECUTED 49cc4: 4878 0001 pea 1 <== NOT EXECUTED 49cc8: 4878 0072 pea 72 <== NOT EXECUTED 49ccc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49cd0: 4878 0009 pea 9 <== NOT EXECUTED 49cd4: 4878 0003 pea 3 <== NOT EXECUTED 49cd8: 4879 0005 8122 pea 58122 <_POSIX_Timer_Information> <== NOT EXECUTED 49cde: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49ce4: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49cea: 4e5e unlk %fp <== NOT EXECUTED 49cec: 4e75 rts <== NOT EXECUTED ... 000460b4 <_POSIX_Timer_TSR>: /* * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR(Objects_Id timer, void *data) { 460b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 460b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 460ba: 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; 460be: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED /* The timer must be reprogrammed */ if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) || 460c2: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED 460c6: 6606 bnes 460ce <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED 460c8: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED 460cc: 6734 beqs 46102 <_POSIX_Timer_TSR+0x4e> <== NOT EXECUTED ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) { activated = _POSIX_Timer_Insert_helper( 460ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 460d0: 4879 0004 60b4 pea 460b4 <_POSIX_Timer_TSR> <== NOT EXECUTED 460d6: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 460da: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED 460de: 486a 0010 pea %a2@(16) <== NOT EXECUTED 460e2: 4eb9 0004 b9cc jsr 4b9cc <_POSIX_Timer_Insert_helper> <== NOT EXECUTED ptimer->ticks, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) 460e8: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 460ee: 4a00 tstb %d0 <== NOT EXECUTED 460f0: 672a beqs 4611c <_POSIX_Timer_TSR+0x68> <== NOT EXECUTED return; /* Store the time when the timer was started again */ _TOD_Get( &ptimer->time ); 460f2: 486a 006a pea %a2@(106) <== NOT EXECUTED 460f6: 4eb9 0004 7718 jsr 47718 <_TOD_Get> <== NOT EXECUTED /* The state really did not change but just to be safe */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 460fc: 588f addql #4,%sp <== NOT EXECUTED 460fe: 7003 moveq #3,%d0 <== NOT EXECUTED 46100: 6002 bras 46104 <_POSIX_Timer_TSR+0x50> <== NOT EXECUTED } else { /* Indicates that the timer is stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 46102: 7004 moveq #4,%d0 <== NOT EXECUTED 46104: 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 ) ) { 46108: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4610c: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 46110: 4eb9 0004 b6e8 jsr 4b6e8 <== NOT EXECUTED } /* After the signal handler returns, the count of expirations of the * timer must be set to 0. */ ptimer->overrun = 0; 46116: 508f addql #8,%sp <== NOT EXECUTED 46118: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED } 4611c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46120: 4e5e unlk %fp <== NOT EXECUTED 46122: 4e75 rts 00049982 <_POSIX_signals_Abnormal_termination_handler>: /*** PROCESS WIDE STUFF ****/ sigset_t _POSIX_signals_Pending; void _POSIX_signals_Abnormal_termination_handler( int signo ) { 49982: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED exit( 1 ); 49986: 4878 0001 pea 1 <== NOT EXECUTED 4998a: 4eb9 0004 b7a4 jsr 4b7a4 <== NOT EXECUTED 00046740 <_POSIX_signals_Alarm_TSR>: void _POSIX_signals_Alarm_TSR( Objects_Id id, void *argument ) { 46740: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED int status; status = kill( getpid(), SIGALRM ); 46744: 4eb9 0004 4258 jsr 44258 <== NOT EXECUTED 4674a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4674e: 700e moveq #14,%d0 <== NOT EXECUTED 46750: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED /* XXX can't print from an ISR, should this be fatal? */ } 46754: 4e5e unlk %fp <== NOT EXECUTED void *argument ) { int status; status = kill( getpid(), SIGALRM ); 46756: 4ef9 0004 67e0 jmp 467e0 <== NOT EXECUTED 0004b0b4 <_POSIX_signals_Check_signal>: bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4b0b4: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4b0b8: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4b0bc: 4280 clrl %d0 <== NOT EXECUTED 4b0be: 4878 0001 pea 1 <== NOT EXECUTED 4b0c2: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED 4b0c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b0c8: 280e movel %fp,%d4 <== NOT EXECUTED 4b0ca: 0684 ffff fff4 addil #-12,%d4 <== NOT EXECUTED 4b0d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4b0d2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b0d6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4b0da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b0dc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4b0de: 4eb9 0004 b158 jsr 4b158 <_POSIX_signals_Clear_signals> <== NOT EXECUTED 4b0e4: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4b0ea: 4a00 tstb %d0 <== NOT EXECUTED 4b0ec: 675c beqs 4b14a <_POSIX_signals_Check_signal+0x96> <== NOT EXECUTED #endif /* * Just to prevent sending a signal which is currently being ignored. */ if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) 4b0ee: 2002 movel %d2,%d0 <== NOT EXECUTED 4b0f0: 2202 movel %d2,%d1 <== NOT EXECUTED 4b0f2: e588 lsll #2,%d0 <== NOT EXECUTED 4b0f4: e989 lsll #4,%d1 <== NOT EXECUTED 4b0f6: 9280 subl %d0,%d1 <== NOT EXECUTED 4b0f8: 2441 moveal %d1,%a2 <== NOT EXECUTED 4b0fa: d5fc 0005 838e addal #361358,%a2 <== NOT EXECUTED 4b100: 2252 moveal %a2@,%a1 <== NOT EXECUTED 4b102: 47f9 0005 8386 lea 58386 <_POSIX_signals_Vectors>,%a3 <== NOT EXECUTED 4b108: 7001 moveq #1,%d0 <== NOT EXECUTED 4b10a: b089 cmpl %a1,%d0 <== NOT EXECUTED 4b10c: 673c beqs 4b14a <_POSIX_signals_Check_signal+0x96> <== NOT EXECUTED /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4b10e: 2a42 moveal %d2,%a5 <== NOT EXECUTED 4b110: 41f5 2a01 lea %a5@(00000001,%d2:l:2),%a0 <== NOT EXECUTED 4b114: 2033 8c00 movel %a3@(00000000,%a0:l:4),%d0 <== NOT EXECUTED return false; /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; 4b118: 262c 00c4 movel %a4@(196),%d3 <== NOT EXECUTED api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4b11c: 8083 orl %d3,%d0 <== NOT EXECUTED 4b11e: 2940 00c4 movel %d0,%a4@(196) <== NOT EXECUTED /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { 4b122: 7002 moveq #2,%d0 <== NOT EXECUTED 4b124: b0b3 1800 cmpl %a3@(00000000,%d1:l),%d0 <== NOT EXECUTED 4b128: 6612 bnes 4b13c <_POSIX_signals_Check_signal+0x88> <== NOT EXECUTED case SA_SIGINFO: (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( 4b12a: 42a7 clrl %sp@- <== NOT EXECUTED 4b12c: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4b12e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b130: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b132: 4e90 jsr %a0@ <== NOT EXECUTED 4b134: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4b13a: 6006 bras 4b142 <_POSIX_signals_Check_signal+0x8e> <== NOT EXECUTED &siginfo_struct, NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; default: (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); 4b13c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b13e: 4e91 jsr %a1@ <== NOT EXECUTED 4b140: 588f addql #4,%sp <== NOT EXECUTED } /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; 4b142: 2943 00c4 movel %d3,%a4@(196) <== NOT EXECUTED 4b146: 7001 moveq #1,%d0 <== NOT EXECUTED 4b148: 6002 bras 4b14c <_POSIX_signals_Check_signal+0x98> <== NOT EXECUTED return true; 4b14a: 4200 clrb %d0 <== NOT EXECUTED } 4b14c: 4cee 3c1c ffd8 moveml %fp@(-40),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4b152: 4e5e unlk %fp <== NOT EXECUTED 4b154: 4e75 rts <== NOT EXECUTED ... 0004b730 <_POSIX_signals_Clear_process_signals>: */ void _POSIX_signals_Clear_process_signals( sigset_t mask ) { 4b730: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b734: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4b736: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ void _POSIX_signals_Clear_process_signals( sigset_t mask ) { 4b73c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4b740: 40c2 movew %sr,%d2 <== NOT EXECUTED 4b742: 8282 orl %d2,%d1 <== NOT EXECUTED 4b744: 46c1 movew %d1,%sr <== NOT EXECUTED _POSIX_signals_Pending &= ~mask; 4b746: 4680 notl %d0 <== NOT EXECUTED 4b748: c0b9 0005 8552 andl 58552 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4b74e: 23c0 0005 8552 movel %d0,58552 <_POSIX_signals_Pending> <== NOT EXECUTED if ( !_POSIX_signals_Pending ) 4b754: 6606 bnes 4b75c <_POSIX_signals_Clear_process_signals+0x2c> <== NOT EXECUTED _Thread_Do_post_task_switch_extension--; 4b756: 53b9 0005 7f22 subql #1,57f22 <_Thread_Do_post_task_switch_extension> <== NOT EXECUTED _ISR_Enable( level ); 4b75c: 46c2 movew %d2,%sr <== NOT EXECUTED } 4b75e: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b760: 4e5e unlk %fp <== NOT EXECUTED 4b762: 4e75 rts 0004b158 <_POSIX_signals_Clear_signals>: int signo, siginfo_t *info, bool is_global, bool check_blocked ) { 4b158: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4b15c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4b160: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED sigset_t signals_blocked; ISR_Level level; bool do_callout; POSIX_signals_Siginfo_node *psiginfo; mask = signo_to_mask( signo ); 4b164: 2003 movel %d3,%d0 <== NOT EXECUTED 4b166: 7401 moveq #1,%d2 <== NOT EXECUTED 4b168: 5380 subql #1,%d0 <== NOT EXECUTED int signo, siginfo_t *info, bool is_global, bool check_blocked ) { 4b16a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED sigset_t signals_blocked; ISR_Level level; bool do_callout; POSIX_signals_Siginfo_node *psiginfo; mask = signo_to_mask( signo ); 4b16e: e1aa lsll %d0,%d2 <== NOT EXECUTED int signo, siginfo_t *info, bool is_global, bool check_blocked ) { 4b170: 182e 0017 moveb %fp@(23),%d4 <== 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 ) 4b174: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED 4b178: 6604 bnes 4b17e <_POSIX_signals_Clear_signals+0x26> <== NOT EXECUTED 4b17a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4b17c: 6006 bras 4b184 <_POSIX_signals_Clear_signals+0x2c> <== NOT EXECUTED signals_blocked = ~api->signals_blocked; 4b17e: 2228 00c4 movel %a0@(196),%d1 <== NOT EXECUTED 4b182: 4681 notl %d1 <== NOT EXECUTED signals_blocked = SIGNAL_ALL_MASK; /* XXX this is not right for siginfo type signals yet */ /* XXX since they can't be cleared the same way */ _ISR_Disable( level ); 4b184: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4b18a: 40c5 movew %sr,%d5 <== NOT EXECUTED 4b18c: 8085 orl %d5,%d0 <== NOT EXECUTED 4b18e: 46c0 movew %d0,%sr <== NOT EXECUTED if ( is_global ) { 4b190: 4a04 tstb %d4 <== NOT EXECUTED 4b192: 6700 0096 beqw 4b22a <_POSIX_signals_Clear_signals+0xd2> <== NOT EXECUTED if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { 4b196: 2002 movel %d2,%d0 <== NOT EXECUTED 4b198: c0b9 0005 8552 andl 58552 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4b19e: c081 andl %d1,%d0 <== NOT EXECUTED 4b1a0: 6700 00a0 beqw 4b242 <_POSIX_signals_Clear_signals+0xea> <== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4b1a4: 2003 movel %d3,%d0 <== NOT EXECUTED 4b1a6: e988 lsll #4,%d0 <== NOT EXECUTED 4b1a8: e58b lsll #2,%d3 <== NOT EXECUTED 4b1aa: 9083 subl %d3,%d0 <== NOT EXECUTED 4b1ac: 41f9 0005 8386 lea 58386 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4b1b2: 7202 moveq #2,%d1 <== NOT EXECUTED 4b1b4: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4b1b8: 6662 bnes 4b21c <_POSIX_signals_Clear_signals+0xc4> <== NOT EXECUTED psiginfo = (POSIX_signals_Siginfo_node *) 4b1ba: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b1bc: d3fc 0005 8556 addal #361814,%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4b1c2: 2649 moveal %a1,%a3 <== NOT EXECUTED 4b1c4: 245b moveal %a3@+,%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4b1c6: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4b1c8: 6604 bnes 4b1ce <_POSIX_signals_Clear_signals+0x76> <== NOT EXECUTED 4b1ca: 95ca subal %a2,%a2 <== NOT EXECUTED 4b1cc: 6008 bras 4b1d6 <_POSIX_signals_Clear_signals+0x7e> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 4b1ce: 2052 moveal %a2@,%a0 <== NOT EXECUTED the_chain->first = new_first; 4b1d0: 2288 movel %a0,%a1@ <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 4b1d2: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); if ( _Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) 4b1d6: b7d1 cmpal %a1@,%a3 <== NOT EXECUTED 4b1d8: 660a bnes 4b1e4 <_POSIX_signals_Clear_signals+0x8c> <== NOT EXECUTED _POSIX_signals_Clear_process_signals( mask ); 4b1da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1dc: 4eb9 0004 b730 jsr 4b730 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED 4b1e2: 588f addql #4,%sp <== NOT EXECUTED if ( psiginfo ) { 4b1e4: 4a8a tstl %a2 <== NOT EXECUTED 4b1e6: 673e beqs 4b226 <_POSIX_signals_Clear_signals+0xce> <== NOT EXECUTED *info = psiginfo->Info; 4b1e8: 4878 000c pea c <== NOT EXECUTED 4b1ec: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4b1f0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4b1f4: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4b1fa: 24bc 0005 850a movel #361738,%a2@ <== NOT EXECUTED old_last_node = the_chain->last; 4b200: 2079 0005 850e moveal 5850e <_POSIX_signals_Inactive_siginfo+0x8>,%a0 <== NOT EXECUTED the_chain->last = the_node; 4b206: 23ca 0005 850e movel %a2,5850e <_POSIX_signals_Inactive_siginfo+0x8> <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4b20c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4b212: 7001 moveq #1,%d0 <== NOT EXECUTED 4b214: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 4b218: 208a movel %a2,%a0@ <== NOT EXECUTED 4b21a: 6028 bras 4b244 <_POSIX_signals_Clear_signals+0xec> <== NOT EXECUTED &psiginfo->Node ); } else do_callout = false; } else _POSIX_signals_Clear_process_signals( mask ); 4b21c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b21e: 4eb9 0004 b730 jsr 4b730 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED 4b224: 588f addql #4,%sp <== NOT EXECUTED 4b226: 7001 moveq #1,%d0 <== NOT EXECUTED 4b228: 601a bras 4b244 <_POSIX_signals_Clear_signals+0xec> <== NOT EXECUTED do_callout = true; } } else { if ( mask & (api->signals_pending & signals_blocked) ) { 4b22a: 2628 00c8 movel %a0@(200),%d3 <== NOT EXECUTED 4b22e: 2002 movel %d2,%d0 <== NOT EXECUTED 4b230: c083 andl %d3,%d0 <== NOT EXECUTED 4b232: c081 andl %d1,%d0 <== NOT EXECUTED 4b234: 670c beqs 4b242 <_POSIX_signals_Clear_signals+0xea> <== NOT EXECUTED api->signals_pending &= ~mask; 4b236: 2002 movel %d2,%d0 <== NOT EXECUTED 4b238: 4680 notl %d0 <== NOT EXECUTED 4b23a: c083 andl %d3,%d0 <== NOT EXECUTED 4b23c: 2140 00c8 movel %d0,%a0@(200) <== NOT EXECUTED 4b240: 60e4 bras 4b226 <_POSIX_signals_Clear_signals+0xce> <== NOT EXECUTED 4b242: 4200 clrb %d0 <== NOT EXECUTED do_callout = true; } } _ISR_Enable( level ); 4b244: 46c5 movew %d5,%sr <== NOT EXECUTED return do_callout; } 4b246: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4b24c: 4e5e unlk %fp <== NOT EXECUTED 4b24e: 4e75 rts 0004583c <_POSIX_signals_Get_highest>: #include int _POSIX_signals_Get_highest( sigset_t set ) { 4583c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 45840: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 45844: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 45848: 721b moveq #27,%d1 <== NOT EXECUTED int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { if ( set & signo_to_mask( signo ) ) 4584a: 7401 moveq #1,%d2 <== NOT EXECUTED 4584c: 2001 movel %d1,%d0 <== NOT EXECUTED 4584e: 5380 subql #1,%d0 <== NOT EXECUTED 45850: 2802 movel %d2,%d4 <== NOT EXECUTED 45852: e1ac lsll %d0,%d4 <== NOT EXECUTED 45854: 2004 movel %d4,%d0 <== NOT EXECUTED 45856: c083 andl %d3,%d0 <== NOT EXECUTED 45858: 6628 bnes 45882 <_POSIX_signals_Get_highest+0x46> <== NOT EXECUTED sigset_t set ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4585a: 5281 addql #1,%d1 <== NOT EXECUTED 4585c: 103c 0020 moveb #32,%d0 <== NOT EXECUTED 45860: b081 cmpl %d1,%d0 <== NOT EXECUTED 45862: 66e8 bnes 4584c <_POSIX_signals_Get_highest+0x10> <== NOT EXECUTED 45864: 7201 moveq #1,%d1 <== NOT EXECUTED } /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { if ( set & signo_to_mask( signo ) ) 45866: 7401 moveq #1,%d2 <== NOT EXECUTED 45868: 2001 movel %d1,%d0 <== NOT EXECUTED 4586a: 5380 subql #1,%d0 <== NOT EXECUTED 4586c: 2802 movel %d2,%d4 <== NOT EXECUTED 4586e: e1ac lsll %d0,%d4 <== NOT EXECUTED 45870: 2004 movel %d4,%d0 <== NOT EXECUTED 45872: c083 andl %d3,%d0 <== NOT EXECUTED 45874: 660c bnes 45882 <_POSIX_signals_Get_highest+0x46> <== NOT EXECUTED return signo; } /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 45876: 5281 addql #1,%d1 <== NOT EXECUTED 45878: 103c 001b moveb #27,%d0 <== NOT EXECUTED 4587c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4587e: 66e8 bnes 45868 <_POSIX_signals_Get_highest+0x2c> <== NOT EXECUTED 45880: 4281 clrl %d1 <== NOT EXECUTED if ( set & signo_to_mask( signo ) ) return signo; } return 0; } 45882: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 45886: 4e5e unlk %fp <== NOT EXECUTED 45888: 2001 movel %d1,%d0 <== NOT EXECUTED 4588a: 4e75 rts 0004980c <_POSIX_signals_Manager_Initialization>: */ void _POSIX_signals_Manager_Initialization( int maximum_queued_signals ) { 4980c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49810: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49812: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED assert( sizeof(_POSIX_signals_Vectors) == sizeof(_POSIX_signals_Default_vectors) ); memcpy( 49816: 4878 0180 pea 180 <== NOT EXECUTED 4981a: 4879 0005 548a pea 5548a <_POSIX_signals_Default_vectors> <== NOT EXECUTED 49820: 4879 0005 8386 pea 58386 <_POSIX_signals_Vectors> <== NOT EXECUTED 49826: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED /* * Initialize the set of pending signals for the entire process */ sigemptyset( &_POSIX_signals_Pending ); 4982c: 4879 0005 8552 pea 58552 <_POSIX_signals_Pending> <== NOT EXECUTED 49832: 4eb9 0004 9d24 jsr 49d24 <== NOT EXECUTED /* * Initialize the queue we use to block for signals */ _Thread_queue_Initialize( 49838: 4878 000b pea b <== NOT EXECUTED 4983c: 2f3c 1000 8000 movel #268468224,%sp@- <== NOT EXECUTED 49842: 4878 0001 pea 1 <== NOT EXECUTED 49846: 4879 0005 8512 pea 58512 <_POSIX_signals_Wait_queue> <== NOT EXECUTED 4984c: 4eb9 0004 73bc jsr 473bc <_Thread_queue_Initialize> <== NOT EXECUTED 49852: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 49858: 41f9 0005 8562 lea 58562 <_POSIX_signals_Siginfo+0xc>,%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4985e: 2008 movel %a0,%d0 <== NOT EXECUTED 49860: 5880 addql #4,%d0 <== NOT EXECUTED 49862: 2080 movel %d0,%a0@ <== NOT EXECUTED the_chain->permanent_null = NULL; 49864: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 49868: 2148 0008 movel %a0,%a0@(8) <== NOT EXECUTED 4986c: d1fc 0000 000c addal #12,%a0 <== NOT EXECUTED /* * Allocate the siginfo pools. */ for ( signo=1 ; signo<= SIGRTMAX ; signo++ ) 49872: b1fc 0005 86d6 cmpal #362198,%a0 <== NOT EXECUTED 49878: 66e4 bnes 4985e <_POSIX_signals_Manager_Initialization+0x52> <== NOT EXECUTED _Chain_Initialize_empty( &_POSIX_signals_Siginfo[ signo ] ); if ( maximum_queued_signals ) { 4987a: 4a82 tstl %d2 <== NOT EXECUTED 4987c: 672c beqs 498aa <_POSIX_signals_Manager_Initialization+0x9e> <== NOT EXECUTED _Chain_Initialize( 4987e: 2002 movel %d2,%d0 <== NOT EXECUTED 49880: e988 lsll #4,%d0 <== NOT EXECUTED 49882: 2040 moveal %d0,%a0 <== NOT EXECUTED 49884: 4870 2c00 pea %a0@(00000000,%d2:l:4) <== NOT EXECUTED 49888: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED 4988e: 4878 0014 pea 14 <== NOT EXECUTED 49892: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49894: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49896: 4879 0005 8506 pea 58506 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 4989c: 4eb9 0004 a220 jsr 4a220 <_Chain_Initialize> <== NOT EXECUTED 498a2: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 498a8: 601e bras 498c8 <_POSIX_signals_Manager_Initialization+0xbc> <== NOT EXECUTED 498aa: 41f9 0005 8506 lea 58506 <_POSIX_signals_Inactive_siginfo>,%a0 <== NOT EXECUTED 498b0: 23c8 0005 850e movel %a0,5850e <_POSIX_signals_Inactive_siginfo+0x8> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 498b6: 203c 0005 850a movel #361738,%d0 <== NOT EXECUTED 498bc: 23c0 0005 8506 movel %d0,58506 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED the_chain->permanent_null = NULL; 498c2: 42b9 0005 850a clrl 5850a <_POSIX_signals_Inactive_siginfo+0x4> <== NOT EXECUTED sizeof( POSIX_signals_Siginfo_node ) ); } else { _Chain_Initialize_empty( &_POSIX_signals_Inactive_siginfo ); } } 498c8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 498cc: 4e5e unlk %fp <== NOT EXECUTED 498ce: 4e75 rts 000498d0 <_POSIX_signals_Post_switch_extension>: */ void _POSIX_signals_Post_switch_extension( Thread_Control *the_thread ) { 498d0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 498d4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 498d8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED POSIX_API_Control *api; int signo; ISR_Level level; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 498dc: 2468 0110 moveal %a0@(272),%a2 <== NOT EXECUTED if ( !api ) 498e0: 4a8a tstl %a2 <== NOT EXECUTED 498e2: 6700 0094 beqw 49978 <_POSIX_signals_Post_switch_extension+0xa8> <== NOT EXECUTED * 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) { restart: _ISR_Disable( level ); 498e6: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { if ( _POSIX_signals_Check_signal( api, signo, false ) ) 498ec: 47f9 0004 b0b4 lea 4b0b4 <_POSIX_signals_Check_signal>,%a3 <== NOT EXECUTED * 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) { restart: _ISR_Disable( level ); 498f2: 2003 movel %d3,%d0 <== NOT EXECUTED 498f4: 40c2 movew %sr,%d2 <== NOT EXECUTED 498f6: 8082 orl %d2,%d0 <== NOT EXECUTED 498f8: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !(~api->signals_blocked & 498fa: 2039 0005 8552 movel 58552 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 49900: 222a 00c4 movel %a2@(196),%d1 <== NOT EXECUTED 49904: 80aa 00c8 orl %a2@(200),%d0 <== NOT EXECUTED 49908: 4681 notl %d1 <== NOT EXECUTED 4990a: c081 andl %d1,%d0 <== NOT EXECUTED 4990c: 6604 bnes 49912 <_POSIX_signals_Post_switch_extension+0x42> <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending)) ) { _ISR_Enable( level ); 4990e: 46c2 movew %d2,%sr <== NOT EXECUTED 49910: 6066 bras 49978 <_POSIX_signals_Post_switch_extension+0xa8> <== NOT EXECUTED break; } _ISR_Enable( level ); 49912: 46c2 movew %d2,%sr <== NOT EXECUTED 49914: 741b moveq #27,%d2 <== NOT EXECUTED for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { if ( _POSIX_signals_Check_signal( api, signo, false ) ) 49916: 42a7 clrl %sp@- <== NOT EXECUTED 49918: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4991a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4991c: 4e93 jsr %a3@ <== NOT EXECUTED 4991e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 49924: 4a00 tstb %d0 <== NOT EXECUTED 49926: 66ca bnes 498f2 <_POSIX_signals_Post_switch_extension+0x22> <== NOT EXECUTED goto restart; if ( _POSIX_signals_Check_signal( api, signo, true ) ) 49928: 4878 0001 pea 1 <== NOT EXECUTED 4992c: 2f02 movel %d2,%sp@- <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4992e: 5282 addql #1,%d2 <== NOT EXECUTED if ( _POSIX_signals_Check_signal( api, signo, false ) ) goto restart; if ( _POSIX_signals_Check_signal( api, signo, true ) ) 49930: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49932: 4e93 jsr %a3@ <== NOT EXECUTED 49934: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4993a: 4a00 tstb %d0 <== NOT EXECUTED 4993c: 66b4 bnes 498f2 <_POSIX_signals_Post_switch_extension+0x22> <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4993e: 7020 moveq #32,%d0 <== NOT EXECUTED 49940: b082 cmpl %d2,%d0 <== NOT EXECUTED 49942: 66d2 bnes 49916 <_POSIX_signals_Post_switch_extension+0x46> <== NOT EXECUTED 49944: 7401 moveq #1,%d2 <== NOT EXECUTED /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { if ( _POSIX_signals_Check_signal( api, signo, false ) ) 49946: 42a7 clrl %sp@- <== NOT EXECUTED 49948: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4994a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4994c: 4e93 jsr %a3@ <== NOT EXECUTED 4994e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 49954: 4a00 tstb %d0 <== NOT EXECUTED 49956: 669a bnes 498f2 <_POSIX_signals_Post_switch_extension+0x22> <== NOT EXECUTED goto restart; if ( _POSIX_signals_Check_signal( api, signo, true ) ) 49958: 4878 0001 pea 1 <== NOT EXECUTED 4995c: 2f02 movel %d2,%sp@- <== NOT EXECUTED } /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4995e: 5282 addql #1,%d2 <== NOT EXECUTED if ( _POSIX_signals_Check_signal( api, signo, false ) ) goto restart; if ( _POSIX_signals_Check_signal( api, signo, true ) ) 49960: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49962: 4e93 jsr %a3@ <== NOT EXECUTED 49964: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4996a: 4a00 tstb %d0 <== NOT EXECUTED 4996c: 6684 bnes 498f2 <_POSIX_signals_Post_switch_extension+0x22> <== NOT EXECUTED } /* XXX - add __SIGFIRSTNOTRT or something like that to newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4996e: 701b moveq #27,%d0 <== NOT EXECUTED 49970: b082 cmpl %d2,%d0 <== NOT EXECUTED 49972: 66d2 bnes 49946 <_POSIX_signals_Post_switch_extension+0x76> <== NOT EXECUTED 49974: 6000 ff7c braw 498f2 <_POSIX_signals_Post_switch_extension+0x22> <== NOT EXECUTED goto restart; } } return; } 49978: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4997e: 4e5e unlk %fp <== NOT EXECUTED 49980: 4e75 rts 000543b0 <_POSIX_signals_Set_process_signals>: */ void _POSIX_signals_Set_process_signals( sigset_t mask ) { 543b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 543b4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 543ba: 40c1 movew %sr,%d1 <== NOT EXECUTED 543bc: 8081 orl %d1,%d0 <== NOT EXECUTED 543be: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_POSIX_signals_Pending ) 543c0: 2039 0005 8552 movel 58552 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 543c6: 6606 bnes 543ce <_POSIX_signals_Set_process_signals+0x1e> <== NOT EXECUTED _Thread_Do_post_task_switch_extension++; 543c8: 52b9 0005 7f22 addql #1,57f22 <_Thread_Do_post_task_switch_extension> <== NOT EXECUTED _POSIX_signals_Pending |= mask; 543ce: 80ae 0008 orl %fp@(8),%d0 <== NOT EXECUTED 543d2: 23c0 0005 8552 movel %d0,58552 <_POSIX_signals_Pending> <== NOT EXECUTED _ISR_Enable( level ); 543d8: 46c1 movew %d1,%sr <== NOT EXECUTED } 543da: 4e5e unlk %fp <== NOT EXECUTED 543dc: 4e75 rts <== NOT EXECUTED ... 00044c3a <_POSIX_signals_Ualarm_TSR>: void _POSIX_signals_Ualarm_TSR( Objects_Id id, void *argument ) { 44c3a: 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 ); 44c3e: 4eb9 0004 2444 jsr 42444 <== NOT EXECUTED 44c44: 4878 000e pea e <== NOT EXECUTED 44c48: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44c4a: 4eb9 0004 4918 jsr 44918 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Reset( Watchdog_Control *the_watchdog ) { (void) _Watchdog_Remove( the_watchdog ); 44c50: 4879 0005 9dbc pea 59dbc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 44c56: 4eb9 0004 8410 jsr 48410 <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 44c5c: 203c 0005 9dbc movel #368060,%d0 <== NOT EXECUTED 44c62: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 44c66: 203c 0005 9f8c movel #368524,%d0 <== NOT EXECUTED 44c6c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44c72: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED /* * If the reset interval is non-zero, reschedule ourselves. */ _Watchdog_Reset( &_POSIX_signals_Ualarm_timer ); } 44c76: 4e5e unlk %fp <== NOT EXECUTED 44c78: 4ef9 0004 82f4 jmp 482f4 <_Watchdog_Insert> <== NOT EXECUTED ... 000543e0 <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 543e0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 543e4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 543e8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 543ec: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED sigset_t mask; siginfo_t *the_info = NULL; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; mask = signo_to_mask( signo ); 543f0: 2009 movel %a1,%d0 <== NOT EXECUTED 543f2: 5380 subql #1,%d0 <== NOT EXECUTED 543f4: 7401 moveq #1,%d2 <== NOT EXECUTED 543f6: e1aa lsll %d0,%d2 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 543f8: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 543fc: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED POSIX_API_Control *api; sigset_t mask; siginfo_t *the_info = NULL; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 54400: 206a 0110 moveal %a2@(272),%a0 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 54404: 0280 1000 8000 andil #268468224,%d0 <== NOT EXECUTED 5440a: 0c80 1000 8000 cmpil #268468224,%d0 <== NOT EXECUTED 54410: 6654 bnes 54466 <_POSIX_signals_Unblock_thread+0x86> <== NOT EXECUTED if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { 54412: 2002 movel %d2,%d0 <== NOT EXECUTED 54414: c0aa 0030 andl %a2@(48),%d0 <== NOT EXECUTED 54418: 660e bnes 54428 <_POSIX_signals_Unblock_thread+0x48> <== NOT EXECUTED 5441a: 2228 00c4 movel %a0@(196),%d1 <== NOT EXECUTED 5441e: 2002 movel %d2,%d0 <== NOT EXECUTED 54420: 4681 notl %d1 <== NOT EXECUTED 54422: c081 andl %d1,%d0 <== NOT EXECUTED 54424: 6700 00b2 beqw 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_info = (siginfo_t *) the_thread->Wait.return_argument; 54428: 206a 0028 moveal %a2@(40),%a0 <== 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; 5442c: 7004 moveq #4,%d0 <== NOT EXECUTED 5442e: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { 54432: 4a83 tstl %d3 <== NOT EXECUTED 54434: 660e bnes 54444 <_POSIX_signals_Unblock_thread+0x64> <== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; 54436: 7201 moveq #1,%d1 <== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { the_info->si_signo = signo; 54438: 2089 movel %a1,%a0@ <== NOT EXECUTED the_info->si_code = SI_USER; 5443a: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED the_info->si_value.sival_int = 0; 5443e: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED 54442: 6014 bras 54458 <_POSIX_signals_Unblock_thread+0x78> <== NOT EXECUTED } else { *the_info = *info; 54444: 4878 000c pea c <== NOT EXECUTED 54448: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5444a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5444c: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED 54452: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } _Thread_queue_Extract_with_proxy( the_thread ); 54458: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5445a: 4eb9 0004 7368 jsr 47368 <_Thread_queue_Extract_with_proxy> <== NOT EXECUTED 54460: 588f addql #4,%sp <== NOT EXECUTED 54462: 7001 moveq #1,%d0 <== NOT EXECUTED 54464: 6074 bras 544da <_POSIX_signals_Unblock_thread+0xfa> <== NOT EXECUTED } /* * Thread is not waiting due to a sigwait. */ if ( ~api->signals_blocked & mask ) { 54466: 2228 00c4 movel %a0@(196),%d1 <== NOT EXECUTED 5446a: 2002 movel %d2,%d0 <== NOT EXECUTED 5446c: 4681 notl %d1 <== NOT EXECUTED 5446e: c081 andl %d1,%d0 <== NOT EXECUTED 54470: 6766 beqs 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED * + Any other combination, do nothing. */ the_thread->do_post_task_switch_extension = true; if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { 54472: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED * it is not blocked, THEN * we need to dispatch at the end of this ISR. * + Any other combination, do nothing. */ the_thread->do_post_task_switch_extension = true; 54476: 7201 moveq #1,%d1 <== NOT EXECUTED 54478: 1541 0075 moveb %d1,%a2@(117) <== NOT EXECUTED if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { 5447c: 0800 001c btst #28,%d0 <== NOT EXECUTED 54480: 6736 beqs 544b8 <_POSIX_signals_Unblock_thread+0xd8> <== NOT EXECUTED the_thread->Wait.return_code = EINTR; 54482: 7004 moveq #4,%d0 <== NOT EXECUTED 54484: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED #if 0 if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) ) _Thread_queue_Extract_with_proxy( the_thread ); else #endif if ( _States_Is_delaying(the_thread->current_state) ){ 54488: 103c 0008 moveb #8,%d0 <== NOT EXECUTED 5448c: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED 54490: 6746 beqs 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) 54492: 7202 moveq #2,%d1 <== NOT EXECUTED 54494: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 54498: 660c bnes 544a6 <_POSIX_signals_Unblock_thread+0xc6> <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 5449a: 486a 0048 pea %a2@(72) <== NOT EXECUTED 5449e: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 544a4: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 544a6: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 544ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 544ae: 4eb9 0004 6948 jsr 46948 <_Thread_Clear_state> <== NOT EXECUTED 544b4: 508f addql #8,%sp <== NOT EXECUTED 544b6: 6020 bras 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED _Thread_Unblock( the_thread ); } } else if ( the_thread->current_state == STATES_READY ) { 544b8: 4a80 tstl %d0 <== NOT EXECUTED 544ba: 661c bnes 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 544bc: 2039 0005 7f1a movel 57f1a <_ISR_Nest_level>,%d0 <== NOT EXECUTED 544c2: 6714 beqs 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED 544c4: b5f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED 544ca: 660c bnes 544d8 <_POSIX_signals_Unblock_thread+0xf8> <== NOT EXECUTED _ISR_Signals_to_thread_executing = TRUE; 544cc: 7201 moveq #1,%d1 <== NOT EXECUTED 544ce: 4200 clrb %d0 <== NOT EXECUTED 544d0: 13c1 0005 7fc8 moveb %d1,57fc8 <_ISR_Signals_to_thread_executing> <== NOT EXECUTED 544d6: 6002 bras 544da <_POSIX_signals_Unblock_thread+0xfa> <== NOT EXECUTED 544d8: 4200 clrb %d0 <== NOT EXECUTED } } return false; } 544da: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 544e0: 4e5e unlk %fp <== NOT EXECUTED 544e2: 4e75 rts 00049df0 <_Partition_Manager_initialization>: */ void _Partition_Manager_initialization( uint32_t maximum_partitions ) { 49df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49df4: 4878 0004 pea 4 <== NOT EXECUTED 49df8: 42a7 clrl %sp@- <== NOT EXECUTED 49dfa: 4878 0030 pea 30 <== NOT EXECUTED 49dfe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49e02: 4878 0005 pea 5 <== NOT EXECUTED 49e06: 4878 0002 pea 2 <== NOT EXECUTED 49e0a: 4879 0005 87d2 pea 587d2 <_Partition_Information> <== NOT EXECUTED 49e10: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49e16: dffc 0000 001c addal #28,%sp <== NOT EXECUTED MP_PACKET_PARTITION, _Partition_MP_Process_packet ); #endif } 49e1c: 4e5e unlk %fp <== NOT EXECUTED 49e1e: 4e75 rts 0004a5f4 <_Protected_heap_Allocate>: void *_Protected_heap_Allocate( Heap_Control *the_heap, size_t size ) { 4a5f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a5f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED void *p; _RTEMS_Lock_allocator(); 4a5fa: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4a600: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED p = _Heap_Allocate( the_heap, size ); 4a606: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a60a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4a60e: 4eb9 0004 a3b0 jsr 4a3b0 <_Heap_Allocate> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4a614: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED ) { void *p; _RTEMS_Lock_allocator(); p = _Heap_Allocate( the_heap, size ); 4a61a: 2400 movel %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4a61c: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED return p; } 4a622: 2002 movel %d2,%d0 <== NOT EXECUTED 4a624: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4a628: 4e5e unlk %fp <== NOT EXECUTED 4a62a: 4e75 rts 00049678 <_Protected_heap_Allocate_aligned>: void *_Protected_heap_Allocate_aligned( Heap_Control *the_heap, size_t size, uint32_t alignment ) { 49678: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4967c: 2f02 movel %d2,%sp@- <== NOT EXECUTED void *p; _RTEMS_Lock_allocator(); 4967e: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 49684: 4eb9 0004 81f8 jsr 481f8 <_API_Mutex_Lock> <== NOT EXECUTED p = _Heap_Allocate_aligned( the_heap, size, alignment ); 4968a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4968e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49692: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49696: 4eb9 0004 87f4 jsr 487f4 <_Heap_Allocate_aligned> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4969c: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED ) { void *p; _RTEMS_Lock_allocator(); p = _Heap_Allocate_aligned( the_heap, size, alignment ); 496a2: 2400 movel %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 496a4: 4eb9 0004 825c jsr 4825c <_API_Mutex_Unlock> <== NOT EXECUTED return p; } 496aa: 2002 movel %d2,%d0 <== NOT EXECUTED 496ac: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 496b0: 4e5e unlk %fp <== NOT EXECUTED 496b2: 4e75 rts 000496ec <_Protected_heap_Extend>: bool _Protected_heap_Extend( Heap_Control *the_heap, void *starting_address, size_t size ) { 496ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 496f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED Heap_Extend_status status; uint32_t amount_extended; _RTEMS_Lock_allocator(); 496f2: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 496f8: 4eb9 0004 81f8 jsr 481f8 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Extend(the_heap, starting_address, size, &amount_extended); 496fe: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49702: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49706: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4970a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4970e: 4eb9 0004 d388 jsr 4d388 <_Heap_Extend> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 49714: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED { Heap_Extend_status status; uint32_t amount_extended; _RTEMS_Lock_allocator(); status = _Heap_Extend(the_heap, starting_address, size, &amount_extended); 4971a: 2400 movel %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4971c: 4eb9 0004 825c jsr 4825c <_API_Mutex_Unlock> <== NOT EXECUTED 49722: 4a82 tstl %d2 <== NOT EXECUTED 49724: 57c0 seq %d0 <== NOT EXECUTED return (status == HEAP_EXTEND_SUCCESSFUL); } 49726: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED Heap_Extend_status status; uint32_t amount_extended; _RTEMS_Lock_allocator(); status = _Heap_Extend(the_heap, starting_address, size, &amount_extended); _RTEMS_Unlock_allocator(); 4972a: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED return (status == HEAP_EXTEND_SUCCESSFUL); } 49730: 4e5e unlk %fp <== NOT EXECUTED 49732: 4480 negl %d0 <== NOT EXECUTED 49734: 4e75 rts <== NOT EXECUTED ... 0004a62c <_Protected_heap_Free>: bool _Protected_heap_Free( Heap_Control *the_heap, void *start_address ) { 4a62c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a630: 2f02 movel %d2,%sp@- <== NOT EXECUTED bool status; _RTEMS_Lock_allocator(); 4a632: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4a638: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Free( the_heap, start_address ); 4a63e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a642: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4a646: 4eb9 0004 a430 jsr 4a430 <_Heap_Free> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4a64c: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED ) { bool status; _RTEMS_Lock_allocator(); status = _Heap_Free( the_heap, start_address ); 4a652: 1400 moveb %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4a654: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED return status; } 4a65a: 1002 moveb %d2,%d0 <== NOT EXECUTED 4a65c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4a660: 4e5e unlk %fp <== NOT EXECUTED 4a662: 4e75 rts 000545bc <_Protected_heap_Get_block_size>: bool _Protected_heap_Get_block_size( Heap_Control *the_heap, void *starting_address, size_t *size ) { 545bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 545c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED bool status; _RTEMS_Lock_allocator(); 545c2: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 545c8: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Size_of_user_area( the_heap, starting_address, size ); 545ce: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 545d2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 545d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 545da: 4eb9 0005 47f0 jsr 547f0 <_Heap_Size_of_user_area> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 545e0: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED ) { bool status; _RTEMS_Lock_allocator(); status = _Heap_Size_of_user_area( the_heap, starting_address, size ); 545e6: 1400 moveb %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 545e8: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED return status; } 545ee: 1002 moveb %d2,%d0 <== NOT EXECUTED 545f0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 545f4: 4e5e unlk %fp <== NOT EXECUTED 545f6: 4e75 rts 0004a514 <_Protected_heap_Get_free_information>: bool _Protected_heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 4a514: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * TBD: _Heap_Get_free_information does not error check or return status. */ _RTEMS_Lock_allocator(); 4a518: 2f39 0009 396e movel 9396e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4a51e: 4eb9 0004 9478 jsr 49478 <_API_Mutex_Lock> <== NOT EXECUTED _Heap_Get_free_information( the_heap, info ); 4a524: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a528: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4a52c: 4eb9 0005 e58c jsr 5e58c <_Heap_Get_free_information> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4a532: 2f39 0009 396e movel 9396e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4a538: 4eb9 0004 94dc jsr 494dc <_API_Mutex_Unlock> <== NOT EXECUTED return true; } 4a53e: 4e5e unlk %fp <== NOT EXECUTED 4a540: 7001 moveq #1,%d0 <== NOT EXECUTED 4a542: 4e75 rts 0005e704 <_Protected_heap_Get_information>: bool _Protected_heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { 5e704: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5e708: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5e70a: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 5e70e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5e710: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Heap_Get_information_status status; if ( !the_heap ) 5e714: 4a83 tstl %d3 <== NOT EXECUTED 5e716: 6736 beqs 5e74e <_Protected_heap_Get_information+0x4a> <== NOT EXECUTED return false; if ( !the_info ) 5e718: 4a82 tstl %d2 <== NOT EXECUTED 5e71a: 6732 beqs 5e74e <_Protected_heap_Get_information+0x4a> <== NOT EXECUTED return false; _RTEMS_Lock_allocator(); 5e71c: 2f39 0009 396e movel 9396e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5e722: 4eb9 0004 9478 jsr 49478 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Get_information( the_heap, the_info ); 5e728: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5e72a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5e72c: 4eb9 0006 738c jsr 6738c <_Heap_Get_information> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 5e732: 2f39 0009 396e movel 9396e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED if ( !the_info ) return false; _RTEMS_Lock_allocator(); status = _Heap_Get_information( the_heap, the_info ); 5e738: 2400 movel %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 5e73a: 4eb9 0004 94dc jsr 494dc <_API_Mutex_Unlock> <== NOT EXECUTED if ( status == HEAP_GET_INFORMATION_SUCCESSFUL ) 5e740: 4a82 tstl %d2 <== NOT EXECUTED 5e742: 57c0 seq %d0 <== NOT EXECUTED 5e744: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 5e74a: 4480 negl %d0 <== NOT EXECUTED 5e74c: 6002 bras 5e750 <_Protected_heap_Get_information+0x4c> <== NOT EXECUTED 5e74e: 4200 clrb %d0 <== NOT EXECUTED return true; return false; } 5e750: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5e754: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 5e758: 4e5e unlk %fp <== NOT EXECUTED 5e75a: 4e75 rts 000545f8 <_Protected_heap_Resize_block>: bool _Protected_heap_Resize_block( Heap_Control *the_heap, void *starting_address, size_t size ) { 545f8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 545fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED Heap_Resize_status status; uint32_t old_mem_size; uint32_t avail_mem_size; _RTEMS_Lock_allocator(); 545fe: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 54604: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Resize_block( 5460a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5460e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 54612: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 54616: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5461a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5461e: 4eb9 0005 4648 jsr 54648 <_Heap_Resize_block> <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 54624: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED Heap_Resize_status status; uint32_t old_mem_size; uint32_t avail_mem_size; _RTEMS_Lock_allocator(); status = _Heap_Resize_block( 5462a: 2400 movel %d0,%d2 <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5462c: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED 54632: 4a82 tstl %d2 <== NOT EXECUTED 54634: 57c0 seq %d0 <== NOT EXECUTED return (status == HEAP_RESIZE_SUCCESSFUL); } 54636: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED uint32_t avail_mem_size; _RTEMS_Lock_allocator(); status = _Heap_Resize_block( the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5463a: dffc 0000 001c addal #28,%sp <== NOT EXECUTED return (status == HEAP_RESIZE_SUCCESSFUL); } 54640: 4e5e unlk %fp <== NOT EXECUTED 54642: 4480 negl %d0 <== NOT EXECUTED 54644: 4e75 rts <== NOT EXECUTED ... 00049884 <_Protected_heap_Walk>: bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 49884: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 49888: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4988c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 49890: 262e 000c movel %fp@(12),%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 ) { 49894: 2039 0005 b7f0 movel 5b7f0 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4989a: 4282 clrl %d2 <== NOT EXECUTED 4989c: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED 498a0: 4a80 tstl %d0 <== NOT EXECUTED 498a2: 6638 bnes 498dc <_Protected_heap_Walk+0x58> <== NOT EXECUTED _RTEMS_Lock_allocator(); 498a4: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 498aa: 4eb9 0004 81f8 jsr 481f8 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Walk( the_heap, source, do_dump ); 498b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 498b2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 498b4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 498b6: 4eb9 0004 d560 jsr 4d560 <_Heap_Walk> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 498bc: 2f39 0005 b8a6 movel 5b8a6 <_RTEMS_Allocator_Mutex>,%sp@- <== 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 ); 498c2: 1400 moveb %d0,%d2 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 498c4: 4eb9 0004 825c jsr 4825c <_API_Mutex_Unlock> <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 498ca: 1002 moveb %d2,%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(); 498cc: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 498d2: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 498d8: 4e5e unlk %fp <== NOT EXECUTED 498da: 4e75 rts <== 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 ); 498dc: 2d42 0010 movel %d2,%fp@(16) <== NOT EXECUTED 498e0: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 498e4: 2d44 0008 movel %d4,%fp@(8) <== NOT EXECUTED } return status; } 498e8: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 498ee: 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 ); 498f0: 4ef9 0004 d560 jmp 4d560 <_Heap_Walk> <== NOT EXECUTED ... 00045708 <_RTEMS_API_Initialize>: */ void _RTEMS_API_Initialize( rtems_configuration_table *configuration_table ) { 45708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4570c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45710: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_api_configuration_table *api_configuration; api_configuration = configuration_table->RTEMS_api_configuration; 45712: 2468 003e moveal %a0@(62),%a2 <== NOT EXECUTED _Objects_Information_table[OBJECTS_CLASSIC_API] = _RTEMS_Objects; 45716: 203c 0005 8302 movel #361218,%d0 <== NOT EXECUTED 4571c: 23c0 0005 7e3c movel %d0,57e3c <_Objects_Information_table+0x8> <== NOT EXECUTED _Attributes_Handler_initialization(); _Interrupt_Manager_initialization(); 45722: 4eb9 0004 9db8 jsr 49db8 <_Interrupt_Manager_initialization> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) _Multiprocessing_Manager_initialization(); #endif _RTEMS_tasks_Manager_initialization( api_configuration->maximum_tasks ); 45728: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4572a: 4eb9 0004 9f5e jsr 49f5e <_RTEMS_tasks_Manager_initialization> <== NOT EXECUTED _Timer_Manager_initialization( api_configuration->maximum_timers ); 45730: 2f2a 0006 movel %a2@(6),%sp@- <== NOT EXECUTED 45734: 4eb9 0004 9e80 jsr 49e80 <_Timer_Manager_initialization> <== NOT EXECUTED _Signal_Manager_initialization(); 4573a: 4eb9 0004 9eec jsr 49eec <_Signal_Manager_initialization> <== NOT EXECUTED _Event_Manager_initialization(); 45740: 4eb9 0004 9da8 jsr 49da8 <_Event_Manager_initialization> <== NOT EXECUTED _Message_queue_Manager_initialization( 45746: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED 4574a: 4eb9 0004 9dc0 jsr 49dc0 <_Message_queue_Manager_initialization> <== NOT EXECUTED api_configuration->maximum_message_queues ); _Semaphore_Manager_initialization( api_configuration->maximum_semaphores ); 45750: 2f2a 000a movel %a2@(10),%sp@- <== NOT EXECUTED 45754: 4eb9 0004 9ebc jsr 49ebc <_Semaphore_Manager_initialization> <== NOT EXECUTED _Partition_Manager_initialization( api_configuration->maximum_partitions ); 4575a: 2f2a 0012 movel %a2@(18),%sp@- <== NOT EXECUTED 4575e: 4eb9 0004 9df0 jsr 49df0 <_Partition_Manager_initialization> <== NOT EXECUTED _Region_Manager_initialization( api_configuration->maximum_regions ); 45764: 2f2a 0016 movel %a2@(22),%sp@- <== NOT EXECUTED 45768: 4eb9 0004 9e50 jsr 49e50 <_Region_Manager_initialization> <== NOT EXECUTED _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports); 4576e: 2f2a 001a movel %a2@(26),%sp@- <== NOT EXECUTED 45772: 4eb9 0004 9d78 jsr 49d78 <_Dual_ported_memory_Manager_initialization> <== NOT EXECUTED _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods ); 45778: 2f2a 001e movel %a2@(30),%sp@- <== NOT EXECUTED 4577c: 4eb9 0004 9e20 jsr 49e20 <_Rate_monotonic_Manager_initialization> <== NOT EXECUTED _Barrier_Manager_initialization( api_configuration->maximum_barriers ); 45782: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 45788: 2d6a 0022 0008 movel %a2@(34),%fp@(8) <== NOT EXECUTED } 4578e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45792: 4e5e unlk %fp <== NOT EXECUTED _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports); _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods ); _Barrier_Manager_initialization( api_configuration->maximum_barriers ); 45794: 4ef9 0004 9d48 jmp 49d48 <_Barrier_Manager_initialization> <== NOT EXECUTED ... 0004a0e4 <_RTEMS_Tasks_Invoke_task_variable_dtor>: void _RTEMS_Tasks_Invoke_task_variable_dtor( Thread_Control *the_thread, rtems_task_variable_t *tvp ) { 4a0e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a0e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a0ea: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; if (_Thread_Is_executing(the_thread)) { 4a0ee: 2039 0005 7f3a movel 57f3a <_Thread_Executing>,%d0 <== NOT EXECUTED ) { void (*dtor)(void *); void *value; dtor = tvp->dtor; 4a0f4: 226a 0010 moveal %a2@(16),%a1 <== NOT EXECUTED if (_Thread_Is_executing(the_thread)) { 4a0f8: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4a0fc: 660c bnes 4a10a <_RTEMS_Tasks_Invoke_task_variable_dtor+0x26> <== NOT EXECUTED value = *tvp->ptr; 4a0fe: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 4a102: 2010 movel %a0@,%d0 <== NOT EXECUTED *tvp->ptr = tvp->gval; 4a104: 20aa 0008 movel %a2@(8),%a0@ <== NOT EXECUTED 4a108: 6004 bras 4a10e <_RTEMS_Tasks_Invoke_task_variable_dtor+0x2a> <== NOT EXECUTED } else { value = tvp->tval; 4a10a: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED } if ( dtor ) 4a10e: 4a89 tstl %a1 <== NOT EXECUTED 4a110: 6706 beqs 4a118 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x34> <== NOT EXECUTED (*dtor)(value); 4a112: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a114: 4e91 jsr %a1@ <== NOT EXECUTED 4a116: 588f addql #4,%sp <== NOT EXECUTED _Workspace_Free(tvp); 4a118: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4a11c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a120: 4e5e unlk %fp <== NOT EXECUTED } if ( dtor ) (*dtor)(value); _Workspace_Free(tvp); 4a122: 4ef9 0004 7e94 jmp 47e94 <_Workspace_Free> <== NOT EXECUTED 0004a062 <_RTEMS_tasks_Create_extension>: /* * 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() ) 4a062: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED bool _RTEMS_tasks_Create_extension( Thread_Control *executing, Thread_Control *created ) { 4a068: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a06c: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * 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() ) 4a06e: 2068 003e moveal %a0@(62),%a0 <== NOT EXECUTED bool _RTEMS_tasks_Create_extension( Thread_Control *executing, Thread_Control *created ) { 4a072: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED /* * 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() ) 4a076: 4a28 0004 tstb %a0@(4) <== NOT EXECUTED 4a07a: 6604 bnes 4a080 <_RTEMS_tasks_Create_extension+0x1e> <== NOT EXECUTED 4a07c: 701e moveq #30,%d0 <== NOT EXECUTED 4a07e: 6002 bras 4a082 <_RTEMS_tasks_Create_extension+0x20> <== NOT EXECUTED 4a080: 705e moveq #94,%d0 <== NOT EXECUTED to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); 4a082: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a084: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED if ( !api ) 4a08a: 588f addql #4,%sp <== NOT EXECUTED */ 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 ); 4a08c: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !api ) 4a08e: 4a80 tstl %d0 <== NOT EXECUTED 4a090: 6604 bnes 4a096 <_RTEMS_tasks_Create_extension+0x34> <== NOT EXECUTED 4a092: 4200 clrb %d0 <== NOT EXECUTED 4a094: 6046 bras 4a0dc <_RTEMS_tasks_Create_extension+0x7a> <== NOT EXECUTED api->pending_events = EVENT_SETS_NONE_PENDING; _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { 4a096: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 4a09c: 2068 003e moveal %a0@(62),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = true; 4a0a0: 7001 moveq #1,%d0 <== NOT EXECUTED created->API_Extensions[ THREAD_API_RTEMS ] = api; api->pending_events = EVENT_SETS_NONE_PENDING; _ASR_Initialize( &api->Signal ); created->task_variables = NULL; 4a0a2: 42aa 011c clrl %a2@(284) <== NOT EXECUTED 4a0a6: 1340 0008 moveb %d0,%a1@(8) <== NOT EXECUTED api = _Workspace_Allocate( to_allocate ); if ( !api ) return false; created->API_Extensions[ THREAD_API_RTEMS ] = api; 4a0aa: 2549 010c movel %a1,%a2@(268) <== NOT EXECUTED api->pending_events = EVENT_SETS_NONE_PENDING; 4a0ae: 4291 clrl %a1@ <== NOT EXECUTED information->handler = NULL; 4a0b0: 42a9 000a clrl %a1@(10) <== NOT EXECUTED information->mode_set = RTEMS_DEFAULT_MODES; 4a0b4: 42a9 000e clrl %a1@(14) <== NOT EXECUTED information->signals_posted = 0; 4a0b8: 42a9 0012 clrl %a1@(18) <== NOT EXECUTED information->signals_pending = 0; 4a0bc: 42a9 0016 clrl %a1@(22) <== NOT EXECUTED information->nest_level = 0; 4a0c0: 42a9 001a clrl %a1@(26) <== NOT EXECUTED _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { 4a0c4: 4a28 0004 tstb %a0@(4) <== NOT EXECUTED 4a0c8: 6710 beqs 4a0da <_RTEMS_tasks_Create_extension+0x78> <== NOT EXECUTED 4a0ca: 41e9 001e lea %a1@(30),%a0 <== NOT EXECUTED 4a0ce: 4280 clrl %d0 <== NOT EXECUTED for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; 4a0d0: 4298 clrl %a0@+ <== NOT EXECUTED api->pending_events = EVENT_SETS_NONE_PENDING; _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) 4a0d2: 5280 addql #1,%d0 <== NOT EXECUTED 4a0d4: 7210 moveq #16,%d1 <== NOT EXECUTED 4a0d6: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a0d8: 66f6 bnes 4a0d0 <_RTEMS_tasks_Create_extension+0x6e> <== NOT EXECUTED 4a0da: 7001 moveq #1,%d0 <== NOT EXECUTED api->Notepads[i] = 0; } return true; } 4a0dc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a0e0: 4e5e unlk %fp <== NOT EXECUTED 4a0e2: 4e75 rts 0004a01c <_RTEMS_tasks_Delete_extension>: User_extensions_routine _RTEMS_tasks_Delete_extension( Thread_Control *executing, Thread_Control *deleted ) { 4a01c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4a020: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4a024: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED /* * Free per task variable memory */ tvp = deleted->task_variables; 4a028: 206a 011c moveal %a2@(284),%a0 <== NOT EXECUTED deleted->task_variables = NULL; 4a02c: 42aa 011c clrl %a2@(284) <== NOT EXECUTED while (tvp) { next = (rtems_task_variable_t *)tvp->next; _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4a030: 47f9 0004 a0e4 lea 4a0e4 <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3 <== NOT EXECUTED 4a036: 600c bras 4a044 <_RTEMS_tasks_Delete_extension+0x28> <== NOT EXECUTED */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { next = (rtems_task_variable_t *)tvp->next; 4a038: 2410 movel %a0@,%d2 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4a03a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4a03c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a03e: 4e93 jsr %a3@ <== NOT EXECUTED 4a040: 2042 moveal %d2,%a0 <== NOT EXECUTED 4a042: 508f addql #8,%sp <== NOT EXECUTED * Free per task variable memory */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { 4a044: 4a88 tstl %a0 <== NOT EXECUTED 4a046: 66f0 bnes 4a038 <_RTEMS_tasks_Delete_extension+0x1c> <== NOT EXECUTED /* * Free API specific memory */ (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); 4a048: 2f2a 010c movel %a2@(268),%sp@- <== NOT EXECUTED 4a04c: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; 4a052: 42aa 010c clrl %a2@(268) <== NOT EXECUTED 4a056: 588f addql #4,%sp <== NOT EXECUTED } 4a058: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4a05e: 4e5e unlk %fp <== NOT EXECUTED 4a060: 4e75 rts 00049f46 <_RTEMS_tasks_Initialize_user_tasks>: * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks( void ) { if ( _RTEMS_tasks_Initialize_user_tasks_p ) 49f46: 2039 0005 633e movel 5633e <_RTEMS_tasks_Initialize_user_tasks_p>,%d0 <== NOT EXECUTED * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks( void ) { 49f4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( _RTEMS_tasks_Initialize_user_tasks_p ) 49f50: 4a80 tstl %d0 <== NOT EXECUTED 49f52: 6706 beqs 49f5a <_RTEMS_tasks_Initialize_user_tasks+0x14> <== NOT EXECUTED (*_RTEMS_tasks_Initialize_user_tasks_p)(); } 49f54: 4e5e unlk %fp <== NOT EXECUTED */ void _RTEMS_tasks_Initialize_user_tasks( void ) { if ( _RTEMS_tasks_Initialize_user_tasks_p ) (*_RTEMS_tasks_Initialize_user_tasks_p)(); 49f56: 2240 moveal %d0,%a1 <== NOT EXECUTED 49f58: 4ed1 jmp %a1@ <== NOT EXECUTED } 49f5a: 4e5e unlk %fp <== NOT EXECUTED 49f5c: 4e75 rts 00045210 <_RTEMS_tasks_Initialize_user_tasks_body>: rtems_status_code return_value; rtems_initialization_tasks_table *user_tasks; rtems_api_configuration_table *api_configuration; api_configuration = _Configuration_Table->RTEMS_api_configuration; 45210: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 45216: 2068 003e moveal %a0@(62),%a0 <== NOT EXECUTED * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) { 4521a: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4521e: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED /* * NOTE: This is slightly different from the Ada implementation. */ user_tasks = api_configuration->User_initialization_tasks_table; maximum = api_configuration->number_of_initialization_tasks; 45222: 2628 0026 movel %a0@(38),%d3 <== NOT EXECUTED /* * NOTE: This is slightly different from the Ada implementation. */ user_tasks = api_configuration->User_initialization_tasks_table; 45226: 2028 002a movel %a0@(42),%d0 <== NOT EXECUTED maximum = api_configuration->number_of_initialization_tasks; if ( !user_tasks || maximum == 0 ) 4522a: 676e beqs 4529a <_RTEMS_tasks_Initialize_user_tasks_body+0x8a> <== NOT EXECUTED 4522c: 4a83 tstl %d3 <== NOT EXECUTED 4522e: 676a beqs 4529a <_RTEMS_tasks_Initialize_user_tasks_body+0x8a> <== NOT EXECUTED return; for ( index=0 ; index < maximum ; index++ ) { return_value = rtems_task_create( 45230: 280e movel %fp,%d4 <== NOT EXECUTED */ user_tasks = api_configuration->User_initialization_tasks_table; maximum = api_configuration->number_of_initialization_tasks; if ( !user_tasks || maximum == 0 ) 45232: 2440 moveal %d0,%a2 <== NOT EXECUTED 45234: 4282 clrl %d2 <== NOT EXECUTED return; for ( index=0 ; index < maximum ; index++ ) { return_value = rtems_task_create( 45236: 5984 subql #4,%d4 <== NOT EXECUTED 45238: 49f9 0004 500c lea 4500c ,%a4 <== NOT EXECUTED ); if ( !rtems_is_status_successful( return_value ) ) _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); return_value = rtems_task_start( 4523e: 47f9 0004 52a4 lea 452a4 ,%a3 <== NOT EXECUTED 45244: 6050 bras 45296 <_RTEMS_tasks_Initialize_user_tasks_body+0x86> <== NOT EXECUTED if ( !user_tasks || maximum == 0 ) return; for ( index=0 ; index < maximum ; index++ ) { return_value = rtems_task_create( 45246: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45248: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4524c: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED 45250: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 45254: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 45258: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4525a: 4e94 jsr %a4@ <== NOT EXECUTED user_tasks[ index ].mode_set, user_tasks[ index ].attribute_set, &id ); if ( !rtems_is_status_successful( return_value ) ) 4525c: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 45262: 4a80 tstl %d0 <== NOT EXECUTED 45264: 661e bnes 45284 <_RTEMS_tasks_Initialize_user_tasks_body+0x74> <== NOT EXECUTED _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); return_value = rtems_task_start( 45266: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 4526a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4526e: d5fc 0000 001c addal #28,%a2 <== NOT EXECUTED 45274: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 45278: 4e93 jsr %a3@ <== NOT EXECUTED id, user_tasks[ index ].entry_point, user_tasks[ index ].argument ); if ( !rtems_is_status_successful( return_value ) ) 4527a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45280: 4a80 tstl %d0 <== NOT EXECUTED 45282: 6710 beqs 45294 <_RTEMS_tasks_Initialize_user_tasks_body+0x84> <== NOT EXECUTED _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); 45284: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45286: 4878 0001 pea 1 <== NOT EXECUTED 4528a: 4878 0001 pea 1 <== NOT EXECUTED 4528e: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED maximum = api_configuration->number_of_initialization_tasks; if ( !user_tasks || maximum == 0 ) return; for ( index=0 ; index < maximum ; index++ ) { 45294: 5282 addql #1,%d2 <== NOT EXECUTED 45296: b682 cmpl %d2,%d3 <== NOT EXECUTED 45298: 62ac bhis 45246 <_RTEMS_tasks_Initialize_user_tasks_body+0x36> <== NOT EXECUTED ); if ( !rtems_is_status_successful( return_value ) ) _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); } } 4529a: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 452a0: 4e5e unlk %fp <== NOT EXECUTED 452a2: 4e75 rts 00049f5e <_RTEMS_tasks_Manager_initialization>: */ void _RTEMS_tasks_Manager_initialization( uint32_t maximum_tasks ) { 49f5e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49f62: 4878 0004 pea 4 <== NOT EXECUTED 49f66: 42a7 clrl %sp@- <== NOT EXECUTED 49f68: 4878 0120 pea 120 <== NOT EXECUTED 49f6c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49f70: 4878 0001 pea 1 <== NOT EXECUTED 49f74: 4878 0002 pea 2 <== NOT EXECUTED 49f78: 4879 0005 7dec pea 57dec <_RTEMS_tasks_Information> <== NOT EXECUTED 49f7e: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED /* * Add all the extensions for this API */ _User_extensions_Add_API_set( &_RTEMS_tasks_User_extensions ); 49f84: 4879 0005 67c4 pea 567c4 <_RTEMS_tasks_User_extensions> <== NOT EXECUTED 49f8a: 4eb9 0004 aa98 jsr 4aa98 <_User_extensions_Add_API_set> <== NOT EXECUTED _API_extensions_Add( &_RTEMS_tasks_API_extensions ); 49f90: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 49f96: 203c 0005 67b0 movel #354224,%d0 <== NOT EXECUTED 49f9c: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED MP_PACKET_TASKS, _RTEMS_tasks_MP_Process_packet ); #endif } 49fa0: 4e5e unlk %fp <== NOT EXECUTED * Add all the extensions for this API */ _User_extensions_Add_API_set( &_RTEMS_tasks_User_extensions ); _API_extensions_Add( &_RTEMS_tasks_API_extensions ); 49fa2: 4ef9 0004 5842 jmp 45842 <_API_extensions_Add> <== NOT EXECUTED 00049fa8 <_RTEMS_tasks_Post_switch_extension>: */ void _RTEMS_tasks_Post_switch_extension( Thread_Control *executing ) { 49fa8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 49fac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49fb0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; rtems_signal_set signal_set; Modes_Control prev_mode; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 49fb4: 2668 010c moveal %a0@(268),%a3 <== NOT EXECUTED if ( !api ) 49fb8: 4a8b tstl %a3 <== NOT EXECUTED 49fba: 6756 beqs 4a012 <_RTEMS_tasks_Post_switch_extension+0x6a> <== NOT EXECUTED * Signal Processing */ asr = &api->Signal; _ISR_Disable( level ); 49fbc: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 49fc2: 40c0 movew %sr,%d0 <== NOT EXECUTED 49fc4: 8280 orl %d0,%d1 <== NOT EXECUTED 49fc6: 46c1 movew %d1,%sr <== NOT EXECUTED signal_set = asr->signals_posted; 49fc8: 262b 0012 movel %a3@(18),%d3 <== NOT EXECUTED asr->signals_posted = 0; 49fcc: 42ab 0012 clrl %a3@(18) <== NOT EXECUTED _ISR_Enable( level ); 49fd0: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 49fd2: 4a83 tstl %d3 <== NOT EXECUTED 49fd4: 673c beqs 4a012 <_RTEMS_tasks_Post_switch_extension+0x6a> <== NOT EXECUTED return; asr->nest_level += 1; 49fd6: 52ab 001a addql #1,%a3@(26) <== NOT EXECUTED rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 49fda: 240e movel %fp,%d2 <== NOT EXECUTED 49fdc: 5982 subql #4,%d2 <== NOT EXECUTED 49fde: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49fe0: 45f9 0004 b2dc lea 4b2dc ,%a2 <== NOT EXECUTED 49fe6: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 49fec: 2f2b 000e movel %a3@(14),%sp@- <== NOT EXECUTED 49ff0: 4e92 jsr %a2@ <== NOT EXECUTED (*asr->handler)( signal_set ); 49ff2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49ff4: 206b 000a moveal %a3@(10),%a0 <== NOT EXECUTED 49ff8: 4e90 jsr %a0@ <== NOT EXECUTED asr->nest_level -= 1; 49ffa: 53ab 001a subql #1,%a3@(26) <== NOT EXECUTED rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); 49ffe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a000: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4a006: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4a00a: 4e92 jsr %a2@ <== NOT EXECUTED 4a00c: dffc 0000 001c addal #28,%sp <== NOT EXECUTED } 4a012: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a018: 4e5e unlk %fp <== NOT EXECUTED 4a01a: 4e75 rts 00049ef4 <_RTEMS_tasks_Start_extension>: User_extensions_routine _RTEMS_tasks_Start_extension( Thread_Control *executing, Thread_Control *started ) { 49ef4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49ef8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED RTEMS_API_Control *api; api = started->API_Extensions[ THREAD_API_RTEMS ]; api->pending_events = EVENT_SETS_NONE_PENDING; 49efc: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED } 49f00: 4e5e unlk %fp <== NOT EXECUTED { RTEMS_API_Control *api; api = started->API_Extensions[ THREAD_API_RTEMS ]; api->pending_events = EVENT_SETS_NONE_PENDING; 49f02: 4290 clrl %a0@ <== NOT EXECUTED } 49f04: 4e75 rts 00049f06 <_RTEMS_tasks_Switch_extension>: void _RTEMS_tasks_Switch_extension( Thread_Control *executing, Thread_Control *heir ) { 49f06: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49f0a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED /* * Per Task Variables */ tvp = executing->task_variables; 49f0e: 2268 011c moveal %a0@(284),%a1 <== NOT EXECUTED 49f12: 600e bras 49f22 <_RTEMS_tasks_Switch_extension+0x1c> <== NOT EXECUTED while (tvp) { tvp->tval = *tvp->ptr; 49f14: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED 49f18: 2350 000c movel %a0@,%a1@(12) <== NOT EXECUTED *tvp->ptr = tvp->gval; 49f1c: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 49f20: 2251 moveal %a1@,%a1 <== NOT EXECUTED /* * Per Task Variables */ tvp = executing->task_variables; while (tvp) { 49f22: 4a89 tstl %a1 <== NOT EXECUTED 49f24: 66ee bnes 49f14 <_RTEMS_tasks_Switch_extension+0xe> <== NOT EXECUTED tvp->tval = *tvp->ptr; *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; 49f26: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 49f2a: 2268 011c moveal %a0@(284),%a1 <== NOT EXECUTED 49f2e: 600e bras 49f3e <_RTEMS_tasks_Switch_extension+0x38> <== NOT EXECUTED while (tvp) { tvp->gval = *tvp->ptr; 49f30: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED 49f34: 2350 0008 movel %a0@,%a1@(8) <== NOT EXECUTED *tvp->ptr = tvp->tval; 49f38: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 49f3c: 2251 moveal %a1@,%a1 <== NOT EXECUTED *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; while (tvp) { 49f3e: 4a89 tstl %a1 <== NOT EXECUTED 49f40: 66ee bnes 49f30 <_RTEMS_tasks_Switch_extension+0x2a> <== NOT EXECUTED tvp->gval = *tvp->ptr; *tvp->ptr = tvp->tval; tvp = (rtems_task_variable_t *)tvp->next; } } 49f42: 4e5e unlk %fp <== NOT EXECUTED 49f44: 4e75 rts 000459f4 <_Rate_monotonic_Initiate_statistics>: #endif void _Rate_monotonic_Initiate_statistics( Rate_monotonic_Control *the_period ) { 459f4: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 459f8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 459fc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED Thread_Control *owning_thread = the_period->owner; 45a00: 246b 0050 moveal %a3@(80),%a2 <== NOT EXECUTED #if defined(RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS) || \ defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS) struct timespec uptime; _TOD_Get_uptime( &uptime ); 45a04: 260e movel %fp,%d3 <== NOT EXECUTED 45a06: 5183 subql #8,%d3 <== NOT EXECUTED 45a08: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45a0a: 4eb9 0004 72a8 jsr 472a8 <_TOD_Get_uptime> <== NOT EXECUTED /* * Set the starting point and the CPU time used for the statistics. */ #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS the_period->time_at_period = uptime; 45a10: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 45a14: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 45a18: 2740 0044 movel %d0,%a3@(68) <== NOT EXECUTED 45a1c: 2741 0048 movel %d1,%a3@(72) <== NOT EXECUTED #else the_period->time_at_period = _Watchdog_Ticks_since_boot; #endif the_period->owner_executed_at_period = owning_thread->cpu_time_used; 45a20: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED 45a24: 276a 0088 0040 movel %a2@(136),%a3@(64) <== NOT EXECUTED * context switch. When this 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. */ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS if (owning_thread == _Thread_Executing) { 45a2a: 588f addql #4,%sp <== NOT EXECUTED the_period->time_at_period = uptime; #else the_period->time_at_period = _Watchdog_Ticks_since_boot; #endif the_period->owner_executed_at_period = owning_thread->cpu_time_used; 45a2c: 2740 003c movel %d0,%a3@(60) <== NOT EXECUTED * context switch. When this 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. */ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS if (owning_thread == _Thread_Executing) { 45a30: b5f9 0005 aa46 cmpal 5aa46 <_Thread_Executing>,%a2 <== NOT EXECUTED 45a36: 662a bnes 45a62 <_Rate_monotonic_Initiate_statistics+0x6e> <== NOT EXECUTED /* * Adjust the CPU time used to account for the time since last * context switch. */ _Timespec_Subtract( 45a38: 240e movel %fp,%d2 <== NOT EXECUTED 45a3a: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED 45a40: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45a42: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45a44: 4879 0005 aa4e pea 5aa4e <_Thread_Time_of_last_context_switch> <== NOT EXECUTED 45a4a: 4eb9 0004 91a0 jsr 491a0 <_Timespec_Subtract> <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timespec_Add_to( &the_period->owner_executed_at_period, &ran ); 45a50: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45a52: 486b 003c pea %a3@(60) <== NOT EXECUTED 45a56: 4eb9 0004 9078 jsr 49078 <_Timespec_Add_to> <== NOT EXECUTED 45a5c: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED } #endif } 45a62: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 45a68: 4e5e unlk %fp <== NOT EXECUTED 45a6a: 4e75 rts 00049e20 <_Rate_monotonic_Manager_initialization>: */ void _Rate_monotonic_Manager_initialization( uint32_t maximum_periods ) { 49e20: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49e24: 4878 0004 pea 4 <== NOT EXECUTED 49e28: 42a7 clrl %sp@- <== NOT EXECUTED 49e2a: 4878 008c pea 8c <== NOT EXECUTED 49e2e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49e32: 4878 0008 pea 8 <== NOT EXECUTED 49e36: 4878 0002 pea 2 <== NOT EXECUTED 49e3a: 4879 0005 880e pea 5880e <_Rate_monotonic_Information> <== NOT EXECUTED 49e40: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49e46: dffc 0000 001c addal #28,%sp <== NOT EXECUTED , FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 49e4c: 4e5e unlk %fp <== NOT EXECUTED 49e4e: 4e75 rts 00045f98 <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) { 45f98: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45f9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45f9e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45fa2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45fa6: 4879 0005 a880 pea 5a880 <_Rate_monotonic_Information> <== NOT EXECUTED 45fac: 4eb9 0004 7ba8 jsr 47ba8 <_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 ) { 45fb2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45fb8: 2440 moveal %d0,%a2 <== NOT EXECUTED 45fba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45fbe: 6600 009a bnew 4605a <_Rate_monotonic_Timeout+0xc2> <== NOT EXECUTED case OBJECTS_LOCAL: the_thread = the_period->owner; 45fc2: 206a 0050 moveal %a2@(80),%a0 <== NOT EXECUTED if ( _States_Is_waiting_for_period( the_thread->current_state ) && 45fc6: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 45fca: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED 45fd0: 673e beqs 46010 <_Rate_monotonic_Timeout+0x78> <== NOT EXECUTED 45fd2: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 45fd6: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED 45fda: 6634 bnes 46010 <_Rate_monotonic_Timeout+0x78> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 45fdc: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 45fe2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45fe4: 4eb9 0004 7fc8 jsr 47fc8 <_Thread_Clear_state> <== NOT EXECUTED the_thread->Wait.id == the_period->Object.id ) { _Thread_Unblock( the_thread ); _Rate_monotonic_Initiate_statistics( the_period ); 45fea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45fec: 4eb9 0004 59f4 jsr 459f4 <_Rate_monotonic_Initiate_statistics> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45ff2: 256a 004c 001c movel %a2@(76),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45ff8: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45ffc: 4879 0005 aa64 pea 5aa64 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46002: 4eb9 0004 9420 jsr 49420 <_Watchdog_Insert> <== NOT EXECUTED 46008: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4600e: 603c bras 4604c <_Rate_monotonic_Timeout+0xb4> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { 46010: 7001 moveq #1,%d0 <== NOT EXECUTED 46012: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 46016: 662e bnes 46046 <_Rate_monotonic_Timeout+0xae> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; 46018: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 4601c: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED _Rate_monotonic_Initiate_statistics( the_period ); 46020: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46022: 4eb9 0004 59f4 jsr 459f4 <_Rate_monotonic_Initiate_statistics> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46028: 256a 004c 001c movel %a2@(76),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4602e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 46032: 4879 0005 aa64 pea 5aa64 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46038: 4eb9 0004 9420 jsr 49420 <_Watchdog_Insert> <== NOT EXECUTED 4603e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46044: 6006 bras 4604c <_Rate_monotonic_Timeout+0xb4> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else the_period->state = RATE_MONOTONIC_EXPIRED; 46046: 7004 moveq #4,%d0 <== NOT EXECUTED 46048: 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; 4604c: 2039 0005 a988 movel 5a988 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46052: 5380 subql #1,%d0 <== NOT EXECUTED 46054: 23c0 0005 a988 movel %d0,5a988 <_Thread_Dispatch_disable_level> <== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 4605a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4605e: 4e5e unlk %fp <== NOT EXECUTED 46060: 4e75 rts <== NOT EXECUTED ... 00045a6c <_Rate_monotonic_Update_statistics>: void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) { 45a6c: 4e56 ffb8 linkw %fp,#-72 <== NOT EXECUTED 45a70: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 45a74: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED struct timespec uptime; /* * Obtain the current time since boot */ _TOD_Get_uptime( &uptime ); 45a78: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 45a7c: 4eb9 0004 72a8 jsr 472a8 <_TOD_Get_uptime> <== NOT EXECUTED /* * Update the counts. */ stats = &the_period->Statistics; stats->count++; 45a82: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_EXPIRED ) 45a86: 588f addql #4,%sp <== NOT EXECUTED 45a88: 7004 moveq #4,%d0 <== NOT EXECUTED 45a8a: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 45a8e: 6604 bnes 45a94 <_Rate_monotonic_Update_statistics+0x28> <== NOT EXECUTED stats->missed_count++; 45a90: 52aa 0058 addql #1,%a2@(88) <== NOT EXECUTED /* * Grab basic information for time statistics. */ #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS _Timespec_Subtract( 45a94: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 45a98: 240e movel %fp,%d2 <== NOT EXECUTED 45a9a: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED 45aa0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45aa2: 47f9 0004 91a0 lea 491a0 <_Timespec_Subtract>,%a3 <== NOT EXECUTED 45aa8: 486a 0044 pea %a2@(68) <== NOT EXECUTED 45aac: 4e93 jsr %a3@ <== NOT EXECUTED #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS { rtems_thread_cpu_usage_t ran, used; /* Grab CPU usage when the thread got switched in */ used = _Thread_Executing->cpu_time_used; 45aae: 2079 0005 aa46 moveal 5aa46 <_Thread_Executing>,%a0 <== NOT EXECUTED 45ab4: 2d68 0088 ffdc movel %a0@(136),%fp@(-36) <== NOT EXECUTED 45aba: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED /* How much time time since last context switch */ _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 45abe: 260e movel %fp,%d3 <== NOT EXECUTED 45ac0: 0683 ffff ffe0 addil #-32,%d3 <== NOT EXECUTED 45ac6: 2f03 movel %d3,%sp@- <== NOT EXECUTED /* executed += ran */ _Timespec_Add_to( &used, &ran ); 45ac8: 280e movel %fp,%d4 <== NOT EXECUTED 45aca: 0684 ffff ffd8 addil #-40,%d4 <== NOT EXECUTED /* Grab CPU usage when the thread got switched in */ used = _Thread_Executing->cpu_time_used; /* How much time time since last context switch */ _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 45ad0: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* executed += ran */ _Timespec_Add_to( &used, &ran ); 45ad2: 4bf9 0004 9078 lea 49078 <_Timespec_Add_to>,%a5 <== NOT EXECUTED /* Grab CPU usage when the thread got switched in */ used = _Thread_Executing->cpu_time_used; /* How much time time since last context switch */ _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 45ad8: 4879 0005 aa4e pea 5aa4e <_Thread_Time_of_last_context_switch> <== NOT EXECUTED /* executed += ran */ _Timespec_Add_to( &used, &ran ); /* partial period, cpu usage info reset while executing. Throw away */ if (_Timespec_Less_than( &used, &the_period->owner_executed_at_period)) 45ade: 2a0a movel %a2,%d5 <== NOT EXECUTED 45ae0: 0685 0000 003c addil #60,%d5 <== NOT EXECUTED #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS { rtems_thread_cpu_usage_t ran, used; /* Grab CPU usage when the thread got switched in */ used = _Thread_Executing->cpu_time_used; 45ae6: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED /* How much time time since last context switch */ _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 45aea: 4e93 jsr %a3@ <== NOT EXECUTED /* executed += ran */ _Timespec_Add_to( &used, &ran ); /* partial period, cpu usage info reset while executing. Throw away */ if (_Timespec_Less_than( &used, &the_period->owner_executed_at_period)) 45aec: 49f9 0004 9170 lea 49170 <_Timespec_Less_than>,%a4 <== NOT EXECUTED /* How much time time since last context switch */ _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); /* executed += ran */ _Timespec_Add_to( &used, &ran ); 45af2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45af4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45af6: 4e95 jsr %a5@ <== NOT EXECUTED /* partial period, cpu usage info reset while executing. Throw away */ if (_Timespec_Less_than( &used, &the_period->owner_executed_at_period)) 45af8: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 45afe: 2e85 movel %d5,%sp@ <== NOT EXECUTED 45b00: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45b02: 4e94 jsr %a4@ <== NOT EXECUTED 45b04: 508f addql #8,%sp <== NOT EXECUTED 45b06: 4a00 tstb %d0 <== NOT EXECUTED 45b08: 6600 00bc bnew 45bc6 <_Rate_monotonic_Update_statistics+0x15a> <== NOT EXECUTED return; /* executed = current cpu usage - value at start of period */ _Timespec_Subtract( 45b0c: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 45b12: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45b14: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45b16: 2f05 movel %d5,%sp@- <== NOT EXECUTED 45b18: 4e93 jsr %a3@ <== NOT EXECUTED /* * Update CPU time */ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS _Timespec_Add_to( &stats->total_cpu_time, &executed ); 45b1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45b1c: 486a 006c pea %a2@(108) <== NOT EXECUTED 45b20: 4e95 jsr %a5@ <== NOT EXECUTED if ( _Timespec_Less_than( &executed, &stats->min_cpu_time ) ) 45b22: 486a 005c pea %a2@(92) <== NOT EXECUTED 45b26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45b28: 4e94 jsr %a4@ <== NOT EXECUTED 45b2a: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 45b30: 4a00 tstb %d0 <== NOT EXECUTED 45b32: 6710 beqs 45b44 <_Rate_monotonic_Update_statistics+0xd8> <== NOT EXECUTED stats->min_cpu_time = executed; 45b34: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 45b38: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 45b3c: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 45b40: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED if ( _Timespec_Greater_than( &executed, &stats->max_cpu_time ) ) 45b44: 486a 0064 pea %a2@(100) <== NOT EXECUTED 45b48: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45b4c: 4eb9 0004 9140 jsr 49140 <_Timespec_Greater_than> <== NOT EXECUTED 45b52: 508f addql #8,%sp <== NOT EXECUTED 45b54: 4a00 tstb %d0 <== NOT EXECUTED 45b56: 6710 beqs 45b68 <_Rate_monotonic_Update_statistics+0xfc> <== NOT EXECUTED stats->max_cpu_time = executed; 45b58: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 45b5c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 45b60: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED 45b64: 2541 0068 movel %d1,%a2@(104) <== NOT EXECUTED stats->min_wall_time = since_last_period; if ( since_last_period > stats->max_wall_time ) stats->max_wall_time = since_last_period; #else _Timespec_Add_to( &stats->total_wall_time, &since_last_period ); 45b68: 240e movel %fp,%d2 <== NOT EXECUTED 45b6a: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED 45b70: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45b72: 486a 0084 pea %a2@(132) <== NOT EXECUTED 45b76: 4eb9 0004 9078 jsr 49078 <_Timespec_Add_to> <== NOT EXECUTED if ( _Timespec_Less_than( &since_last_period, &stats->min_wall_time ) ) 45b7c: 486a 0074 pea %a2@(116) <== NOT EXECUTED 45b80: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45b82: 4eb9 0004 9170 jsr 49170 <_Timespec_Less_than> <== NOT EXECUTED 45b88: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45b8e: 4a00 tstb %d0 <== NOT EXECUTED 45b90: 6710 beqs 45ba2 <_Rate_monotonic_Update_statistics+0x136> <== NOT EXECUTED stats->min_wall_time = since_last_period; 45b92: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 45b96: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 45b9a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 45b9e: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED if ( _Timespec_Greater_than( &since_last_period, &stats->max_wall_time ) ) 45ba2: 486a 007c pea %a2@(124) <== NOT EXECUTED 45ba6: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 45baa: 4eb9 0004 9140 jsr 49140 <_Timespec_Greater_than> <== NOT EXECUTED 45bb0: 508f addql #8,%sp <== NOT EXECUTED 45bb2: 4a00 tstb %d0 <== NOT EXECUTED 45bb4: 6710 beqs 45bc6 <_Rate_monotonic_Update_statistics+0x15a> <== NOT EXECUTED stats->max_wall_time = since_last_period; 45bb6: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 45bba: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 45bbe: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED 45bc2: 2541 0080 movel %d1,%a2@(128) <== NOT EXECUTED #endif } 45bc6: 4cee 3c3c ffb8 moveml %fp@(-72),%d2-%d5/%a2-%a5 <== NOT EXECUTED 45bcc: 4e5e unlk %fp <== NOT EXECUTED 45bce: 4e75 rts 00049e50 <_Region_Manager_initialization>: */ void _Region_Manager_initialization( uint32_t maximum_regions ) { 49e50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49e54: 4878 0004 pea 4 <== NOT EXECUTED 49e58: 42a7 clrl %sp@- <== NOT EXECUTED 49e5a: 4878 00c0 pea c0 <== NOT EXECUTED 49e5e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49e62: 4878 0006 pea 6 <== NOT EXECUTED 49e66: 4878 0002 pea 2 <== NOT EXECUTED 49e6a: 4879 0005 884a pea 5884a <_Region_Information> <== NOT EXECUTED 49e70: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49e76: dffc 0000 001c addal #28,%sp <== NOT EXECUTED MP_PACKET_REGION, 0 /* XXX _Region_MP_Process_packet */ ); #endif } 49e7c: 4e5e unlk %fp <== NOT EXECUTED 49e7e: 4e75 rts 00055444 <_Region_Process_queue>: 55444: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED */ void _Region_Process_queue( Region_Control *the_region ) { 5544a: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5544e: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 55452: 5280 addql #1,%d0 <== NOT EXECUTED 55454: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED 5545a: 266e 0008 moveal %fp@(8),%a3 <== 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(); 5545e: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%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 ); 55464: 240b movel %a3,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment ( Region_Control *the_region, uint32_t size ) { return _Heap_Allocate( &the_region->Memory, size ); 55466: 260b movel %a3,%d3 <== NOT EXECUTED 55468: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 5546e: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED 55474: 4bf9 0005 0b10 lea 50b10 <_Heap_Allocate>,%a5 <== 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 ); 5547a: 49f9 0005 5b9c lea 55b9c <_Thread_queue_Extract>,%a4 <== 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(); 55480: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== 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 ); 55486: 283c 0005 5ca8 movel #351400,%d4 <== NOT EXECUTED 5548c: 588f addql #4,%sp <== NOT EXECUTED 5548e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 55490: 2044 moveal %d4,%a0 <== NOT EXECUTED 55492: 4e90 jsr %a0@ <== NOT EXECUTED if ( the_thread == NULL ) 55494: 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 ); 55496: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( the_thread == NULL ) 55498: 4a80 tstl %d0 <== NOT EXECUTED 5549a: 6726 beqs 554c2 <_Region_Process_queue+0x7e> <== NOT EXECUTED 5549c: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 554a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 554a2: 4e95 jsr %a5@ <== NOT EXECUTED the_segment = (void **) _Region_Allocate_segment( the_region, the_thread->Wait.count ); if ( the_segment == NULL ) 554a4: 508f addql #8,%sp <== NOT EXECUTED 554a6: 4a80 tstl %d0 <== NOT EXECUTED 554a8: 6718 beqs 554c2 <_Region_Process_queue+0x7e> <== NOT EXECUTED break; *(void **)the_thread->Wait.return_argument = the_segment; 554aa: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED the_region->number_of_used_blocks += 1; 554ae: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED ); if ( the_segment == NULL ) break; *(void **)the_thread->Wait.return_argument = the_segment; 554b2: 2080 movel %d0,%a0@ <== NOT EXECUTED the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); 554b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 554b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 554b8: 4e94 jsr %a4@ <== NOT EXECUTED the_thread->Wait.return_code = RTEMS_SUCCESSFUL; 554ba: 508f addql #8,%sp <== NOT EXECUTED 554bc: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED 554c0: 60cc bras 5548e <_Region_Process_queue+0x4a> <== NOT EXECUTED } _Thread_Enable_dispatch(); } 554c2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 554c8: 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(); 554ca: 4ef9 0005 1fae jmp 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 00049ebc <_Semaphore_Manager_initialization>: */ void _Semaphore_Manager_initialization( uint32_t maximum_semaphores ) { 49ebc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49ec0: 4878 0004 pea 4 <== NOT EXECUTED 49ec4: 42a7 clrl %sp@- <== NOT EXECUTED 49ec6: 4878 0076 pea 76 <== NOT EXECUTED 49eca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49ece: 4878 0003 pea 3 <== NOT EXECUTED 49ed2: 4878 0002 pea 2 <== NOT EXECUTED 49ed6: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 49edc: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED 49ee2: dffc 0000 001c addal #28,%sp <== NOT EXECUTED MP_PACKET_SEMAPHORE, _Semaphore_MP_Process_packet ); #endif } 49ee8: 4e5e unlk %fp <== NOT EXECUTED 49eea: 4e75 rts 00044fe0 <_Semaphore_Translate_core_mutex_return_code>: }; rtems_status_code _Semaphore_Translate_core_mutex_return_code ( uint32_t status ) { 44fe0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( status > CORE_MUTEX_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Semaphore_Translate_core_mutex_return_code_[status]; } 44fe4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED }; rtems_status_code _Semaphore_Translate_core_mutex_return_code ( uint32_t status ) { 44fe8: 41f9 0005 508a lea 5508a <_Semaphore_Translate_core_mutex_return_code_>,%a0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( status > CORE_MUTEX_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Semaphore_Translate_core_mutex_return_code_[status]; } 44fee: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 44ff2: 4e5e unlk %fp <== NOT EXECUTED 44ff4: 4e75 rts 00044ff6 <_Semaphore_Translate_core_semaphore_return_code>: }; rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( uint32_t status ) { 44ff6: 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]; } 44ffa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED }; rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( uint32_t status ) { 44ffe: 41f9 0005 50a6 lea 550a6 <_Semaphore_Translate_core_semaphore_return_code_>,%a0 <== 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]; } 45004: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 45008: 4e5e unlk %fp <== NOT EXECUTED 4500a: 4e75 rts 00049eec <_Signal_Manager_initialization>: * * Output parameters: NONE */ void _Signal_Manager_initialization( void ) { 49eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _MPCI_Register_packet_processor( MP_PACKET_SIGNAL, _Signal_MP_Process_packet ); #endif } 49ef0: 4e5e unlk %fp <== NOT EXECUTED 49ef2: 4e75 rts 00045d14 <_TOD_Get>: */ void _TOD_Get( struct timespec *time ) { 45d14: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 45d18: 2f0a movel %a2,%sp@- <== NOT EXECUTED offset.tv_sec = 0; offset.tv_nsec = 0; /* _TOD_Now is a proper POSIX time */ _ISR_Disable( level ); 45d1a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _TOD_Get( struct timespec *time ) { 45d20: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45d22: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; struct timespec offset; /* assume time checked by caller */ offset.tv_sec = 0; 45d26: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED offset.tv_nsec = 0; 45d2a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED /* _TOD_Now is a proper POSIX time */ _ISR_Disable( level ); 45d2e: 40c2 movew %sr,%d2 <== NOT EXECUTED 45d30: 8082 orl %d2,%d0 <== NOT EXECUTED 45d32: 46c0 movew %d0,%sr <== NOT EXECUTED *time = _TOD_Now; if ( _Watchdog_Nanoseconds_since_tick_handler ) 45d34: 2079 0005 8012 moveal 58012 <_Watchdog_Nanoseconds_since_tick_handler>,%a0 <== NOT EXECUTED offset.tv_sec = 0; offset.tv_nsec = 0; /* _TOD_Now is a proper POSIX time */ _ISR_Disable( level ); *time = _TOD_Now; 45d3a: 2039 0005 7f0e movel 57f0e <_TOD_Now>,%d0 <== NOT EXECUTED 45d40: 2239 0005 7f12 movel 57f12 <_TOD_Now+0x4>,%d1 <== NOT EXECUTED 45d46: 2480 movel %d0,%a2@ <== NOT EXECUTED 45d48: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED if ( _Watchdog_Nanoseconds_since_tick_handler ) 45d4c: 4a88 tstl %a0 <== NOT EXECUTED 45d4e: 6706 beqs 45d56 <_TOD_Get+0x42> <== NOT EXECUTED offset.tv_nsec = (*_Watchdog_Nanoseconds_since_tick_handler)(); 45d50: 4e90 jsr %a0@ <== NOT EXECUTED 45d52: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED _ISR_Enable( level ); 45d56: 46c2 movew %d2,%sr <== NOT EXECUTED _Timespec_Add_to( time, &offset ); 45d58: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45d5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45d5e: 4eb9 0004 79c8 jsr 479c8 <_Timespec_Add_to> <== NOT EXECUTED } 45d64: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 45d68: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED *time = _TOD_Now; if ( _Watchdog_Nanoseconds_since_tick_handler ) offset.tv_nsec = (*_Watchdog_Nanoseconds_since_tick_handler)(); _ISR_Enable( level ); _Timespec_Add_to( time, &offset ); 45d6c: 508f addql #8,%sp <== NOT EXECUTED } 45d6e: 4e5e unlk %fp <== NOT EXECUTED 45d70: 4e75 rts <== NOT EXECUTED ... 0004a350 <_TOD_Get_uptime>: */ void _TOD_Get_uptime( struct timespec *uptime ) { 4a350: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4a354: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* assume uptime checked by caller */ offset.tv_sec = 0; offset.tv_nsec = 0; _ISR_Disable( level ); 4a356: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _TOD_Get_uptime( struct timespec *uptime ) { 4a35c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a35e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; struct timespec offset; /* assume uptime checked by caller */ offset.tv_sec = 0; 4a362: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED offset.tv_nsec = 0; 4a366: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED _ISR_Disable( level ); 4a36a: 40c2 movew %sr,%d2 <== NOT EXECUTED 4a36c: 8082 orl %d2,%d0 <== NOT EXECUTED 4a36e: 46c0 movew %d0,%sr <== NOT EXECUTED *uptime = _TOD_Uptime; if ( _Watchdog_Nanoseconds_since_tick_handler ) 4a370: 2079 0005 8012 moveal 58012 <_Watchdog_Nanoseconds_since_tick_handler>,%a0 <== NOT EXECUTED offset.tv_sec = 0; offset.tv_nsec = 0; _ISR_Disable( level ); *uptime = _TOD_Uptime; 4a376: 2039 0005 7efa movel 57efa <_TOD_Uptime>,%d0 <== NOT EXECUTED 4a37c: 2239 0005 7efe movel 57efe <_TOD_Uptime+0x4>,%d1 <== NOT EXECUTED 4a382: 2480 movel %d0,%a2@ <== NOT EXECUTED 4a384: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED if ( _Watchdog_Nanoseconds_since_tick_handler ) 4a388: 4a88 tstl %a0 <== NOT EXECUTED 4a38a: 6706 beqs 4a392 <_TOD_Get_uptime+0x42> <== NOT EXECUTED offset.tv_nsec = (*_Watchdog_Nanoseconds_since_tick_handler)(); 4a38c: 4e90 jsr %a0@ <== NOT EXECUTED 4a38e: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED _ISR_Enable( level ); 4a392: 46c2 movew %d2,%sr <== NOT EXECUTED _Timespec_Add_to( uptime, &offset ); 4a394: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4a398: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a39a: 4eb9 0004 79c8 jsr 479c8 <_Timespec_Add_to> <== NOT EXECUTED } 4a3a0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4a3a4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED *uptime = _TOD_Uptime; if ( _Watchdog_Nanoseconds_since_tick_handler ) offset.tv_nsec = (*_Watchdog_Nanoseconds_since_tick_handler)(); _ISR_Enable( level ); _Timespec_Add_to( uptime, &offset ); 4a3a8: 508f addql #8,%sp <== NOT EXECUTED } 4a3aa: 4e5e unlk %fp <== NOT EXECUTED 4a3ac: 4e75 rts <== NOT EXECUTED ... 00045d74 <_TOD_Handler_initialization>: */ void _TOD_Handler_initialization( uint32_t microseconds_per_tick ) { 45d74: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* Uptime (timespec) */ _TOD_Uptime.tv_sec = 0; _TOD_Uptime.tv_nsec = 0; /* TOD has not been set */ _TOD_Is_set = FALSE; 45d78: 4200 clrb %d0 <== NOT EXECUTED void _TOD_Handler_initialization( uint32_t microseconds_per_tick ) { _TOD_Microseconds_per_tick = microseconds_per_tick; 45d7a: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED /* Uptime (timespec) */ _TOD_Uptime.tv_sec = 0; _TOD_Uptime.tv_nsec = 0; /* TOD has not been set */ _TOD_Is_set = FALSE; 45d7e: 13c0 0005 7e90 moveb %d0,57e90 <_TOD_Is_set> <== NOT EXECUTED void _TOD_Handler_initialization( uint32_t microseconds_per_tick ) { _TOD_Microseconds_per_tick = microseconds_per_tick; 45d84: 23d0 0005 800a movel %a0@,5800a <_TOD_Microseconds_per_tick> <== NOT EXECUTED _TOD_Uptime.tv_nsec = 0; /* TOD has not been set */ _TOD_Is_set = FALSE; _TOD_Activate(); } 45d8a: 4e5e unlk %fp <== NOT EXECUTED ) { _TOD_Microseconds_per_tick = microseconds_per_tick; /* POSIX format TOD (timespec) */ _TOD_Now.tv_sec = TOD_SECONDS_1970_THROUGH_1988; 45d8c: 203c 21da e500 movel #567993600,%d0 <== NOT EXECUTED _TOD_Now.tv_nsec = 0; 45d92: 42b9 0005 7f12 clrl 57f12 <_TOD_Now+0x4> <== NOT EXECUTED ) { _TOD_Microseconds_per_tick = microseconds_per_tick; /* POSIX format TOD (timespec) */ _TOD_Now.tv_sec = TOD_SECONDS_1970_THROUGH_1988; 45d98: 23c0 0005 7f0e movel %d0,57f0e <_TOD_Now> <== NOT EXECUTED _TOD_Now.tv_nsec = 0; /* Uptime (timespec) */ _TOD_Uptime.tv_sec = 0; 45d9e: 42b9 0005 7efa clrl 57efa <_TOD_Uptime> <== NOT EXECUTED _TOD_Uptime.tv_nsec = 0; 45da4: 42b9 0005 7efe clrl 57efe <_TOD_Uptime+0x4> <== NOT EXECUTED /* TOD has not been set */ _TOD_Is_set = FALSE; _TOD_Activate(); } 45daa: 4e75 rts 00046e04 <_TOD_Set>: 46e04: 2039 0006 2194 movel 62194 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED */ void _TOD_Set( const struct timespec *time ) { 46e0a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46e10: 5280 addql #1,%d0 <== NOT EXECUTED 46e12: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46e16: 23c0 0006 2194 movel %d0,62194 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Deactivate(); if ( time->tv_sec < _TOD_Seconds_since_epoch ) 46e1c: 2239 0006 2226 movel 62226 <_TOD_Now>,%d1 <== NOT EXECUTED 46e22: 2012 movel %a2@,%d0 <== NOT EXECUTED 46e24: 41f9 0004 90b4 lea 490b4 <_Watchdog_Adjust>,%a0 <== NOT EXECUTED 46e2a: b280 cmpl %d0,%d1 <== NOT EXECUTED 46e2c: 6f0a bles 46e38 <_TOD_Set+0x34> <== NOT EXECUTED Watchdog_Adjust_directions direction, Watchdog_Interval units ) { _Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units ); 46e2e: 9280 subl %d0,%d1 <== NOT EXECUTED 46e30: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46e32: 4878 0001 pea 1 <== NOT EXECUTED 46e36: 6006 bras 46e3e <_TOD_Set+0x3a> <== NOT EXECUTED else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - _TOD_Seconds_since_epoch ); /* POSIX format TOD (timespec) */ _TOD_Now = *time; 46e38: 9081 subl %d1,%d0 <== NOT EXECUTED 46e3a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46e3c: 42a7 clrl %sp@- <== NOT EXECUTED 46e3e: 4879 0006 2264 pea 62264 <_Watchdog_Seconds_chain> <== NOT EXECUTED 46e44: 4e90 jsr %a0@ <== NOT EXECUTED 46e46: 2012 movel %a2@,%d0 <== NOT EXECUTED 46e48: 588a addql #4,%a2 <== NOT EXECUTED 46e4a: 23d2 0006 222a movel %a2@,6222a <_TOD_Now+0x4> <== NOT EXECUTED _TOD_Is_set = TRUE; _TOD_Activate(); _Thread_Enable_dispatch(); } 46e50: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46e54: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46e5a: 4e5e unlk %fp <== NOT EXECUTED _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - _TOD_Seconds_since_epoch ); /* POSIX format TOD (timespec) */ _TOD_Now = *time; _TOD_Is_set = TRUE; 46e5c: 7201 moveq #1,%d1 <== NOT EXECUTED 46e5e: 13c1 0006 21a8 moveb %d1,621a8 <_TOD_Is_set> <== NOT EXECUTED else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - _TOD_Seconds_since_epoch ); /* POSIX format TOD (timespec) */ _TOD_Now = *time; 46e64: 23c0 0006 2226 movel %d0,62226 <_TOD_Now> <== NOT EXECUTED _TOD_Is_set = TRUE; _TOD_Activate(); _Thread_Enable_dispatch(); 46e6a: 4ef9 0004 7ea2 jmp 47ea2 <_Thread_Enable_dispatch> <== NOT EXECUTED 00045dac <_TOD_Tickle_ticks>: { struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dac: 2239 0005 800a movel 5800a <_TOD_Microseconds_per_tick>,%d1 <== NOT EXECUTED * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 45db2: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45db6: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dba: 2401 movel %d1,%d2 <== NOT EXECUTED 45dbc: 2001 movel %d1,%d0 <== NOT EXECUTED 45dbe: e58a lsll #2,%d2 <== NOT EXECUTED 45dc0: ef88 lsll #7,%d0 <== NOT EXECUTED tick.tv_sec = 0; /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 45dc2: 2079 0005 7fc4 moveal 57fc4 <_Watchdog_Ticks_since_boot>,%a0 <== NOT EXECUTED { struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dc8: 9082 subl %d2,%d0 <== NOT EXECUTED /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); 45dca: 240e movel %fp,%d2 <== NOT EXECUTED { struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dcc: d081 addl %d1,%d0 <== NOT EXECUTED /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); 45dce: 5182 subql #8,%d2 <== NOT EXECUTED 45dd0: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; tick.tv_sec = 0; /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 45dd2: 5288 addql #1,%a0 <== NOT EXECUTED { struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dd4: e788 lsll #3,%d0 <== NOT EXECUTED /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); 45dd6: 45f9 0004 79c8 lea 479c8 <_Timespec_Add_to>,%a2 <== NOT EXECUTED /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; tick.tv_sec = 0; /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 45ddc: 23c8 0005 7fc4 movel %a0,57fc4 <_Watchdog_Ticks_since_boot> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void ) { _Watchdog_Tickle( &_Watchdog_Seconds_chain ); 45de2: 47f9 0004 7e18 lea 47e18 <_Watchdog_Tickle>,%a3 <== NOT EXECUTED /* Update the timespec format uptime */ (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); 45de8: 4879 0005 7efa pea 57efa <_TOD_Uptime> <== NOT EXECUTED { struct timespec tick; uint32_t seconds; /* Convert the tick quantum to a timespec */ tick.tv_nsec = _TOD_Microseconds_per_tick * 1000; 45dee: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED tick.tv_sec = 0; 45df2: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); 45df6: 4e92 jsr %a2@ <== NOT EXECUTED /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timespec_Add_to( &_TOD_Now, &tick ); 45df8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45dfa: 4879 0005 7f0e pea 57f0e <_TOD_Now> <== NOT EXECUTED 45e00: 4e92 jsr %a2@ <== NOT EXECUTED 45e02: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45e08: 2400 movel %d0,%d2 <== NOT EXECUTED 45e0a: 600c bras 45e18 <_TOD_Tickle_ticks+0x6c> <== NOT EXECUTED 45e0c: 4879 0005 7f4c pea 57f4c <_Watchdog_Seconds_chain> <== NOT EXECUTED 45e12: 4e93 jsr %a3@ <== NOT EXECUTED while ( seconds ) { _Watchdog_Tickle_seconds(); seconds--; 45e14: 5382 subql #1,%d2 <== NOT EXECUTED 45e16: 588f addql #4,%sp <== NOT EXECUTED (void) _Timespec_Add_to( &_TOD_Uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timespec_Add_to( &_TOD_Now, &tick ); while ( seconds ) { 45e18: 4a82 tstl %d2 <== NOT EXECUTED 45e1a: 66f0 bnes 45e0c <_TOD_Tickle_ticks+0x60> <== NOT EXECUTED _Watchdog_Tickle_seconds(); seconds--; } } 45e1c: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED 45e22: 4e5e unlk %fp <== NOT EXECUTED 45e24: 4e75 rts <== NOT EXECUTED ... 0004558c <_TOD_To_seconds>: */ uint32_t _TOD_To_seconds( rtems_time_of_day *the_tod ) { 4558c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45590: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 45594: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; year_mod_4 = the_tod->year & 3; 45598: 2412 movel %a2@,%d2 <== NOT EXECUTED ) { uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; 4559a: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED year_mod_4 = the_tod->year & 3; 4559e: 7a03 moveq #3,%d5 <== NOT EXECUTED ) { uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; 455a0: 5381 subql #1,%d1 <== NOT EXECUTED year_mod_4 = the_tod->year & 3; 455a2: ca82 andl %d2,%d5 <== NOT EXECUTED 455a4: 41f9 0005 756e lea 5756e <_TOD_Days_to_date>,%a0 <== NOT EXECUTED if ( year_mod_4 == 0 ) 455aa: 660c bnes 455b8 <_TOD_To_seconds+0x2c> <== NOT EXECUTED time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; 455ac: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 455b0: 0680 0000 000d addil #13,%d0 <== NOT EXECUTED 455b6: 6004 bras 455bc <_TOD_To_seconds+0x30> <== NOT EXECUTED else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 455b8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 455bc: 3030 0a00 movew %a0@(00000000,%d0:l:2),%d0 <== NOT EXECUTED 455c0: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 455c6: 2800 movel %d0,%d4 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 455c8: 0682 ffff f83c addil #-1988,%d2 <== NOT EXECUTED 455ce: e48a lsrl #2,%d2 <== 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 ]; 455d0: d881 addl %d1,%d4 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * 455d2: 2002 movel %d2,%d0 <== NOT EXECUTED 455d4: 2202 movel %d2,%d1 <== NOT EXECUTED 455d6: ed89 lsll #6,%d1 <== NOT EXECUTED 455d8: e788 lsll #3,%d0 <== NOT EXECUTED 455da: d081 addl %d1,%d0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 455dc: 262a 000c movel %a2@(12),%d3 <== 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 ) * 455e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 455e2: 43f9 0005 75a2 lea 575a2 <_TOD_Days_since_last_leap_year>,%a1 <== NOT EXECUTED 455e8: 4280 clrl %d0 <== NOT EXECUTED 455ea: 3031 5a00 movew %a1@(00000000,%d5:l:2),%d0 <== NOT EXECUTED 455ee: d1c2 addal %d2,%a0 <== NOT EXECUTED 455f0: 2242 moveal %d2,%a1 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 455f2: 2203 movel %d3,%d1 <== 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 ) * 455f4: 41f0 8c00 lea %a0@(00000000,%a0:l:4),%a0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 455f8: e58b lsll #2,%d3 <== 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 ) * 455fa: 41f1 8c00 lea %a1@(00000000,%a0:l:4),%a0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 455fe: ed89 lsll #6,%d1 <== NOT EXECUTED 45600: 9283 subl %d3,%d1 <== 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 ) * 45602: d088 addl %a0,%d0 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 45604: d084 addl %d4,%d0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 45606: d2aa 0010 addl %a2@(16),%d1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 4560a: 2400 movel %d0,%d2 <== NOT EXECUTED 4560c: 7609 moveq #9,%d3 <== NOT EXECUTED 4560e: e7aa lsll %d3,%d2 <== NOT EXECUTED 45610: ef88 lsll #7,%d0 <== NOT EXECUTED 45612: 9480 subl %d0,%d2 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 45614: 2001 movel %d1,%d0 <== NOT EXECUTED 45616: e589 lsll #2,%d1 <== NOT EXECUTED 45618: ed88 lsll #6,%d0 <== NOT EXECUTED 4561a: 9081 subl %d1,%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) 4561c: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 45620: 2602 movel %d2,%d3 <== NOT EXECUTED 45622: e98b lsll #4,%d3 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 45624: 0681 21da e500 addil #567993600,%d1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 4562a: 9682 subl %d2,%d3 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) * TOD_SECONDS_PER_MINUTE; time += the_tod->second; 4562c: d280 addl %d0,%d1 <== NOT EXECUTED time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) * ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; time *= TOD_SECONDS_PER_DAY; 4562e: 2003 movel %d3,%d0 <== NOT EXECUTED 45630: e988 lsll #4,%d0 <== NOT EXECUTED 45632: 9083 subl %d3,%d0 <== NOT EXECUTED time += the_tod->second; time += TOD_SECONDS_1970_THROUGH_1988; return( time ); } 45634: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 45638: 4e5e unlk %fp <== NOT EXECUTED 4563a: d081 addl %d1,%d0 <== NOT EXECUTED 4563c: 4e75 rts <== NOT EXECUTED ... 00045640 <_TOD_Validate>: */ bool _TOD_Validate( rtems_time_of_day *the_tod ) { 45640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45644: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45648: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t days_in_month; if ((!the_tod) || 4564a: 4a88 tstl %a0 <== NOT EXECUTED 4564c: 676c beqs 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 4564e: 43f9 0006 2322 lea 62322 <_TOD_Microseconds_per_tick>,%a1 <== NOT EXECUTED 45654: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4565a: 4c51 0000 remul %a1@,%d0,%d0 <== NOT EXECUTED 4565e: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 45662: 6356 blss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 45664: 703b moveq #59,%d0 <== NOT EXECUTED 45666: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4566a: 654e bcss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 4566c: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED 45670: 6548 bcss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 45672: 7417 moveq #23,%d2 <== NOT EXECUTED 45674: b4a8 000c cmpl %a0@(12),%d2 <== NOT EXECUTED 45678: 6540 bcss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 4567a: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 4567e: 673a beqs 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 45680: 103c 000c moveb #12,%d0 <== NOT EXECUTED 45684: b081 cmpl %d1,%d0 <== NOT EXECUTED 45686: 6532 bcss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 45688: 2010 movel %a0@,%d0 <== NOT EXECUTED 4568a: 0c80 0000 07c3 cmpil #1987,%d0 <== NOT EXECUTED 45690: 6328 blss 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED 45692: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED 45696: 4a89 tstl %a1 <== NOT EXECUTED 45698: 6720 beqs 456ba <_TOD_Validate+0x7a> <== NOT EXECUTED (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || (the_tod->day == 0) ) return false; if ( (the_tod->year % 4) == 0 ) 4569a: 143c 0003 moveb #3,%d2 <== NOT EXECUTED 4569e: c082 andl %d2,%d0 <== NOT EXECUTED 456a0: 41f9 0005 75aa lea 575aa <_TOD_Days_per_month>,%a0 <== NOT EXECUTED 456a6: 6606 bnes 456ae <_TOD_Validate+0x6e> <== NOT EXECUTED days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ]; 456a8: 2030 1c34 movel %a0@(00000034,%d1:l:4),%d0 <== NOT EXECUTED 456ac: 6004 bras 456b2 <_TOD_Validate+0x72> <== NOT EXECUTED else days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ]; 456ae: 2030 1c00 movel %a0@(00000000,%d1:l:4),%d0 <== NOT EXECUTED 456b2: b089 cmpl %a1,%d0 <== NOT EXECUTED 456b4: 54c0 scc %d0 <== NOT EXECUTED 456b6: 4480 negl %d0 <== NOT EXECUTED 456b8: 6002 bras 456bc <_TOD_Validate+0x7c> <== NOT EXECUTED 456ba: 4200 clrb %d0 <== NOT EXECUTED if ( the_tod->day > days_in_month ) return false; return true; } 456bc: 241f movel %sp@+,%d2 <== NOT EXECUTED 456be: 4e5e unlk %fp <== NOT EXECUTED 456c0: 4e75 rts <== NOT EXECUTED ... 00046804 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 46804: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46808: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4680c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46810: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED */ /* * Save original state */ original_state = the_thread->current_state; 46814: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED /* * 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 ); 46818: 2f0a movel %a2,%sp@- <== NOT EXECUTED void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 4681a: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED /* * 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 ); 4681e: 4eb9 0004 7638 jsr 47638 <_Thread_Set_transient> <== NOT EXECUTED /* * Do not bother recomputing all the priority related information if * we are not REALLY changing priority. */ if ( the_thread->current_priority != new_priority ) 46824: 588f addql #4,%sp <== NOT EXECUTED 46826: b4aa 0014 cmpl %a2@(20),%d2 <== NOT EXECUTED 4682a: 670c beqs 46838 <_Thread_Change_priority+0x34> <== NOT EXECUTED _Thread_Set_priority( the_thread, new_priority ); 4682c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4682e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46830: 4eb9 0004 74e0 jsr 474e0 <_Thread_Set_priority> <== NOT EXECUTED 46836: 508f addql #8,%sp <== NOT EXECUTED _ISR_Disable( level ); 46838: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4683e: 40c2 movew %sr,%d2 <== NOT EXECUTED 46840: 8082 orl %d2,%d0 <== NOT EXECUTED 46842: 46c0 movew %d0,%sr <== NOT EXECUTED 46844: 7204 moveq #4,%d1 <== NOT EXECUTED /* * 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; 46846: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4684a: c283 andl %d3,%d1 <== NOT EXECUTED if ( state != STATES_TRANSIENT ) { 4684c: 7604 moveq #4,%d3 <== NOT EXECUTED 4684e: b680 cmpl %d0,%d3 <== NOT EXECUTED 46850: 6730 beqs 46882 <_Thread_Change_priority+0x7e> <== NOT EXECUTED /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) 46852: 4a81 tstl %d1 <== NOT EXECUTED 46854: 6608 bnes 4685e <_Thread_Change_priority+0x5a> <== NOT EXECUTED the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); 46856: 72fb moveq #-5,%d1 <== NOT EXECUTED 46858: c280 andl %d0,%d1 <== NOT EXECUTED 4685a: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED _ISR_Enable( level ); 4685e: 46c2 movew %d2,%sr <== NOT EXECUTED if ( _States_Is_waiting_on_thread_queue( state ) ) { 46860: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED 46866: 6700 00d4 beqw 4693c <_Thread_Change_priority+0x138> <== NOT EXECUTED _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); 4686a: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 4686e: 2d6a 0044 0008 movel %a2@(68),%fp@(8) <== NOT EXECUTED if ( !_Thread_Is_executing_also_the_heir() && _Thread_Executing->is_preemptible ) _Context_Switch_necessary = TRUE; _ISR_Enable( level ); } 46874: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4687a: 4e5e unlk %fp <== NOT EXECUTED /* 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 ); 4687c: 4ef9 0004 7440 jmp 47440 <_Thread_queue_Requeue> <== NOT EXECUTED } return; } /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) { 46882: 4a81 tstl %d1 <== NOT EXECUTED 46884: 6650 bnes 468d6 <_Thread_Change_priority+0xd2> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Add_to_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 46886: 206a 0090 moveal %a2@(144),%a0 <== NOT EXECUTED 4688a: 322a 0096 movew %a2@(150),%d1 <== NOT EXECUTED 4688e: 3010 movew %a0@,%d0 <== NOT EXECUTED 46890: 8081 orl %d1,%d0 <== NOT EXECUTED 46892: 3080 movew %d0,%a0@ <== NOT EXECUTED _Priority_Major_bit_map |= the_priority_map->ready_major; 46894: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 4689a: 302a 0094 movew %a2@(148),%d0 <== NOT EXECUTED 4689e: 226a 008c moveal %a2@(140),%a1 <== NOT EXECUTED 468a2: 8081 orl %d1,%d0 <== NOT EXECUTED 468a4: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED * Interrupts are STILL disabled. * We now know the thread will be in the READY state when we remove * the TRANSIENT state. So we have to place it on the appropriate * Ready Queue with interrupts off. */ the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); 468aa: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED _Priority_Add_to_bit_map( &the_thread->Priority_map ); if ( prepend_it ) 468ae: 4a04 tstb %d4 <== NOT EXECUTED 468b0: 6710 beqs 468c2 <_Thread_Change_priority+0xbe> <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 468b2: 2051 moveal %a1@,%a0 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 468b4: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 468b8: 228a movel %a2,%a1@ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 468ba: 214a 0004 movel %a2,%a0@(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; 468be: 2488 movel %a0,%a2@ <== NOT EXECUTED 468c0: 6014 bras 468d6 <_Thread_Change_priority+0xd2> <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 468c2: 2609 movel %a1,%d3 <== NOT EXECUTED 468c4: 5883 addql #4,%d3 <== NOT EXECUTED 468c6: 2483 movel %d3,%a2@ <== NOT EXECUTED old_last_node = the_chain->last; 468c8: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED the_chain->last = the_node; 468cc: 234a 0008 movel %a2,%a1@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 468d0: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 468d4: 208a movel %a2,%a0@ <== NOT EXECUTED _Chain_Prepend_unprotected( the_thread->ready, &the_thread->Object.Node ); else _Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node ); } _ISR_Flash( level ); 468d6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 468dc: 46c2 movew %d2,%sr <== NOT EXECUTED 468de: 8082 orl %d2,%d0 <== NOT EXECUTED 468e0: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _Priority_Get_highest( void ) { Priority_Bit_map_control minor; Priority_Bit_map_control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 468e2: 3039 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d0 <== NOT EXECUTED 468e8: 4840 swap %d0 <== NOT EXECUTED 468ea: 04c0 ff1 %d0 <== NOT EXECUTED _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 468ec: 41f9 0005 7fa0 lea 57fa0 <_Priority_Bit_map>,%a0 <== NOT EXECUTED 468f2: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 468f8: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 <== NOT EXECUTED 468fc: 4841 swap %d1 <== NOT EXECUTED 468fe: 04c1 ff1 %d1 <== NOT EXECUTED * ready thread. */ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void ) { _Thread_Heir = (Thread_Control *) 46900: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 46906: e988 lsll #4,%d0 <== NOT EXECUTED 46908: d081 addl %d1,%d0 <== NOT EXECUTED 4690a: 2079 0005 7e28 moveal 57e28 <_Thread_Ready_chain>,%a0 <== NOT EXECUTED 46910: 2200 movel %d0,%d1 <== NOT EXECUTED 46912: e588 lsll #2,%d0 <== NOT EXECUTED 46914: 91c0 subal %d0,%a0 <== NOT EXECUTED 46916: e989 lsll #4,%d1 <== NOT EXECUTED 46918: 2030 1800 movel %a0@(00000000,%d1:l),%d0 <== NOT EXECUTED * is also the heir thread, and FALSE otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void ) { return ( _Thread_Executing == _Thread_Heir ); 4691c: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED * ready thread. */ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void ) { _Thread_Heir = (Thread_Control *) 46922: 23c0 0005 7f0a movel %d0,57f0a <_Thread_Heir> <== NOT EXECUTED * We altered the set of thread priorities. So let's figure out * who is the heir and if we need to switch to them. */ _Thread_Calculate_heir(); if ( !_Thread_Is_executing_also_the_heir() && 46928: b088 cmpl %a0,%d0 <== NOT EXECUTED 4692a: 670e beqs 4693a <_Thread_Change_priority+0x136> <== NOT EXECUTED 4692c: 4a28 0076 tstb %a0@(118) <== NOT EXECUTED 46930: 6708 beqs 4693a <_Thread_Change_priority+0x136> <== NOT EXECUTED _Thread_Executing->is_preemptible ) _Context_Switch_necessary = TRUE; 46932: 7001 moveq #1,%d0 <== NOT EXECUTED 46934: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 4693a: 46c2 movew %d2,%sr <== NOT EXECUTED } 4693c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 46942: 4e5e unlk %fp <== NOT EXECUTED 46944: 4e75 rts <== NOT EXECUTED ... 00046948 <_Thread_Clear_state>: void _Thread_Clear_state( Thread_Control *the_thread, States_Control state ) { 46948: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4694c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED ISR_Level level; States_Control current_state; _ISR_Disable( level ); 46950: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED void _Thread_Clear_state( Thread_Control *the_thread, States_Control state ) { 46956: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4695a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4695e: 2004 movel %d4,%d0 <== NOT EXECUTED 46960: 40c3 movew %sr,%d3 <== NOT EXECUTED 46962: 8083 orl %d3,%d0 <== NOT EXECUTED 46964: 46c0 movew %d0,%sr <== NOT EXECUTED current_state = the_thread->current_state; 46966: 222b 0010 movel %a3@(16),%d1 <== NOT EXECUTED if ( current_state & state ) { 4696a: 2002 movel %d2,%d0 <== NOT EXECUTED 4696c: c081 andl %d1,%d0 <== NOT EXECUTED 4696e: 677a beqs 469ea <_Thread_Clear_state+0xa2> <== NOT EXECUTED RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 46970: 2002 movel %d2,%d0 <== NOT EXECUTED 46972: 4680 notl %d0 <== NOT EXECUTED 46974: c081 andl %d1,%d0 <== NOT EXECUTED current_state = 46976: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED the_thread->current_state = _States_Clear( state, current_state ); if ( _States_Is_ready( current_state ) ) { 4697a: 666e bnes 469ea <_Thread_Clear_state+0xa2> <== NOT EXECUTED _Priority_Add_to_bit_map( &the_thread->Priority_map ); _Chain_Append_unprotected(the_thread->ready, &the_thread->Object.Node); 4697c: 206b 008c moveal %a3@(140),%a0 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 46980: 2008 movel %a0,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Add_to_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 46982: 226b 0090 moveal %a3@(144),%a1 <== NOT EXECUTED 46986: 5880 addql #4,%d0 <== NOT EXECUTED 46988: 2680 movel %d0,%a3@ <== NOT EXECUTED old_last_node = the_chain->last; 4698a: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4698e: 322b 0096 movew %a3@(150),%d1 <== NOT EXECUTED 46992: 3011 movew %a1@,%d0 <== NOT EXECUTED 46994: 8081 orl %d1,%d0 <== NOT EXECUTED 46996: 3280 movew %d0,%a1@ <== NOT EXECUTED the_chain->last = the_node; 46998: 214b 0008 movel %a3,%a0@(8) <== NOT EXECUTED _Priority_Major_bit_map |= the_priority_map->ready_major; 4699c: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 469a2: 302b 0094 movew %a3@(148),%d0 <== NOT EXECUTED 469a6: 8081 orl %d1,%d0 <== NOT EXECUTED 469a8: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 469ae: 274a 0004 movel %a2,%a3@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 469b2: 248b movel %a3,%a2@ <== NOT EXECUTED _ISR_Flash( level ); 469b4: 2004 movel %d4,%d0 <== NOT EXECUTED 469b6: 46c3 movew %d3,%sr <== NOT EXECUTED 469b8: 8083 orl %d3,%d0 <== NOT EXECUTED 469ba: 46c0 movew %d0,%sr <== NOT EXECUTED * 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 ) { 469bc: 2079 0005 7f0a moveal 57f0a <_Thread_Heir>,%a0 <== NOT EXECUTED 469c2: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED 469c6: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 469ca: 641e bccs 469ea <_Thread_Clear_state+0xa2> <== NOT EXECUTED _Thread_Heir = the_thread; if ( _Thread_Executing->is_preemptible || 469cc: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED * 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 ) { _Thread_Heir = the_thread; 469d2: 23cb 0005 7f0a movel %a3,57f0a <_Thread_Heir> <== NOT EXECUTED if ( _Thread_Executing->is_preemptible || 469d8: 4a28 0076 tstb %a0@(118) <== NOT EXECUTED 469dc: 6604 bnes 469e2 <_Thread_Clear_state+0x9a> <== NOT EXECUTED 469de: 4a80 tstl %d0 <== NOT EXECUTED 469e0: 6608 bnes 469ea <_Thread_Clear_state+0xa2> <== NOT EXECUTED the_thread->current_priority == 0 ) _Context_Switch_necessary = TRUE; 469e2: 7001 moveq #1,%d0 <== NOT EXECUTED 469e4: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED } } } _ISR_Enable( level ); 469ea: 46c3 movew %d3,%sr <== NOT EXECUTED } 469ec: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 <== NOT EXECUTED 469f0: 4e5e unlk %fp <== NOT EXECUTED 469f2: 4e75 rts 000469f4 <_Thread_Close>: void _Thread_Close( Objects_Information *information, Thread_Control *the_thread ) { 469f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 469f8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 469fa: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 469fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46a00: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46a04: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED 46a08: 4280 clrl %d0 <== NOT EXECUTED 46a0a: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 46a0e: 42b0 0c00 clrl %a0@(00000000,%d0:l:4) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 46a12: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46a18: 5380 subql #1,%d0 <== NOT EXECUTED 46a1a: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED * disappear and set a transient state on it. So we temporarily * unnest dispatching. */ _Thread_Unnest_dispatch(); _User_extensions_Thread_delete( the_thread ); 46a20: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a22: 4eb9 0004 7be0 jsr 47be0 <_User_extensions_Thread_delete> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46a28: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46a2e: 5280 addql #1,%d0 <== NOT EXECUTED 46a30: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * 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 ); 46a36: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a38: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46a3a: 4eb9 0004 6150 jsr 46150 <_Objects_Close> <== NOT EXECUTED /* * 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 ); 46a40: 4878 0001 pea 1 <== NOT EXECUTED 46a44: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a46: 4eb9 0004 754c jsr 4754c <_Thread_Set_state> <== NOT EXECUTED if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { 46a4c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a4e: 4eb9 0004 7368 jsr 47368 <_Thread_queue_Extract_with_proxy> <== NOT EXECUTED 46a54: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 46a5a: 4a00 tstb %d0 <== NOT EXECUTED 46a5c: 6614 bnes 46a72 <_Thread_Close+0x7e> <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) 46a5e: 7002 moveq #2,%d0 <== NOT EXECUTED 46a60: b0ab 0050 cmpl %a3@(80),%d0 <== NOT EXECUTED 46a64: 660c bnes 46a72 <_Thread_Close+0x7e> <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 46a66: 486b 0048 pea %a3@(72) <== NOT EXECUTED 46a6a: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 46a70: 588f addql #4,%sp <== 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 ) ) 46a72: b7f9 0005 7f02 cmpal 57f02 <_Thread_Allocated_fp>,%a3 <== NOT EXECUTED 46a78: 6606 bnes 46a80 <_Thread_Close+0x8c> <== NOT EXECUTED */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void ) { _Thread_Allocated_fp = NULL; 46a7a: 42b9 0005 7f02 clrl 57f02 <_Thread_Allocated_fp> <== NOT EXECUTED _Thread_Deallocate_fp(); #endif the_thread->fp_context = NULL; if ( the_thread->Start.fp_context ) 46a80: 202b 00c8 movel %a3@(200),%d0 <== NOT EXECUTED #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; 46a84: 42ab 0104 clrl %a3@(260) <== NOT EXECUTED if ( the_thread->Start.fp_context ) 46a88: 4a80 tstl %d0 <== NOT EXECUTED 46a8a: 670a beqs 46a96 <_Thread_Close+0xa2> <== NOT EXECUTED (void) _Workspace_Free( the_thread->Start.fp_context ); 46a8c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46a8e: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 46a94: 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 ); 46a96: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a98: 4eb9 0004 7704 jsr 47704 <_Thread_Stack_Free> <== NOT EXECUTED the_thread->Start.stack = NULL; if ( the_thread->extensions ) 46a9e: 202b 0118 movel %a3@(280),%d0 <== 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 ); the_thread->Start.stack = NULL; 46aa2: 42ab 00cc clrl %a3@(204) <== NOT EXECUTED if ( the_thread->extensions ) 46aa6: 588f addql #4,%sp <== NOT EXECUTED 46aa8: 4a80 tstl %d0 <== NOT EXECUTED 46aaa: 670a beqs 46ab6 <_Thread_Close+0xc2> <== NOT EXECUTED (void) _Workspace_Free( the_thread->extensions ); 46aac: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46aae: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 46ab4: 588f addql #4,%sp <== NOT EXECUTED the_thread->extensions = NULL; 46ab6: 42ab 0118 clrl %a3@(280) <== NOT EXECUTED } 46aba: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46abe: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46ac2: 4e5e unlk %fp <== NOT EXECUTED 46ac4: 4e75 rts <== NOT EXECUTED ... 00046ac8 <_Thread_Create_idle>: * * _Thread_Create_idle */ void _Thread_Create_idle( void ) { 46ac8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * This routine allocates an internal thread. */ RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Internal_allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_Thread_Internal_information ); 46acc: 4879 0005 7fce pea 57fce <_Thread_Internal_information> <== NOT EXECUTED 46ad2: 4eb9 0004 60c8 jsr 460c8 <_Objects_Allocate> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46ad8: 2239 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d1 <== NOT EXECUTED 46ade: 5281 addql #1,%d1 <== NOT EXECUTED /* * The entire workspace is zeroed during its initialization. Thus, all * fields not explicitly assigned were explicitly zeroed by * _Workspace_Initialization. */ _Thread_Idle = _Thread_Internal_allocate(); 46ae0: 23c0 0005 8016 movel %d0,58016 <_Thread_Idle> <== NOT EXECUTED 46ae6: 23c1 0005 7e7c movel %d1,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED * that when _Thread_Initialize unnests dispatch that we do not * do anything stupid. */ _Thread_Disable_dispatch(); _Thread_Initialize( 46aec: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 46af2: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 46af6: 4879 0005 515c pea 5515c <== NOT EXECUTED 46afc: 4280 clrl %d0 <== NOT EXECUTED 46afe: 1039 0005 62f2 moveb 562f2 ,%d0 <== NOT EXECUTED 46b04: 42a7 clrl %sp@- <== NOT EXECUTED 46b06: 2239 0005 62ee movel 562ee ,%d1 <== NOT EXECUTED 46b0c: 42a7 clrl %sp@- <== NOT EXECUTED 46b0e: 42a7 clrl %sp@- <== NOT EXECUTED 46b10: 4878 0001 pea 1 <== NOT EXECUTED 46b14: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46b16: 42a7 clrl %sp@- <== NOT EXECUTED 46b18: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 46b1a: 6302 blss 46b1e <_Thread_Create_idle+0x56> <== NOT EXECUTED 46b1c: 2208 movel %a0,%d1 <== NOT EXECUTED 46b1e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46b20: 42a7 clrl %sp@- <== NOT EXECUTED 46b22: 2f39 0005 8016 movel 58016 <_Thread_Idle>,%sp@- <== NOT EXECUTED 46b28: 4879 0005 7fce pea 57fce <_Thread_Internal_information> <== NOT EXECUTED 46b2e: 4eb9 0004 6dc8 jsr 46dc8 <_Thread_Initialize> <== NOT EXECUTED * MUST be done before _Thread_Start is invoked. */ _Thread_Heir = _Thread_Executing = _Thread_Idle; _Thread_Start( 46b34: dffc 0000 002c addal #44,%sp <== NOT EXECUTED 46b3a: 4297 clrl %sp@ <== NOT EXECUTED 46b3c: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 46b42: 42a7 clrl %sp@- <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 46b44: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46b4a: 2f28 0014 movel %a0@(20),%sp@- <== NOT EXECUTED /* * WARNING!!! This is necessary to "kick" start the system and * MUST be done before _Thread_Start is invoked. */ _Thread_Heir = 46b4e: 2239 0005 8016 movel 58016 <_Thread_Idle>,%d1 <== NOT EXECUTED _Thread_Executing = _Thread_Idle; _Thread_Start( 46b54: 42a7 clrl %sp@- <== NOT EXECUTED 46b56: 5380 subql #1,%d0 <== NOT EXECUTED 46b58: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46b5a: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * WARNING!!! This is necessary to "kick" start the system and * MUST be done before _Thread_Start is invoked. */ _Thread_Heir = 46b60: 23c1 0005 7f3a movel %d1,57f3a <_Thread_Executing> <== NOT EXECUTED 46b66: 23c1 0005 7f0a movel %d1,57f0a <_Thread_Heir> <== NOT EXECUTED _Thread_Executing = _Thread_Idle; _Thread_Start( 46b6c: 4eb9 0004 7798 jsr 47798 <_Thread_Start> <== NOT EXECUTED 46b72: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED _Configuration_Table->idle_task, NULL, 0 ); } 46b78: 4e5e unlk %fp <== NOT EXECUTED 46b7a: 4e75 rts 00046b7c <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored ) { 46b7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 46b80: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46b84: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46b88: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 46b8e: 508f addql #8,%sp <== NOT EXECUTED 46b90: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46b94: 661e bnes 46bb4 <_Thread_Delay_ended+0x38> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 46b96: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 46b9c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46b9e: 4eb9 0004 6948 jsr 46948 <_Thread_Clear_state> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 46ba4: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46baa: 508f addql #8,%sp <== NOT EXECUTED 46bac: 5380 subql #1,%d0 <== NOT EXECUTED 46bae: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED case OBJECTS_LOCAL: _Thread_Unblock( the_thread ); _Thread_Unnest_dispatch(); break; } } 46bb4: 4e5e unlk %fp <== NOT EXECUTED 46bb6: 4e75 rts 00046bb8 <_Thread_Dispatch>: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) { 46bb8: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 46bbc: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); 46bc0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED { Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; 46bc6: 2679 0005 7f3a moveal 57f3a <_Thread_Executing>,%a3 <== NOT EXECUTED _ISR_Disable( level ); 46bcc: 2200 movel %d0,%d1 <== NOT EXECUTED 46bce: 40c2 movew %sr,%d2 <== NOT EXECUTED 46bd0: 8282 orl %d2,%d1 <== NOT EXECUTED 46bd2: 46c1 movew %d1,%sr <== NOT EXECUTED _ISR_Enable( level ); #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS { struct timespec uptime, ran; _TOD_Get_uptime( &uptime ); 46bd4: 280e movel %fp,%d4 <== NOT EXECUTED _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 46bd6: 260e movel %fp,%d3 <== NOT EXECUTED _ISR_Enable( level ); #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS { struct timespec uptime, ran; _TOD_Get_uptime( &uptime ); 46bd8: 5184 subql #8,%d4 <== NOT EXECUTED _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 46bda: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED _Timespec_Add_to( &executing->cpu_time_used, &ran ); 46be0: 2e3c 0004 79c8 movel #293320,%d7 <== NOT EXECUTED if ( _Thread_libc_reent ) { executing->libc_reent = *_Thread_libc_reent; *_Thread_libc_reent = heir->libc_reent; } _User_extensions_Thread_switch( executing, heir ); 46be6: 2c3c 0004 7c50 movel #293968,%d6 <== NOT EXECUTED if ( executing->fp_context != NULL ) _Context_Save_fp( &executing->fp_context ); #endif #endif _Context_Switch( &executing->Registers, &heir->Registers ); 46bec: 2a3c 0004 7f68 movel #294760,%d5 <== NOT EXECUTED #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); _Context_Restore_fp( &executing->fp_context ); 46bf2: 4bf9 0004 7f84 lea 47f84 <_CPU_Context_restore_fp>,%a5 <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 46bf8: 49f9 0004 7f80 lea 47f80 <_CPU_Context_save_fp>,%a4 <== NOT EXECUTED 46bfe: 6000 00d4 braw 46cd4 <_Thread_Dispatch+0x11c> <== NOT EXECUTED ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Context_Switch_necessary == TRUE ) { heir = _Thread_Heir; 46c02: 2479 0005 7f0a moveal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED _Thread_Dispatch_disable_level = 1; 46c08: 7001 moveq #1,%d0 <== NOT EXECUTED 46c0a: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Context_Switch_necessary = FALSE; 46c10: 4201 clrb %d1 <== NOT EXECUTED 46c12: 13c1 0005 7f4a moveb %d1,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _Thread_Executing = heir; 46c18: 23ca 0005 7f3a movel %a2,57f3a <_Thread_Executing> <== NOT EXECUTED #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 ) 46c1e: b0aa 007c cmpl %a2@(124),%d0 <== NOT EXECUTED 46c22: 660a bnes 46c2e <_Thread_Dispatch+0x76> <== NOT EXECUTED heir->cpu_time_budget = _Thread_Ticks_per_timeslice; 46c24: 41f9 0005 7e2c lea 57e2c <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 46c2a: 2550 0078 movel %a0@,%a2@(120) <== NOT EXECUTED _ISR_Enable( level ); 46c2e: 46c2 movew %d2,%sr <== NOT EXECUTED #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS { struct timespec uptime, ran; _TOD_Get_uptime( &uptime ); 46c30: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46c32: 4eb9 0004 a350 jsr 4a350 <_TOD_Get_uptime> <== NOT EXECUTED _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); 46c38: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46c3a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46c3c: 4879 0005 7f42 pea 57f42 <_Thread_Time_of_last_context_switch> <== NOT EXECUTED 46c42: 4eb9 0004 7a00 jsr 47a00 <_Timespec_Subtract> <== NOT EXECUTED _Timespec_Add_to( &executing->cpu_time_used, &ran ); 46c48: 2047 moveal %d7,%a0 <== NOT EXECUTED 46c4a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46c4c: 486b 0084 pea %a3@(132) <== NOT EXECUTED 46c50: 4e90 jsr %a0@ <== NOT EXECUTED #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 46c52: 2079 0005 7f06 moveal 57f06 <_Thread_libc_reent>,%a0 <== NOT EXECUTED { struct timespec uptime, ran; _TOD_Get_uptime( &uptime ); _Timespec_Subtract(&_Thread_Time_of_last_context_switch, &uptime, &ran); _Timespec_Add_to( &executing->cpu_time_used, &ran ); _Thread_Time_of_last_context_switch = uptime; 46c58: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46c5c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 46c60: 23c0 0005 7f42 movel %d0,57f42 <_Thread_Time_of_last_context_switch> <== NOT EXECUTED 46c66: 23c1 0005 7f46 movel %d1,57f46 <_Thread_Time_of_last_context_switch+0x4> <== NOT EXECUTED #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 46c6c: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 46c72: 4a88 tstl %a0 <== NOT EXECUTED 46c74: 6708 beqs 46c7e <_Thread_Dispatch+0xc6> <== NOT EXECUTED executing->libc_reent = *_Thread_libc_reent; 46c76: 2750 0108 movel %a0@,%a3@(264) <== NOT EXECUTED *_Thread_libc_reent = heir->libc_reent; 46c7a: 20aa 0108 movel %a2@(264),%a0@ <== NOT EXECUTED } _User_extensions_Thread_switch( executing, heir ); 46c7e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46c80: 2046 moveal %d6,%a0 <== NOT EXECUTED 46c82: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46c84: 4e90 jsr %a0@ <== NOT EXECUTED if ( executing->fp_context != NULL ) _Context_Save_fp( &executing->fp_context ); #endif #endif _Context_Switch( &executing->Registers, &heir->Registers ); 46c86: 486a 00d0 pea %a2@(208) <== NOT EXECUTED 46c8a: 2045 moveal %d5,%a0 <== NOT EXECUTED 46c8c: 486b 00d0 pea %a3@(208) <== NOT EXECUTED 46c90: 4e90 jsr %a0@ <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && 46c92: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 46c98: 4aab 0104 tstl %a3@(260) <== NOT EXECUTED 46c9c: 6724 beqs 46cc2 <_Thread_Dispatch+0x10a> <== NOT EXECUTED #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 ); 46c9e: 2079 0005 7f02 moveal 57f02 <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 46ca4: b1cb cmpal %a3,%a0 <== NOT EXECUTED 46ca6: 671a beqs 46cc2 <_Thread_Dispatch+0x10a> <== NOT EXECUTED !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) 46ca8: 4a88 tstl %a0 <== NOT EXECUTED 46caa: 6708 beqs 46cb4 <_Thread_Dispatch+0xfc> <== NOT EXECUTED _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 46cac: 4868 0104 pea %a0@(260) <== NOT EXECUTED 46cb0: 4e94 jsr %a4@ <== NOT EXECUTED 46cb2: 588f addql #4,%sp <== NOT EXECUTED _Context_Restore_fp( &executing->fp_context ); 46cb4: 486b 0104 pea %a3@(260) <== NOT EXECUTED 46cb8: 4e95 jsr %a5@ <== NOT EXECUTED _Thread_Allocated_fp = executing; 46cba: 588f addql #4,%sp <== NOT EXECUTED 46cbc: 23cb 0005 7f02 movel %a3,57f02 <_Thread_Allocated_fp> <== NOT EXECUTED if ( executing->fp_context != NULL ) _Context_Restore_fp( &executing->fp_context ); #endif #endif executing = _Thread_Executing; 46cc2: 2679 0005 7f3a moveal 57f3a <_Thread_Executing>,%a3 <== NOT EXECUTED _ISR_Disable( level ); 46cc8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46cce: 40c2 movew %sr,%d2 <== NOT EXECUTED 46cd0: 8082 orl %d2,%d0 <== NOT EXECUTED 46cd2: 46c0 movew %d0,%sr <== NOT EXECUTED Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Context_Switch_necessary == TRUE ) { 46cd4: 1039 0005 7f4a moveb 57f4a <_Context_Switch_necessary>,%d0 <== NOT EXECUTED 46cda: 6600 ff26 bnew 46c02 <_Thread_Dispatch+0x4a> <== NOT EXECUTED executing = _Thread_Executing; _ISR_Disable( level ); } _Thread_Dispatch_disable_level = 0; 46cde: 42b9 0005 7e7c clrl 57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _ISR_Enable( level ); 46ce4: 46c2 movew %d2,%sr <== NOT EXECUTED if ( _Thread_Do_post_task_switch_extension || 46ce6: 4ab9 0005 7f22 tstl 57f22 <_Thread_Do_post_task_switch_extension> <== NOT EXECUTED 46cec: 6606 bnes 46cf4 <_Thread_Dispatch+0x13c> <== NOT EXECUTED 46cee: 4a2b 0075 tstb %a3@(117) <== NOT EXECUTED 46cf2: 670c beqs 46d00 <_Thread_Dispatch+0x148> <== NOT EXECUTED executing->do_post_task_switch_extension ) { executing->do_post_task_switch_extension = false; 46cf4: 4200 clrb %d0 <== NOT EXECUTED 46cf6: 1740 0075 moveb %d0,%a3@(117) <== NOT EXECUTED _API_extensions_Run_postswitch(); 46cfa: 4eb9 0004 5810 jsr 45810 <_API_extensions_Run_postswitch> <== NOT EXECUTED } } 46d00: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 46d06: 4e5e unlk %fp <== NOT EXECUTED 46d08: 4e75 rts 00046d0a <_Thread_Enable_dispatch>: #if ( (CPU_INLINE_ENABLE_DISPATCH == FALSE) || \ (__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ == 1) ) void _Thread_Enable_dispatch( void ) { if ( --_Thread_Dispatch_disable_level ) 46d0a: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46d10: 5380 subql #1,%d0 <== NOT EXECUTED 46d12: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED 46d18: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED */ #if ( (CPU_INLINE_ENABLE_DISPATCH == FALSE) || \ (__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ == 1) ) void _Thread_Enable_dispatch( void ) { 46d1e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( --_Thread_Dispatch_disable_level ) 46d22: 4a80 tstl %d0 <== NOT EXECUTED 46d24: 6608 bnes 46d2e <_Thread_Enable_dispatch+0x24> <== NOT EXECUTED return; _Thread_Dispatch(); } 46d26: 4e5e unlk %fp <== NOT EXECUTED (__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ == 1) ) void _Thread_Enable_dispatch( void ) { if ( --_Thread_Dispatch_disable_level ) return; _Thread_Dispatch(); 46d28: 4ef9 0004 6bb8 jmp 46bb8 <_Thread_Dispatch> <== NOT EXECUTED } 46d2e: 4e5e unlk %fp <== NOT EXECUTED 46d30: 4e75 rts <== NOT EXECUTED ... 0004b5a0 <_Thread_Evaluate_mode>: bool _Thread_Evaluate_mode( void ) { Thread_Control *executing; executing = _Thread_Executing; 4b5a0: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED * * XXX */ bool _Thread_Evaluate_mode( void ) { 4b5a6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Thread_Control *executing; executing = _Thread_Executing; if ( !_States_Is_ready( executing->current_state ) || 4b5aa: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 4b5ae: 660e bnes 4b5be <_Thread_Evaluate_mode+0x1e> <== NOT EXECUTED 4b5b0: b1f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a0 <== NOT EXECUTED 4b5b6: 6710 beqs 4b5c8 <_Thread_Evaluate_mode+0x28> <== NOT EXECUTED 4b5b8: 4a28 0076 tstb %a0@(118) <== NOT EXECUTED 4b5bc: 670a beqs 4b5c8 <_Thread_Evaluate_mode+0x28> <== NOT EXECUTED ( !_Thread_Is_heir( executing ) && executing->is_preemptible ) ) { _Context_Switch_necessary = TRUE; 4b5be: 7001 moveq #1,%d0 <== NOT EXECUTED 4b5c0: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED 4b5c6: 6002 bras 4b5ca <_Thread_Evaluate_mode+0x2a> <== NOT EXECUTED return TRUE; 4b5c8: 4200 clrb %d0 <== NOT EXECUTED } return FALSE; } 4b5ca: 4e5e unlk %fp <== NOT EXECUTED 4b5cc: 4e75 rts <== NOT EXECUTED ... 00046d34 <_Thread_Get>: Thread_Control *_Thread_Get ( Objects_Id id, Objects_Locations *location ) { 46d34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46d38: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46d3a: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 46d3e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d40: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 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 ) ) { 46d44: 6618 bnes 46d5e <_Thread_Get+0x2a> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46d46: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46d4c: 5280 addql #1,%d0 <== NOT EXECUTED 46d4e: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); *location = OBJECTS_LOCAL; tp = _Thread_Executing; 46d54: 2039 0005 7f3a movel 57f3a <_Thread_Executing>,%d0 <== NOT EXECUTED 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; 46d5a: 4291 clrl %a1@ <== NOT EXECUTED 46d5c: 604c bras 46daa <_Thread_Get+0x76> <== 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); 46d5e: 7018 moveq #24,%d0 <== NOT EXECUTED 46d60: 2202 movel %d2,%d1 <== NOT EXECUTED 46d62: e0a9 lsrl %d0,%d1 <== NOT EXECUTED 46d64: 7607 moveq #7,%d3 <== NOT EXECUTED 46d66: c283 andl %d3,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 46d68: 2001 movel %d1,%d0 <== NOT EXECUTED 46d6a: 5380 subql #1,%d0 <== NOT EXECUTED 46d6c: 163c 0003 moveb #3,%d3 <== NOT EXECUTED 46d70: b680 cmpl %d0,%d3 <== NOT EXECUTED 46d72: 6442 bccs 46db6 <_Thread_Get+0x82> <== NOT EXECUTED 46d74: 600e bras 46d84 <_Thread_Get+0x50> <== NOT EXECUTED if ( the_class != 1 ) { /* threads are always first class :) */ *location = OBJECTS_ERROR; goto done; } api_information = _Objects_Information_table[ the_api ]; 46d76: 41f9 0005 7e34 lea 57e34 <_Objects_Information_table>,%a0 <== NOT EXECUTED 46d7c: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED if ( !api_information ) { 46d80: 4a88 tstl %a0 <== NOT EXECUTED 46d82: 6608 bnes 46d8c <_Thread_Get+0x58> <== NOT EXECUTED *location = OBJECTS_ERROR; 46d84: 7401 moveq #1,%d2 <== NOT EXECUTED 46d86: 2282 movel %d2,%a1@ <== NOT EXECUTED 46d88: 4280 clrl %d0 <== NOT EXECUTED 46d8a: 601e bras 46daa <_Thread_Get+0x76> <== NOT EXECUTED goto done; } information = api_information[ the_class ]; 46d8c: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED if ( !information ) { 46d90: 6606 bnes 46d98 <_Thread_Get+0x64> <== NOT EXECUTED *location = OBJECTS_ERROR; 46d92: 7201 moveq #1,%d1 <== NOT EXECUTED 46d94: 2281 movel %d1,%a1@ <== NOT EXECUTED 46d96: 6012 bras 46daa <_Thread_Get+0x76> <== NOT EXECUTED goto done; } tp = (Thread_Control *) _Objects_Get( information, id, location ); 46d98: 2f09 movel %a1,%sp@- <== NOT EXECUTED 46d9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d9c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46d9e: 4eb9 0004 6528 jsr 46528 <_Objects_Get> <== NOT EXECUTED 46da4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED done: return tp; } 46daa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46dae: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46db2: 4e5e unlk %fp <== NOT EXECUTED 46db4: 4e75 rts <== NOT EXECUTED *location = OBJECTS_ERROR; goto done; } the_class = _Objects_Get_class( id ); if ( the_class != 1 ) { /* threads are always first class :) */ 46db6: 761b moveq #27,%d3 <== NOT EXECUTED 46db8: 2002 movel %d2,%d0 <== NOT EXECUTED 46dba: e6a8 lsrl %d3,%d0 <== NOT EXECUTED 46dbc: 163c 0001 moveb #1,%d3 <== NOT EXECUTED 46dc0: b680 cmpl %d0,%d3 <== NOT EXECUTED 46dc2: 67b2 beqs 46d76 <_Thread_Get+0x42> <== NOT EXECUTED 46dc4: 60be bras 46d84 <_Thread_Get+0x50> <== NOT EXECUTED ... 0004b5d0 <_Thread_Handler>: * * Output parameters: NONE */ void _Thread_Handler( void ) { 4b5d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b5d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED #if defined(__USE_INIT_FINI__) || defined(__USE__MAIN__) static char doneConstructors; char doneCons; #endif executing = _Thread_Executing; 4b5d6: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED * * Output parameters: NONE */ void _Thread_Handler( void ) { 4b5dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * have to put level into a register for those cpu's that use * inline asm here */ level = executing->Start.isr_level; 4b5de: 222a 00b6 movel %a2@(182),%d1 <== NOT EXECUTED _ISR_Set_level(level); 4b5e2: 40c0 movew %sr,%d0 <== NOT EXECUTED 4b5e4: e189 lsll #8,%d1 <== NOT EXECUTED 4b5e6: 0280 0000 f8ff andil #63743,%d0 <== NOT EXECUTED 4b5ec: 8081 orl %d1,%d0 <== NOT EXECUTED 4b5ee: 46c0 movew %d0,%sr <== NOT EXECUTED #if defined(__USE_INIT_FINI__) || defined(__USE__MAIN__) doneCons = doneConstructors; 4b5f0: 1439 0005 766c moveb 5766c ,%d2 <== NOT EXECUTED doneConstructors = 1; 4b5f6: 7001 moveq #1,%d0 <== NOT EXECUTED 4b5f8: 13c0 0005 766c moveb %d0,5766c <== NOT EXECUTED #endif #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && !_Thread_Is_allocated_fp( executing ) ) { 4b5fe: 4aaa 0104 tstl %a2@(260) <== NOT EXECUTED 4b602: 6720 beqs 4b624 <_Thread_Handler+0x54> <== NOT EXECUTED #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 ); 4b604: 2079 0005 7f02 moveal 57f02 <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 4b60a: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4b60c: 6716 beqs 4b624 <_Thread_Handler+0x54> <== NOT EXECUTED if ( _Thread_Allocated_fp != NULL ) 4b60e: 4a88 tstl %a0 <== NOT EXECUTED 4b610: 670c beqs 4b61e <_Thread_Handler+0x4e> <== NOT EXECUTED _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 4b612: 4868 0104 pea %a0@(260) <== NOT EXECUTED 4b616: 4eb9 0004 7f80 jsr 47f80 <_CPU_Context_save_fp> <== NOT EXECUTED 4b61c: 588f addql #4,%sp <== NOT EXECUTED _Thread_Allocated_fp = executing; 4b61e: 23ca 0005 7f02 movel %a2,57f02 <_Thread_Allocated_fp> <== NOT EXECUTED * 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 ); 4b624: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b626: 4eb9 0004 7af8 jsr 47af8 <_User_extensions_Thread_begin> <== NOT EXECUTED /* * At this point, the dispatch disable level BETTER be 1. */ _Thread_Enable_dispatch(); 4b62c: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== 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) */ 4b632: 588f addql #4,%sp <== NOT EXECUTED 4b634: 4a02 tstb %d2 <== NOT EXECUTED 4b636: 6606 bnes 4b63e <_Thread_Handler+0x6e> <== NOT EXECUTED { _init (); 4b638: 4eb9 0005 48a8 jsr 548a8 <_init> <== NOT EXECUTED #if defined(__USE__MAIN__) if (!doneCons && _main) __main (); #endif switch ( executing->Start.prototype ) { 4b63e: 202a 00a0 movel %a2@(160),%d0 <== NOT EXECUTED 4b642: 7201 moveq #1,%d1 <== NOT EXECUTED 4b644: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b646: 671a beqs 4b662 <_Thread_Handler+0x92> <== NOT EXECUTED 4b648: 6212 bhis 4b65c <_Thread_Handler+0x8c> <== NOT EXECUTED 4b64a: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4b64e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b650: 6722 beqs 4b674 <_Thread_Handler+0xa4> <== NOT EXECUTED 4b652: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4b656: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b658: 6644 bnes 4b69e <_Thread_Handler+0xce> <== NOT EXECUTED 4b65a: 602e bras 4b68a <_Thread_Handler+0xba> <== NOT EXECUTED case THREAD_START_NUMERIC: executing->Wait.return_argument = 4b65c: 2f2a 00a8 movel %a2@(168),%sp@- <== NOT EXECUTED 4b660: 6004 bras 4b666 <_Thread_Handler+0x96> <== NOT EXECUTED (*(Thread_Entry_numeric) executing->Start.entry_point)( executing->Start.numeric_argument ); break; case THREAD_START_POINTER: executing->Wait.return_argument = 4b662: 2f2a 00a4 movel %a2@(164),%sp@- <== NOT EXECUTED 4b666: 206a 009c moveal %a2@(156),%a0 <== NOT EXECUTED 4b66a: 4e90 jsr %a0@ <== NOT EXECUTED 4b66c: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4b670: 588f addql #4,%sp <== NOT EXECUTED 4b672: 602a bras 4b69e <_Thread_Handler+0xce> <== NOT EXECUTED (*(Thread_Entry_pointer) executing->Start.entry_point)( executing->Start.pointer_argument ); break; case THREAD_START_BOTH_POINTER_FIRST: executing->Wait.return_argument = 4b674: 2f2a 00a8 movel %a2@(168),%sp@- <== NOT EXECUTED 4b678: 2f2a 00a4 movel %a2@(164),%sp@- <== NOT EXECUTED 4b67c: 206a 009c moveal %a2@(156),%a0 <== NOT EXECUTED 4b680: 4e90 jsr %a0@ <== NOT EXECUTED 4b682: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4b686: 508f addql #8,%sp <== NOT EXECUTED 4b688: 6014 bras 4b69e <_Thread_Handler+0xce> <== NOT EXECUTED executing->Start.pointer_argument, executing->Start.numeric_argument ); break; case THREAD_START_BOTH_NUMERIC_FIRST: executing->Wait.return_argument = 4b68a: 2f2a 00a4 movel %a2@(164),%sp@- <== NOT EXECUTED 4b68e: 2f2a 00a8 movel %a2@(168),%sp@- <== NOT EXECUTED 4b692: 206a 009c moveal %a2@(156),%a0 <== NOT EXECUTED 4b696: 4e90 jsr %a0@ <== NOT EXECUTED 4b698: 508f addql #8,%sp <== NOT EXECUTED 4b69a: 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 ); 4b69e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b6a0: 4eb9 0004 7b28 jsr 47b28 <_User_extensions_Thread_exitted> <== NOT EXECUTED _Internal_error_Occurred( 4b6a6: 4878 0006 pea 6 <== NOT EXECUTED 4b6aa: 4878 0001 pea 1 <== NOT EXECUTED 4b6ae: 42a7 clrl %sp@- <== NOT EXECUTED 4b6b0: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED ... 00046f4c <_Thread_Handler_initialization>: /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!_Configuration_Table->stack_allocate_hook) 46f4c: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 46f52: 4aa8 0024 tstl %a0@(36) <== NOT EXECUTED 46f56: 57c1 seq %d1 <== NOT EXECUTED 46f58: 4aa8 0020 tstl %a0@(32) <== NOT EXECUTED 46f5c: 57c0 seq %d0 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) , uint32_t maximum_proxies #endif ) { 46f5e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!_Configuration_Table->stack_allocate_hook) 46f62: 4480 negl %d0 <== NOT EXECUTED 46f64: 4481 negl %d1 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) , uint32_t maximum_proxies #endif ) { 46f66: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * BOTH stacks hooks must be set or both must be NULL. * Do not allow mixture. */ if ( !( (!_Configuration_Table->stack_allocate_hook) 46f68: b380 eorl %d1,%d0 <== NOT EXECUTED 46f6a: 4a00 tstb %d0 <== NOT EXECUTED 46f6c: 6710 beqs 46f7e <_Thread_Handler_initialization+0x32> <== NOT EXECUTED == (!_Configuration_Table->stack_free_hook) ) ) _Internal_error_Occurred( 46f6e: 4878 000f pea f <== NOT EXECUTED 46f72: 4878 0001 pea 1 <== NOT EXECUTED 46f76: 42a7 clrl %sp@- <== NOT EXECUTED 46f78: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED _Thread_Maximum_extensions = maximum_extensions; _Thread_Ticks_per_timeslice = ticks_per_timeslice; _Thread_Ready_chain = (Chain_Control *) _Workspace_Allocate_or_fatal_error( 46f7e: 4280 clrl %d0 <== NOT EXECUTED 46f80: 1039 0005 62f2 moveb 562f2 ,%d0 <== NOT EXECUTED 46f86: 5280 addql #1,%d0 <== NOT EXECUTED 46f88: 2200 movel %d0,%d1 <== NOT EXECUTED 46f8a: e588 lsll #2,%d0 <== NOT EXECUTED 46f8c: e989 lsll #4,%d1 <== NOT EXECUTED 46f8e: 9280 subl %d0,%d1 <== NOT EXECUTED 46f90: 2f01 movel %d1,%sp@- <== NOT EXECUTED _Thread_Allocated_fp = NULL; #endif _Thread_Do_post_task_switch_extension = 0; _Thread_Maximum_extensions = maximum_extensions; 46f92: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED 46f96: 23d0 0005 7f1e movel %a0@,57f1e <_Thread_Maximum_extensions> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_BAD_STACK_HOOK ); _Context_Switch_necessary = FALSE; 46f9c: 4200 clrb %d0 <== NOT EXECUTED _Thread_Do_post_task_switch_extension = 0; _Thread_Maximum_extensions = maximum_extensions; _Thread_Ticks_per_timeslice = ticks_per_timeslice; 46f9e: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED 46fa2: 23d0 0005 7e2c movel %a0@,57e2c <_Thread_Ticks_per_timeslice> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_BAD_STACK_HOOK ); _Context_Switch_necessary = FALSE; 46fa8: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _Thread_Executing = NULL; 46fae: 42b9 0005 7f3a clrl 57f3a <_Thread_Executing> <== NOT EXECUTED _Thread_Ready_chain = (Chain_Control *) _Workspace_Allocate_or_fatal_error( (PRIORITY_MAXIMUM + 1) * sizeof(Chain_Control) ); for ( index=0; index <= PRIORITY_MAXIMUM ; index++ ) 46fb4: 4282 clrl %d2 <== NOT EXECUTED INTERNAL_ERROR_BAD_STACK_HOOK ); _Context_Switch_necessary = FALSE; _Thread_Executing = NULL; _Thread_Heir = NULL; 46fb6: 42b9 0005 7f0a clrl 57f0a <_Thread_Heir> <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) _Thread_Allocated_fp = NULL; 46fbc: 42b9 0005 7f02 clrl 57f02 <_Thread_Allocated_fp> <== NOT EXECUTED #endif _Thread_Do_post_task_switch_extension = 0; 46fc2: 42b9 0005 7f22 clrl 57f22 <_Thread_Do_post_task_switch_extension> <== NOT EXECUTED _Thread_Maximum_extensions = maximum_extensions; _Thread_Ticks_per_timeslice = ticks_per_timeslice; _Thread_Ready_chain = (Chain_Control *) _Workspace_Allocate_or_fatal_error( 46fc8: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED (PRIORITY_MAXIMUM + 1) * sizeof(Chain_Control) ); for ( index=0; index <= PRIORITY_MAXIMUM ; index++ ) 46fce: 1439 0005 62f2 moveb 562f2 ,%d2 <== NOT EXECUTED 46fd4: 2040 moveal %d0,%a0 <== NOT EXECUTED 46fd6: 588f addql #4,%sp <== NOT EXECUTED 46fd8: 4281 clrl %d1 <== NOT EXECUTED _Thread_Maximum_extensions = maximum_extensions; _Thread_Ticks_per_timeslice = ticks_per_timeslice; _Thread_Ready_chain = (Chain_Control *) _Workspace_Allocate_or_fatal_error( 46fda: 23c0 0005 7e28 movel %d0,57e28 <_Thread_Ready_chain> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 46fe0: 2008 movel %a0,%d0 <== NOT EXECUTED 46fe2: 5880 addql #4,%d0 <== NOT EXECUTED 46fe4: 2080 movel %d0,%a0@ <== NOT EXECUTED (PRIORITY_MAXIMUM + 1) * sizeof(Chain_Control) ); for ( index=0; index <= PRIORITY_MAXIMUM ; index++ ) 46fe6: 5281 addql #1,%d1 <== NOT EXECUTED the_chain->permanent_null = NULL; 46fe8: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 46fec: 2148 0008 movel %a0,%a0@(8) <== NOT EXECUTED 46ff0: d1fc 0000 000c addal #12,%a0 <== NOT EXECUTED 46ff6: b481 cmpl %d1,%d2 <== NOT EXECUTED 46ff8: 64e6 bccs 46fe0 <_Thread_Handler_initialization+0x94> <== NOT EXECUTED /* * Initialize this class of objects. */ _Objects_Initialize_information( 46ffa: 4878 0008 pea 8 <== NOT EXECUTED 46ffe: 4878 0001 pea 1 <== NOT EXECUTED 47002: 4878 0120 pea 120 <== NOT EXECUTED 47006: 4878 0001 pea 1 <== NOT EXECUTED 4700a: 4878 0001 pea 1 <== NOT EXECUTED 4700e: 4878 0001 pea 1 <== NOT EXECUTED 47012: 4879 0005 7fce pea 57fce <_Thread_Internal_information> <== NOT EXECUTED 47018: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 4701e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED /* * Initialize this class of objects. */ _Objects_Initialize_information( 47022: dffc 0000 001c addal #28,%sp <== NOT EXECUTED FALSE, /* TRUE if this is a global object class */ NULL /* Proxy extraction support callout */ #endif ); } 47028: 4e5e unlk %fp <== NOT EXECUTED 4702a: 4e75 rts 00046dc8 <_Thread_Initialize>: Thread_CPU_budget_algorithms budget_algorithm, Thread_CPU_budget_algorithm_callout budget_callout, uint32_t isr_level, Objects_Name name ) { 46dc8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46dcc: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED 46dd0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 46dd4: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 46dd8: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 46ddc: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED 46de0: 2c2e 0024 movel %fp@(36),%d6 <== NOT EXECUTED 46de4: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED 46de8: 1a2e 0023 moveb %fp@(35),%d5 <== NOT EXECUTED /* * Allocate and Initialize the stack for this thread. */ if ( !stack_area ) { 46dec: 4a81 tstl %d1 <== NOT EXECUTED 46dee: 6620 bnes 46e10 <_Thread_Initialize+0x48> <== NOT EXECUTED actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); 46df0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46df2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46df4: 4eb9 0004 76b8 jsr 476b8 <_Thread_Stack_Allocate> <== NOT EXECUTED if ( !actual_stack_size || actual_stack_size < stack_size ) 46dfa: 508f addql #8,%sp <== NOT EXECUTED 46dfc: 4a80 tstl %d0 <== NOT EXECUTED 46dfe: 6700 013e beqw 46f3e <_Thread_Initialize+0x176> <== NOT EXECUTED 46e02: b480 cmpl %d0,%d2 <== NOT EXECUTED 46e04: 6200 0138 bhiw 46f3e <_Thread_Initialize+0x176> <== NOT EXECUTED return FALSE; /* stack allocation failed */ stack = the_thread->Start.stack; 46e08: 222a 00cc movel %a2@(204),%d1 <== NOT EXECUTED the_thread->Start.core_allocated_stack = TRUE; 46e0c: 7401 moveq #1,%d2 <== NOT EXECUTED 46e0e: 6004 bras 46e14 <_Thread_Initialize+0x4c> <== NOT EXECUTED } else { stack = stack_area; actual_stack_size = stack_size; the_thread->Start.core_allocated_stack = FALSE; 46e10: 2002 movel %d2,%d0 <== NOT EXECUTED 46e12: 4202 clrb %d2 <== NOT EXECUTED 46e14: 1542 00be moveb %d2,%a2@(190) <== NOT EXECUTED Stack_Control *the_stack, void *starting_address, size_t size ) { the_stack->area = starting_address; 46e18: 2541 00c4 movel %d1,%a2@(196) <== NOT EXECUTED the_stack->size = size; 46e1c: 2540 00c0 movel %d0,%a2@(192) <== NOT EXECUTED /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { 46e20: 4a03 tstb %d3 <== NOT EXECUTED 46e22: 6714 beqs 46e38 <_Thread_Initialize+0x70> <== NOT EXECUTED fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 46e24: 4878 001c pea 1c <== NOT EXECUTED 46e28: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED if ( !fp_area ) { 46e2e: 588f addql #4,%sp <== NOT EXECUTED */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 46e30: 2400 movel %d0,%d2 <== NOT EXECUTED if ( !fp_area ) { 46e32: 6606 bnes 46e3a <_Thread_Initialize+0x72> <== NOT EXECUTED 46e34: 6000 00fe braw 46f34 <_Thread_Initialize+0x16c> <== NOT EXECUTED _Thread_Stack_Free( the_thread ); return FALSE; 46e38: 4282 clrl %d2 <== NOT EXECUTED /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 46e3a: 2039 0005 7f1e movel 57f1e <_Thread_Maximum_extensions>,%d0 <== NOT EXECUTED fp_area = _Context_Fp_start( fp_area, 0 ); } else fp_area = NULL; the_thread->fp_context = fp_area; 46e40: 2542 0104 movel %d2,%a2@(260) <== NOT EXECUTED the_thread->Start.fp_context = fp_area; 46e44: 2542 00c8 movel %d2,%a2@(200) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46e48: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED the_watchdog->routine = routine; 46e4c: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED the_watchdog->id = id; 46e50: 42aa 0068 clrl %a2@(104) <== NOT EXECUTED the_watchdog->user_data = user_data; 46e54: 42aa 006c clrl %a2@(108) <== NOT EXECUTED /* * Clear the libc reent hook. */ the_thread->libc_reent = NULL; 46e58: 42aa 0108 clrl %a2@(264) <== NOT EXECUTED /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 46e5c: 4a80 tstl %d0 <== NOT EXECUTED 46e5e: 6718 beqs 46e78 <_Thread_Initialize+0xb0> <== NOT EXECUTED extensions_area = _Workspace_Allocate( 46e60: e588 lsll #2,%d0 <== NOT EXECUTED 46e62: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e64: 4868 0004 pea %a0@(4) <== NOT EXECUTED 46e68: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) { 46e6e: 588f addql #4,%sp <== NOT EXECUTED /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { extensions_area = _Workspace_Allocate( 46e70: 2600 movel %d0,%d3 <== NOT EXECUTED (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) { 46e72: 6606 bnes 46e7a <_Thread_Initialize+0xb2> <== NOT EXECUTED 46e74: 6000 00b0 braw 46f26 <_Thread_Initialize+0x15e> <== NOT EXECUTED (void) _Workspace_Free( fp_area ); #endif _Thread_Stack_Free( the_thread ); return FALSE; 46e78: 4283 clrl %d3 <== NOT EXECUTED } } else extensions_area = NULL; the_thread->extensions = (void **) extensions_area; 46e7a: 2543 0118 movel %d3,%a2@(280) <== NOT EXECUTED * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { 46e7e: 671a beqs 46e9a <_Thread_Initialize+0xd2> <== NOT EXECUTED 46e80: 4281 clrl %d1 <== NOT EXECUTED 46e82: 600a bras 46e8e <_Thread_Initialize+0xc6> <== NOT EXECUTED uint32_t i; for ( i = 0; i < (_Thread_Maximum_extensions + 1); i++ ) the_thread->extensions[i] = NULL; 46e84: 206a 0118 moveal %a2@(280),%a0 <== NOT EXECUTED 46e88: 42b0 1c00 clrl %a0@(00000000,%d1:l:4) <== NOT EXECUTED * call. */ if ( the_thread->extensions ) { uint32_t i; for ( i = 0; i < (_Thread_Maximum_extensions + 1); i++ ) 46e8c: 5281 addql #1,%d1 <== NOT EXECUTED 46e8e: 2039 0005 7f1e movel 57f1e <_Thread_Maximum_extensions>,%d0 <== NOT EXECUTED 46e94: 5280 addql #1,%d0 <== NOT EXECUTED 46e96: b081 cmpl %d1,%d0 <== NOT EXECUTED 46e98: 62ea bhis 46e84 <_Thread_Initialize+0xbc> <== NOT EXECUTED /* * General initialization */ the_thread->Start.is_preemptible = is_preemptible; 46e9a: 1545 00ac moveb %d5,%a2@(172) <== NOT EXECUTED the_thread->Start.budget_algorithm = budget_algorithm; 46e9e: 2546 00ae movel %d6,%a2@(174) <== NOT EXECUTED the_thread->Start.budget_callout = budget_callout; switch ( budget_algorithm ) { 46ea2: 7002 moveq #2,%d0 <== NOT EXECUTED * General initialization */ the_thread->Start.is_preemptible = is_preemptible; the_thread->Start.budget_algorithm = budget_algorithm; the_thread->Start.budget_callout = budget_callout; 46ea4: 256e 0028 00b2 movel %fp@(40),%a2@(178) <== NOT EXECUTED switch ( budget_algorithm ) { 46eaa: b086 cmpl %d6,%d0 <== NOT EXECUTED 46eac: 660a bnes 46eb8 <_Thread_Initialize+0xf0> <== NOT EXECUTED case THREAD_CPU_BUDGET_ALGORITHM_NONE: case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: break; case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 46eae: 41f9 0005 7e2c lea 57e2c <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 46eb4: 2550 0078 movel %a0@,%a2@(120) <== NOT EXECUTED the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->suspend_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority ); 46eb8: 2f04 movel %d4,%sp@- <== NOT EXECUTED break; } the_thread->Start.isr_level = isr_level; the_thread->current_state = STATES_DORMANT; 46eba: 7001 moveq #1,%d0 <== NOT EXECUTED break; case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: break; } the_thread->Start.isr_level = isr_level; 46ebc: 256e 002c 00b6 movel %fp@(44),%a2@(182) <== NOT EXECUTED the_thread->current_state = STATES_DORMANT; 46ec2: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->suspend_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority ); 46ec6: 2f0a movel %a2,%sp@- <== NOT EXECUTED } the_thread->Start.isr_level = isr_level; the_thread->current_state = STATES_DORMANT; the_thread->Wait.queue = NULL; 46ec8: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED the_thread->resource_count = 0; 46ecc: 42aa 001c clrl %a2@(28) <== NOT EXECUTED the_thread->suspend_count = 0; 46ed0: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED the_thread->real_priority = priority; 46ed4: 2544 0018 movel %d4,%a2@(24) <== NOT EXECUTED the_thread->Start.initial_priority = priority; 46ed8: 2544 00ba movel %d4,%a2@(186) <== NOT EXECUTED _Thread_Set_priority( the_thread, priority ); 46edc: 4eb9 0004 74e0 jsr 474e0 <_Thread_Set_priority> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46ee2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 46ee6: 256e 0030 000c movel %fp@(48),%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46eec: 2068 001a moveal %a0@(26),%a0 <== NOT EXECUTED 46ef0: 4280 clrl %d0 <== NOT EXECUTED 46ef2: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 46ef6: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED /* * Initialize the CPU usage statistics */ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS the_thread->cpu_time_used.tv_sec = 0; 46efa: 42aa 0084 clrl %a2@(132) <== NOT EXECUTED the_thread->cpu_time_used.tv_nsec = 0; 46efe: 42aa 0088 clrl %a2@(136) <== NOT EXECUTED * 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 ); 46f02: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f04: 4eb9 0004 7ba4 jsr 47ba4 <_User_extensions_Thread_create> <== NOT EXECUTED if ( !extension_status ) { 46f0a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46f10: 4a00 tstb %d0 <== NOT EXECUTED 46f12: 6704 beqs 46f18 <_Thread_Initialize+0x150> <== NOT EXECUTED 46f14: 7001 moveq #1,%d0 <== NOT EXECUTED 46f16: 6028 bras 46f40 <_Thread_Initialize+0x178> <== NOT EXECUTED if ( extensions_area ) 46f18: 4a83 tstl %d3 <== NOT EXECUTED 46f1a: 670a beqs 46f26 <_Thread_Initialize+0x15e> <== NOT EXECUTED (void) _Workspace_Free( extensions_area ); 46f1c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46f1e: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 46f24: 588f addql #4,%sp <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( fp_area ) 46f26: 4a82 tstl %d2 <== NOT EXECUTED 46f28: 670a beqs 46f34 <_Thread_Initialize+0x16c> <== NOT EXECUTED (void) _Workspace_Free( fp_area ); 46f2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f2c: 4eb9 0004 7e94 jsr 47e94 <_Workspace_Free> <== NOT EXECUTED 46f32: 588f addql #4,%sp <== NOT EXECUTED #endif _Thread_Stack_Free( the_thread ); 46f34: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f36: 4eb9 0004 7704 jsr 47704 <_Thread_Stack_Free> <== NOT EXECUTED 46f3c: 588f addql #4,%sp <== NOT EXECUTED return FALSE; 46f3e: 4200 clrb %d0 <== NOT EXECUTED } return TRUE; } 46f40: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 46f46: 4e5e unlk %fp <== NOT EXECUTED 46f48: 4e75 rts <== NOT EXECUTED ... 0004a664 <_Thread_Load_environment>: */ void _Thread_Load_environment( Thread_Control *the_thread ) { 4a664: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a668: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED bool is_fp; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( the_thread->Start.fp_context ) { 4a66c: 2069 00c8 moveal %a1@(200),%a0 <== NOT EXECUTED 4a670: 4a88 tstl %a0 <== NOT EXECUTED 4a672: 6734 beqs 4a6a8 <_Thread_Load_environment+0x44> <== NOT EXECUTED the_thread->fp_context = the_thread->Start.fp_context; 4a674: 2348 0104 movel %a0,%a1@(260) <== NOT EXECUTED _Context_Initialize_fp( &the_thread->fp_context ); 4a678: 4281 clrl %d1 <== NOT EXECUTED 4a67a: 4280 clrl %d0 <== NOT EXECUTED 4a67c: 2141 0018 movel %d1,%a0@(24) <== NOT EXECUTED 4a680: 4241 clrw %d1 <== NOT EXECUTED 4a682: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED 4a686: 3141 0002 movew %d1,%a0@(2) <== NOT EXECUTED 4a68a: 3141 0004 movew %d1,%a0@(4) <== NOT EXECUTED 4a68e: 3141 0006 movew %d1,%a0@(6) <== NOT EXECUTED 4a692: 3141 0008 movew %d1,%a0@(8) <== NOT EXECUTED 4a696: 3141 000a movew %d1,%a0@(10) <== NOT EXECUTED 4a69a: 4280 clrl %d0 <== NOT EXECUTED 4a69c: 4281 clrl %d1 <== NOT EXECUTED 4a69e: 4250 clrw %a0@ <== NOT EXECUTED 4a6a0: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED 4a6a4: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED the_thread->do_post_task_switch_extension = false; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; the_thread->budget_callout = the_thread->Start.budget_callout; _Context_Initialize( 4a6a8: 2069 00c0 moveal %a1@(192),%a0 <== NOT EXECUTED 4a6ac: 5988 subql #4,%a0 <== NOT EXECUTED 4a6ae: d1e9 00c4 addal %a1@(196),%a0 <== NOT EXECUTED 4a6b2: 2029 00b6 movel %a1@(182),%d0 <== NOT EXECUTED 4a6b6: 2348 0100 movel %a0,%a1@(256) <== NOT EXECUTED 4a6ba: e188 lsll #8,%d0 <== NOT EXECUTED 4a6bc: 0080 0000 3000 oril #12288,%d0 <== NOT EXECUTED } else #endif is_fp = false; the_thread->do_post_task_switch_extension = false; 4a6c2: 4201 clrb %d1 <== NOT EXECUTED the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; 4a6c4: 2369 00ae 007c movel %a1@(174),%a1@(124) <== NOT EXECUTED the_thread->Start.isr_level, _Thread_Handler, is_fp ); } 4a6ca: 4e5e unlk %fp <== NOT EXECUTED the_thread->do_post_task_switch_extension = false; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; the_thread->budget_callout = the_thread->Start.budget_callout; 4a6cc: 2369 00b2 0080 movel %a1@(178),%a1@(128) <== NOT EXECUTED } else #endif is_fp = false; the_thread->do_post_task_switch_extension = false; 4a6d2: 1341 0075 moveb %d1,%a1@(117) <== NOT EXECUTED the_thread->is_preemptible = the_thread->Start.is_preemptible; 4a6d6: 1369 00ac 0076 moveb %a1@(172),%a1@(118) <== NOT EXECUTED the_thread->budget_algorithm = the_thread->Start.budget_algorithm; the_thread->budget_callout = the_thread->Start.budget_callout; _Context_Initialize( 4a6dc: 2340 00d0 movel %d0,%a1@(208) <== NOT EXECUTED 4a6e0: 20bc 0004 b5d0 movel #308688,%a0@ <== NOT EXECUTED the_thread->Start.isr_level, _Thread_Handler, is_fp ); } 4a6e6: 4e75 rts 0004a910 <_Thread_Ready>: */ void _Thread_Ready( Thread_Control *the_thread ) { 4a910: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4a914: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED ISR_Level level; Thread_Control *heir; _ISR_Disable( level ); 4a918: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED */ void _Thread_Ready( Thread_Control *the_thread ) { 4a91e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ISR_Level level; Thread_Control *heir; _ISR_Disable( level ); 4a922: 2002 movel %d2,%d0 <== NOT EXECUTED 4a924: 40c3 movew %sr,%d3 <== NOT EXECUTED 4a926: 8083 orl %d3,%d0 <== NOT EXECUTED 4a928: 46c0 movew %d0,%sr <== NOT EXECUTED the_thread->current_state = STATES_READY; _Priority_Add_to_bit_map( &the_thread->Priority_map ); _Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node ); 4a92a: 2268 008c moveal %a0@(140),%a1 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4a92e: 2009 movel %a1,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Add_to_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 4a930: 2468 0090 moveal %a0@(144),%a2 <== NOT EXECUTED 4a934: 5880 addql #4,%d0 <== NOT EXECUTED 4a936: 2080 movel %d0,%a0@ <== NOT EXECUTED old_last_node = the_chain->last; 4a938: 2669 0008 moveal %a1@(8),%a3 <== NOT EXECUTED 4a93c: 3228 0096 movew %a0@(150),%d1 <== NOT EXECUTED 4a940: 3012 movew %a2@,%d0 <== NOT EXECUTED 4a942: 8081 orl %d1,%d0 <== NOT EXECUTED 4a944: 3480 movew %d0,%a2@ <== NOT EXECUTED the_chain->last = the_node; 4a946: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED _Priority_Major_bit_map |= the_priority_map->ready_major; 4a94a: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 4a950: 3028 0094 movew %a0@(148),%d0 <== NOT EXECUTED 4a954: 8081 orl %d1,%d0 <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4a956: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED 4a95a: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED ISR_Level level; Thread_Control *heir; _ISR_Disable( level ); the_thread->current_state = STATES_READY; 4a960: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 4a964: 2688 movel %a0,%a3@ <== NOT EXECUTED _Priority_Add_to_bit_map( &the_thread->Priority_map ); _Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node ); _ISR_Flash( level ); 4a966: 46c3 movew %d3,%sr <== NOT EXECUTED 4a968: 8483 orl %d3,%d2 <== NOT EXECUTED 4a96a: 46c2 movew %d2,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _Priority_Get_highest( void ) { Priority_Bit_map_control minor; Priority_Bit_map_control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 4a96c: 3039 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d0 <== NOT EXECUTED 4a972: 4840 swap %d0 <== NOT EXECUTED 4a974: 04c0 ff1 %d0 <== NOT EXECUTED _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 4a976: 41f9 0005 7fa0 lea 57fa0 <_Priority_Bit_map>,%a0 <== NOT EXECUTED 4a97c: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 4a982: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 <== NOT EXECUTED 4a986: 4841 swap %d1 <== NOT EXECUTED 4a988: 04c1 ff1 %d1 <== NOT EXECUTED * ready thread. */ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void ) { _Thread_Heir = (Thread_Control *) 4a98a: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 4a990: e988 lsll #4,%d0 <== NOT EXECUTED 4a992: d081 addl %d1,%d0 <== NOT EXECUTED 4a994: 2079 0005 7e28 moveal 57e28 <_Thread_Ready_chain>,%a0 <== NOT EXECUTED 4a99a: 2200 movel %d0,%d1 <== NOT EXECUTED 4a99c: e588 lsll #2,%d0 <== NOT EXECUTED 4a99e: 91c0 subal %d0,%a0 <== NOT EXECUTED 4a9a0: e989 lsll #4,%d1 <== NOT EXECUTED 4a9a2: 2030 1800 movel %a0@(00000000,%d1:l),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Executing ); 4a9a6: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED * ready thread. */ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void ) { _Thread_Heir = (Thread_Control *) 4a9ac: 23c0 0005 7f0a movel %d0,57f0a <_Thread_Heir> <== NOT EXECUTED _Thread_Calculate_heir(); heir = _Thread_Heir; if ( !_Thread_Is_executing( heir ) && _Thread_Executing->is_preemptible ) 4a9b2: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4a9b4: 670e beqs 4a9c4 <_Thread_Ready+0xb4> <== NOT EXECUTED 4a9b6: 4a28 0076 tstb %a0@(118) <== NOT EXECUTED 4a9ba: 6708 beqs 4a9c4 <_Thread_Ready+0xb4> <== NOT EXECUTED _Context_Switch_necessary = TRUE; 4a9bc: 7001 moveq #1,%d0 <== NOT EXECUTED 4a9be: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 4a9c4: 46c3 movew %d3,%sr <== NOT EXECUTED } 4a9c6: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a9ca: 4e5e unlk %fp <== NOT EXECUTED 4a9cc: 4e75 rts <== NOT EXECUTED ... 0004b20c <_Thread_Reset>: void _Thread_Reset( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 4b20c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b210: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b212: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; the_thread->budget_callout = the_thread->Start.budget_callout; the_thread->Start.pointer_argument = pointer_argument; the_thread->Start.numeric_argument = numeric_argument; 4b216: 256e 0010 00a8 movel %fp@(16),%a2@(168) <== NOT EXECUTED the_thread->suspend_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; the_thread->budget_callout = the_thread->Start.budget_callout; the_thread->Start.pointer_argument = pointer_argument; 4b21c: 256e 000c 00a4 movel %fp@(12),%a2@(164) <== NOT EXECUTED Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; the_thread->suspend_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; 4b222: 156a 00ac 0076 moveb %a2@(172),%a2@(118) <== NOT EXECUTED Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; 4b228: 42aa 001c clrl %a2@(28) <== NOT EXECUTED the_thread->suspend_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; 4b22c: 256a 00ae 007c movel %a2@(174),%a2@(124) <== NOT EXECUTED the_thread->budget_callout = the_thread->Start.budget_callout; 4b232: 256a 00b2 0080 movel %a2@(178),%a2@(128) <== NOT EXECUTED void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; the_thread->suspend_count = 0; 4b238: 42aa 0070 clrl %a2@(112) <== 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 ) ) { 4b23c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b23e: 4eb9 0004 7ad0 jsr 47ad0 <_Thread_queue_Extract_with_proxy> <== NOT EXECUTED 4b244: 588f addql #4,%sp <== NOT EXECUTED 4b246: 4a00 tstb %d0 <== NOT EXECUTED 4b248: 6614 bnes 4b25e <_Thread_Reset+0x52> <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) 4b24a: 7002 moveq #2,%d0 <== NOT EXECUTED 4b24c: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4b250: 660c bnes 4b25e <_Thread_Reset+0x52> <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4b252: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4b256: 4eb9 0004 85d8 jsr 485d8 <_Watchdog_Remove> <== NOT EXECUTED 4b25c: 588f addql #4,%sp <== NOT EXECUTED } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { 4b25e: 202a 00ba movel %a2@(186),%d0 <== NOT EXECUTED 4b262: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4b266: 6718 beqs 4b280 <_Thread_Reset+0x74> <== NOT EXECUTED the_thread->real_priority = the_thread->Start.initial_priority; _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4b268: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4b26c: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) (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; 4b270: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); } } 4b274: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b278: 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 ); 4b27a: 4ef9 0004 7ce4 jmp 47ce4 <_Thread_Set_priority> <== NOT EXECUTED } } 4b280: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b284: 4e5e unlk %fp <== NOT EXECUTED 4b286: 4e75 rts 0004a9d0 <_Thread_Reset_timeslice>: * ready chain * select heir */ void _Thread_Reset_timeslice( void ) { 4a9d0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4a9d4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; 4a9d8: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED ready = executing->ready; _ISR_Disable( level ); 4a9de: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->ready; 4a9e4: 266a 008c moveal %a2@(140),%a3 <== NOT EXECUTED _ISR_Disable( level ); 4a9e8: 2002 movel %d2,%d0 <== NOT EXECUTED 4a9ea: 40c1 movew %sr,%d1 <== NOT EXECUTED 4a9ec: 8081 orl %d1,%d0 <== NOT EXECUTED 4a9ee: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Chain_Has_only_one_node( ready ) ) { 4a9f0: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED 4a9f4: b093 cmpl %a3@,%d0 <== NOT EXECUTED 4a9f6: 6604 bnes 4a9fc <_Thread_Reset_timeslice+0x2c> <== NOT EXECUTED _ISR_Enable( level ); 4a9f8: 46c1 movew %d1,%sr <== NOT EXECUTED 4a9fa: 6040 bras 4aa3c <_Thread_Reset_timeslice+0x6c> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4a9fc: 2052 moveal %a2@,%a0 <== NOT EXECUTED previous = the_node->previous; 4a9fe: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED next->previous = previous; previous->next = next; 4aa02: 2288 movel %a0,%a1@ <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4aa04: 200b movel %a3,%d0 <== NOT EXECUTED 4aa06: 5880 addql #4,%d0 <== NOT EXECUTED 4aa08: 2480 movel %d0,%a2@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 4aa0a: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; 4aa0e: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED the_chain->last = the_node; 4aa12: 274a 0008 movel %a2,%a3@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4aa16: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 4aa1a: 208a movel %a2,%a0@ <== NOT EXECUTED return; } _Chain_Extract_unprotected( &executing->Object.Node ); _Chain_Append_unprotected( ready, &executing->Object.Node ); _ISR_Flash( level ); 4aa1c: 2002 movel %d2,%d0 <== NOT EXECUTED 4aa1e: 46c1 movew %d1,%sr <== NOT EXECUTED 4aa20: 8081 orl %d1,%d0 <== NOT EXECUTED 4aa22: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Thread_Is_heir( executing ) ) 4aa24: b5f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED 4aa2a: 6606 bnes 4aa32 <_Thread_Reset_timeslice+0x62> <== NOT EXECUTED _Thread_Heir = (Thread_Control *) ready->first; 4aa2c: 23d3 0005 7f0a movel %a3@,57f0a <_Thread_Heir> <== NOT EXECUTED _Context_Switch_necessary = TRUE; 4aa32: 7001 moveq #1,%d0 <== NOT EXECUTED 4aa34: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 4aa3a: 46c1 movew %d1,%sr <== NOT EXECUTED } 4aa3c: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 4aa40: 4e5e unlk %fp <== NOT EXECUTED 4aa42: 4e75 rts 00047c48 <_Thread_Restart>: bool _Thread_Restart( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 47c48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47c4c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c4e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !_States_Is_dormant( the_thread->current_state ) ) { 47c52: 7001 moveq #1,%d0 <== NOT EXECUTED bool _Thread_Restart( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 47c54: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !_States_Is_dormant( the_thread->current_state ) ) { 47c56: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED 47c5a: 4a00 tstb %d0 <== NOT EXECUTED 47c5c: 6704 beqs 47c62 <_Thread_Restart+0x1a> <== NOT EXECUTED 47c5e: 4202 clrb %d2 <== NOT EXECUTED 47c60: 6072 bras 47cd4 <_Thread_Restart+0x8c> <== NOT EXECUTED _Thread_Set_transient( the_thread ); 47c62: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c64: 4eb9 0004 7e3c jsr 47e3c <_Thread_Set_transient> <== NOT EXECUTED _Thread_Reset( the_thread, pointer_argument, numeric_argument ); 47c6a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47c6e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47c72: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c74: 4eb9 0004 b20c jsr 4b20c <_Thread_Reset> <== NOT EXECUTED _Thread_Load_environment( the_thread ); 47c7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c7c: 4eb9 0004 aea0 jsr 4aea0 <_Thread_Load_environment> <== NOT EXECUTED _Thread_Ready( the_thread ); 47c82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c84: 4eb9 0004 b14c jsr 4b14c <_Thread_Ready> <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); 47c8a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c8c: 4eb9 0004 841c jsr 4841c <_User_extensions_Thread_restart> <== NOT EXECUTED if ( _Thread_Is_executing ( the_thread ) ) 47c92: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 47c98: b5f9 0005 9882 cmpal 59882 <_Thread_Executing>,%a2 <== NOT EXECUTED 47c9e: 6704 beqs 47ca4 <_Thread_Restart+0x5c> <== NOT EXECUTED 47ca0: 7401 moveq #1,%d2 <== NOT EXECUTED 47ca2: 6030 bras 47cd4 <_Thread_Restart+0x8c> <== 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 ) 47ca4: 4aaa 0104 tstl %a2@(260) <== NOT EXECUTED 47ca8: 670c beqs 47cb6 <_Thread_Restart+0x6e> <== NOT EXECUTED _Context_Restore_fp( &_Thread_Executing->fp_context ); 47caa: 486a 0104 pea %a2@(260) <== NOT EXECUTED 47cae: 4eb9 0004 87c0 jsr 487c0 <_CPU_Context_restore_fp> <== NOT EXECUTED 47cb4: 588f addql #4,%sp <== NOT EXECUTED #endif _CPU_Context_Restart_self( &_Thread_Executing->Registers ); 47cb6: 2079 0005 9882 moveal 59882 <_Thread_Executing>,%a0 <== NOT EXECUTED 47cbc: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED 47cc0: 2028 0100 movel %a0@(256),%d0 <== NOT EXECUTED 47cc4: 46c1 movew %d1,%sr <== NOT EXECUTED 47cc6: 2e40 moveal %d0,%sp <== NOT EXECUTED 47cc8: 4e75 rts <== NOT EXECUTED 47cca: 7401 moveq #1,%d2 <== NOT EXECUTED 47ccc: 2140 0100 movel %d0,%a0@(256) <== NOT EXECUTED 47cd0: 2141 00d0 movel %d1,%a0@(208) <== NOT EXECUTED return TRUE; } return FALSE; } 47cd4: 1002 moveb %d2,%d0 <== NOT EXECUTED 47cd6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47cda: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47cde: 4e5e unlk %fp <== NOT EXECUTED 47ce0: 4e75 rts <== NOT EXECUTED ... 000486a8 <_Thread_Resume>: void _Thread_Resume( Thread_Control *the_thread, bool force ) { 486a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 486ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 486b0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 486b4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED ISR_Level level; States_Control current_state; _ISR_Disable( level ); 486b8: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 486be: 40c2 movew %sr,%d2 <== NOT EXECUTED 486c0: 8282 orl %d2,%d1 <== NOT EXECUTED 486c2: 46c1 movew %d1,%sr <== NOT EXECUTED if ( force == TRUE ) 486c4: 4a00 tstb %d0 <== NOT EXECUTED 486c6: 6706 beqs 486ce <_Thread_Resume+0x26> <== NOT EXECUTED the_thread->suspend_count = 0; 486c8: 42ab 0070 clrl %a3@(112) <== NOT EXECUTED 486cc: 6004 bras 486d2 <_Thread_Resume+0x2a> <== NOT EXECUTED else the_thread->suspend_count--; 486ce: 53ab 0070 subql #1,%a3@(112) <== NOT EXECUTED if ( the_thread->suspend_count > 0 ) { 486d2: 4aab 0070 tstl %a3@(112) <== NOT EXECUTED 486d6: 6706 beqs 486de <_Thread_Resume+0x36> <== NOT EXECUTED _ISR_Enable( level ); 486d8: 46c2 movew %d2,%sr <== NOT EXECUTED 486da: 6000 008a braw 48766 <_Thread_Resume+0xbe> <== NOT EXECUTED return; } current_state = the_thread->current_state; 486de: 202b 0010 movel %a3@(16),%d0 <== NOT EXECUTED if ( current_state & STATES_SUSPENDED ) { 486e2: 0800 0001 btst #1,%d0 <== NOT EXECUTED 486e6: 677c beqs 48764 <_Thread_Resume+0xbc> <== NOT EXECUTED 486e8: 72fd moveq #-3,%d1 <== NOT EXECUTED 486ea: c081 andl %d1,%d0 <== NOT EXECUTED current_state = 486ec: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state); if ( _States_Is_ready( current_state ) ) { 486f0: 6672 bnes 48764 <_Thread_Resume+0xbc> <== NOT EXECUTED _Priority_Add_to_bit_map( &the_thread->Priority_map ); _Chain_Append_unprotected(the_thread->ready, &the_thread->Object.Node); 486f2: 206b 008c moveal %a3@(140),%a0 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 486f6: 2008 movel %a0,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Add_to_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 486f8: 226b 0090 moveal %a3@(144),%a1 <== NOT EXECUTED 486fc: 5880 addql #4,%d0 <== NOT EXECUTED 486fe: 2680 movel %d0,%a3@ <== NOT EXECUTED old_last_node = the_chain->last; 48700: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 48704: 322b 0096 movew %a3@(150),%d1 <== NOT EXECUTED 48708: 3011 movew %a1@,%d0 <== NOT EXECUTED 4870a: 8081 orl %d1,%d0 <== NOT EXECUTED 4870c: 3280 movew %d0,%a1@ <== NOT EXECUTED the_chain->last = the_node; 4870e: 214b 0008 movel %a3,%a0@(8) <== NOT EXECUTED _Priority_Major_bit_map |= the_priority_map->ready_major; 48712: 3239 0006 2248 movew 62248 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 48718: 302b 0094 movew %a3@(148),%d0 <== NOT EXECUTED 4871c: 8081 orl %d1,%d0 <== NOT EXECUTED 4871e: 33c0 0006 2248 movew %d0,62248 <_Priority_Major_bit_map> <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 48724: 274a 0004 movel %a2,%a3@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 48728: 248b movel %a3,%a2@ <== NOT EXECUTED _ISR_Flash( level ); 4872a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 48730: 46c2 movew %d2,%sr <== NOT EXECUTED 48732: 8082 orl %d2,%d0 <== NOT EXECUTED 48734: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_thread->current_priority < _Thread_Heir->current_priority ) { 48736: 2079 0006 2222 moveal 62222 <_Thread_Heir>,%a0 <== NOT EXECUTED 4873c: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED 48740: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 48744: 641e bccs 48764 <_Thread_Resume+0xbc> <== NOT EXECUTED _Thread_Heir = the_thread; if ( _Thread_Executing->is_preemptible || 48746: 2079 0006 2252 moveal 62252 <_Thread_Executing>,%a0 <== NOT EXECUTED _Chain_Append_unprotected(the_thread->ready, &the_thread->Object.Node); _ISR_Flash( level ); if ( the_thread->current_priority < _Thread_Heir->current_priority ) { _Thread_Heir = the_thread; 4874c: 23cb 0006 2222 movel %a3,62222 <_Thread_Heir> <== NOT EXECUTED if ( _Thread_Executing->is_preemptible || 48752: 4a28 0076 tstb %a0@(118) <== NOT EXECUTED 48756: 6604 bnes 4875c <_Thread_Resume+0xb4> <== NOT EXECUTED 48758: 4a80 tstl %d0 <== NOT EXECUTED 4875a: 6608 bnes 48764 <_Thread_Resume+0xbc> <== NOT EXECUTED the_thread->current_priority == 0 ) _Context_Switch_necessary = TRUE; 4875c: 7201 moveq #1,%d1 <== NOT EXECUTED 4875e: 13c1 0006 2262 moveb %d1,62262 <_Context_Switch_necessary> <== NOT EXECUTED } } } _ISR_Enable( level ); 48764: 46c2 movew %d2,%sr <== NOT EXECUTED } 48766: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 4876a: 4e5e unlk %fp <== NOT EXECUTED 4876c: 4e75 rts <== NOT EXECUTED ... 000474e0 <_Thread_Set_priority>: void _Thread_Set_priority( Thread_Control *the_thread, Priority_Control new_priority ) { 474e0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 474e4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 474e8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 474ec: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED the_thread->current_priority = new_priority; the_thread->ready = &_Thread_Ready_chain[ new_priority ]; 474f0: 2800 movel %d0,%d4 <== NOT EXECUTED 474f2: 2600 movel %d0,%d3 <== NOT EXECUTED { Priority_Bit_map_control major; Priority_Bit_map_control minor; Priority_Bit_map_control mask; major = _Priority_Major( new_priority ); 474f4: 2400 movel %d0,%d2 <== NOT EXECUTED mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; mask = _Priority_Mask( minor ); 474f6: 720f moveq #15,%d1 <== NOT EXECUTED void _Thread_Set_priority( Thread_Control *the_thread, Priority_Control new_priority ) { the_thread->current_priority = new_priority; 474f8: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED 474fc: c081 andl %d1,%d0 <== NOT EXECUTED the_thread->ready = &_Thread_Ready_chain[ new_priority ]; 474fe: e58c lsll #2,%d4 <== NOT EXECUTED 47500: e98b lsll #4,%d3 <== NOT EXECUTED minor = _Priority_Minor( new_priority ); the_priority_map->minor = &_Priority_Bit_map[ _Priority_Bits_index(major) ]; mask = _Priority_Mask( major ); 47502: 323c 8000 movew #-32768,%d1 <== NOT EXECUTED 47506: 9684 subl %d4,%d3 <== NOT EXECUTED { Priority_Bit_map_control major; Priority_Bit_map_control minor; Priority_Bit_map_control mask; major = _Priority_Major( new_priority ); 47508: e88a lsrl #4,%d2 <== NOT EXECUTED minor = _Priority_Minor( new_priority ); the_priority_map->minor = 4750a: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; mask = _Priority_Mask( minor ); 47510: 2a01 movel %d1,%d5 <== NOT EXECUTED 47512: d6b9 0005 7e28 addl 57e28 <_Thread_Ready_chain>,%d3 <== NOT EXECUTED minor = _Priority_Minor( new_priority ); the_priority_map->minor = &_Priority_Bit_map[ _Priority_Bits_index(major) ]; mask = _Priority_Mask( major ); 47518: e4a1 asrl %d2,%d1 <== NOT EXECUTED Priority_Bit_map_control mask; major = _Priority_Major( new_priority ); minor = _Priority_Minor( new_priority ); the_priority_map->minor = 4751a: d482 addl %d2,%d2 <== NOT EXECUTED mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; mask = _Priority_Mask( minor ); 4751c: e0a5 asrl %d0,%d5 <== NOT EXECUTED Priority_Bit_map_control mask; major = _Priority_Major( new_priority ); minor = _Priority_Minor( new_priority ); the_priority_map->minor = 4751e: 0682 0005 7fa0 addil #360352,%d2 <== NOT EXECUTED mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; mask = _Priority_Mask( minor ); 47524: 2005 movel %d5,%d0 <== NOT EXECUTED the_priority_map->ready_minor = mask; 47526: 3145 0096 movew %d5,%a0@(150) <== NOT EXECUTED 4752a: 2143 008c movel %d3,%a0@(140) <== NOT EXECUTED the_priority_map->minor = &_Priority_Bit_map[ _Priority_Bits_index(major) ]; mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; 4752e: 3141 0094 movew %d1,%a0@(148) <== NOT EXECUTED the_priority_map->block_major = ~mask; 47532: 4681 notl %d1 <== NOT EXECUTED Priority_Bit_map_control mask; major = _Priority_Major( new_priority ); minor = _Priority_Minor( new_priority ); the_priority_map->minor = 47534: 2142 0090 movel %d2,%a0@(144) <== NOT EXECUTED _Priority_Initialize_information( &the_thread->Priority_map, new_priority ); } 47538: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; mask = _Priority_Mask( minor ); the_priority_map->ready_minor = mask; the_priority_map->block_minor = ~mask; 4753c: 4680 notl %d0 <== NOT EXECUTED 4753e: 4e5e unlk %fp <== NOT EXECUTED 47540: 3140 009a movew %d0,%a0@(154) <== NOT EXECUTED the_priority_map->minor = &_Priority_Bit_map[ _Priority_Bits_index(major) ]; mask = _Priority_Mask( major ); the_priority_map->ready_major = mask; the_priority_map->block_major = ~mask; 47544: 3141 0098 movew %d1,%a0@(152) <== NOT EXECUTED 47548: 4e75 rts <== NOT EXECUTED ... 0004754c <_Thread_Set_state>: void _Thread_Set_state( Thread_Control *the_thread, States_Control state ) { 4754c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47550: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47552: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47556: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; Chain_Control *ready; ready = the_thread->ready; _ISR_Disable( level ); 47558: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void _Thread_Set_state( Thread_Control *the_thread, States_Control state ) { 4755e: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED ISR_Level level; Chain_Control *ready; ready = the_thread->ready; 47562: 226a 008c moveal %a2@(140),%a1 <== NOT EXECUTED _ISR_Disable( level ); 47566: 40c2 movew %sr,%d2 <== NOT EXECUTED 47568: 8082 orl %d2,%d0 <== NOT EXECUTED 4756a: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_States_Is_ready( the_thread->current_state ) ) { 4756c: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 47570: 670c beqs 4757e <_Thread_Set_state+0x32> <== NOT EXECUTED the_thread->current_state = 47572: 8280 orl %d0,%d1 <== NOT EXECUTED 47574: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED _States_Set( state, the_thread->current_state ); _ISR_Enable( level ); 47578: 46c2 movew %d2,%sr <== NOT EXECUTED 4757a: 6000 00b2 braw 4762e <_Thread_Set_state+0xe2> <== NOT EXECUTED return; } the_thread->current_state = state; if ( _Chain_Has_only_one_node( ready ) ) { 4757e: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED _States_Set( state, the_thread->current_state ); _ISR_Enable( level ); return; } the_thread->current_state = state; 47582: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED if ( _Chain_Has_only_one_node( ready ) ) { 47586: b091 cmpl %a1@,%d0 <== NOT EXECUTED 47588: 6634 bnes 475be <_Thread_Set_state+0x72> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Remove_from_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 4758a: 206a 0090 moveal %a2@(144),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4758e: 2009 movel %a1,%d0 <== NOT EXECUTED 47590: 5880 addql #4,%d0 <== NOT EXECUTED 47592: 2280 movel %d0,%a1@ <== NOT EXECUTED 47594: 3210 movew %a0@,%d1 <== NOT EXECUTED 47596: 302a 009a movew %a2@(154),%d0 <== NOT EXECUTED 4759a: c280 andl %d0,%d1 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4759c: 2349 0008 movel %a1,%a1@(8) <== NOT EXECUTED 475a0: 3081 movew %d1,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 475a2: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED if ( *the_priority_map->minor == 0 ) 475a6: 4a41 tstw %d1 <== NOT EXECUTED 475a8: 6620 bnes 475ca <_Thread_Set_state+0x7e> <== NOT EXECUTED _Priority_Major_bit_map &= the_priority_map->block_major; 475aa: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 475b0: 302a 0098 movew %a2@(152),%d0 <== NOT EXECUTED 475b4: c081 andl %d1,%d0 <== NOT EXECUTED 475b6: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED 475bc: 600c bras 475ca <_Thread_Set_state+0x7e> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 475be: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 475c0: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; previous->next = next; 475c4: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 475c6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED _Priority_Remove_from_bit_map( &the_thread->Priority_map ); } else _Chain_Extract_unprotected( &the_thread->Object.Node ); _ISR_Flash( level ); 475ca: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 475d0: 46c2 movew %d2,%sr <== NOT EXECUTED 475d2: 8082 orl %d2,%d0 <== NOT EXECUTED 475d4: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Thread_Is_heir( the_thread ) ) 475d6: b5f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED 475dc: 663e bnes 4761c <_Thread_Set_state+0xd0> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _Priority_Get_highest( void ) { Priority_Bit_map_control minor; Priority_Bit_map_control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 475de: 3039 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d0 <== NOT EXECUTED 475e4: 4840 swap %d0 <== NOT EXECUTED 475e6: 04c0 ff1 %d0 <== NOT EXECUTED _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 475e8: 41f9 0005 7fa0 lea 57fa0 <_Priority_Bit_map>,%a0 <== NOT EXECUTED 475ee: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 475f4: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 <== NOT EXECUTED 475f8: 4841 swap %d1 <== NOT EXECUTED 475fa: 04c1 ff1 %d1 <== NOT EXECUTED * ready thread. */ RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void ) { _Thread_Heir = (Thread_Control *) 475fc: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 47602: e988 lsll #4,%d0 <== NOT EXECUTED 47604: d081 addl %d1,%d0 <== NOT EXECUTED 47606: 2079 0005 7e28 moveal 57e28 <_Thread_Ready_chain>,%a0 <== NOT EXECUTED 4760c: 2200 movel %d0,%d1 <== NOT EXECUTED 4760e: e588 lsll #2,%d0 <== NOT EXECUTED 47610: e989 lsll #4,%d1 <== NOT EXECUTED 47612: 91c0 subal %d0,%a0 <== NOT EXECUTED 47614: d1c1 addal %d1,%a0 <== NOT EXECUTED 47616: 23d0 0005 7f0a movel %a0@,57f0a <_Thread_Heir> <== NOT EXECUTED _Thread_Calculate_heir(); if ( _Thread_Is_executing( the_thread ) ) 4761c: b5f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED 47622: 6608 bnes 4762c <_Thread_Set_state+0xe0> <== NOT EXECUTED _Context_Switch_necessary = TRUE; 47624: 7001 moveq #1,%d0 <== NOT EXECUTED 47626: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 4762c: 46c2 movew %d2,%sr <== NOT EXECUTED } 4762e: 241f movel %sp@+,%d2 <== NOT EXECUTED 47630: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47632: 4e5e unlk %fp <== NOT EXECUTED 47634: 4e75 rts <== NOT EXECUTED ... 00047638 <_Thread_Set_transient>: */ void _Thread_Set_transient( Thread_Control *the_thread ) { 47638: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4763c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4763e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47642: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; uint32_t old_state; Chain_Control *ready; ready = the_thread->ready; _ISR_Disable( level ); 47644: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED { ISR_Level level; uint32_t old_state; Chain_Control *ready; ready = the_thread->ready; 4764a: 226a 008c moveal %a2@(140),%a1 <== NOT EXECUTED _ISR_Disable( level ); 4764e: 40c2 movew %sr,%d2 <== NOT EXECUTED 47650: 8082 orl %d2,%d0 <== NOT EXECUTED 47652: 46c0 movew %d0,%sr <== NOT EXECUTED old_state = the_thread->current_state; 47654: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state ); 47658: 7204 moveq #4,%d1 <== NOT EXECUTED 4765a: 8280 orl %d0,%d1 <== NOT EXECUTED 4765c: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED if ( _States_Is_ready( old_state ) ) { 47660: 4a80 tstl %d0 <== NOT EXECUTED 47662: 6648 bnes 476ac <_Thread_Set_transient+0x74> <== NOT EXECUTED if ( _Chain_Has_only_one_node( ready ) ) { 47664: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 47668: b091 cmpl %a1@,%d0 <== NOT EXECUTED 4766a: 6634 bnes 476a0 <_Thread_Set_transient+0x68> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Remove_from_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 4766c: 206a 0090 moveal %a2@(144),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47670: 2209 movel %a1,%d1 <== NOT EXECUTED 47672: 5881 addql #4,%d1 <== NOT EXECUTED 47674: 2281 movel %d1,%a1@ <== NOT EXECUTED 47676: 3210 movew %a0@,%d1 <== NOT EXECUTED 47678: 302a 009a movew %a2@(154),%d0 <== NOT EXECUTED 4767c: c280 andl %d0,%d1 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4767e: 2349 0008 movel %a1,%a1@(8) <== NOT EXECUTED 47682: 3081 movew %d1,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 47684: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED if ( *the_priority_map->minor == 0 ) 47688: 4a41 tstw %d1 <== NOT EXECUTED 4768a: 6620 bnes 476ac <_Thread_Set_transient+0x74> <== NOT EXECUTED _Priority_Major_bit_map &= the_priority_map->block_major; 4768c: 302a 0098 movew %a2@(152),%d0 <== NOT EXECUTED 47690: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 47696: c081 andl %d1,%d0 <== NOT EXECUTED 47698: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED 4769e: 600c bras 476ac <_Thread_Set_transient+0x74> <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 476a0: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 476a4: 2052 moveal %a2@,%a0 <== NOT EXECUTED previous = the_node->previous; next->previous = previous; previous->next = next; 476a6: 2288 movel %a0,%a1@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 476a8: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED } else _Chain_Extract_unprotected( &the_thread->Object.Node ); } _ISR_Enable( level ); 476ac: 46c2 movew %d2,%sr <== NOT EXECUTED } 476ae: 241f movel %sp@+,%d2 <== NOT EXECUTED 476b0: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476b2: 4e5e unlk %fp <== NOT EXECUTED 476b4: 4e75 rts <== NOT EXECUTED ... 000476b8 <_Thread_Stack_Allocate>: size_t _Thread_Stack_Allocate( Thread_Control *the_thread, size_t stack_size ) { 476b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 476bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 476be: 2039 0005 62ee movel 562ee ,%d0 <== NOT EXECUTED 476c4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 476c8: b082 cmpl %d2,%d0 <== NOT EXECUTED 476ca: 6302 blss 476ce <_Thread_Stack_Allocate+0x16> <== NOT EXECUTED 476cc: 2400 movel %d0,%d2 <== NOT EXECUTED * Call ONLY the CPU table stack allocate hook, _or_ the * the RTEMS workspace allocate. This is so the stack free * routine can call the correct deallocation routine. */ if ( _Configuration_Table->stack_allocate_hook ) { 476ce: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 476d4: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED 476d8: 4a88 tstl %a0 <== NOT EXECUTED 476da: 6706 beqs 476e2 <_Thread_Stack_Allocate+0x2a> <== NOT EXECUTED stack_addr = (*_Configuration_Table->stack_allocate_hook)( the_stack_size ); 476dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 476de: 4e90 jsr %a0@ <== NOT EXECUTED 476e0: 6008 bras 476ea <_Thread_Stack_Allocate+0x32> <== NOT EXECUTED * get and keep the stack adjust factor, the stack alignment, and * the context initialization sequence in sync. */ the_stack_size = _Stack_Adjust_size( the_stack_size ); stack_addr = _Workspace_Allocate( the_stack_size ); 476e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 476e4: 4eb9 0004 7eac jsr 47eac <_Workspace_Allocate> <== NOT EXECUTED 476ea: 2200 movel %d0,%d1 <== NOT EXECUTED } if ( !stack_addr ) 476ec: 56c0 sne %d0 <== NOT EXECUTED 476ee: 49c0 extbl %d0 <== NOT EXECUTED the_stack_size = 0; the_thread->Start.stack = stack_addr; return the_stack_size; } 476f0: c082 andl %d2,%d0 <== NOT EXECUTED } if ( !stack_addr ) the_stack_size = 0; the_thread->Start.stack = stack_addr; 476f2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED return the_stack_size; } 476f6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED * get and keep the stack adjust factor, the stack alignment, and * the context initialization sequence in sync. */ the_stack_size = _Stack_Adjust_size( the_stack_size ); stack_addr = _Workspace_Allocate( the_stack_size ); 476fa: 588f addql #4,%sp <== NOT EXECUTED the_stack_size = 0; the_thread->Start.stack = stack_addr; return the_stack_size; } 476fc: 4e5e unlk %fp <== NOT EXECUTED } if ( !stack_addr ) the_stack_size = 0; the_thread->Start.stack = stack_addr; 476fe: 2141 00cc movel %d1,%a0@(204) <== NOT EXECUTED return the_stack_size; } 47702: 4e75 rts 00047704 <_Thread_Stack_Free>: */ void _Thread_Stack_Free( Thread_Control *the_thread ) { 47704: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47708: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4770a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * If the API provided the stack space, then don't free it. */ if ( !the_thread->Start.core_allocated_stack ) 4770e: 4a2a 00be tstb %a2@(190) <== NOT EXECUTED 47712: 672a beqs 4773e <_Thread_Stack_Free+0x3a> <== NOT EXECUTED * 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_Table->stack_free_hook ) 47714: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 4771a: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 4771e: 670e beqs 4772e <_Thread_Stack_Free+0x2a> <== NOT EXECUTED (*_Configuration_Table->stack_free_hook)( 47720: 2240 moveal %d0,%a1 <== NOT EXECUTED 47722: 2d6a 00c4 0008 movel %a2@(196),%fp@(8) <== NOT EXECUTED the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); } 47728: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4772a: 4e5e unlk %fp <== NOT EXECUTED * the RTEMS workspace free. This is so the free * routine properly matches the allocation of the stack. */ if ( _Configuration_Table->stack_free_hook ) (*_Configuration_Table->stack_free_hook)( 4772c: 4ed1 jmp %a1@ <== NOT EXECUTED the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); 4772e: 2d6a 00c4 0008 movel %a2@(196),%fp@(8) <== NOT EXECUTED } 47734: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47736: 4e5e unlk %fp <== NOT EXECUTED if ( _Configuration_Table->stack_free_hook ) (*_Configuration_Table->stack_free_hook)( the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); 47738: 4ef9 0004 7e94 jmp 47e94 <_Workspace_Free> <== NOT EXECUTED } 4773e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47740: 4e5e unlk %fp <== NOT EXECUTED 47742: 4e75 rts 00047798 <_Thread_Start>: Thread_Start_types the_prototype, void *entry_point, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 47798: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4779c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4779e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( _States_Is_dormant( the_thread->current_state ) ) { 477a2: 7001 moveq #1,%d0 <== NOT EXECUTED 477a4: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED 477a8: 6738 beqs 477e2 <_Thread_Start+0x4a> <== 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 ); 477aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_Entry_numeric_type numeric_argument ) { if ( _States_Is_dormant( the_thread->current_state ) ) { the_thread->Start.entry_point = (Thread_Entry) entry_point; 477ac: 256e 0010 009c movel %fp@(16),%a2@(156) <== NOT EXECUTED the_thread->Start.prototype = the_prototype; 477b2: 256e 000c 00a0 movel %fp@(12),%a2@(160) <== NOT EXECUTED the_thread->Start.pointer_argument = pointer_argument; 477b8: 256e 0014 00a4 movel %fp@(20),%a2@(164) <== NOT EXECUTED the_thread->Start.numeric_argument = numeric_argument; 477be: 256e 0018 00a8 movel %fp@(24),%a2@(168) <== NOT EXECUTED _Thread_Load_environment( the_thread ); 477c4: 4eb9 0004 a664 jsr 4a664 <_Thread_Load_environment> <== NOT EXECUTED _Thread_Ready( the_thread ); 477ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477cc: 4eb9 0004 a910 jsr 4a910 <_Thread_Ready> <== NOT EXECUTED _User_extensions_Thread_start( the_thread ); 477d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477d4: 4eb9 0004 7c18 jsr 47c18 <_User_extensions_Thread_start> <== NOT EXECUTED 477da: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 477e0: 7001 moveq #1,%d0 <== NOT EXECUTED return true; } return false; } 477e2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 477e6: 4e5e unlk %fp <== NOT EXECUTED 477e8: 4e75 rts <== NOT EXECUTED ... 00047744 <_Thread_Start_multitasking>: 47744: 7003 moveq #3,%d0 <== NOT EXECUTED _System_state_Set( SYSTEM_STATE_UP ); _Context_Switch_necessary = FALSE; _Thread_Executing = _Thread_Heir; 47746: 2079 0005 7f0a moveal 57f0a <_Thread_Heir>,%a0 <== NOT EXECUTED 4774c: 23c0 0005 800e movel %d0,5800e <_System_state_Current> <== NOT EXECUTED * the system is shut down. */ _System_state_Set( SYSTEM_STATE_UP ); _Context_Switch_necessary = FALSE; 47752: 4200 clrb %d0 <== NOT EXECUTED * ready chain * select heir */ void _Thread_Start_multitasking( void ) { 47754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * the system is shut down. */ _System_state_Set( SYSTEM_STATE_UP ); _Context_Switch_necessary = FALSE; 47758: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _Thread_Executing = _Thread_Heir; 4775e: 23c8 0005 7f3a movel %a0,57f3a <_Thread_Executing> <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) /* * don't need to worry about saving BSP's floating point state */ if ( _Thread_Heir->fp_context != NULL ) 47764: 4aa8 0104 tstl %a0@(260) <== NOT EXECUTED 47768: 670c beqs 47776 <_Thread_Start_multitasking+0x32> <== NOT EXECUTED _Context_Restore_fp( &_Thread_Heir->fp_context ); 4776a: 4868 0104 pea %a0@(260) <== NOT EXECUTED 4776e: 4eb9 0004 7f84 jsr 47f84 <_CPU_Context_restore_fp> <== NOT EXECUTED 47774: 588f addql #4,%sp <== NOT EXECUTED #endif _Context_Switch( &_Thread_BSP_context, &_Thread_Heir->Registers ); 47776: 2039 0005 7f0a movel 57f0a <_Thread_Heir>,%d0 <== NOT EXECUTED 4777c: 0680 0000 00d0 addil #208,%d0 <== NOT EXECUTED 47782: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47784: 4879 0005 7e48 pea 57e48 <_Thread_BSP_context> <== NOT EXECUTED 4778a: 4eb9 0004 7f68 jsr 47f68 <_CPU_Context_switch> <== NOT EXECUTED 47790: 508f addql #8,%sp <== NOT EXECUTED } 47792: 4e5e unlk %fp <== NOT EXECUTED 47794: 4e75 rts <== NOT EXECUTED ... 000477ec <_Thread_Suspend>: */ void _Thread_Suspend( Thread_Control *the_thread ) { 477ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 477f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477f2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 477f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; Chain_Control *ready; ready = the_thread->ready; _ISR_Disable( level ); 477f8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED ) { ISR_Level level; Chain_Control *ready; ready = the_thread->ready; 477fe: 226a 008c moveal %a2@(140),%a1 <== NOT EXECUTED _ISR_Disable( level ); 47802: 40c2 movew %sr,%d2 <== NOT EXECUTED 47804: 8082 orl %d2,%d0 <== NOT EXECUTED 47806: 46c0 movew %d0,%sr <== NOT EXECUTED the_thread->suspend_count++; 47808: 52aa 0070 addql #1,%a2@(112) <== NOT EXECUTED if ( !_States_Is_ready( the_thread->current_state ) ) { 4780c: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 47810: 670e beqs 47820 <_Thread_Suspend+0x34> <== NOT EXECUTED the_thread->current_state = 47812: 7202 moveq #2,%d1 <== NOT EXECUTED 47814: 8280 orl %d0,%d1 <== NOT EXECUTED 47816: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED _States_Set( STATES_SUSPENDED, the_thread->current_state ); _ISR_Enable( level ); 4781a: 46c2 movew %d2,%sr <== NOT EXECUTED 4781c: 6000 00b4 braw 478d2 <_Thread_Suspend+0xe6> <== NOT EXECUTED return; } the_thread->current_state = STATES_SUSPENDED; if ( _Chain_Has_only_one_node( ready ) ) { 47820: 2229 0008 movel %a1@(8),%d1 <== NOT EXECUTED _States_Set( STATES_SUSPENDED, the_thread->current_state ); _ISR_Enable( level ); return; } the_thread->current_state = STATES_SUSPENDED; 47824: 7002 moveq #2,%d0 <== NOT EXECUTED 47826: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED if ( _Chain_Has_only_one_node( ready ) ) { 4782a: b291 cmpl %a1@,%d1 <== NOT EXECUTED 4782c: 6634 bnes 47862 <_Thread_Suspend+0x76> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Remove_from_bit_map ( Priority_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 4782e: 206a 0090 moveal %a2@(144),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47832: 2009 movel %a1,%d0 <== NOT EXECUTED 47834: 5880 addql #4,%d0 <== NOT EXECUTED 47836: 2280 movel %d0,%a1@ <== NOT EXECUTED 47838: 3210 movew %a0@,%d1 <== NOT EXECUTED 4783a: 302a 009a movew %a2@(154),%d0 <== NOT EXECUTED 4783e: c280 andl %d0,%d1 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47840: 2349 0008 movel %a1,%a1@(8) <== NOT EXECUTED 47844: 3081 movew %d1,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 47846: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED if ( *the_priority_map->minor == 0 ) 4784a: 4a41 tstw %d1 <== NOT EXECUTED 4784c: 6620 bnes 4786e <_Thread_Suspend+0x82> <== NOT EXECUTED _Priority_Major_bit_map &= the_priority_map->block_major; 4784e: 3239 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d1 <== NOT EXECUTED 47854: 302a 0098 movew %a2@(152),%d0 <== NOT EXECUTED 47858: c081 andl %d1,%d0 <== NOT EXECUTED 4785a: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED 47860: 600c bras 4786e <_Thread_Suspend+0x82> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 47862: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 47864: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; previous->next = next; 47868: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 4786a: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED _Priority_Remove_from_bit_map( &the_thread->Priority_map ); } else _Chain_Extract_unprotected( &the_thread->Object.Node ); _ISR_Flash( level ); 4786e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 47874: 46c2 movew %d2,%sr <== NOT EXECUTED 47876: 8082 orl %d2,%d0 <== NOT EXECUTED 47878: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Thread_Is_heir( the_thread ) ) 4787a: b5f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED 47880: 663e bnes 478c0 <_Thread_Suspend+0xd4> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _Priority_Get_highest( void ) { Priority_Bit_map_control minor; Priority_Bit_map_control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 47882: 3039 0005 7f30 movew 57f30 <_Priority_Major_bit_map>,%d0 <== NOT EXECUTED 47888: 4840 swap %d0 <== NOT EXECUTED 4788a: 04c0 ff1 %d0 <== NOT EXECUTED _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 4788c: 41f9 0005 7fa0 lea 57fa0 <_Priority_Bit_map>,%a0 <== NOT EXECUTED 47892: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 47898: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 <== NOT EXECUTED 4789c: 4841 swap %d1 <== NOT EXECUTED 4789e: 04c1 ff1 %d1 <== NOT EXECUTED 478a0: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 478a6: e988 lsll #4,%d0 <== NOT EXECUTED 478a8: d081 addl %d1,%d0 <== NOT EXECUTED 478aa: 2079 0005 7e28 moveal 57e28 <_Thread_Ready_chain>,%a0 <== NOT EXECUTED 478b0: 2200 movel %d0,%d1 <== NOT EXECUTED 478b2: e588 lsll #2,%d0 <== NOT EXECUTED 478b4: e989 lsll #4,%d1 <== NOT EXECUTED 478b6: 91c0 subal %d0,%a0 <== NOT EXECUTED 478b8: d1c1 addal %d1,%a0 <== NOT EXECUTED 478ba: 23d0 0005 7f0a movel %a0@,57f0a <_Thread_Heir> <== NOT EXECUTED _Thread_Calculate_heir(); if ( _Thread_Is_executing( the_thread ) ) 478c0: b5f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED 478c6: 6608 bnes 478d0 <_Thread_Suspend+0xe4> <== NOT EXECUTED _Context_Switch_necessary = TRUE; 478c8: 7201 moveq #1,%d1 <== NOT EXECUTED 478ca: 13c1 0005 7f4a moveb %d1,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 478d0: 46c2 movew %d2,%sr <== NOT EXECUTED } 478d2: 241f movel %sp@+,%d2 <== NOT EXECUTED 478d4: 245f moveal %sp@+,%a2 <== NOT EXECUTED 478d6: 4e5e unlk %fp <== NOT EXECUTED 478d8: 4e75 rts <== NOT EXECUTED ... 000478dc <_Thread_Tickle_timeslice>: * * Output parameters: NONE */ void _Thread_Tickle_timeslice( void ) { 478dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 478e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_Control *executing; executing = _Thread_Executing; 478e2: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED /* * If the thread is not preemptible or is not ready, then * just return. */ if ( !executing->is_preemptible ) 478e8: 4a2a 0076 tstb %a2@(118) <== NOT EXECUTED 478ec: 6756 beqs 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED return; if ( !_States_Is_ready( executing->current_state ) ) 478ee: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 478f2: 6650 bnes 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED /* * The cpu budget algorithm determines what happens next. */ switch ( executing->budget_algorithm ) { 478f4: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED 478f8: 7201 moveq #1,%d1 <== NOT EXECUTED 478fa: b280 cmpl %d0,%d1 <== NOT EXECUTED 478fc: 6246 bhis 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED 478fe: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 47902: b280 cmpl %d0,%d1 <== NOT EXECUTED 47904: 640a bccs 47910 <_Thread_Tickle_timeslice+0x34> <== NOT EXECUTED 47906: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4790a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4790c: 6636 bnes 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED 4790e: 601e bras 4792e <_Thread_Tickle_timeslice+0x52> <== NOT EXECUTED case THREAD_CPU_BUDGET_ALGORITHM_NONE: break; case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: if ( (int)(--executing->cpu_time_budget) <= 0 ) { 47910: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 47914: 5380 subql #1,%d0 <== NOT EXECUTED 47916: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED 4791a: 6e28 bgts 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED _Thread_Reset_timeslice(); 4791c: 4eb9 0004 a9d0 jsr 4a9d0 <_Thread_Reset_timeslice> <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 47922: 41f9 0005 7e2c lea 57e2c <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 47928: 2550 0078 movel %a0@,%a2@(120) <== NOT EXECUTED 4792c: 6016 bras 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED } break; case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: if ( --executing->cpu_time_budget == 0 ) 4792e: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 47932: 5380 subql #1,%d0 <== NOT EXECUTED 47934: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED 47938: 660a bnes 47944 <_Thread_Tickle_timeslice+0x68> <== NOT EXECUTED (*executing->budget_callout)( executing ); 4793a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4793c: 206a 0080 moveal %a2@(128),%a0 <== NOT EXECUTED 47940: 4e90 jsr %a0@ <== NOT EXECUTED 47942: 588f addql #4,%sp <== NOT EXECUTED break; } } 47944: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47948: 4e5e unlk %fp <== NOT EXECUTED 4794a: 4e75 rts 0004794c <_Thread_Yield_processor>: * ready chain * select heir */ void _Thread_Yield_processor( void ) { 4794c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47950: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; 47954: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED ready = executing->ready; _ISR_Disable( level ); 4795a: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->ready; 47960: 266a 008c moveal %a2@(140),%a3 <== NOT EXECUTED _ISR_Disable( level ); 47964: 2002 movel %d2,%d0 <== NOT EXECUTED 47966: 40c1 movew %sr,%d1 <== NOT EXECUTED 47968: 8081 orl %d1,%d0 <== NOT EXECUTED 4796a: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_Chain_Has_only_one_node( ready ) ) { 4796c: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED 47970: b093 cmpl %a3@,%d0 <== NOT EXECUTED 47972: 6738 beqs 479ac <_Thread_Yield_processor+0x60> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 47974: 2052 moveal %a2@,%a0 <== NOT EXECUTED previous = the_node->previous; 47976: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED next->previous = previous; previous->next = next; 4797a: 2288 movel %a0,%a1@ <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4797c: 200b movel %a3,%d0 <== NOT EXECUTED 4797e: 5880 addql #4,%d0 <== NOT EXECUTED 47980: 2480 movel %d0,%a2@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 47982: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; 47986: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED the_chain->last = the_node; 4798a: 274a 0008 movel %a2,%a3@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4798e: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 47992: 208a movel %a2,%a0@ <== NOT EXECUTED _Chain_Extract_unprotected( &executing->Object.Node ); _Chain_Append_unprotected( ready, &executing->Object.Node ); _ISR_Flash( level ); 47994: 2002 movel %d2,%d0 <== NOT EXECUTED 47996: 46c1 movew %d1,%sr <== NOT EXECUTED 47998: 8081 orl %d1,%d0 <== NOT EXECUTED 4799a: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Thread_Is_heir( executing ) ) 4799c: b5f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED 479a2: 6610 bnes 479b4 <_Thread_Yield_processor+0x68> <== NOT EXECUTED _Thread_Heir = (Thread_Control *) ready->first; 479a4: 23d3 0005 7f0a movel %a3@,57f0a <_Thread_Heir> <== NOT EXECUTED 479aa: 6008 bras 479b4 <_Thread_Yield_processor+0x68> <== NOT EXECUTED _Context_Switch_necessary = TRUE; } else if ( !_Thread_Is_heir( executing ) ) 479ac: b5f9 0005 7f0a cmpal 57f0a <_Thread_Heir>,%a2 <== NOT EXECUTED 479b2: 6708 beqs 479bc <_Thread_Yield_processor+0x70> <== NOT EXECUTED _Context_Switch_necessary = TRUE; 479b4: 7001 moveq #1,%d0 <== NOT EXECUTED 479b6: 13c0 0005 7f4a moveb %d0,57f4a <_Context_Switch_necessary> <== NOT EXECUTED _ISR_Enable( level ); 479bc: 46c1 movew %d1,%sr <== NOT EXECUTED } 479be: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 479c2: 4e5e unlk %fp <== NOT EXECUTED 479c4: 4e75 rts <== NOT EXECUTED ... 000467b4 <_Thread_blocking_operation_Cancel>: void _Thread_blocking_operation_Cancel( Thread_blocking_operation_States sync_state, Thread_Control *the_thread, ISR_Level level ) { 467b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 467ba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 467be: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED #endif /* * The thread is not waiting on anything after this completes. */ the_thread->Wait.queue = NULL; 467c2: 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 ) ) { 467c6: 7202 moveq #2,%d1 <== NOT EXECUTED 467c8: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 467cc: 6618 bnes 467e6 <_Thread_blocking_operation_Cancel+0x32> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 467ce: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 467d2: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 467d6: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 467d8: 486a 0048 pea %a2@(72) <== NOT EXECUTED 467dc: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 467e2: 588f addql #4,%sp <== NOT EXECUTED 467e4: 6002 bras 467e8 <_Thread_blocking_operation_Cancel+0x34> <== NOT EXECUTED } else _ISR_Enable( level ); 467e6: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 467e8: 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 } 467ec: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 467f0: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 467f6: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 467fa: 4e5e unlk %fp <== NOT EXECUTED 467fc: 4ef9 0004 6948 jmp 46948 <_Thread_Clear_state> <== NOT EXECUTED ... 0004702c <_Thread_queue_Dequeue>: */ Thread_Control *_Thread_queue_Dequeue( Thread_queue_Control *the_thread_queue ) { 4702c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47030: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 47034: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 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 ) 47038: 41f9 0004 708c lea 4708c <_Thread_queue_Dequeue_priority>,%a0 <== NOT EXECUTED 4703e: 7001 moveq #1,%d0 <== NOT EXECUTED 47040: b0aa 0034 cmpl %a2@(52),%d0 <== NOT EXECUTED 47044: 6706 beqs 4704c <_Thread_queue_Dequeue+0x20> <== NOT EXECUTED 47046: 41f9 0004 a6e8 lea 4a6e8 <_Thread_queue_Dequeue_fifo>,%a0 <== NOT EXECUTED 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 ); 4704c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4704e: 4e90 jsr %a0@ <== NOT EXECUTED 47050: 2200 movel %d0,%d1 <== NOT EXECUTED _ISR_Disable( level ); 47052: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 47058: 40c2 movew %sr,%d2 <== NOT EXECUTED 4705a: 8082 orl %d2,%d0 <== NOT EXECUTED 4705c: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !the_thread ) { 4705e: 588f addql #4,%sp <== NOT EXECUTED 47060: 4a81 tstl %d1 <== NOT EXECUTED 47062: 6618 bnes 4707c <_Thread_queue_Dequeue+0x50> <== NOT EXECUTED sync_state = the_thread_queue->sync_state; if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 47064: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 47068: 7601 moveq #1,%d3 <== NOT EXECUTED 4706a: 5380 subql #1,%d0 <== NOT EXECUTED 4706c: b680 cmpl %d0,%d3 <== NOT EXECUTED 4706e: 650c bcss 4707c <_Thread_queue_Dequeue+0x50> <== NOT EXECUTED (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; the_thread = _Thread_Executing; 47070: 2239 0005 7f3a movel 57f3a <_Thread_Executing>,%d1 <== 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; 47076: 7003 moveq #3,%d0 <== NOT EXECUTED 47078: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED the_thread = _Thread_Executing; } } _ISR_Enable( level ); 4707c: 46c2 movew %d2,%sr <== NOT EXECUTED return the_thread; } 4707e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 47084: 4e5e unlk %fp <== NOT EXECUTED 47086: 2001 movel %d1,%d0 <== NOT EXECUTED 47088: 4e75 rts <== NOT EXECUTED ... 0004a6e8 <_Thread_queue_Dequeue_fifo>: */ Thread_Control *_Thread_queue_Dequeue_fifo( Thread_queue_Control *the_thread_queue ) { 4a6e8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4a6ec: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4a6f0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ Thread_Control *_Thread_queue_Dequeue_fifo( Thread_queue_Control *the_thread_queue ) { 4a6f6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4a6fa: 40c1 movew %sr,%d1 <== NOT EXECUTED 4a6fc: 8081 orl %d1,%d0 <== NOT EXECUTED 4a6fe: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4a700: 2049 moveal %a1,%a0 <== NOT EXECUTED 4a702: 2458 moveal %a0@+,%a2 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) { 4a704: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4a706: 6750 beqs 4a758 <_Thread_queue_Dequeue_fifo+0x70> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 4a708: 2052 moveal %a2@,%a0 <== NOT EXECUTED the_chain->first = new_first; 4a70a: 2288 movel %a0,%a1@ <== NOT EXECUTED the_thread = (Thread_Control *) 4a70c: 264a moveal %a2,%a3 <== NOT EXECUTED 4a70e: 49f9 0004 6948 lea 46948 <_Thread_Clear_state>,%a4 <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 4a714: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED _Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo ); the_thread->Wait.queue = NULL; if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4a718: 7002 moveq #2,%d0 <== 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; 4a71a: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4a71e: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4a722: 6710 beqs 4a734 <_Thread_queue_Dequeue_fifo+0x4c> <== NOT EXECUTED _ISR_Enable( level ); 4a724: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4a726: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4a72c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a72e: 4e94 jsr %a4@ <== NOT EXECUTED 4a730: 508f addql #8,%sp <== NOT EXECUTED 4a732: 6028 bras 4a75c <_Thread_queue_Dequeue_fifo+0x74> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 4a734: 7003 moveq #3,%d0 <== NOT EXECUTED 4a736: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4a73a: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4a73c: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4a740: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 4a746: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4a74c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a74e: 4e94 jsr %a4@ <== NOT EXECUTED 4a750: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4a756: 6004 bras 4a75c <_Thread_queue_Dequeue_fifo+0x74> <== NOT EXECUTED #endif return the_thread; } _ISR_Enable( level ); 4a758: 46c1 movew %d1,%sr <== NOT EXECUTED 4a75a: 97cb subal %a3,%a3 <== NOT EXECUTED return NULL; } 4a75c: 200b movel %a3,%d0 <== NOT EXECUTED 4a75e: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4a764: 4e5e unlk %fp <== NOT EXECUTED 4a766: 4e75 rts 0004708c <_Thread_queue_Dequeue_priority>: */ Thread_Control *_Thread_queue_Dequeue_priority( Thread_queue_Control *the_thread_queue ) { 4708c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47090: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 47094: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ Thread_Control *_Thread_queue_Dequeue_priority( Thread_queue_Control *the_thread_queue ) { 4709a: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 4709e: 40c1 movew %sr,%d1 <== NOT EXECUTED 470a0: 8081 orl %d1,%d0 <== NOT EXECUTED 470a2: 46c0 movew %d0,%sr <== NOT EXECUTED 470a4: 93c9 subal %a1,%a1 <== NOT EXECUTED 470a6: 264c moveal %a4,%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 470a8: 2453 moveal %a3@,%a2 <== NOT EXECUTED for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) { 470aa: 41f1 9a01 lea %a1@(00000001,%a1:l:2),%a0 <== NOT EXECUTED Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 470ae: d7fc 0000 000c addal #12,%a3 <== NOT EXECUTED 470b4: 5289 addql #1,%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) { 470b6: 41f4 8c00 lea %a4@(00000000,%a0:l:4),%a0 <== NOT EXECUTED 470ba: b1ca cmpal %a2,%a0 <== NOT EXECUTED 470bc: 671e beqs 470dc <_Thread_queue_Dequeue_priority+0x50> <== NOT EXECUTED _ISR_Enable( level ); return NULL; dequeue: the_thread->Wait.queue = NULL; new_first_node = the_thread->Wait.Block2n.first; 470be: 206a 0038 moveal %a2@(56),%a0 <== NOT EXECUTED new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next; 470c2: 2652 moveal %a2@,%a3 <== NOT EXECUTED previous_node = the_thread->Object.Node.previous; 470c4: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 470c8: 200a movel %a2,%d0 <== NOT EXECUTED */ _ISR_Enable( level ); return NULL; dequeue: the_thread->Wait.queue = NULL; 470ca: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED _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 *) 470ce: 240a movel %a2,%d2 <== NOT EXECUTED new_first_node = the_thread->Wait.Block2n.first; 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 ) ) { 470d0: 0680 0000 003c addil #60,%d0 <== NOT EXECUTED 470d6: b088 cmpl %a0,%d0 <== NOT EXECUTED 470d8: 660e bnes 470e8 <_Thread_queue_Dequeue_priority+0x5c> <== NOT EXECUTED 470da: 6042 bras 4711e <_Thread_queue_Dequeue_priority+0x92> <== NOT EXECUTED Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; 470dc: 7004 moveq #4,%d0 <== NOT EXECUTED 470de: b089 cmpl %a1,%d0 <== NOT EXECUTED 470e0: 66c6 bnes 470a8 <_Thread_queue_Dequeue_priority+0x1c> <== NOT EXECUTED } /* * We did not find a thread to unblock. */ _ISR_Enable( level ); 470e2: 46c1 movew %d1,%sr <== NOT EXECUTED 470e4: 4282 clrl %d2 <== NOT EXECUTED 470e6: 607c bras 47164 <_Thread_queue_Dequeue_priority+0xd8> <== NOT EXECUTED 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 ) ) { last_node = the_thread->Wait.Block2n.last; 470e8: 2a6a 0040 moveal %a2@(64),%a5 <== NOT EXECUTED new_second_node = new_first_node->next; 470ec: 2850 moveal %a0@,%a4 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 470ee: 2748 0004 movel %a0,%a3@(4) <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { last_node = the_thread->Wait.Block2n.last; new_second_node = new_first_node->next; previous_node->next = new_first_node; 470f2: 2288 movel %a0,%a1@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 470f4: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED last_node = the_thread->Wait.Block2n.last; 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; 470f8: 208b movel %a3,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 470fa: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED 470fe: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED 47102: 6720 beqs 47124 <_Thread_queue_Dequeue_priority+0x98> <== NOT EXECUTED /* > two threads on 2-n */ new_second_node->previous = 47104: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 47108: 2949 0004 movel %a1,%a4@(4) <== NOT EXECUTED _Chain_Head( &new_first_thread->Wait.Block2n ); new_first_thread->Wait.Block2n.first = new_second_node; 4710c: 214c 0038 movel %a4,%a0@(56) <== NOT EXECUTED new_first_thread->Wait.Block2n.last = last_node; 47110: 214d 0040 movel %a5,%a0@(64) <== NOT EXECUTED last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n ); 47114: d1fc 0000 003c addal #60,%a0 <== NOT EXECUTED 4711a: 2a88 movel %a0,%a5@ <== NOT EXECUTED 4711c: 6006 bras 47124 <_Thread_queue_Dequeue_priority+0x98> <== NOT EXECUTED } } else { previous_node->next = next_node; next_node->previous = previous_node; 4711e: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED new_first_thread->Wait.Block2n.last = last_node; last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n ); } } else { previous_node->next = next_node; 47122: 228b movel %a3,%a1@ <== NOT EXECUTED 47124: 47f9 0004 6948 lea 46948 <_Thread_Clear_state>,%a3 <== NOT EXECUTED next_node->previous = previous_node; } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4712a: 7002 moveq #2,%d0 <== NOT EXECUTED 4712c: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 47130: 6710 beqs 47142 <_Thread_queue_Dequeue_priority+0xb6> <== NOT EXECUTED _ISR_Enable( level ); 47132: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 47134: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4713a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4713c: 4e93 jsr %a3@ <== NOT EXECUTED 4713e: 508f addql #8,%sp <== NOT EXECUTED 47140: 6022 bras 47164 <_Thread_queue_Dequeue_priority+0xd8> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 47142: 7003 moveq #3,%d0 <== NOT EXECUTED 47144: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 47148: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4714a: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4714e: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 47154: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4715a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4715c: 4e93 jsr %a3@ <== NOT EXECUTED 4715e: dffc 0000 000c addal #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 ); } 47164: 2002 movel %d2,%d0 <== NOT EXECUTED 47166: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4716c: 4e5e unlk %fp <== NOT EXECUTED 4716e: 4e75 rts 0004a768 <_Thread_queue_Enqueue_fifo>: Thread_blocking_operation_States _Thread_queue_Enqueue_fifo ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) { 4a768: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a76c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4a76e: 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 ) { 4a774: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a776: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4a77a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4a77e: 40c1 movew %sr,%d1 <== NOT EXECUTED 4a780: 8081 orl %d1,%d0 <== NOT EXECUTED 4a782: 46c0 movew %d0,%sr <== NOT EXECUTED sync_state = the_thread_queue->sync_state; 4a784: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4a788: 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; 4a78a: 42a9 0030 clrl %a1@(48) <== NOT EXECUTED if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4a78e: b480 cmpl %d0,%d2 <== NOT EXECUTED 4a790: 661c bnes 4a7ae <_Thread_queue_Enqueue_fifo+0x46> <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 4a792: 2049 moveal %a1,%a0 <== NOT EXECUTED 4a794: 5888 addql #4,%a0 <== NOT EXECUTED 4a796: 2488 movel %a0,%a2@ <== NOT EXECUTED old_last_node = the_chain->last; 4a798: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED the_chain->last = the_node; 4a79c: 234a 0008 movel %a2,%a1@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 4a7a0: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED _Chain_Append_unprotected( &the_thread_queue->Queues.Fifo, &the_thread->Object.Node ); the_thread->Wait.queue = the_thread_queue; 4a7a4: 2549 0044 movel %a1,%a2@(68) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 4a7a8: 208a movel %a2,%a0@ <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; _ISR_Enable( level ); 4a7aa: 46c1 movew %d1,%sr <== NOT EXECUTED 4a7ac: 6006 bras 4a7b4 <_Thread_queue_Enqueue_fifo+0x4c> <== 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; 4a7ae: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 4a7b2: 2081 movel %d1,%a0@ <== NOT EXECUTED return sync_state; } 4a7b4: 241f movel %sp@+,%d2 <== NOT EXECUTED 4a7b6: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a7b8: 4e5e unlk %fp <== NOT EXECUTED 4a7ba: 4e75 rts 0004720c <_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 ) { 4720c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 47210: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 47214: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Priority_Control priority; States_Control block_state; _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority; 47218: 282a 0014 movel %a2@(20),%d4 <== NOT EXECUTED Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) { 4721c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( Priority_Control the_priority ) { return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER); 47220: 2404 movel %d4,%d2 <== NOT EXECUTED 47222: ec8a lsrl #6,%d2 <== NOT EXECUTED _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority; header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; 47224: 2002 movel %d2,%d0 <== NOT EXECUTED 47226: 2202 movel %d2,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47228: 41ea 003c lea %a2@(60),%a0 <== NOT EXECUTED 4722c: e588 lsll #2,%d0 <== NOT EXECUTED 4722e: e989 lsll #4,%d1 <== NOT EXECUTED block_state = the_thread_queue->state; 47230: 2a2b 0038 movel %a3@(56),%d5 <== NOT EXECUTED 47234: 2548 0038 movel %a0,%a2@(56) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47238: 43ea 0038 lea %a2@(56),%a1 <== NOT EXECUTED _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority; header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; 4723c: 9280 subl %d0,%d1 <== NOT EXECUTED 4723e: 2549 0040 movel %a1,%a2@(64) <== NOT EXECUTED 47242: 41f3 1800 lea %a3@(00000000,%d1:l),%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 47246: 42aa 003c clrl %a2@(60) <== NOT EXECUTED block_state = the_thread_queue->state; if ( _Thread_queue_Is_reverse_search( priority ) ) 4724a: 0804 0005 btst #5,%d4 <== NOT EXECUTED 4724e: 6674 bnes 472c4 <_Thread_queue_Enqueue_priority+0xb8> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 47250: 2242 moveal %d2,%a1 <== NOT EXECUTED 47252: 41f1 2a01 lea %a1@(00000001,%d2:l:2),%a0 <== NOT EXECUTED 47256: 49f3 8c00 lea %a3@(00000000,%a0:l:4),%a4 <== NOT EXECUTED goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) header->first; 4725a: 2041 moveal %d1,%a0 <== NOT EXECUTED if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); 4725c: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 47262: 2002 movel %d2,%d0 <== NOT EXECUTED 47264: 40c3 movew %sr,%d3 <== NOT EXECUTED 47266: 8083 orl %d3,%d0 <== NOT EXECUTED 47268: 46c0 movew %d0,%sr <== NOT EXECUTED search_thread = (Thread_Control *) header->first; 4726a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4726c: 2270 b800 moveal %a0@(00000000,%a3:l),%a1 <== NOT EXECUTED 47270: 601e bras 47290 <_Thread_queue_Enqueue_priority+0x84> <== NOT EXECUTED while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { search_priority = search_thread->current_priority; 47272: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED if ( priority <= search_priority ) 47276: b284 cmpl %d4,%d1 <== NOT EXECUTED 47278: 641a bccs 47294 <_Thread_queue_Enqueue_priority+0x88> <== NOT EXECUTED break; search_priority = search_thread->current_priority; if ( priority <= search_priority ) break; #endif _ISR_Flash( level ); 4727a: 2002 movel %d2,%d0 <== NOT EXECUTED 4727c: 46c3 movew %d3,%sr <== NOT EXECUTED 4727e: 8083 orl %d3,%d0 <== NOT EXECUTED 47280: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_States_Are_set( search_thread->current_state, block_state) ) { 47282: 2005 movel %d5,%d0 <== NOT EXECUTED 47284: c0a9 0010 andl %a1@(16),%d0 <== NOT EXECUTED 47288: 6604 bnes 4728e <_Thread_queue_Enqueue_priority+0x82> <== NOT EXECUTED _ISR_Enable( level ); 4728a: 46c3 movew %d3,%sr <== NOT EXECUTED 4728c: 60d4 bras 47262 <_Thread_queue_Enqueue_priority+0x56> <== NOT EXECUTED goto restart_forward_search; } search_thread = 4728e: 2251 moveal %a1@,%a1 <== NOT EXECUTED restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) header->first; while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 47290: b9c9 cmpal %a1,%a4 <== NOT EXECUTED 47292: 66de bnes 47272 <_Thread_queue_Enqueue_priority+0x66> <== NOT EXECUTED 47294: 2009 movel %a1,%d0 <== NOT EXECUTED 47296: 2403 movel %d3,%d2 <== NOT EXECUTED } search_thread = (Thread_Control *)search_thread->Object.Node.next; } if ( the_thread_queue->sync_state != 47298: 7a01 moveq #1,%d5 <== NOT EXECUTED 4729a: baab 0030 cmpl %a3@(48),%d5 <== NOT EXECUTED 4729e: 6600 00b6 bnew 47356 <_Thread_queue_Enqueue_priority+0x14a> <== NOT EXECUTED THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 472a2: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED if ( priority == search_priority ) 472a6: b284 cmpl %d4,%d1 <== NOT EXECUTED 472a8: 6700 008c beqw 47336 <_Thread_queue_Enqueue_priority+0x12a> <== NOT EXECUTED goto equal_priority; search_node = (Chain_Node *) search_thread; previous_node = search_node->previous; 472ac: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED the_node = (Chain_Node *) the_thread; the_node->next = search_node; 472b0: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->previous = previous_node; 472b2: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED previous_node->next = the_node; search_node->previous = the_node; the_thread->Wait.queue = the_thread_queue; 472b6: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED previous_node = search_node->previous; the_node = (Chain_Node *) the_thread; the_node->next = search_node; the_node->previous = previous_node; previous_node->next = the_node; 472ba: 208a movel %a2,%a0@ <== NOT EXECUTED search_node->previous = the_node; 472bc: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); 472c0: 46c3 movew %d3,%sr <== NOT EXECUTED 472c2: 606e bras 47332 <_Thread_queue_Enqueue_priority+0x126> <== NOT EXECUTED return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); 472c4: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED search_thread = (Thread_Control *) header->last; 472ca: 49e8 0008 lea %a0@(8),%a4 <== 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; 472ce: 4280 clrl %d0 <== NOT EXECUTED 472d0: 1039 0005 62f2 moveb 562f2 ,%d0 <== NOT EXECUTED 472d6: 2200 movel %d0,%d1 <== NOT EXECUTED 472d8: 5281 addql #1,%d1 <== NOT EXECUTED _ISR_Disable( level ); 472da: 2002 movel %d2,%d0 <== NOT EXECUTED 472dc: 40c3 movew %sr,%d3 <== NOT EXECUTED 472de: 8083 orl %d3,%d0 <== NOT EXECUTED 472e0: 46c0 movew %d0,%sr <== NOT EXECUTED search_thread = (Thread_Control *) header->last; 472e2: 2254 moveal %a4@,%a1 <== NOT EXECUTED 472e4: 6020 bras 47306 <_Thread_queue_Enqueue_priority+0xfa> <== NOT EXECUTED while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { search_priority = search_thread->current_priority; 472e6: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED if ( priority >= search_priority ) 472ea: b284 cmpl %d4,%d1 <== NOT EXECUTED 472ec: 631c blss 4730a <_Thread_queue_Enqueue_priority+0xfe> <== NOT EXECUTED break; search_priority = search_thread->current_priority; if ( priority >= search_priority ) break; #endif _ISR_Flash( level ); 472ee: 2002 movel %d2,%d0 <== NOT EXECUTED 472f0: 46c3 movew %d3,%sr <== NOT EXECUTED 472f2: 8083 orl %d3,%d0 <== NOT EXECUTED 472f4: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_States_Are_set( search_thread->current_state, block_state) ) { 472f6: 2005 movel %d5,%d0 <== NOT EXECUTED 472f8: c0a9 0010 andl %a1@(16),%d0 <== NOT EXECUTED 472fc: 6604 bnes 47302 <_Thread_queue_Enqueue_priority+0xf6> <== NOT EXECUTED _ISR_Enable( level ); 472fe: 46c3 movew %d3,%sr <== NOT EXECUTED 47300: 60cc bras 472ce <_Thread_queue_Enqueue_priority+0xc2> <== NOT EXECUTED goto restart_reverse_search; } search_thread = (Thread_Control *) 47302: 2269 0004 moveal %a1@(4),%a1 <== NOT EXECUTED restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); search_thread = (Thread_Control *) header->last; while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 47306: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 47308: 66dc bnes 472e6 <_Thread_queue_Enqueue_priority+0xda> <== NOT EXECUTED 4730a: 2009 movel %a1,%d0 <== NOT EXECUTED 4730c: 2403 movel %d3,%d2 <== NOT EXECUTED } search_thread = (Thread_Control *) search_thread->Object.Node.previous; } if ( the_thread_queue->sync_state != 4730e: 7a01 moveq #1,%d5 <== NOT EXECUTED 47310: baab 0030 cmpl %a3@(48),%d5 <== NOT EXECUTED 47314: 6640 bnes 47356 <_Thread_queue_Enqueue_priority+0x14a> <== NOT EXECUTED THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 47316: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED if ( priority == search_priority ) 4731a: b284 cmpl %d4,%d1 <== NOT EXECUTED 4731c: 6718 beqs 47336 <_Thread_queue_Enqueue_priority+0x12a> <== NOT EXECUTED goto equal_priority; search_node = (Chain_Node *) search_thread; next_node = search_node->next; 4731e: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_node = (Chain_Node *) the_thread; the_node->next = next_node; the_node->previous = search_node; 47320: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED search_node = (Chain_Node *) search_thread; next_node = search_node->next; the_node = (Chain_Node *) the_thread; the_node->next = next_node; 47324: 2488 movel %a0,%a2@ <== NOT EXECUTED the_node->previous = search_node; search_node->next = the_node; next_node->previous = the_node; the_thread->Wait.queue = the_thread_queue; 47326: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED 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; 4732a: 228a movel %a2,%a1@ <== NOT EXECUTED next_node->previous = the_node; 4732c: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); 47330: 46c3 movew %d3,%sr <== NOT EXECUTED 47332: 7001 moveq #1,%d0 <== NOT EXECUTED 47334: 602a bras 47360 <_Thread_queue_Enqueue_priority+0x154> <== NOT EXECUTED 47336: 2040 moveal %d0,%a0 <== NOT EXECUTED 47338: d1fc 0000 003c addal #60,%a0 <== NOT EXECUTED return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; equal_priority: /* add at end of priority group */ search_node = _Chain_Tail( &search_thread->Wait.Block2n ); previous_node = search_node->previous; 4733e: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED the_node = (Chain_Node *) the_thread; the_node->next = search_node; 47342: 2488 movel %a0,%a2@ <== NOT EXECUTED the_node->previous = previous_node; 47344: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED previous_node->next = the_node; search_node->previous = the_node; the_thread->Wait.queue = the_thread_queue; 47348: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED previous_node = search_node->previous; the_node = (Chain_Node *) the_thread; the_node->next = search_node; the_node->previous = previous_node; previous_node->next = the_node; 4734c: 228a movel %a2,%a1@ <== NOT EXECUTED search_node->previous = the_node; 4734e: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); 47352: 46c2 movew %d2,%sr <== NOT EXECUTED 47354: 60dc bras 47332 <_Thread_queue_Enqueue_priority+0x126> <== 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; 47356: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED return the_thread_queue->sync_state; 4735a: 202b 0030 movel %a3@(48),%d0 <== 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; 4735e: 2082 movel %d2,%a0@ <== NOT EXECUTED return the_thread_queue->sync_state; } 47360: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 <== NOT EXECUTED 47364: 4e5e unlk %fp <== NOT EXECUTED 47366: 4e75 rts 00047170 <_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 ) { 47170: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47174: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47178: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 4717c: 2f2b 0038 movel %a3@(56),%sp@- <== NOT EXECUTED Thread_queue_Control *, Thread_Control *, ISR_Level * ); the_thread = _Thread_Executing; 47180: 2479 0005 7f3a moveal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) { 47186: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 4718a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4718c: 4eb9 0004 754c jsr 4754c <_Thread_Set_state> <== NOT EXECUTED /* * If the thread wants to timeout, then schedule its timer. */ if ( timeout ) { 47192: 508f addql #8,%sp <== NOT EXECUTED 47194: 4a82 tstl %d2 <== NOT EXECUTED 47196: 672c beqs 471c4 <_Thread_queue_Enqueue_with_handler+0x54> <== NOT EXECUTED _Watchdog_Initialize( 47198: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4719c: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED the_watchdog->id = id; 471a2: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 471a6: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 471aa: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 471ae: 42aa 006c clrl %a2@(108) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 471b2: 486a 0048 pea %a2@(72) <== NOT EXECUTED 471b6: 4879 0005 7f58 pea 57f58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 471bc: 4eb9 0004 7c80 jsr 47c80 <_Watchdog_Insert> <== NOT EXECUTED 471c2: 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 ) 471c4: 41f9 0004 720c lea 4720c <_Thread_queue_Enqueue_priority>,%a0 <== NOT EXECUTED 471ca: 7001 moveq #1,%d0 <== NOT EXECUTED 471cc: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED 471d0: 6706 beqs 471d8 <_Thread_queue_Enqueue_with_handler+0x68> <== NOT EXECUTED 471d2: 41f9 0004 a768 lea 4a768 <_Thread_queue_Enqueue_fifo>,%a0 <== NOT EXECUTED 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 ); 471d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 471dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471de: 2f0b movel %a3,%sp@- <== NOT EXECUTED 471e0: 4e90 jsr %a0@ <== NOT EXECUTED if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) 471e2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 471e8: 7201 moveq #1,%d1 <== NOT EXECUTED 471ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 471ec: 6714 beqs 47202 <_Thread_queue_Enqueue_with_handler+0x92> <== NOT EXECUTED _Thread_blocking_operation_Cancel( sync_state, the_thread, level ); 471ee: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 471f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471f4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 471f6: 4eb9 0004 67b4 jsr 467b4 <_Thread_blocking_operation_Cancel> <== NOT EXECUTED 471fc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } 47202: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 47208: 4e5e unlk %fp <== NOT EXECUTED 4720a: 4e75 rts 0004a7bc <_Thread_queue_Extract>: void _Thread_queue_Extract( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 4a7bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a7c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a7c4: 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 ) 4a7c8: 7201 moveq #1,%d1 <== NOT EXECUTED 4a7ca: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 4a7ce: 6616 bnes 4a7e6 <_Thread_queue_Extract+0x2a> <== NOT EXECUTED _Thread_queue_Extract_priority( the_thread_queue, the_thread ); 4a7d0: 42a7 clrl %sp@- <== NOT EXECUTED 4a7d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a7d4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4a7d6: 4eb9 0004 a7f8 jsr 4a7f8 <_Thread_queue_Extract_priority_helper> <== NOT EXECUTED 4a7dc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); } 4a7e2: 4e5e unlk %fp <== NOT EXECUTED 4a7e4: 4e75 rts <== 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 ); 4a7e6: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4a7ea: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4a7ee: 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 ); 4a7f0: 4ef9 0004 b6b8 jmp 4b6b8 <_Thread_queue_Extract_fifo> <== NOT EXECUTED ... 0004b6b8 <_Thread_queue_Extract_fifo>: void _Thread_queue_Extract_fifo( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 4b6b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b6bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b6be: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4b6c2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4b6c8: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b6ca: 8081 orl %d1,%d0 <== NOT EXECUTED 4b6cc: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4b6ce: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4b6d2: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED 4b6d8: 660a bnes 4b6e4 <_Thread_queue_Extract_fifo+0x2c> <== NOT EXECUTED _ISR_Enable( level ); 4b6da: 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 } 4b6dc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b6e0: 4e5e unlk %fp <== NOT EXECUTED 4b6e2: 4e75 rts <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4b6e4: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 4b6e6: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED return; } _Chain_Extract_unprotected( &the_thread->Object.Node ); the_thread->Wait.queue = NULL; 4b6ea: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4b6ee: 7002 moveq #2,%d0 <== NOT EXECUTED next->previous = previous; previous->next = next; 4b6f0: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 4b6f2: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED 4b6f6: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4b6fa: 6704 beqs 4b700 <_Thread_queue_Extract_fifo+0x48> <== NOT EXECUTED _ISR_Enable( level ); 4b6fc: 46c1 movew %d1,%sr <== NOT EXECUTED 4b6fe: 6014 bras 4b714 <_Thread_queue_Extract_fifo+0x5c> <== NOT EXECUTED 4b700: 7003 moveq #3,%d0 <== NOT EXECUTED 4b702: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4b706: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4b708: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4b70c: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 4b712: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4b714: 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 } 4b718: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b71c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4b722: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4b726: 4e5e unlk %fp <== NOT EXECUTED 4b728: 4ef9 0004 6948 jmp 46948 <_Thread_Clear_state> <== NOT EXECUTED ... 0004a7f8 <_Thread_queue_Extract_priority_helper>: void _Thread_queue_Extract_priority_helper( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, bool requeuing ) { 4a7f8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a7fc: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a800: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4a804: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void _Thread_queue_Extract_priority_helper( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, bool requeuing ) { 4a80a: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4a80e: 40c1 movew %sr,%d1 <== NOT EXECUTED 4a810: 8081 orl %d1,%d0 <== NOT EXECUTED 4a812: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4a814: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4a818: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED 4a81e: 6606 bnes 4a826 <_Thread_queue_Extract_priority_helper+0x2e> <== NOT EXECUTED _ISR_Enable( level ); 4a820: 46c1 movew %d1,%sr <== NOT EXECUTED 4a822: 6000 0098 braw 4a8bc <_Thread_queue_Extract_priority_helper+0xc4> <== NOT EXECUTED /* * The thread was actually waiting on a thread queue so let's remove it. */ next_node = the_node->next; 4a826: 2652 moveal %a2@,%a3 <== NOT EXECUTED previous_node = the_node->previous; 4a828: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4a82c: 206a 0038 moveal %a2@(56),%a0 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 4a830: 200a movel %a2,%d0 <== NOT EXECUTED 4a832: 0680 0000 003c addil #60,%d0 <== NOT EXECUTED 4a838: b088 cmpl %a0,%d0 <== NOT EXECUTED 4a83a: 6736 beqs 4a872 <_Thread_queue_Extract_priority_helper+0x7a> <== NOT EXECUTED new_first_node = the_thread->Wait.Block2n.first; new_first_thread = (Thread_Control *) new_first_node; last_node = the_thread->Wait.Block2n.last; 4a83c: 2a6a 0040 moveal %a2@(64),%a5 <== NOT EXECUTED new_second_node = new_first_node->next; 4a840: 2850 moveal %a0@,%a4 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 4a842: 2748 0004 movel %a0,%a3@(4) <== NOT EXECUTED new_first_node = the_thread->Wait.Block2n.first; new_first_thread = (Thread_Control *) new_first_node; last_node = the_thread->Wait.Block2n.last; new_second_node = new_first_node->next; previous_node->next = new_first_node; 4a846: 2288 movel %a0,%a1@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 4a848: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED last_node = the_thread->Wait.Block2n.last; 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; 4a84c: 208b movel %a3,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 4a84e: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED 4a852: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 4a856: 6720 beqs 4a878 <_Thread_queue_Extract_priority_helper+0x80> <== NOT EXECUTED /* > two threads on 2-n */ new_second_node->previous = 4a858: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 4a85c: 2949 0004 movel %a1,%a4@(4) <== NOT EXECUTED _Chain_Head( &new_first_thread->Wait.Block2n ); new_first_thread->Wait.Block2n.first = new_second_node; 4a860: 214c 0038 movel %a4,%a0@(56) <== NOT EXECUTED new_first_thread->Wait.Block2n.last = last_node; 4a864: 214d 0040 movel %a5,%a0@(64) <== NOT EXECUTED last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n ); 4a868: d1fc 0000 003c addal #60,%a0 <== NOT EXECUTED 4a86e: 2a88 movel %a0,%a5@ <== NOT EXECUTED 4a870: 6006 bras 4a878 <_Thread_queue_Extract_priority_helper+0x80> <== NOT EXECUTED } } else { previous_node->next = next_node; next_node->previous = previous_node; 4a872: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED new_first_thread->Wait.Block2n.last = last_node; last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n ); } } else { previous_node->next = next_node; 4a876: 228b movel %a3,%a1@ <== NOT EXECUTED /* * If we are not supposed to touch timers or the thread's state, return. */ if ( requeuing ) { 4a878: 4a02 tstb %d2 <== NOT EXECUTED 4a87a: 6704 beqs 4a880 <_Thread_queue_Extract_priority_helper+0x88> <== NOT EXECUTED _ISR_Enable( level ); 4a87c: 46c1 movew %d1,%sr <== NOT EXECUTED 4a87e: 603c bras 4a8bc <_Thread_queue_Extract_priority_helper+0xc4> <== NOT EXECUTED return; } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4a880: 7002 moveq #2,%d0 <== NOT EXECUTED 4a882: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4a886: 6704 beqs 4a88c <_Thread_queue_Extract_priority_helper+0x94> <== NOT EXECUTED _ISR_Enable( level ); 4a888: 46c1 movew %d1,%sr <== NOT EXECUTED 4a88a: 6014 bras 4a8a0 <_Thread_queue_Extract_priority_helper+0xa8> <== NOT EXECUTED 4a88c: 7003 moveq #3,%d0 <== NOT EXECUTED 4a88e: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4a892: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4a894: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4a898: 4eb9 0004 7d9c jsr 47d9c <_Watchdog_Remove> <== NOT EXECUTED 4a89e: 588f addql #4,%sp <== NOT EXECUTED 4a8a0: 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 } 4a8a4: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a8aa: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED 4a8b0: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4a8b4: 4e5e unlk %fp <== NOT EXECUTED 4a8b6: 4ef9 0004 6948 jmp 46948 <_Thread_Clear_state> <== NOT EXECUTED 4a8bc: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a8c2: 4e5e unlk %fp <== NOT EXECUTED 4a8c4: 4e75 rts <== NOT EXECUTED ... 00047368 <_Thread_queue_Extract_with_proxy>: */ bool _Thread_queue_Extract_with_proxy( Thread_Control *the_thread ) { 47368: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4736c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED States_Control state; state = the_thread->current_state; if ( _States_Is_waiting_on_thread_queue( state ) ) { 47370: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 47374: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED 4737a: 6710 beqs 4738c <_Thread_queue_Extract_with_proxy+0x24> <== NOT EXECUTED if ( proxy_extract_callout ) (*proxy_extract_callout)( the_thread ); } #endif _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 4737c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4737e: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED 47382: 4eb9 0004 a7bc jsr 4a7bc <_Thread_queue_Extract> <== NOT EXECUTED 47388: 508f addql #8,%sp <== NOT EXECUTED 4738a: 7001 moveq #1,%d0 <== NOT EXECUTED return TRUE; } return FALSE; } 4738c: 4e5e unlk %fp <== NOT EXECUTED 4738e: 4e75 rts 000491f0 <_Thread_queue_First>: */ Thread_Control *_Thread_queue_First( Thread_queue_Control *the_thread_queue ) { 491f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 491f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 491f8: 203c 0004 9218 movel #299544,%d0 <== NOT EXECUTED 491fe: 7201 moveq #1,%d1 <== NOT EXECUTED 49200: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 49204: 6706 beqs 4920c <_Thread_queue_First+0x1c> <== NOT EXECUTED 49206: 203c 0004 c75c movel #313180,%d0 <== 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 ); 4920c: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 49210: 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 ); 49212: 2240 moveal %d0,%a1 <== NOT EXECUTED 49214: 4ed1 jmp %a1@ <== NOT EXECUTED ... 0004c75c <_Thread_queue_First_fifo>: */ Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ) { 4c75c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c760: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4c764: 2018 movel %a0@+,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) 4c766: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4c768: 6602 bnes 4c76c <_Thread_queue_First_fifo+0x10> <== NOT EXECUTED 4c76a: 4280 clrl %d0 <== NOT EXECUTED return (Thread_Control *) the_thread_queue->Queues.Fifo.first; return NULL; } 4c76c: 4e5e unlk %fp <== NOT EXECUTED 4c76e: 4e75 rts 00049218 <_Thread_queue_First_priority>: */ Thread_Control *_Thread_queue_First_priority ( Thread_queue_Control *the_thread_queue ) { 49218: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4921c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4921e: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 49222: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49224: 93c9 subal %a1,%a1 <== NOT EXECUTED 49226: 244b moveal %a3,%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 49228: 2012 movel %a2@,%d0 <== NOT EXECUTED uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) 4922a: 41f1 9a01 lea %a1@(00000001,%a1:l:2),%a0 <== NOT EXECUTED { uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 4922e: d5fc 0000 000c addal #12,%a2 <== NOT EXECUTED 49234: 5289 addql #1,%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) 49236: 41f3 8c00 lea %a3@(00000000,%a0:l:4),%a0 <== NOT EXECUTED 4923a: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4923c: 6608 bnes 49246 <_Thread_queue_First_priority+0x2e> <== NOT EXECUTED ) { uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; 4923e: 7004 moveq #4,%d0 <== NOT EXECUTED 49240: b089 cmpl %a1,%d0 <== NOT EXECUTED 49242: 66e4 bnes 49228 <_Thread_queue_First_priority+0x10> <== NOT EXECUTED 49244: 4200 clrb %d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) return (Thread_Control *) the_thread_queue->Queues.Priority[ index ].first; } return NULL; } 49246: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49248: 265f moveal %sp@+,%a3 <== NOT EXECUTED 4924a: 4e5e unlk %fp <== NOT EXECUTED 4924c: 4e75 rts <== NOT EXECUTED ... 00047390 <_Thread_queue_Flush>: void _Thread_queue_Flush( Thread_queue_Control *the_thread_queue, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 47390: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47394: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_Control *the_thread; while ( (the_thread = _Thread_queue_Dequeue( the_thread_queue )) ) { 47396: 45f9 0004 702c lea 4702c <_Thread_queue_Dequeue>,%a2 <== NOT EXECUTED 4739c: 6008 bras 473a6 <_Thread_queue_Flush+0x16> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) ( *remote_extract_callout )( the_thread ); else #endif the_thread->Wait.return_code = status; 4739e: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 473a2: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED uint32_t status ) { Thread_Control *the_thread; while ( (the_thread = _Thread_queue_Dequeue( the_thread_queue )) ) { 473a6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 473aa: 4e92 jsr %a2@ <== NOT EXECUTED 473ac: 588f addql #4,%sp <== NOT EXECUTED 473ae: 2040 moveal %d0,%a0 <== NOT EXECUTED 473b0: 4a80 tstl %d0 <== NOT EXECUTED 473b2: 66ea bnes 4739e <_Thread_queue_Flush+0xe> <== NOT EXECUTED ( *remote_extract_callout )( the_thread ); else #endif the_thread->Wait.return_code = status; } } 473b4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 473b8: 4e5e unlk %fp <== NOT EXECUTED 473ba: 4e75 rts 000473bc <_Thread_queue_Initialize>: Thread_queue_Control *the_thread_queue, Thread_queue_Disciplines the_discipline, States_Control state, uint32_t timeout_status ) { 473bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 473c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED the_thread_queue->state = state; 473c4: 216e 0010 0038 movel %fp@(16),%a0@(56) <== NOT EXECUTED Thread_queue_Control *the_thread_queue, Thread_queue_Disciplines the_discipline, States_Control state, uint32_t timeout_status ) { 473ca: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED the_thread_queue->state = state; the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status; 473ce: 216e 0014 003c movel %fp@(20),%a0@(60) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 473d4: 7201 moveq #1,%d1 <== NOT EXECUTED States_Control state, uint32_t timeout_status ) { the_thread_queue->state = state; the_thread_queue->discipline = the_discipline; 473d6: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 473da: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 473de: b280 cmpl %d0,%d1 <== NOT EXECUTED 473e0: 664c bnes 4742e <_Thread_queue_Initialize+0x72> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 473e2: 2248 moveal %a0,%a1 <== NOT EXECUTED 473e4: 5889 addql #4,%a1 <== NOT EXECUTED 473e6: 2089 movel %a1,%a0@ <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 473e8: 43e8 0024 lea %a0@(36),%a1 <== NOT EXECUTED 473ec: 2149 002c movel %a1,%a0@(44) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 473f0: 43e8 0010 lea %a0@(16),%a1 <== NOT EXECUTED 473f4: 2149 000c movel %a1,%a0@(12) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 473f8: 43e8 000c lea %a0@(12),%a1 <== NOT EXECUTED 473fc: 2149 0014 movel %a1,%a0@(20) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47400: 43e8 001c lea %a0@(28),%a1 <== NOT EXECUTED 47404: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47408: 43e8 0018 lea %a0@(24),%a1 <== NOT EXECUTED 4740c: 2149 0020 movel %a1,%a0@(32) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47410: 43e8 0028 lea %a0@(40),%a1 <== NOT EXECUTED 47414: 2149 0024 movel %a1,%a0@(36) <== NOT EXECUTED the_chain->permanent_null = NULL; 47418: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 4741c: 2148 0008 movel %a0,%a0@(8) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 47420: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED 47424: 42a8 001c clrl %a0@(28) <== NOT EXECUTED 47428: 42a8 0028 clrl %a0@(40) <== NOT EXECUTED 4742c: 600e bras 4743c <_Thread_queue_Initialize+0x80> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4742e: 2008 movel %a0,%d0 <== NOT EXECUTED 47430: 5880 addql #4,%d0 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47432: 2148 0008 movel %a0,%a0@(8) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47436: 2080 movel %d0,%a0@ <== NOT EXECUTED the_chain->permanent_null = NULL; 47438: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED _Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] ); } else { /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Chain_Initialize_empty( &the_thread_queue->Queues.Fifo ); } } 4743c: 4e5e unlk %fp <== NOT EXECUTED 4743e: 4e75 rts 0004a8c8 <_Thread_queue_Process_timeout>: #include void _Thread_queue_Process_timeout( Thread_Control *the_thread ) { 4a8c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a8cc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED Thread_queue_Control *the_thread_queue = the_thread->Wait.queue; 4a8d0: 2069 0044 moveal %a1@(68),%a0 <== 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 && 4a8d4: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED 4a8d8: 671c beqs 4a8f6 <_Thread_queue_Process_timeout+0x2e> <== NOT EXECUTED 4a8da: b3f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a1 <== NOT EXECUTED 4a8e0: 6614 bnes 4a8f6 <_Thread_queue_Process_timeout+0x2e> <== NOT EXECUTED _Thread_Is_executing( the_thread ) ) { if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) { 4a8e2: 7203 moveq #3,%d1 <== NOT EXECUTED 4a8e4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a8e6: 6722 beqs 4a90a <_Thread_queue_Process_timeout+0x42> <== NOT EXECUTED the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4a8e8: 7002 moveq #2,%d0 <== 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; 4a8ea: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4a8f0: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED 4a8f4: 6014 bras 4a90a <_Thread_queue_Process_timeout+0x42> <== NOT EXECUTED } } else { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; 4a8f6: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 4a8fc: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4a8fe: 2f29 0044 movel %a1@(68),%sp@- <== NOT EXECUTED 4a902: 4eb9 0004 a7bc jsr 4a7bc <_Thread_queue_Extract> <== NOT EXECUTED 4a908: 508f addql #8,%sp <== NOT EXECUTED } } 4a90a: 4e5e unlk %fp <== NOT EXECUTED 4a90c: 4e75 rts <== NOT EXECUTED ... 00047440 <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 47440: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47444: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47448: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4744c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED /* * Just in case the thread really wasn't blocked on a thread queue * when we get here. */ if ( !the_thread_queue ) 47450: 4a8a tstl %a2 <== NOT EXECUTED 47452: 6748 beqs 4749c <_Thread_queue_Requeue+0x5c> <== NOT EXECUTED /* * 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 ) { 47454: 7001 moveq #1,%d0 <== NOT EXECUTED 47456: b0aa 0034 cmpl %a2@(52),%d0 <== NOT EXECUTED 4745a: 6640 bnes 4749c <_Thread_queue_Requeue+0x5c> <== NOT EXECUTED Thread_queue_Control *tq = the_thread_queue; ISR_Level level; ISR_Level level_ignored; _ISR_Disable( level ); 4745c: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 47460: 40c2 movew %sr,%d2 <== NOT EXECUTED 47462: 8082 orl %d2,%d0 <== NOT EXECUTED 47464: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 47466: 202b 0010 movel %a3@(16),%d0 <== NOT EXECUTED 4746a: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED 47470: 6728 beqs 4749a <_Thread_queue_Requeue+0x5a> <== NOT EXECUTED _Thread_queue_Enter_critical_section( tq ); _Thread_queue_Extract_priority_helper( tq, the_thread, TRUE ); 47472: 4878 0001 pea 1 <== 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; 47476: 7001 moveq #1,%d0 <== NOT EXECUTED 47478: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4747c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4747e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47480: 4eb9 0004 a7f8 jsr 4a7f8 <_Thread_queue_Extract_priority_helper> <== NOT EXECUTED (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); 47486: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4748a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4748c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4748e: 4eb9 0004 720c jsr 4720c <_Thread_queue_Enqueue_priority> <== NOT EXECUTED 47494: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED } _ISR_Enable( level ); 4749a: 46c2 movew %d2,%sr <== NOT EXECUTED } } 4749c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 474a2: 4e5e unlk %fp <== NOT EXECUTED 474a4: 4e75 rts <== NOT EXECUTED ... 000474a8 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored ) { 474a8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 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 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 474ba: 508f addql #8,%sp <== NOT EXECUTED 474bc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474c0: 6618 bnes 474da <_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 ); 474c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 474c4: 4eb9 0004 a8c8 jsr 4a8c8 <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 474ca: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 474d0: 588f addql #4,%sp <== NOT EXECUTED 474d2: 5380 subql #1,%d0 <== NOT EXECUTED 474d4: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 474da: 4e5e unlk %fp <== NOT EXECUTED 474dc: 4e75 rts <== NOT EXECUTED ... 00049e80 <_Timer_Manager_initialization>: */ void _Timer_Manager_initialization( uint32_t maximum_timers ) { 49e80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Objects_Initialize_information( 49e84: 4878 0004 pea 4 <== NOT EXECUTED 49e88: 42a7 clrl %sp@- <== NOT EXECUTED 49e8a: 4878 003c pea 3c <== NOT EXECUTED 49e8e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49e92: 4878 0002 pea 2 <== NOT EXECUTED 49e96: 4878 0002 pea 2 <== NOT EXECUTED 49e9a: 4879 0005 8886 pea 58886 <_Timer_Information> <== NOT EXECUTED 49ea0: 4eb9 0004 6584 jsr 46584 <_Objects_Initialize_information> <== NOT EXECUTED * Initialize the pointer to the Timer Server TCB to NULL indicating * that task-based timer support is not initialized. */ _Timer_Server = NULL; _Timer_Server_schedule_operation = NULL; 49ea6: dffc 0000 001c addal #28,%sp <== NOT EXECUTED } 49eac: 4e5e unlk %fp <== NOT EXECUTED /* * Initialize the pointer to the Timer Server TCB to NULL indicating * that task-based timer support is not initialized. */ _Timer_Server = NULL; 49eae: 42b9 0005 88c6 clrl 588c6 <_Timer_Server> <== NOT EXECUTED _Timer_Server_schedule_operation = NULL; 49eb4: 42b9 0005 88c2 clrl 588c2 <_Timer_Server_schedule_operation> <== NOT EXECUTED } 49eba: 4e75 rts 0004f72a <_Timer_Server_body>: /* * Initialize the "last time" markers to indicate the timer that * the server was initiated. */ _Timer_Server_ticks_last_time = _Watchdog_Ticks_since_boot; 4f72a: 2039 0006 db60 movel 6db60 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED * @param[in] ignored is the the task argument that is ignored */ Thread _Timer_Server_body( uint32_t ignored ) { 4f730: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4f734: 2239 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d1 <== NOT EXECUTED 4f73a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4f73e: 240e movel %fp,%d2 <== NOT EXECUTED 4f740: 2a0e movel %fp,%d5 <== NOT EXECUTED 4f742: 5281 addql #1,%d1 <== NOT EXECUTED 4f744: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 4f74a: 5185 subql #8,%d5 <== NOT EXECUTED /* * Initialize the "last time" markers to indicate the timer that * the server was initiated. */ _Timer_Server_ticks_last_time = _Watchdog_Ticks_since_boot; _Timer_Server_seconds_last_time = _TOD_Seconds_since_epoch; 4f74c: 41f9 0006 daaa lea 6daaa <_TOD_Now>,%a0 <== NOT EXECUTED /* * Initialize the "last time" markers to indicate the timer that * the server was initiated. */ _Timer_Server_ticks_last_time = _Watchdog_Ticks_since_boot; 4f752: 23c0 0006 d980 movel %d0,6d980 <_Timer_Server_ticks_last_time> <== NOT EXECUTED _Timer_Server_seconds_last_time = _TOD_Seconds_since_epoch; 4f758: 23d0 0006 d97c movel %a0@,6d97c <_Timer_Server_seconds_last_time> <== NOT EXECUTED 4f75e: 23c1 0006 da18 movel %d1,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f764: 2d45 fff4 movel %d5,%fp@(-12) <== NOT EXECUTED the_chain->permanent_null = NULL; 4f768: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 4f76c: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED * Insert the timers that were inserted before we got to run. * This should be done with dispatching disabled. */ _Thread_Disable_dispatch(); _Timer_Server_process_insertions(); _Thread_Enable_dispatch(); 4f770: 45f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED */ _Thread_Disable_dispatch(); _Thread_Set_state( _Timer_Server, STATES_DELAYING ); _Timer_Server_reset_ticks_timer(); _Timer_Server_reset_seconds_timer(); _Thread_Enable_dispatch(); 4f776: 280a movel %a2,%d4 <== NOT EXECUTED /* * Insert the timers that were inserted before we got to run. * This should be done with dispatching disabled. */ _Thread_Disable_dispatch(); _Timer_Server_process_insertions(); 4f778: 4eba ff50 jsr %pc@(4f6ca <_Timer_Server_process_insertions>) <== NOT EXECUTED _Thread_Enable_dispatch(); 4f77c: 4e92 jsr %a2@ <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4f77e: 4bf9 0005 3230 lea 53230 <_Watchdog_Insert>,%a5 <== NOT EXECUTED /* * At this point, at least one of the timers this task relies * upon has fired. Stop them both while we process any outstanding * timers. Before we block, we will restart them. */ _Timer_Server_stop_ticks_timer(); 4f784: 49f9 0005 334c lea 5334c <_Watchdog_Remove>,%a4 <== NOT EXECUTED ticks = snapshot - _Timer_Server_ticks_last_time; else ticks = (0xFFFFFFFF - _Timer_Server_ticks_last_time) + snapshot; _Timer_Server_ticks_last_time = snapshot; _Watchdog_Adjust_to_chain( &_Timer_Ticks_chain, ticks, to_fire ); 4f78a: 2602 movel %d2,%d3 <== NOT EXECUTED 4f78c: 47f9 0005 31a4 lea 531a4 <_Watchdog_Adjust_to_chain>,%a3 <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ ticks = _Timer_Server_seconds_last_time - snapshot; _Watchdog_Adjust( &_Timer_Seconds_chain, WATCHDOG_BACKWARD, ticks ); 4f792: 2e3c 0005 3120 movel #340256,%d7 <== NOT EXECUTED 4f798: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4f79e: 5280 addql #1,%d0 <== NOT EXECUTED 4f7a0: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * Block until there is something to do. */ _Thread_Disable_dispatch(); _Thread_Set_state( _Timer_Server, STATES_DELAYING ); 4f7a6: 4878 0008 pea 8 <== NOT EXECUTED 4f7aa: 2f39 0006 e2fa movel 6e2fa <_Timer_Server>,%sp@- <== NOT EXECUTED 4f7b0: 4eb9 0005 2954 jsr 52954 <_Thread_Set_state> <== NOT EXECUTED _Timer_Server_reset_ticks_timer(); 4f7b6: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 4f7b8: 2279 0006 d970 moveal 6d970 <_Timer_Ticks_chain>,%a1 <== NOT EXECUTED 4f7be: b3fc 0006 d974 cmpal #448884,%a1 <== NOT EXECUTED 4f7c4: 671a beqs 4f7e0 <_Timer_Server_body+0xb6> <== NOT EXECUTED 4f7c6: 2079 0006 e2fa moveal 6e2fa <_Timer_Server>,%a0 <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4f7cc: 2169 0010 0054 movel %a1@(16),%a0@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4f7d2: 4868 0048 pea %a0@(72) <== NOT EXECUTED 4f7d6: 4879 0006 daf4 pea 6daf4 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4f7dc: 4e95 jsr %a5@ <== NOT EXECUTED 4f7de: 508f addql #8,%sp <== NOT EXECUTED 4f7e0: 2079 0006 d984 moveal 6d984 <_Timer_Seconds_chain>,%a0 <== NOT EXECUTED _Timer_Server_reset_seconds_timer(); 4f7e6: b1fc 0006 d988 cmpal #448904,%a0 <== NOT EXECUTED 4f7ec: 671c beqs 4f80a <_Timer_Server_body+0xe0> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4f7ee: d1fc 0000 0010 addal #16,%a0 <== NOT EXECUTED 4f7f4: 23d0 0006 d9a8 movel %a0@,6d9a8 <_Timer_Seconds_timer+0xc> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 4f7fa: 4879 0006 d99c pea 6d99c <_Timer_Seconds_timer> <== NOT EXECUTED 4f800: 4879 0006 dae8 pea 6dae8 <_Watchdog_Seconds_chain> <== NOT EXECUTED 4f806: 4e95 jsr %a5@ <== NOT EXECUTED 4f808: 508f addql #8,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 4f80a: 2044 moveal %d4,%a0 <== NOT EXECUTED 4f80c: 4e90 jsr %a0@ <== NOT EXECUTED 4f80e: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4f814: 5280 addql #1,%d0 <== NOT EXECUTED 4f816: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * At this point, at least one of the timers this task relies * upon has fired. Stop them both while we process any outstanding * timers. Before we block, we will restart them. */ _Timer_Server_stop_ticks_timer(); 4f81c: 2039 0006 e2fa movel 6e2fa <_Timer_Server>,%d0 <== NOT EXECUTED 4f822: 0680 0000 0048 addil #72,%d0 <== NOT EXECUTED 4f828: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f82a: 4e94 jsr %a4@ <== NOT EXECUTED _Timer_Server_stop_seconds_timer(); 4f82c: 4879 0006 d99c pea 6d99c <_Timer_Seconds_timer> <== NOT EXECUTED 4f832: 4e94 jsr %a4@ <== NOT EXECUTED ) { Watchdog_Interval snapshot; Watchdog_Interval ticks; snapshot = _Watchdog_Ticks_since_boot; 4f834: 2239 0006 db60 movel 6db60 <_Watchdog_Ticks_since_boot>,%d1 <== NOT EXECUTED if ( snapshot >= _Timer_Server_ticks_last_time ) 4f83a: 2039 0006 d980 movel 6d980 <_Timer_Server_ticks_last_time>,%d0 <== NOT EXECUTED 4f840: 508f addql #8,%sp <== NOT EXECUTED 4f842: b081 cmpl %d1,%d0 <== NOT EXECUTED 4f844: 6208 bhis 4f84e <_Timer_Server_body+0x124> <== NOT EXECUTED ticks = snapshot - _Timer_Server_ticks_last_time; 4f846: 2c01 movel %d1,%d6 <== NOT EXECUTED 4f848: 9c80 subl %d0,%d6 <== NOT EXECUTED 4f84a: 2006 movel %d6,%d0 <== NOT EXECUTED 4f84c: 6004 bras 4f852 <_Timer_Server_body+0x128> <== NOT EXECUTED else ticks = (0xFFFFFFFF - _Timer_Server_ticks_last_time) + snapshot; 4f84e: 4680 notl %d0 <== NOT EXECUTED 4f850: d081 addl %d1,%d0 <== NOT EXECUTED _Timer_Server_ticks_last_time = snapshot; _Watchdog_Adjust_to_chain( &_Timer_Ticks_chain, ticks, to_fire ); 4f852: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f854: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f856: 4879 0006 d970 pea 6d970 <_Timer_Ticks_chain> <== NOT EXECUTED if ( snapshot >= _Timer_Server_ticks_last_time ) ticks = snapshot - _Timer_Server_ticks_last_time; else ticks = (0xFFFFFFFF - _Timer_Server_ticks_last_time) + snapshot; _Timer_Server_ticks_last_time = snapshot; 4f85c: 23c1 0006 d980 movel %d1,6d980 <_Timer_Server_ticks_last_time> <== NOT EXECUTED _Watchdog_Adjust_to_chain( &_Timer_Ticks_chain, ticks, to_fire ); 4f862: 4e93 jsr %a3@ <== 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 _Timer_Seconds_chain to indicate this. */ snapshot = _TOD_Seconds_since_epoch; 4f864: 2479 0006 daaa moveal 6daaa <_TOD_Now>,%a2 <== NOT EXECUTED if ( snapshot > _Timer_Server_seconds_last_time ) { 4f86a: 2039 0006 d97c movel 6d97c <_Timer_Server_seconds_last_time>,%d0 <== NOT EXECUTED 4f870: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f876: b08a cmpl %a2,%d0 <== NOT EXECUTED 4f878: 6412 bccs 4f88c <_Timer_Server_body+0x162> <== NOT EXECUTED /* * This path is for normal forward movement and cases where the * TOD has been set forward. */ ticks = snapshot - _Timer_Server_seconds_last_time; _Watchdog_Adjust_to_chain( &_Timer_Seconds_chain, ticks, to_fire ); 4f87a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f87c: 220a movel %a2,%d1 <== NOT EXECUTED 4f87e: 9280 subl %d0,%d1 <== NOT EXECUTED 4f880: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4f882: 4879 0006 d984 pea 6d984 <_Timer_Seconds_chain> <== NOT EXECUTED 4f888: 4e93 jsr %a3@ <== NOT EXECUTED 4f88a: 6016 bras 4f8a2 <_Timer_Server_body+0x178> <== NOT EXECUTED } else if ( snapshot < _Timer_Server_seconds_last_time ) { 4f88c: b08a cmpl %a2,%d0 <== NOT EXECUTED 4f88e: 6318 blss 4f8a8 <_Timer_Server_body+0x17e> <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ ticks = _Timer_Server_seconds_last_time - snapshot; _Watchdog_Adjust( &_Timer_Seconds_chain, WATCHDOG_BACKWARD, ticks ); 4f890: 908a subl %a2,%d0 <== NOT EXECUTED 4f892: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f894: 2047 moveal %d7,%a0 <== NOT EXECUTED 4f896: 4878 0001 pea 1 <== NOT EXECUTED 4f89a: 4879 0006 d984 pea 6d984 <_Timer_Seconds_chain> <== NOT EXECUTED 4f8a0: 4e90 jsr %a0@ <== NOT EXECUTED 4f8a2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } _Timer_Server_seconds_last_time = snapshot; 4f8a8: 23ca 0006 d97c movel %a2,6d97c <_Timer_Server_seconds_last_time> <== NOT EXECUTED _Timer_Server_process_seconds_chain( &to_fire ); /* * Insert the timers that have been requested to be inserted. */ _Timer_Server_process_insertions(); 4f8ae: 4eba fe1a jsr %pc@(4f6ca <_Timer_Server_process_insertions>) <== NOT EXECUTED /* * Enable dispatching to process the set that are ready "to fire." */ _Thread_Enable_dispatch(); 4f8b2: 2044 moveal %d4,%a0 <== NOT EXECUTED 4f8b4: 4e90 jsr %a0@ <== NOT EXECUTED */ while (1) { Watchdog_Control *watch; ISR_Level level; _ISR_Disable( level ); 4f8b6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4f8bc: 40c1 movew %sr,%d1 <== NOT EXECUTED 4f8be: 8081 orl %d1,%d0 <== NOT EXECUTED 4f8c0: 46c0 movew %d0,%sr <== NOT EXECUTED 4f8c2: 226e fff4 moveal %fp@(-12),%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4f8c6: ba89 cmpl %a1,%d5 <== NOT EXECUTED 4f8c8: 670e beqs 4f8d8 <_Timer_Server_body+0x1ae> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 4f8ca: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_chain->first = new_first; 4f8cc: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 4f8d0: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED watch = (Watchdog_Control *) _Chain_Get_unprotected( &to_fire ); if ( watch == NULL ) { 4f8d4: 4a89 tstl %a1 <== NOT EXECUTED 4f8d6: 6606 bnes 4f8de <_Timer_Server_body+0x1b4> <== NOT EXECUTED _ISR_Enable( level ); 4f8d8: 46c1 movew %d1,%sr <== NOT EXECUTED 4f8da: 6000 febc braw 4f798 <_Timer_Server_body+0x6e> <== NOT EXECUTED break; } watch->state = WATCHDOG_INACTIVE; 4f8de: 42a9 0008 clrl %a1@(8) <== NOT EXECUTED _ISR_Enable( level ); 4f8e2: 46c1 movew %d1,%sr <== NOT EXECUTED (*watch->routine)( watch->id, watch->user_data ); 4f8e4: 2f29 0024 movel %a1@(36),%sp@- <== NOT EXECUTED 4f8e8: 2f29 0020 movel %a1@(32),%sp@- <== NOT EXECUTED 4f8ec: 2069 001c moveal %a1@(28),%a0 <== NOT EXECUTED 4f8f0: 4e90 jsr %a0@ <== NOT EXECUTED 4f8f2: 508f addql #8,%sp <== NOT EXECUTED 4f8f4: 60c0 bras 4f8b6 <_Timer_Server_body+0x18c> <== NOT EXECUTED ... 0004f6ca <_Timer_Server_process_insertions>: * onto one of the Timer Server chains. * * @note It is only to be called from the Timer Server task. */ static void _Timer_Server_process_insertions(void) { 4f6ca: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4f6ce: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED Timer_Control *the_timer; while ( 1 ) { the_timer = (Timer_Control *) _Chain_Get( &_Timer_To_be_inserted ); 4f6d2: 49f9 0005 0104 lea 50104 <_Chain_Get>,%a4 <== NOT EXECUTED break; if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { _Watchdog_Insert( &_Timer_Ticks_chain, &the_timer->Ticker ); } else if ( the_timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { _Watchdog_Insert( &_Timer_Seconds_chain, &the_timer->Ticker ); 4f6d8: 45f9 0005 3230 lea 53230 <_Watchdog_Insert>,%a2 <== NOT EXECUTED } /* * Insert the timers that have been requested to be inserted. */ _Timer_Server_process_insertions(); 4f6de: 47fa ffea lea %pc@(4f6ca <_Timer_Server_process_insertions>),%a3 <== NOT EXECUTED static void _Timer_Server_process_insertions(void) { Timer_Control *the_timer; while ( 1 ) { the_timer = (Timer_Control *) _Chain_Get( &_Timer_To_be_inserted ); 4f6e2: 4879 0006 d990 pea 6d990 <_Timer_To_be_inserted> <== NOT EXECUTED 4f6e8: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_timer == NULL ) 4f6ea: 588f addql #4,%sp <== NOT EXECUTED static void _Timer_Server_process_insertions(void) { Timer_Control *the_timer; while ( 1 ) { the_timer = (Timer_Control *) _Chain_Get( &_Timer_To_be_inserted ); 4f6ec: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( the_timer == NULL ) 4f6ee: 4a80 tstl %d0 <== NOT EXECUTED 4f6f0: 672e beqs 4f720 <_Timer_Server_process_insertions+0x56> <== NOT EXECUTED break; if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { 4f6f2: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4f6f6: 7201 moveq #1,%d1 <== NOT EXECUTED 4f6f8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4f6fa: 660c bnes 4f708 <_Timer_Server_process_insertions+0x3e> <== NOT EXECUTED _Watchdog_Insert( &_Timer_Ticks_chain, &the_timer->Ticker ); 4f6fc: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4f700: 4879 0006 d970 pea 6d970 <_Timer_Ticks_chain> <== NOT EXECUTED 4f706: 6010 bras 4f718 <_Timer_Server_process_insertions+0x4e> <== NOT EXECUTED } else if ( the_timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { 4f708: 7203 moveq #3,%d1 <== NOT EXECUTED 4f70a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4f70c: 660e bnes 4f71c <_Timer_Server_process_insertions+0x52> <== NOT EXECUTED _Watchdog_Insert( &_Timer_Seconds_chain, &the_timer->Ticker ); 4f70e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4f712: 4879 0006 d984 pea 6d984 <_Timer_Seconds_chain> <== NOT EXECUTED 4f718: 4e92 jsr %a2@ <== NOT EXECUTED 4f71a: 508f addql #8,%sp <== NOT EXECUTED } /* * Insert the timers that have been requested to be inserted. */ _Timer_Server_process_insertions(); 4f71c: 4e93 jsr %a3@ <== NOT EXECUTED 4f71e: 60c2 bras 4f6e2 <_Timer_Server_process_insertions+0x18> <== NOT EXECUTED } } 4f720: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4f726: 4e5e unlk %fp <== NOT EXECUTED 4f728: 4e75 rts 0004f686 <_Timer_Server_schedule_operation_method>: * the directive invoking this is executed. */ static void _Timer_Server_schedule_operation_method( Timer_Control *the_timer ) { 4f686: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Chain_Append( &_Timer_To_be_inserted, &the_timer->Object.Node ); 4f68a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f68e: 4879 0006 d990 pea 6d990 <_Timer_To_be_inserted> <== NOT EXECUTED 4f694: 4eb9 0005 00cc jsr 500cc <_Chain_Append> <== NOT EXECUTED _Watchdog_Remove( &_Timer_Server->Timer ); 4f69a: 2039 0006 e2fa movel 6e2fa <_Timer_Server>,%d0 <== NOT EXECUTED 4f6a0: 0680 0000 0048 addil #72,%d0 <== NOT EXECUTED 4f6a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f6a8: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED _Thread_Delay_ended( _Timer_Server->Object.id, NULL ); 4f6ae: 2079 0006 e2fa moveal 6e2fa <_Timer_Server>,%a0 <== NOT EXECUTED 4f6b4: 42a7 clrl %sp@- <== NOT EXECUTED 4f6b6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4f6ba: 4eb9 0005 1e20 jsr 51e20 <_Thread_Delay_ended> <== NOT EXECUTED 4f6c0: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED } 4f6c6: 4e5e unlk %fp <== NOT EXECUTED 4f6c8: 4e75 rts 000479c8 <_Timespec_Add_to>: uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) { 479c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 479cc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 479d0: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED uint32_t seconds = add->tv_sec; 479d4: 2010 movel %a0@,%d0 <== NOT EXECUTED /* Add the basics */ time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec; 479d6: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED ) { uint32_t seconds = add->tv_sec; /* Add the basics */ time->tv_sec += add->tv_sec; 479da: d191 addl %d0,%a1@ <== NOT EXECUTED time->tv_nsec += add->tv_nsec; 479dc: d3a9 0004 addl %d1,%a1@(4) <== NOT EXECUTED 479e0: 600e bras 479f0 <_Timespec_Add_to+0x28> <== NOT EXECUTED /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND; time->tv_sec++; seconds++; 479e2: 5280 addql #1,%d0 <== 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; 479e4: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED 479ea: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED time->tv_sec++; 479ee: 5291 addql #1,%a1@ <== 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 ) { 479f0: 2229 0004 movel %a1@(4),%d1 <== NOT EXECUTED 479f4: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED 479fa: 62e6 bhis 479e2 <_Timespec_Add_to+0x1a> <== NOT EXECUTED time->tv_sec++; seconds++; } return seconds; } 479fc: 4e5e unlk %fp <== NOT EXECUTED 479fe: 4e75 rts 00048c90 <_Timespec_Divide>: const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 48c90: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 48c94: 48d7 3cfc moveml %d2-%d7/%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; 48c98: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 48c9e: 206e 0008 moveal %fp@(8),%a0 <== 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; 48ca2: 42a7 clrl %sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 48ca4: 246e 000c moveal %fp@(12),%a2 <== 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; 48ca8: 2a28 0004 movel %a0@(4),%d5 <== 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; 48cac: 2810 movel %a0@,%d4 <== NOT EXECUTED left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 48cae: 4bf9 0005 5170 lea 55170 <__muldi3>,%a5 <== NOT EXECUTED 48cb4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 48cb6: 5bc0 smi %d0 <== NOT EXECUTED 48cb8: 49c0 extbl %d0 <== NOT EXECUTED 48cba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48cbc: 4e95 jsr %a5@ <== NOT EXECUTED right += rhs->tv_nsec; 48cbe: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 48cc2: 5bc2 smi %d2 <== NOT EXECUTED 48cc4: 49c2 extbl %d2 <== NOT EXECUTED 48cc6: d283 addl %d3,%d1 <== NOT EXECUTED 48cc8: d182 addxl %d2,%d0 <== 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; 48cca: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED right += rhs->tv_nsec; 48cd0: 2640 moveal %d0,%a3 <== NOT EXECUTED 48cd2: 2841 moveal %d1,%a4 <== NOT EXECUTED if ( right == 0 ) { 48cd4: 4a8b tstl %a3 <== NOT EXECUTED 48cd6: 6614 bnes 48cec <_Timespec_Divide+0x5c> <== NOT EXECUTED 48cd8: 4a8c tstl %a4 <== NOT EXECUTED 48cda: 6610 bnes 48cec <_Timespec_Divide+0x5c> <== NOT EXECUTED *ival_percentage = 0; 48cdc: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 48ce0: 4290 clrl %a0@ <== NOT EXECUTED *fval_percentage = 0; 48ce2: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 48ce6: 4290 clrl %a0@ <== NOT EXECUTED 48ce8: 6000 00d4 braw 48dbe <_Timespec_Divide+0x12e> <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 48cec: 2605 movel %d5,%d3 <== NOT EXECUTED 48cee: 5bc2 smi %d2 <== NOT EXECUTED 48cf0: 49c2 extbl %d2 <== 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; 48cf2: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 48cf8: 7a1b moveq #27,%d5 <== 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; 48cfa: 42a7 clrl %sp@- <== NOT EXECUTED 48cfc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48cfe: 5bc0 smi %d0 <== NOT EXECUTED 48d00: 49c0 extbl %d0 <== NOT EXECUTED 48d02: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48d04: 4e95 jsr %a5@ <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 48d06: d283 addl %d3,%d1 <== NOT EXECUTED 48d08: d182 addxl %d2,%d0 <== NOT EXECUTED 48d0a: 2801 movel %d1,%d4 <== NOT EXECUTED 48d0c: 741e moveq #30,%d2 <== NOT EXECUTED 48d0e: e4ac lsrl %d2,%d4 <== NOT EXECUTED 48d10: 2400 movel %d0,%d2 <== NOT EXECUTED 48d12: 2601 movel %d1,%d3 <== NOT EXECUTED 48d14: e58a lsll #2,%d2 <== NOT EXECUTED 48d16: 8484 orl %d4,%d2 <== NOT EXECUTED 48d18: e58b lsll #2,%d3 <== NOT EXECUTED 48d1a: 2803 movel %d3,%d4 <== NOT EXECUTED 48d1c: 2c02 movel %d2,%d6 <== NOT EXECUTED 48d1e: eaac lsrl %d5,%d4 <== NOT EXECUTED 48d20: 2e03 movel %d3,%d7 <== NOT EXECUTED 48d22: eb8e lsll #5,%d6 <== NOT EXECUTED 48d24: 8c84 orl %d4,%d6 <== NOT EXECUTED 48d26: eb8f lsll #5,%d7 <== NOT EXECUTED 48d28: 2806 movel %d6,%d4 <== NOT EXECUTED 48d2a: 2a07 movel %d7,%d5 <== NOT EXECUTED 48d2c: 9a83 subl %d3,%d5 <== NOT EXECUTED 48d2e: 9982 subxl %d2,%d4 <== NOT EXECUTED 48d30: da81 addl %d1,%d5 <== NOT EXECUTED 48d32: d980 addxl %d0,%d4 <== NOT EXECUTED 48d34: 721e moveq #30,%d1 <== NOT EXECUTED 48d36: 2005 movel %d5,%d0 <== NOT EXECUTED 48d38: 2404 movel %d4,%d2 <== NOT EXECUTED 48d3a: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 48d3c: 2605 movel %d5,%d3 <== NOT EXECUTED 48d3e: e58a lsll #2,%d2 <== NOT EXECUTED 48d40: 8480 orl %d0,%d2 <== NOT EXECUTED 48d42: e58b lsll #2,%d3 <== 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; 48d44: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 48d4a: da83 addl %d3,%d5 <== NOT EXECUTED 48d4c: d982 addxl %d2,%d4 <== NOT EXECUTED 48d4e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48d50: 2005 movel %d5,%d0 <== NOT EXECUTED 48d52: 2404 movel %d4,%d2 <== NOT EXECUTED 48d54: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 48d56: 2605 movel %d5,%d3 <== NOT EXECUTED 48d58: e58a lsll #2,%d2 <== NOT EXECUTED 48d5a: 8480 orl %d0,%d2 <== NOT EXECUTED 48d5c: e58b lsll #2,%d3 <== NOT EXECUTED 48d5e: da83 addl %d3,%d5 <== NOT EXECUTED 48d60: d982 addxl %d2,%d4 <== NOT EXECUTED 48d62: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48d64: 741b moveq #27,%d2 <== NOT EXECUTED 48d66: 2005 movel %d5,%d0 <== NOT EXECUTED 48d68: 2605 movel %d5,%d3 <== NOT EXECUTED 48d6a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 48d6c: eb8b lsll #5,%d3 <== NOT EXECUTED 48d6e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48d70: 2404 movel %d4,%d2 <== NOT EXECUTED 48d72: eb8a lsll #5,%d2 <== NOT EXECUTED 48d74: 8480 orl %d0,%d2 <== NOT EXECUTED 48d76: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48d78: 45f9 0005 51d8 lea 551d8 <__udivdi3>,%a2 <== NOT EXECUTED 48d7e: 4e92 jsr %a2@ <== NOT EXECUTED 48d80: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED *ival_percentage = answer / 1000; 48d86: 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; 48d8a: 2400 movel %d0,%d2 <== NOT EXECUTED 48d8c: 2601 movel %d1,%d3 <== NOT EXECUTED *ival_percentage = answer / 1000; 48d8e: 42a7 clrl %sp@- <== NOT EXECUTED 48d90: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48d92: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48d94: 4e92 jsr %a2@ <== NOT EXECUTED 48d96: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED *fval_percentage = answer % 1000; 48d9c: 4878 03e8 pea 3e8 <== NOT EXECUTED * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; *ival_percentage = answer / 1000; 48da0: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED *fval_percentage = answer % 1000; 48da4: 42a7 clrl %sp@- <== NOT EXECUTED * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; *ival_percentage = answer / 1000; 48da6: 2081 movel %d1,%a0@ <== NOT EXECUTED *fval_percentage = answer % 1000; 48da8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48daa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48dac: 4eb9 0005 558c jsr 5558c <__umoddi3> <== NOT EXECUTED 48db2: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 48db6: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 48dbc: 2081 movel %d1,%a0@ <== NOT EXECUTED } 48dbe: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED 48dc4: 4e5e unlk %fp <== NOT EXECUTED 48dc6: 4e75 rts 0005ebbc <_Timespec_Divide_by_integer>: void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 5ebbc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5ebc0: 48d7 040c moveml %d2-%d3/%a2,%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; 5ebc4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 5ebca: 246e 0008 moveal %fp@(8),%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; 5ebce: 42a7 clrl %sp@- <== NOT EXECUTED 5ebd0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 5ebd2: 5bc0 smi %d0 <== NOT EXECUTED 5ebd4: 49c0 extbl %d0 <== NOT EXECUTED 5ebd6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5ebd8: 4eb9 0007 7768 jsr 77768 <__muldi3> <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 5ebde: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5ebe4: 2eae 000c movel %fp@(12),%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; t += time->tv_nsec; 5ebe8: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 5ebec: 5bc2 smi %d2 <== NOT EXECUTED 5ebee: 49c2 extbl %d2 <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 5ebf0: d283 addl %d3,%d1 <== NOT EXECUTED 5ebf2: d182 addxl %d2,%d0 <== NOT EXECUTED 5ebf4: 42a7 clrl %sp@- <== NOT EXECUTED 5ebf6: 45f9 0007 784c lea 7784c <__udivdi3>,%a2 <== NOT EXECUTED 5ebfc: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5ebfe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5ec00: 4e92 jsr %a2@ <== NOT EXECUTED 5ec02: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 5ec08: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 5ec0e: 2400 movel %d0,%d2 <== NOT EXECUTED 5ec10: 2601 movel %d1,%d3 <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 5ec12: 42a7 clrl %sp@- <== NOT EXECUTED 5ec14: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5ec16: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5ec18: 4e92 jsr %a2@ <== NOT EXECUTED 5ec1a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 5ec20: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 5ec26: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 5ec2a: 42a7 clrl %sp@- <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 5ec2c: 2481 movel %d1,%a2@ <== NOT EXECUTED result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 5ec2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5ec30: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ec32: 4eb9 0007 7c00 jsr 77c00 <__umoddi3> <== NOT EXECUTED 5ec38: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 5ec3c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED } 5ec42: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5ec48: 4e5e unlk %fp <== NOT EXECUTED 5ec4a: 4e75 rts 00050788 <_Timespec_From_ticks>: void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 50788: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * _TOD_Microseconds_per_tick; 5078c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 50790: 43f9 0006 3d72 lea 63d72 <_TOD_Microseconds_per_tick>,%a1 <== NOT EXECUTED 50796: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5079a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5079c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * _TOD_Microseconds_per_tick; time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 507a0: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 507a6: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 507aa: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED 507ae: 2080 movel %d0,%a0@ <== NOT EXECUTED time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * 507b0: 2401 movel %d1,%d2 <== NOT EXECUTED 507b2: 2001 movel %d1,%d0 <== NOT EXECUTED 507b4: e58a lsll #2,%d2 <== NOT EXECUTED 507b6: ef88 lsll #7,%d0 <== NOT EXECUTED 507b8: 9082 subl %d2,%d0 <== NOT EXECUTED TOD_NANOSECONDS_PER_MICROSECOND; } 507ba: 241f movel %sp@+,%d2 <== NOT EXECUTED uint32_t usecs; usecs = ticks * _TOD_Microseconds_per_tick; time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * 507bc: d081 addl %d1,%d0 <== NOT EXECUTED 507be: e788 lsll #3,%d0 <== NOT EXECUTED TOD_NANOSECONDS_PER_MICROSECOND; } 507c0: 4e5e unlk %fp <== NOT EXECUTED uint32_t usecs; usecs = ticks * _TOD_Microseconds_per_tick; time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * 507c2: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED TOD_NANOSECONDS_PER_MICROSECOND; } 507c6: 4e75 rts 000493d4 <_Timespec_Greater_than>: bool _Timespec_Greater_than( const struct timespec *lhs, const struct timespec *rhs ) { 493d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 493d8: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 493dc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec > rhs->tv_sec ) 493e0: 2211 movel %a1@,%d1 <== NOT EXECUTED 493e2: 2010 movel %a0@,%d0 <== NOT EXECUTED 493e4: b081 cmpl %d1,%d0 <== NOT EXECUTED 493e6: 6c04 bges 493ec <_Timespec_Greater_than+0x18> <== NOT EXECUTED 493e8: 7001 moveq #1,%d0 <== NOT EXECUTED 493ea: 6014 bras 49400 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED return TRUE; if ( lhs->tv_sec < rhs->tv_sec ) 493ec: b081 cmpl %d1,%d0 <== NOT EXECUTED 493ee: 6f04 bles 493f4 <_Timespec_Greater_than+0x20> <== NOT EXECUTED 493f0: 4200 clrb %d0 <== NOT EXECUTED 493f2: 600c bras 49400 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED return FALSE; /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) 493f4: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 493f8: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 493fc: 5dc0 slt %d0 <== NOT EXECUTED 493fe: 4480 negl %d0 <== NOT EXECUTED return TRUE; return FALSE; } 49400: 4e5e unlk %fp <== NOT EXECUTED 49402: 4e75 rts 000507c8 <_Timespec_Is_valid>: #include bool _Timespec_Is_valid( const struct timespec *time ) { 507c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 507cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !time ) 507d0: 4a88 tstl %a0 <== NOT EXECUTED 507d2: 6716 beqs 507ea <_Timespec_Is_valid+0x22> <== NOT EXECUTED return FALSE; if ( time->tv_sec < 0 ) 507d4: 4a90 tstl %a0@ <== NOT EXECUTED 507d6: 6d12 blts 507ea <_Timespec_Is_valid+0x22> <== NOT EXECUTED return FALSE; if ( time->tv_nsec < 0 ) 507d8: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 507dc: 6d0c blts 507ea <_Timespec_Is_valid+0x22> <== NOT EXECUTED 507de: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 507e4: 53c0 sls %d0 <== NOT EXECUTED 507e6: 4480 negl %d0 <== NOT EXECUTED 507e8: 6002 bras 507ec <_Timespec_Is_valid+0x24> <== NOT EXECUTED 507ea: 4200 clrb %d0 <== NOT EXECUTED if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) return FALSE; return TRUE; } 507ec: 4e5e unlk %fp <== NOT EXECUTED 507ee: 4e75 rts 0004a6b4 <_Timespec_Less_than>: bool _Timespec_Less_than( const struct timespec *lhs, const struct timespec *rhs ) { 4a6b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a6b8: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4a6bc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec < rhs->tv_sec ) 4a6c0: 2211 movel %a1@,%d1 <== NOT EXECUTED 4a6c2: 2010 movel %a0@,%d0 <== NOT EXECUTED 4a6c4: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a6c6: 6f04 bles 4a6cc <_Timespec_Less_than+0x18> <== NOT EXECUTED 4a6c8: 7001 moveq #1,%d0 <== NOT EXECUTED 4a6ca: 6014 bras 4a6e0 <_Timespec_Less_than+0x2c> <== NOT EXECUTED return TRUE; if ( lhs->tv_sec > rhs->tv_sec ) 4a6cc: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a6ce: 6c04 bges 4a6d4 <_Timespec_Less_than+0x20> <== NOT EXECUTED 4a6d0: 4200 clrb %d0 <== NOT EXECUTED 4a6d2: 600c bras 4a6e0 <_Timespec_Less_than+0x2c> <== NOT EXECUTED return FALSE; /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) 4a6d4: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4a6d8: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 4a6dc: 5ec0 sgt %d0 <== NOT EXECUTED 4a6de: 4480 negl %d0 <== NOT EXECUTED return TRUE; return FALSE; } 4a6e0: 4e5e unlk %fp <== NOT EXECUTED 4a6e2: 4e75 rts 00047a00 <_Timespec_Subtract>: void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 47a00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47a04: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a06: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47a0a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if (end->tv_nsec < start->tv_nsec) { 47a0e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 47a12: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED if (end->tv_nsec < start->tv_nsec) { 47a16: b0a8 0004 cmpl %a0@(4),%d0 <== NOT EXECUTED 47a1a: 6f1c bles 47a38 <_Timespec_Subtract+0x38> <== NOT EXECUTED result->tv_sec = end->tv_sec - start->tv_sec - 1; 47a1c: 2010 movel %a0@,%d0 <== NOT EXECUTED result->tv_nsec = 47a1e: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED struct timespec *result ) { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; 47a22: 5380 subql #1,%d0 <== NOT EXECUTED result->tv_nsec = 47a24: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED struct timespec *result ) { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; 47a2a: 9092 subl %a2@,%d0 <== NOT EXECUTED result->tv_nsec = 47a2c: 92aa 0004 subl %a2@(4),%d1 <== NOT EXECUTED struct timespec *result ) { if (end->tv_nsec < start->tv_nsec) { result->tv_sec = end->tv_sec - start->tv_sec - 1; 47a30: 2280 movel %d0,%a1@ <== NOT EXECUTED result->tv_nsec = 47a32: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 47a36: 6012 bras 47a4a <_Timespec_Subtract+0x4a> <== NOT EXECUTED (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; 47a38: 2010 movel %a0@,%d0 <== NOT EXECUTED 47a3a: 9092 subl %a2@,%d0 <== NOT EXECUTED 47a3c: 2280 movel %d0,%a1@ <== NOT EXECUTED result->tv_nsec = end->tv_nsec - start->tv_nsec; 47a3e: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 47a42: 90aa 0004 subl %a2@(4),%d0 <== NOT EXECUTED 47a46: 2340 0004 movel %d0,%a1@(4) <== NOT EXECUTED } } 47a4a: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47a4c: 4e5e unlk %fp <== NOT EXECUTED 47a4e: 4e75 rts 0004aa44 <_Timespec_To_ticks>: */ uint32_t _Timespec_To_ticks( const struct timespec *time ) { 4aa44: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4aa48: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) 4aa4c: 2210 movel %a0@,%d1 <== NOT EXECUTED */ uint32_t _Timespec_To_ticks( const struct timespec *time ) { 4aa4e: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) 4aa52: 4a81 tstl %d1 <== NOT EXECUTED 4aa54: 660a bnes 4aa60 <_Timespec_To_ticks+0x1c> <== NOT EXECUTED 4aa56: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 4aa5a: 6604 bnes 4aa60 <_Timespec_To_ticks+0x1c> <== NOT EXECUTED 4aa5c: 4280 clrl %d0 <== NOT EXECUTED 4aa5e: 6030 bras 4aa90 <_Timespec_To_ticks+0x4c> <== NOT EXECUTED return 0; ticks = time->tv_sec * TOD_TICKS_PER_SECOND; 4aa60: 2039 0005 800a movel 5800a <_TOD_Microseconds_per_tick>,%d0 <== NOT EXECUTED 4aa66: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 4aa6c: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 4aa70: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED ticks += (time->tv_nsec / TOD_NANOSECONDS_PER_MICROSECOND) / 4aa74: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 4aa78: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED 4aa7e: 4c44 1001 remul %d4,%d1,%d1 <== NOT EXECUTED 4aa82: 4c40 1001 remul %d0,%d1,%d1 <== NOT EXECUTED 4aa86: 2001 movel %d1,%d0 <== NOT EXECUTED 4aa88: d082 addl %d2,%d0 <== NOT EXECUTED _TOD_Microseconds_per_tick; if (ticks) 4aa8a: 6604 bnes 4aa90 <_Timespec_To_ticks+0x4c> <== NOT EXECUTED 4aa8c: 103c 0001 moveb #1,%d0 <== NOT EXECUTED return ticks; return 1; } 4aa90: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4aa94: 4e5e unlk %fp <== NOT EXECUTED 4aa96: 4e75 rts 0004aa98 <_User_extensions_Add_API_set>: */ void _User_extensions_Add_API_set ( User_extensions_Control *the_extension ) { 4aa98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aa9c: 2f0b movel %a3,%sp@- <== NOT EXECUTED _Chain_Append( &_User_extensions_List, &the_extension->Node ); 4aa9e: 47f9 0004 5964 lea 45964 <_Chain_Append>,%a3 <== NOT EXECUTED */ void _User_extensions_Add_API_set ( User_extensions_Control *the_extension ) { 4aaa4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aaa6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED _Chain_Append( &_User_extensions_List, &the_extension->Node ); 4aaaa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aaac: 4879 0005 801a pea 5801a <_User_extensions_List> <== NOT EXECUTED 4aab2: 4e93 jsr %a3@ <== NOT EXECUTED /* * If a switch handler is present, append it to the switch chain. */ if ( the_extension->Callouts.thread_switch != NULL ) { 4aab4: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED 4aab8: 508f addql #8,%sp <== NOT EXECUTED 4aaba: 6712 beqs 4aace <_User_extensions_Add_API_set+0x36> <== NOT EXECUTED the_extension->Switch.thread_switch = the_extension->Callouts.thread_switch; _Chain_Append( 4aabc: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4aac0: 4879 0005 7e80 pea 57e80 <_User_extensions_Switches_list> <== NOT EXECUTED /* * If a switch handler is present, append it to the switch chain. */ if ( the_extension->Callouts.thread_switch != NULL ) { the_extension->Switch.thread_switch = the_extension->Callouts.thread_switch; 4aac6: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED _Chain_Append( 4aaca: 4e93 jsr %a3@ <== NOT EXECUTED 4aacc: 508f addql #8,%sp <== NOT EXECUTED &_User_extensions_Switches_list, &the_extension->Switch.Node ); } } 4aace: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4aad2: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4aad6: 4e5e unlk %fp <== NOT EXECUTED 4aad8: 4e75 rts <== NOT EXECUTED ... 0004aadc <_User_extensions_Add_set>: void _User_extensions_Add_set ( User_extensions_Control *the_extension, User_extensions_Table *extension_table ) { 4aadc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aae0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4aae2: 2f0a movel %a2,%sp@- <== NOT EXECUTED the_extension->Callouts = *extension_table; 4aae4: 4878 0020 pea 20 <== NOT EXECUTED void _User_extensions_Add_set ( User_extensions_Control *the_extension, User_extensions_Table *extension_table ) { 4aae8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4aaec: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED the_extension->Callouts = *extension_table; 4aaf0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aaf2: 486b 0014 pea %a3@(20) <== NOT EXECUTED 4aaf6: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED _Chain_Append( &_User_extensions_List, &the_extension->Node ); 4aafc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4aafe: 4879 0005 801a pea 5801a <_User_extensions_List> <== NOT EXECUTED 4ab04: 4eb9 0004 5964 jsr 45964 <_Chain_Append> <== NOT EXECUTED /* * If a switch handler is present, append it to the switch chain. */ if ( extension_table->thread_switch != NULL ) { 4ab0a: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4ab0e: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4ab14: 6726 beqs 4ab3c <_User_extensions_Add_set+0x60> <== NOT EXECUTED the_extension->Switch.thread_switch = extension_table->thread_switch; _Chain_Append( 4ab16: 220b movel %a3,%d1 <== NOT EXECUTED 4ab18: 5081 addql #8,%d1 <== NOT EXECUTED 4ab1a: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 4ab1e: 223c 0005 7e80 movel #360064,%d1 <== NOT EXECUTED 4ab24: 2d41 0008 movel %d1,%fp@(8) <== NOT EXECUTED &_User_extensions_Switches_list, &the_extension->Switch.Node ); } } 4ab28: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED /* * If a switch handler is present, append it to the switch chain. */ if ( extension_table->thread_switch != NULL ) { the_extension->Switch.thread_switch = extension_table->thread_switch; 4ab2c: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED _Chain_Append( &_User_extensions_Switches_list, &the_extension->Switch.Node ); } } 4ab30: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4ab34: 4e5e unlk %fp <== NOT EXECUTED * If a switch handler is present, append it to the switch chain. */ if ( extension_table->thread_switch != NULL ) { the_extension->Switch.thread_switch = extension_table->thread_switch; _Chain_Append( 4ab36: 4ef9 0004 5964 jmp 45964 <_Chain_Append> <== NOT EXECUTED &_User_extensions_Switches_list, &the_extension->Switch.Node ); } } 4ab3c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ab40: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4ab44: 4e5e unlk %fp <== NOT EXECUTED 4ab46: 4e75 rts 00047b5a <_User_extensions_Fatal>: void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, uint32_t the_error ) { 47b5a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47b5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; 47b60: 2479 0005 8022 moveal 58022 <_User_extensions_List+0x8>,%a2 <== NOT EXECUTED void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, uint32_t the_error ) { 47b66: 2f02 movel %d2,%sp@- <== NOT EXECUTED 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 ); 47b68: 4282 clrl %d2 <== NOT EXECUTED 47b6a: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED 47b6e: 601e bras 47b8e <_User_extensions_Fatal+0x34> <== NOT EXECUTED !_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 ) 47b70: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED 47b74: 4a88 tstl %a0 <== NOT EXECUTED 47b76: 6712 beqs 47b8a <_User_extensions_Fatal+0x30> <== NOT EXECUTED (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); 47b78: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47b7c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47b7e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47b82: 4e90 jsr %a0@ <== NOT EXECUTED 47b84: dffc 0000 000c addal #12,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 47b8a: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; 47b8e: b5fc 0005 801a cmpal #360474,%a2 <== NOT EXECUTED 47b94: 66da bnes 47b70 <_User_extensions_Fatal+0x16> <== NOT EXECUTED the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 47b96: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47b9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47b9e: 4e5e unlk %fp <== NOT EXECUTED 47ba0: 4e75 rts <== NOT EXECUTED ... 00047a50 <_User_extensions_Handler_initialization>: void _User_extensions_Handler_initialization ( uint32_t number_of_extensions, User_extensions_Table *initial_extensions ) { 47a50: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47a54: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47a58: 203c 0005 801e movel #360478,%d0 <== NOT EXECUTED 47a5e: 23c0 0005 801a movel %d0,5801a <_User_extensions_List> <== NOT EXECUTED 47a64: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 47a68: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47a6c: 203c 0005 801a movel #360474,%d0 <== NOT EXECUTED 47a72: 23c0 0005 8022 movel %d0,58022 <_User_extensions_List+0x8> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47a78: 203c 0005 7e84 movel #360068,%d0 <== NOT EXECUTED 47a7e: 23c0 0005 7e80 movel %d0,57e80 <_User_extensions_Switches_list> <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47a84: 203c 0005 7e80 movel #360064,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 47a8a: 42b9 0005 801e clrl 5801e <_User_extensions_List+0x4> <== NOT EXECUTED 47a90: 42b9 0005 7e84 clrl 57e84 <_User_extensions_Switches_list+0x4> <== NOT EXECUTED the_chain->last = _Chain_Head(the_chain); 47a96: 23c0 0005 7e88 movel %d0,57e88 <_User_extensions_Switches_list+0x8> <== NOT EXECUTED uint32_t i; _Chain_Initialize_empty( &_User_extensions_List ); _Chain_Initialize_empty( &_User_extensions_Switches_list ); if ( initial_extensions ) { 47a9c: 4a84 tstl %d4 <== NOT EXECUTED 47a9e: 674e beqs 47aee <_User_extensions_Handler_initialization+0x9e> <== NOT EXECUTED extension = (User_extensions_Control *) 47aa0: 2005 movel %d5,%d0 <== NOT EXECUTED 47aa2: 2405 movel %d5,%d2 <== NOT EXECUTED 47aa4: e588 lsll #2,%d0 <== NOT EXECUTED 47aa6: e98a lsll #4,%d2 <== NOT EXECUTED 47aa8: 9480 subl %d0,%d2 <== NOT EXECUTED 47aaa: d485 addl %d5,%d2 <== NOT EXECUTED 47aac: e58a lsll #2,%d2 <== NOT EXECUTED 47aae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47ab0: 4eb9 0004 7ec4 jsr 47ec4 <_Workspace_Allocate_or_fatal_error> <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 47ab6: 2f02 movel %d2,%sp@- <== NOT EXECUTED _Chain_Initialize_empty( &_User_extensions_List ); _Chain_Initialize_empty( &_User_extensions_Switches_list ); if ( initial_extensions ) { extension = (User_extensions_Control *) 47ab8: 2600 movel %d0,%d3 <== NOT EXECUTED _Workspace_Allocate_or_fatal_error( number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 47aba: 4282 clrl %d2 <== NOT EXECUTED 47abc: 42a7 clrl %sp@- <== NOT EXECUTED 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { _User_extensions_Add_set (extension, &initial_extensions[i]); 47abe: 45f9 0004 aadc lea 4aadc <_User_extensions_Add_set>,%a2 <== NOT EXECUTED extension = (User_extensions_Control *) _Workspace_Allocate_or_fatal_error( number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 47ac4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47ac6: 4eb9 0004 bfbc jsr 4bfbc <== NOT EXECUTED 47acc: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 47ad2: 6016 bras 47aea <_User_extensions_Handler_initialization+0x9a> <== NOT EXECUTED 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { _User_extensions_Add_set (extension, &initial_extensions[i]); 47ad4: 2f04 movel %d4,%sp@- <== NOT EXECUTED extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 47ad6: 5282 addql #1,%d2 <== NOT EXECUTED 47ad8: 0684 0000 0020 addil #32,%d4 <== NOT EXECUTED _User_extensions_Add_set (extension, &initial_extensions[i]); 47ade: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47ae0: 4e92 jsr %a2@ <== NOT EXECUTED extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 47ae2: 508f addql #8,%sp <== NOT EXECUTED _User_extensions_Add_set (extension, &initial_extensions[i]); extension++; 47ae4: 0683 0000 0034 addil #52,%d3 <== NOT EXECUTED extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 47aea: ba82 cmpl %d2,%d5 <== NOT EXECUTED 47aec: 62e6 bhis 47ad4 <_User_extensions_Handler_initialization+0x84> <== NOT EXECUTED _User_extensions_Add_set (extension, &initial_extensions[i]); extension++; } } } 47aee: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 47af4: 4e5e unlk %fp <== NOT EXECUTED 47af6: 4e75 rts 0004b7c0 <_User_extensions_Remove_set>: */ void _User_extensions_Remove_set ( User_extensions_Control *the_extension ) { 4b7c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b7c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b7c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED _Chain_Extract( &the_extension->Node ); 4b7ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b7cc: 4eb9 0004 fb40 jsr 4fb40 <_Chain_Extract> <== NOT EXECUTED /* * If a switch handler is present, remove it. */ if ( the_extension->Callouts.thread_switch != NULL ) 4b7d2: 588f addql #4,%sp <== NOT EXECUTED 4b7d4: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED 4b7d8: 6712 beqs 4b7ec <_User_extensions_Remove_set+0x2c> <== NOT EXECUTED _Chain_Extract( &the_extension->Switch.Node ); 4b7da: 508a addql #8,%a2 <== NOT EXECUTED 4b7dc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4b7e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b7e4: 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 ); 4b7e6: 4ef9 0004 fb40 jmp 4fb40 <_Chain_Extract> <== NOT EXECUTED } 4b7ec: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b7f0: 4e5e unlk %fp <== NOT EXECUTED 4b7f2: 4e75 rts 00047af8 <_User_extensions_Thread_begin>: */ void _User_extensions_Thread_begin ( Thread_Control *executing ) { 47af8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47afc: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; 47afe: 2479 0005 801a moveal 5801a <_User_extensions_List>,%a2 <== NOT EXECUTED 47b04: 6012 bras 47b18 <_User_extensions_Thread_begin+0x20> <== 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_begin != NULL ) 47b06: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 47b0a: 4a88 tstl %a0 <== NOT EXECUTED 47b0c: 6708 beqs 47b16 <_User_extensions_Thread_begin+0x1e> <== NOT EXECUTED (*the_extension->Callouts.thread_begin)( executing ); 47b0e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47b12: 4e90 jsr %a0@ <== NOT EXECUTED 47b14: 588f addql #4,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 47b16: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; 47b18: b5fc 0005 801e cmpal #360478,%a2 <== NOT EXECUTED 47b1e: 66e6 bnes 47b06 <_User_extensions_Thread_begin+0xe> <== NOT EXECUTED the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_begin != NULL ) (*the_extension->Callouts.thread_begin)( executing ); } } 47b20: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47b24: 4e5e unlk %fp <== NOT EXECUTED 47b26: 4e75 rts 00047ba4 <_User_extensions_Thread_create>: */ bool _User_extensions_Thread_create ( Thread_Control *the_thread ) { 47ba4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47ba8: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _User_extensions_List.first ; 47baa: 2479 0005 801a moveal 5801a <_User_extensions_List>,%a2 <== NOT EXECUTED 47bb0: 601c bras 47bce <_User_extensions_Thread_create+0x2a> <== 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_create != NULL ) { 47bb2: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47bb6: 4a88 tstl %a0 <== NOT EXECUTED 47bb8: 6712 beqs 47bcc <_User_extensions_Thread_create+0x28> <== NOT EXECUTED status = (*the_extension->Callouts.thread_create)( 47bba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47bbe: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 47bc4: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Executing, the_thread ); if ( !status ) 47bc6: 508f addql #8,%sp <== NOT EXECUTED 47bc8: 4a00 tstb %d0 <== NOT EXECUTED 47bca: 670c beqs 47bd8 <_User_extensions_Thread_create+0x34> <== NOT EXECUTED User_extensions_Control *the_extension; bool status; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 47bcc: 2452 moveal %a2@,%a2 <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; 47bce: b5fc 0005 801e cmpal #360478,%a2 <== NOT EXECUTED 47bd4: 66dc bnes 47bb2 <_User_extensions_Thread_create+0xe> <== NOT EXECUTED 47bd6: 7001 moveq #1,%d0 <== NOT EXECUTED return FALSE; } } return TRUE; } 47bd8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47bdc: 4e5e unlk %fp <== NOT EXECUTED 47bde: 4e75 rts 00047be0 <_User_extensions_Thread_delete>: */ void _User_extensions_Thread_delete ( Thread_Control *the_thread ) { 47be0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47be4: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; 47be6: 2479 0005 8022 moveal 58022 <_User_extensions_List+0x8>,%a2 <== NOT EXECUTED 47bec: 601a bras 47c08 <_User_extensions_Thread_delete+0x28> <== NOT EXECUTED !_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 ) 47bee: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 47bf2: 4a88 tstl %a0 <== NOT EXECUTED 47bf4: 670e beqs 47c04 <_User_extensions_Thread_delete+0x24> <== NOT EXECUTED (*the_extension->Callouts.thread_delete)( 47bf6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47bfa: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 47c00: 4e90 jsr %a0@ <== NOT EXECUTED 47c02: 508f addql #8,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 47c04: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; 47c08: b5fc 0005 801a cmpal #360474,%a2 <== NOT EXECUTED 47c0e: 66de bnes 47bee <_User_extensions_Thread_delete+0xe> <== NOT EXECUTED (*the_extension->Callouts.thread_delete)( _Thread_Executing, the_thread ); } } 47c10: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47c14: 4e5e unlk %fp <== NOT EXECUTED 47c16: 4e75 rts 00047b28 <_User_extensions_Thread_exitted>: */ void _User_extensions_Thread_exitted ( Thread_Control *executing ) { 47b28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47b2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; 47b2e: 2479 0005 8022 moveal 58022 <_User_extensions_List+0x8>,%a2 <== NOT EXECUTED 47b34: 6014 bras 47b4a <_User_extensions_Thread_exitted+0x22> <== NOT EXECUTED !_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 ) 47b36: 206a 002c moveal %a2@(44),%a0 <== NOT EXECUTED 47b3a: 4a88 tstl %a0 <== NOT EXECUTED 47b3c: 6708 beqs 47b46 <_User_extensions_Thread_exitted+0x1e> <== NOT EXECUTED (*the_extension->Callouts.thread_exitted)( executing ); 47b3e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47b42: 4e90 jsr %a0@ <== NOT EXECUTED 47b44: 588f addql #4,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 47b46: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.last ; !_Chain_Is_head( &_User_extensions_List, the_node ) ; 47b4a: b5fc 0005 801a cmpal #360474,%a2 <== NOT EXECUTED 47b50: 66e4 bnes 47b36 <_User_extensions_Thread_exitted+0xe> <== NOT EXECUTED the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.thread_exitted != NULL ) (*the_extension->Callouts.thread_exitted)( executing ); } } 47b52: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47b56: 4e5e unlk %fp <== NOT EXECUTED 47b58: 4e75 rts 0004841c <_User_extensions_Thread_restart>: */ void _User_extensions_Thread_restart ( Thread_Control *the_thread ) { 4841c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48420: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; 48422: 2479 0005 9962 moveal 59962 <_User_extensions_List>,%a2 <== NOT EXECUTED 48428: 6018 bras 48442 <_User_extensions_Thread_restart+0x26> <== 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 ) 4842a: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 4842e: 4a88 tstl %a0 <== NOT EXECUTED 48430: 670e beqs 48440 <_User_extensions_Thread_restart+0x24> <== NOT EXECUTED (*the_extension->Callouts.thread_restart)( 48432: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48436: 2f39 0005 9882 movel 59882 <_Thread_Executing>,%sp@- <== NOT EXECUTED 4843c: 4e90 jsr %a0@ <== NOT EXECUTED 4843e: 508f addql #8,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 48440: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; 48442: b5fc 0005 9966 cmpal #366950,%a2 <== NOT EXECUTED 48448: 66e0 bnes 4842a <_User_extensions_Thread_restart+0xe> <== NOT EXECUTED (*the_extension->Callouts.thread_restart)( _Thread_Executing, the_thread ); } } 4844a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4844e: 4e5e unlk %fp <== NOT EXECUTED 48450: 4e75 rts <== NOT EXECUTED ... 00047c18 <_User_extensions_Thread_start>: */ void _User_extensions_Thread_start ( Thread_Control *the_thread ) { 47c18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47c1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; 47c1e: 2479 0005 801a moveal 5801a <_User_extensions_List>,%a2 <== NOT EXECUTED 47c24: 6018 bras 47c3e <_User_extensions_Thread_start+0x26> <== 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_start != NULL ) 47c26: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED 47c2a: 4a88 tstl %a0 <== NOT EXECUTED 47c2c: 670e beqs 47c3c <_User_extensions_Thread_start+0x24> <== NOT EXECUTED (*the_extension->Callouts.thread_start)( 47c2e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47c32: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 47c38: 4e90 jsr %a0@ <== NOT EXECUTED 47c3a: 508f addql #8,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 47c3c: 2452 moveal %a2@,%a2 <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _User_extensions_List.first ; !_Chain_Is_tail( &_User_extensions_List, the_node ) ; 47c3e: b5fc 0005 801e cmpal #360478,%a2 <== NOT EXECUTED 47c44: 66e0 bnes 47c26 <_User_extensions_Thread_start+0xe> <== NOT EXECUTED (*the_extension->Callouts.thread_start)( _Thread_Executing, the_thread ); } } 47c46: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47c4a: 4e5e unlk %fp <== NOT EXECUTED 47c4c: 4e75 rts <== NOT EXECUTED ... 00047c50 <_User_extensions_Thread_switch>: */ void _User_extensions_Thread_switch ( Thread_Control *executing, Thread_Control *heir ) { 47c50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47c54: 2f0a movel %a2,%sp@- <== NOT EXECUTED Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _User_extensions_Switches_list.first ; 47c56: 2479 0005 7e80 moveal 57e80 <_User_extensions_Switches_list>,%a2 <== NOT EXECUTED 47c5c: 6012 bras 47c70 <_User_extensions_Thread_switch+0x20> <== NOT EXECUTED !_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 ); 47c5e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47c62: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47c66: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 47c6a: 4e90 jsr %a0@ <== NOT EXECUTED Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _User_extensions_Switches_list.first ; !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ; the_node = the_node->next ) { 47c6c: 2452 moveal %a2@,%a2 <== NOT EXECUTED 47c6e: 508f addql #8,%sp <== NOT EXECUTED { Chain_Node *the_node; User_extensions_Switch_control *the_extension_switch; for ( the_node = _User_extensions_Switches_list.first ; !_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ; 47c70: b5fc 0005 7e84 cmpal #360068,%a2 <== NOT EXECUTED 47c76: 66e6 bnes 47c5e <_User_extensions_Thread_switch+0xe> <== NOT EXECUTED the_extension_switch = (User_extensions_Switch_control *) the_node; (*the_extension_switch->thread_switch)( executing, heir ); } } 47c78: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47c7c: 4e5e unlk %fp <== NOT EXECUTED 47c7e: 4e75 rts 000490b4 <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) { 490b4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 490b8: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 490bc: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) { 490c2: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 490c6: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 490ca: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 490ce: 2002 movel %d2,%d0 <== NOT EXECUTED 490d0: 40c1 movew %sr,%d1 <== NOT EXECUTED 490d2: 8081 orl %d1,%d0 <== NOT EXECUTED 490d4: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 490d6: 244b moveal %a3,%a2 <== NOT EXECUTED 490d8: 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 ) ) { 490da: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 490dc: 674c beqs 4912a <_Watchdog_Adjust+0x76> <== NOT EXECUTED switch ( direction ) { 490de: 4a89 tstl %a1 <== NOT EXECUTED 490e0: 673c beqs 4911e <_Watchdog_Adjust+0x6a> <== NOT EXECUTED 490e2: 7001 moveq #1,%d0 <== NOT EXECUTED 490e4: b089 cmpl %a1,%d0 <== NOT EXECUTED 490e6: 6642 bnes 4912a <_Watchdog_Adjust+0x76> <== NOT EXECUTED case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; 490e8: d7a8 0010 addl %d3,%a0@(16) <== NOT EXECUTED 490ec: 603c bras 4912a <_Watchdog_Adjust+0x76> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) header->first ); 490ee: 2053 moveal %a3@,%a0 <== NOT EXECUTED break; case WATCHDOG_FORWARD: while ( units ) { if ( units < _Watchdog_First( header )->delta_interval ) { 490f0: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 490f4: b483 cmpl %d3,%d2 <== NOT EXECUTED 490f6: 6308 blss 49100 <_Watchdog_Adjust+0x4c> <== NOT EXECUTED _Watchdog_First( header )->delta_interval -= units; 490f8: 9483 subl %d3,%d2 <== NOT EXECUTED 490fa: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED 490fe: 602a bras 4912a <_Watchdog_Adjust+0x76> <== NOT EXECUTED break; } else { units -= _Watchdog_First( header )->delta_interval; _Watchdog_First( header )->delta_interval = 1; 49100: 7001 moveq #1,%d0 <== NOT EXECUTED 49102: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED _ISR_Enable( level ); 49106: 46c1 movew %d1,%sr <== NOT EXECUTED _Watchdog_Tickle( header ); 49108: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4910a: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Disable( level ); 4910c: 2004 movel %d4,%d0 <== NOT EXECUTED 4910e: 40c1 movew %sr,%d1 <== NOT EXECUTED 49110: 8081 orl %d1,%d0 <== NOT EXECUTED 49112: 46c0 movew %d0,%sr <== 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; 49114: 9682 subl %d2,%d3 <== NOT EXECUTED _Watchdog_Tickle( header ); _ISR_Disable( level ); if ( _Chain_Is_empty( header ) ) 49116: 588f addql #4,%sp <== NOT EXECUTED 49118: b5d3 cmpal %a3@,%a2 <== NOT EXECUTED 4911a: 660a bnes 49126 <_Watchdog_Adjust+0x72> <== NOT EXECUTED 4911c: 600c bras 4912a <_Watchdog_Adjust+0x76> <== NOT EXECUTED _ISR_Enable( level ); _Watchdog_Tickle( header ); _ISR_Disable( level ); 4911e: 2802 movel %d2,%d4 <== NOT EXECUTED units -= _Watchdog_First( header )->delta_interval; _Watchdog_First( header )->delta_interval = 1; _ISR_Enable( level ); _Watchdog_Tickle( header ); 49120: 49f9 0004 92d0 lea 492d0 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED switch ( direction ) { case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; break; case WATCHDOG_FORWARD: while ( units ) { 49126: 4a83 tstl %d3 <== NOT EXECUTED 49128: 66c4 bnes 490ee <_Watchdog_Adjust+0x3a> <== NOT EXECUTED } break; } } _ISR_Enable( level ); 4912a: 46c1 movew %d1,%sr <== NOT EXECUTED } 4912c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 49132: 4e5e unlk %fp <== NOT EXECUTED 49134: 4e75 rts <== NOT EXECUTED ... 000531a4 <_Watchdog_Adjust_to_chain>: Chain_Control *header, Watchdog_Interval units_arg, Chain_Control *to_fire ) { 531a4: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 531a8: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 531ac: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 531b0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 531b4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED Watchdog_Interval units = units_arg; ISR_Level level; Chain_Node *node; if ( !units ) { 531b8: 676c beqs 53226 <_Watchdog_Adjust_to_chain+0x82> <== NOT EXECUTED return; } _ISR_Disable( level ); 531ba: 307c 0700 moveaw #1792,%a0 <== NOT EXECUTED 531be: 2008 movel %a0,%d0 <== NOT EXECUTED 531c0: 40c4 movew %sr,%d4 <== NOT EXECUTED 531c2: 8084 orl %d4,%d0 <== NOT EXECUTED 531c4: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 531c6: 260a movel %a2,%d3 <== NOT EXECUTED 531c8: 5883 addql #4,%d3 <== NOT EXECUTED if ( !_Chain_Is_empty( header ) ) { 531ca: b692 cmpl %a2@,%d3 <== NOT EXECUTED 531cc: 6756 beqs 53224 <_Watchdog_Adjust_to_chain+0x80> <== NOT EXECUTED 531ce: 2a0b movel %a3,%d5 <== NOT EXECUTED do { node = _Chain_Get_unprotected( header ); _Chain_Append_unprotected( to_fire, node ); _ISR_Flash( level ); 531d0: 2c08 movel %a0,%d6 <== NOT EXECUTED 531d2: 5885 addql #4,%d5 <== NOT EXECUTED 531d4: 2052 moveal %a2@,%a0 <== NOT EXECUTED } _ISR_Disable( level ); if ( !_Chain_Is_empty( header ) ) { while ( units ) { if ( units < _Watchdog_First( header )->delta_interval ) { 531d6: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 531da: b481 cmpl %d1,%d2 <== NOT EXECUTED 531dc: 6308 blss 531e6 <_Watchdog_Adjust_to_chain+0x42> <== NOT EXECUTED _Watchdog_First( header )->delta_interval -= units; 531de: 9481 subl %d1,%d2 <== NOT EXECUTED 531e0: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED 531e4: 603e bras 53224 <_Watchdog_Adjust_to_chain+0x80> <== NOT EXECUTED break; } else { units -= _Watchdog_First( header )->delta_interval; _Watchdog_First( header )->delta_interval = 0; 531e6: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 531ea: 2252 moveal %a2@,%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 531ec: b689 cmpl %a1,%d3 <== NOT EXECUTED 531ee: 6604 bnes 531f4 <_Watchdog_Adjust_to_chain+0x50> <== NOT EXECUTED 531f0: 93c9 subal %a1,%a1 <== NOT EXECUTED 531f2: 6008 bras 531fc <_Watchdog_Adjust_to_chain+0x58> <== NOT EXECUTED { Chain_Node *return_node; Chain_Node *new_first; return_node = the_chain->first; new_first = return_node->next; 531f4: 2051 moveal %a1@,%a0 <== NOT EXECUTED the_chain->first = new_first; 531f6: 2488 movel %a0,%a2@ <== NOT EXECUTED new_first->previous = _Chain_Head(the_chain); 531f8: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); 531fc: 2285 movel %d5,%a1@ <== NOT EXECUTED old_last_node = the_chain->last; 531fe: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED the_chain->last = the_node; 53202: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED old_last_node->next = the_node; the_node->previous = old_last_node; 53206: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED Chain_Node *old_last_node; the_node->next = _Chain_Tail(the_chain); old_last_node = the_chain->last; the_chain->last = the_node; old_last_node->next = the_node; 5320a: 2089 movel %a1,%a0@ <== NOT EXECUTED do { node = _Chain_Get_unprotected( header ); _Chain_Append_unprotected( to_fire, node ); _ISR_Flash( level ); 5320c: 2006 movel %d6,%d0 <== NOT EXECUTED 5320e: 46c4 movew %d4,%sr <== NOT EXECUTED 53210: 8084 orl %d4,%d0 <== NOT EXECUTED 53212: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 53214: 2052 moveal %a2@,%a0 <== NOT EXECUTED } while ( !_Chain_Is_empty( header ) && _Watchdog_First( header )->delta_interval == 0 ); 53216: b688 cmpl %a0,%d3 <== NOT EXECUTED 53218: 670a beqs 53224 <_Watchdog_Adjust_to_chain+0x80> <== NOT EXECUTED 5321a: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 5321e: 67ca beqs 531ea <_Watchdog_Adjust_to_chain+0x46> <== 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; 53220: 9282 subl %d2,%d1 <== NOT EXECUTED return; } _ISR_Disable( level ); if ( !_Chain_Is_empty( header ) ) { while ( units ) { 53222: 66b0 bnes 531d4 <_Watchdog_Adjust_to_chain+0x30> <== NOT EXECUTED break; } } } _ISR_Enable( level ); 53224: 46c4 movew %d4,%sr <== NOT EXECUTED } 53226: 4cd7 0c7c moveml %sp@,%d2-%d6/%a2-%a3 <== NOT EXECUTED 5322a: 4e5e unlk %fp <== NOT EXECUTED 5322c: 4e75 rts <== NOT EXECUTED ... 00047d50 <_Watchdog_Handler_initialization>: * Output parameters: NONE */ void _Watchdog_Handler_initialization( void ) { _Watchdog_Sync_count = 0; 47d50: 42b9 0005 7fc0 clrl 57fc0 <_Watchdog_Sync_count> <== NOT EXECUTED * * Output parameters: NONE */ void _Watchdog_Handler_initialization( void ) { 47d56: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Watchdog_Sync_count = 0; _Watchdog_Sync_level = 0; 47d5a: 42b9 0005 7f36 clrl 57f36 <_Watchdog_Sync_level> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47d60: 41f9 0005 7f58 lea 57f58 <_Watchdog_Ticks_chain>,%a0 <== NOT EXECUTED _Watchdog_Ticks_since_boot = 0; _Chain_Initialize_empty( &_Watchdog_Ticks_chain ); _Chain_Initialize_empty( &_Watchdog_Seconds_chain ); } 47d66: 43f9 0005 7f4c lea 57f4c <_Watchdog_Seconds_chain>,%a1 <== NOT EXECUTED 47d6c: 4e5e unlk %fp <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 47d6e: 23c8 0005 7f60 movel %a0,57f60 <_Watchdog_Ticks_chain+0x8> <== NOT EXECUTED 47d74: 23c9 0005 7f54 movel %a1,57f54 <_Watchdog_Seconds_chain+0x8> <== NOT EXECUTED void _Watchdog_Handler_initialization( void ) { _Watchdog_Sync_count = 0; _Watchdog_Sync_level = 0; _Watchdog_Ticks_since_boot = 0; 47d7a: 42b9 0005 7fc4 clrl 57fc4 <_Watchdog_Ticks_since_boot> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47d80: 20bc 0005 7f5c movel #360284,%a0@ <== NOT EXECUTED the_chain->permanent_null = NULL; 47d86: 42b9 0005 7f5c clrl 57f5c <_Watchdog_Ticks_chain+0x4> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 47d8c: 22bc 0005 7f50 movel #360272,%a1@ <== NOT EXECUTED the_chain->permanent_null = NULL; 47d92: 42b9 0005 7f50 clrl 57f50 <_Watchdog_Seconds_chain+0x4> <== NOT EXECUTED _Chain_Initialize_empty( &_Watchdog_Ticks_chain ); _Chain_Initialize_empty( &_Watchdog_Seconds_chain ); } 47d98: 4e75 rts <== NOT EXECUTED ... 00047c80 <_Watchdog_Insert>: void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) { 47c80: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47c84: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 47c88: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 47c8c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Watchdog_Control *after; uint32_t insert_isr_nest_level; Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; 47c90: 2639 0005 7f1a movel 57f1a <_ISR_Nest_level>,%d3 <== NOT EXECUTED _ISR_Disable( level ); 47c96: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 47c9c: 2001 movel %d1,%d0 <== NOT EXECUTED 47c9e: 40c4 movew %sr,%d4 <== NOT EXECUTED 47ca0: 8084 orl %d4,%d0 <== NOT EXECUTED 47ca2: 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_watchdog->state != WATCHDOG_INACTIVE ) { 47ca4: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 47ca8: 6706 beqs 47cb0 <_Watchdog_Insert+0x30> <== NOT EXECUTED _ISR_Enable( level ); 47caa: 46c4 movew %d4,%sr <== NOT EXECUTED 47cac: 6000 009a braw 47d48 <_Watchdog_Insert+0xc8> <== NOT EXECUTED return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; _Watchdog_Sync_count++; 47cb0: 2039 0005 7fc0 movel 57fc0 <_Watchdog_Sync_count>,%d0 <== NOT EXECUTED if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; 47cb6: 7401 moveq #1,%d2 <== NOT EXECUTED _Watchdog_Sync_count++; 47cb8: 5280 addql #1,%d0 <== NOT EXECUTED * used around this flash point allowed interrupts to execute * which violated the design assumptions. The critical section * mechanism used here WAS redesigned to address this. */ _ISR_Flash( level ); 47cba: 2241 moveal %d1,%a1 <== NOT EXECUTED if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; 47cbc: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED _Watchdog_Sync_count++; 47cc0: 23c0 0005 7fc0 movel %d0,57fc0 <_Watchdog_Sync_count> <== NOT EXECUTED restart: delta_interval = the_watchdog->initial; 47cc6: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED * cache *header!! * * Till Straumann, 7/2003 (gcc-3.2.2 -O4 on powerpc) * */ for ( after = (Watchdog_Control *) ((volatile Chain_Control *)header)->first ; 47cca: 2053 moveal %a3@,%a0 <== NOT EXECUTED ; after = _Watchdog_Next( after ) ) { if ( delta_interval == 0 || !_Watchdog_Next( after ) ) 47ccc: 4a82 tstl %d2 <== NOT EXECUTED 47cce: 673c beqs 47d0c <_Watchdog_Insert+0x8c> <== NOT EXECUTED 47cd0: 4a90 tstl %a0@ <== NOT EXECUTED 47cd2: 6738 beqs 47d0c <_Watchdog_Insert+0x8c> <== NOT EXECUTED break; if ( delta_interval < after->delta_interval ) { 47cd4: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 47cd8: b282 cmpl %d2,%d1 <== NOT EXECUTED 47cda: 6308 blss 47ce4 <_Watchdog_Insert+0x64> <== NOT EXECUTED after->delta_interval -= delta_interval; 47cdc: 9282 subl %d2,%d1 <== NOT EXECUTED 47cde: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED 47ce2: 6028 bras 47d0c <_Watchdog_Insert+0x8c> <== NOT EXECUTED * used around this flash point allowed interrupts to execute * which violated the design assumptions. The critical section * mechanism used here WAS redesigned to address this. */ _ISR_Flash( level ); 47ce4: 2009 movel %a1,%d0 <== NOT EXECUTED 47ce6: 46c4 movew %d4,%sr <== NOT EXECUTED 47ce8: 8084 orl %d4,%d0 <== NOT EXECUTED 47cea: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) { 47cec: 7001 moveq #1,%d0 <== NOT EXECUTED if ( delta_interval < after->delta_interval ) { after->delta_interval -= delta_interval; break; } delta_interval -= after->delta_interval; 47cee: 9481 subl %d1,%d2 <== NOT EXECUTED * mechanism used here WAS redesigned to address this. */ _ISR_Flash( level ); if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) { 47cf0: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 47cf4: 663c bnes 47d32 <_Watchdog_Insert+0xb2> <== NOT EXECUTED goto exit_insert; } if ( _Watchdog_Sync_level > insert_isr_nest_level ) { 47cf6: 2039 0005 7f36 movel 57f36 <_Watchdog_Sync_level>,%d0 <== NOT EXECUTED 47cfc: b680 cmpl %d0,%d3 <== NOT EXECUTED 47cfe: 6408 bccs 47d08 <_Watchdog_Insert+0x88> <== NOT EXECUTED _Watchdog_Sync_level = insert_isr_nest_level; 47d00: 23c3 0005 7f36 movel %d3,57f36 <_Watchdog_Sync_level> <== NOT EXECUTED 47d06: 60be bras 47cc6 <_Watchdog_Insert+0x46> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Next( Watchdog_Control *the_watchdog ) { return ( (Watchdog_Control *) the_watchdog->Node.next ); 47d08: 2050 moveal %a0@,%a0 <== NOT EXECUTED 47d0a: 60c0 bras 47ccc <_Watchdog_Insert+0x4c> <== NOT EXECUTED _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); 47d0c: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 47d10: 2250 moveal %a0@,%a1 <== NOT EXECUTED the_watchdog->start_time = _Watchdog_Ticks_since_boot; 47d12: 2039 0005 7fc4 movel 57fc4 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED after_node->next = the_node; 47d18: 208a movel %a2,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Activate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_ACTIVE; 47d1a: 7202 moveq #2,%d1 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 47d1c: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED 47d20: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED 47d24: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED } } _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; 47d28: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; before_node->previous = the_node; 47d2c: 234a 0004 movel %a2,%a1@(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; 47d30: 2489 movel %a1,%a2@ <== NOT EXECUTED _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); the_watchdog->start_time = _Watchdog_Ticks_since_boot; exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; 47d32: 23c3 0005 7f36 movel %d3,57f36 <_Watchdog_Sync_level> <== NOT EXECUTED _Watchdog_Sync_count--; 47d38: 2039 0005 7fc0 movel 57fc0 <_Watchdog_Sync_count>,%d0 <== NOT EXECUTED 47d3e: 5380 subql #1,%d0 <== NOT EXECUTED 47d40: 23c0 0005 7fc0 movel %d0,57fc0 <_Watchdog_Sync_count> <== NOT EXECUTED _ISR_Enable( level ); 47d46: 46c4 movew %d4,%sr <== NOT EXECUTED } 47d48: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 <== NOT EXECUTED 47d4c: 4e5e unlk %fp <== NOT EXECUTED 47d4e: 4e75 rts 00047d9c <_Watchdog_Remove>: */ Watchdog_States _Watchdog_Remove( Watchdog_Control *the_watchdog ) { 47d9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47da0: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 47da2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ Watchdog_States _Watchdog_Remove( Watchdog_Control *the_watchdog ) { 47da8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47daa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 47dae: 40c2 movew %sr,%d2 <== NOT EXECUTED 47db0: 8082 orl %d2,%d0 <== NOT EXECUTED 47db2: 46c0 movew %d0,%sr <== NOT EXECUTED previous_state = the_watchdog->state; 47db4: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED switch ( previous_state ) { 47db8: 7001 moveq #1,%d0 <== NOT EXECUTED 47dba: b081 cmpl %d1,%d0 <== NOT EXECUTED 47dbc: 670c beqs 47dca <_Watchdog_Remove+0x2e> <== NOT EXECUTED 47dbe: 6242 bhis 47e02 <_Watchdog_Remove+0x66> <== NOT EXECUTED 47dc0: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 47dc4: b081 cmpl %d1,%d0 <== NOT EXECUTED 47dc6: 653a bcss 47e02 <_Watchdog_Remove+0x66> <== NOT EXECUTED 47dc8: 6006 bras 47dd0 <_Watchdog_Remove+0x34> <== 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; 47dca: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 47dce: 6032 bras 47e02 <_Watchdog_Remove+0x66> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Next( Watchdog_Control *the_watchdog ) { return ( (Watchdog_Control *) the_watchdog->Node.next ); 47dd0: 2052 moveal %a2@,%a0 <== NOT EXECUTED break; case WATCHDOG_ACTIVE: case WATCHDOG_REMOVE_IT: the_watchdog->state = WATCHDOG_INACTIVE; 47dd2: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED next_watchdog = _Watchdog_Next( the_watchdog ); if ( _Watchdog_Next(next_watchdog) ) 47dd6: 4a90 tstl %a0@ <== NOT EXECUTED 47dd8: 6708 beqs 47de2 <_Watchdog_Remove+0x46> <== NOT EXECUTED next_watchdog->delta_interval += the_watchdog->delta_interval; 47dda: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 47dde: d1a8 0010 addl %d0,%a0@(16) <== NOT EXECUTED if ( _Watchdog_Sync_count ) 47de2: 2039 0005 7fc0 movel 57fc0 <_Watchdog_Sync_count>,%d0 <== NOT EXECUTED 47de8: 670c beqs 47df6 <_Watchdog_Remove+0x5a> <== NOT EXECUTED _Watchdog_Sync_level = _ISR_Nest_level; 47dea: 2039 0005 7f1a movel 57f1a <_ISR_Nest_level>,%d0 <== NOT EXECUTED 47df0: 23c0 0005 7f36 movel %d0,57f36 <_Watchdog_Sync_level> <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 47df6: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 47df8: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; previous->next = next; 47dfc: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 47dfe: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 47e02: 2039 0005 7fc4 movel 57fc4 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED 47e08: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED _ISR_Enable( level ); 47e0c: 46c2 movew %d2,%sr <== NOT EXECUTED return( previous_state ); } 47e0e: 241f movel %sp@+,%d2 <== NOT EXECUTED 47e10: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47e12: 4e5e unlk %fp <== NOT EXECUTED 47e14: 2001 movel %d1,%d0 <== NOT EXECUTED 47e16: 4e75 rts 00047e18 <_Watchdog_Tickle>: */ void _Watchdog_Tickle( Chain_Control *header ) { 47e18: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 47e1c: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== 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 ); 47e20: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _Watchdog_Tickle( Chain_Control *header ) { 47e26: 2a6e 0008 moveal %fp@(8),%a5 <== 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 ); 47e2a: 40c2 movew %sr,%d2 <== NOT EXECUTED 47e2c: 8082 orl %d2,%d0 <== NOT EXECUTED 47e2e: 46c0 movew %d0,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( Chain_Control *the_chain ) { return (the_chain->first == _Chain_Tail(the_chain)); 47e30: 264d moveal %a5,%a3 <== NOT EXECUTED 47e32: 205b moveal %a3@+,%a0 <== NOT EXECUTED if ( _Chain_Is_empty( header ) ) 47e34: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 47e36: 6750 beqs 47e88 <_Watchdog_Tickle+0x70> <== 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) { 47e38: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) header->first ); 47e3c: 2448 moveal %a0,%a2 <== NOT EXECUTED 47e3e: 6708 beqs 47e48 <_Watchdog_Tickle+0x30> <== NOT EXECUTED the_watchdog->delta_interval--; 47e40: 5380 subql #1,%d0 <== NOT EXECUTED 47e42: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) 47e46: 6640 bnes 47e88 <_Watchdog_Tickle+0x70> <== NOT EXECUTED goto leave; } do { watchdog_state = _Watchdog_Remove( the_watchdog ); 47e48: 49f9 0004 7d9c lea 47d9c <_Watchdog_Remove>,%a4 <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 47e4e: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) goto leave; } do { watchdog_state = _Watchdog_Remove( the_watchdog ); 47e54: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47e56: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Enable( level ); 47e58: 46c2 movew %d2,%sr <== NOT EXECUTED switch( watchdog_state ) { 47e5a: 7202 moveq #2,%d1 <== NOT EXECUTED 47e5c: 588f addql #4,%sp <== NOT EXECUTED 47e5e: b280 cmpl %d0,%d1 <== NOT EXECUTED 47e60: 6610 bnes 47e72 <_Watchdog_Tickle+0x5a> <== NOT EXECUTED case WATCHDOG_ACTIVE: (*the_watchdog->routine)( 47e62: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 47e66: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 47e6a: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 47e6e: 4e90 jsr %a0@ <== NOT EXECUTED 47e70: 508f addql #8,%sp <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 47e72: 2003 movel %d3,%d0 <== NOT EXECUTED 47e74: 40c2 movew %sr,%d2 <== NOT EXECUTED 47e76: 8082 orl %d2,%d0 <== NOT EXECUTED 47e78: 46c0 movew %d0,%sr <== NOT EXECUTED 47e7a: 2015 movel %a5@,%d0 <== NOT EXECUTED 47e7c: 2440 moveal %d0,%a2 <== NOT EXECUTED the_watchdog = _Watchdog_First( header ); } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); 47e7e: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 47e80: 6706 beqs 47e88 <_Watchdog_Tickle+0x70> <== NOT EXECUTED 47e82: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 47e86: 67cc beqs 47e54 <_Watchdog_Tickle+0x3c> <== NOT EXECUTED leave: _ISR_Enable(level); 47e88: 46c2 movew %d2,%sr <== NOT EXECUTED } 47e8a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47e90: 4e5e unlk %fp <== NOT EXECUTED 47e92: 4e75 rts 00047eac <_Workspace_Allocate>: * _Workspace_Allocate */ void *_Workspace_Allocate( size_t size ) { 47eac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Heap_Allocate( &_Workspace_Area, size ); 47eb0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47eb4: 4879 0005 7e9e pea 57e9e <_Workspace_Area> <== NOT EXECUTED 47eba: 4eb9 0004 a3b0 jsr 4a3b0 <_Heap_Allocate> <== NOT EXECUTED } 47ec0: 4e5e unlk %fp <== NOT EXECUTED 47ec2: 4e75 rts 00047ec4 <_Workspace_Allocate_or_fatal_error>: * _Workspace_Allocate_or_fatal_error */ void *_Workspace_Allocate_or_fatal_error( size_t size ) { 47ec4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED */ void *_Workspace_Allocate( size_t size ) { return _Heap_Allocate( &_Workspace_Area, size ); 47ec8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47ecc: 4879 0005 7e9e pea 57e9e <_Workspace_Area> <== NOT EXECUTED 47ed2: 4eb9 0004 a3b0 jsr 4a3b0 <_Heap_Allocate> <== NOT EXECUTED { void *memory; memory = _Workspace_Allocate( size ); if ( memory == NULL ) 47ed8: 508f addql #8,%sp <== NOT EXECUTED 47eda: 4a80 tstl %d0 <== NOT EXECUTED 47edc: 6610 bnes 47eee <_Workspace_Allocate_or_fatal_error+0x2a> <== NOT EXECUTED _Internal_error_Occurred( 47ede: 4878 0004 pea 4 <== NOT EXECUTED 47ee2: 4878 0001 pea 1 <== NOT EXECUTED 47ee6: 42a7 clrl %sp@- <== NOT EXECUTED 47ee8: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED TRUE, INTERNAL_ERROR_WORKSPACE_ALLOCATION ); return memory; } 47eee: 4e5e unlk %fp <== NOT EXECUTED 47ef0: 4e75 rts 00047e94 <_Workspace_Free>: * _Workspace_Free */ bool _Workspace_Free( void *block ) { 47e94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Heap_Free( &_Workspace_Area, block ); 47e98: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47e9c: 4879 0005 7e9e pea 57e9e <_Workspace_Area> <== NOT EXECUTED 47ea2: 4eb9 0004 a430 jsr 4a430 <_Heap_Free> <== NOT EXECUTED } 47ea8: 4e5e unlk %fp <== NOT EXECUTED 47eaa: 4e75 rts 00047ef2 <_Workspace_Handler_initialization>: */ void _Workspace_Handler_initialization( void *starting_address, size_t size ) { 47ef2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47ef6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47ef8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 47efc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47efe: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED uint32_t memory_available; if ( !starting_address || !_Addresses_Is_aligned( starting_address ) ) 47f02: 6706 beqs 47f0a <_Workspace_Handler_initialization+0x18> <== NOT EXECUTED 47f04: 7003 moveq #3,%d0 <== NOT EXECUTED 47f06: c082 andl %d2,%d0 <== NOT EXECUTED 47f08: 6706 beqs 47f10 <_Workspace_Handler_initialization+0x1e> <== NOT EXECUTED _Internal_error_Occurred( 47f0a: 4878 0002 pea 2 <== NOT EXECUTED 47f0e: 6040 bras 47f50 <_Workspace_Handler_initialization+0x5e> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS ); if ( _Configuration_Table->do_zero_of_workspace ) 47f10: 2079 0005 7f16 moveal 57f16 <_Configuration_Table>,%a0 <== NOT EXECUTED 47f16: 4a28 0028 tstb %a0@(40) <== NOT EXECUTED 47f1a: 6712 beqs 47f2e <_Workspace_Handler_initialization+0x3c> <== NOT EXECUTED memset( starting_address, 0, size ); 47f1c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47f1e: 42a7 clrl %sp@- <== NOT EXECUTED 47f20: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47f22: 4eb9 0004 bfbc jsr 4bfbc <== NOT EXECUTED 47f28: dffc 0000 000c addal #12,%sp <== NOT EXECUTED memory_available = _Heap_Initialize( 47f2e: 4878 0004 pea 4 <== NOT EXECUTED 47f32: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47f34: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47f36: 4879 0005 7e9e pea 57e9e <_Workspace_Area> <== NOT EXECUTED 47f3c: 4eb9 0004 5e28 jsr 45e28 <_Heap_Initialize> <== NOT EXECUTED starting_address, size, CPU_HEAP_ALIGNMENT ); if ( memory_available == 0 ) 47f42: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 47f48: 4a80 tstl %d0 <== NOT EXECUTED 47f4a: 6610 bnes 47f5c <_Workspace_Handler_initialization+0x6a> <== NOT EXECUTED _Internal_error_Occurred( 47f4c: 4878 0003 pea 3 <== NOT EXECUTED 47f50: 4878 0001 pea 1 <== NOT EXECUTED 47f54: 42a7 clrl %sp@- <== NOT EXECUTED 47f56: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_TOO_LITTLE_WORKSPACE ); } 47f5c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47f60: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47f64: 4e5e unlk %fp <== NOT EXECUTED 47f66: 4e75 rts 00053fc8 <_kill_r>: int _kill_r( struct _reent *ptr, pid_t pid, int sig ) { 53fc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 53fcc: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED 53fd2: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 53fd8: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED } 53fdc: 4e5e unlk %fp <== NOT EXECUTED struct _reent *ptr, pid_t pid, int sig ) { return killinfo( pid, sig, NULL ); 53fde: 4ef9 0005 4178 jmp 54178 <== NOT EXECUTED 00044b6c : int adjtime( struct timeval *delta, struct timeval *olddelta ) { 44b6c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 44b70: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 44b74: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 44b78: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED long adjustment; /* * Simple validations */ if ( !delta ) 44b7c: 4a8a tstl %a2 <== NOT EXECUTED 44b7e: 670c beqs 44b8c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) 44b80: 203c 000f 423f movel #999999,%d0 <== NOT EXECUTED 44b86: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED 44b8a: 6412 bccs 44b9e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 44b8c: 4eb9 0004 bf6c jsr 4bf6c <__errno> <== NOT EXECUTED 44b92: 2040 moveal %d0,%a0 <== NOT EXECUTED 44b94: 7016 moveq #22,%d0 <== NOT EXECUTED 44b96: 2080 movel %d0,%a0@ <== NOT EXECUTED 44b98: 72ff moveq #-1,%d1 <== NOT EXECUTED 44b9a: 6000 00c4 braw 44c60 <== NOT EXECUTED if ( olddelta ) { 44b9e: 4a8b tstl %a3 <== NOT EXECUTED 44ba0: 6706 beqs 44ba8 <== NOT EXECUTED olddelta->tv_sec = 0; 44ba2: 4293 clrl %a3@ <== NOT EXECUTED olddelta->tv_usec = 0; 44ba4: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED } /* convert delta to microseconds */ adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND); 44ba8: 2412 movel %a2@,%d2 <== NOT EXECUTED 44baa: 2002 movel %d2,%d0 <== NOT EXECUTED 44bac: 2202 movel %d2,%d1 <== NOT EXECUTED 44bae: e788 lsll #3,%d0 <== NOT EXECUTED 44bb0: e189 lsll #8,%d1 <== NOT EXECUTED 44bb2: 9280 subl %d0,%d1 <== NOT EXECUTED 44bb4: 2001 movel %d1,%d0 <== NOT EXECUTED 44bb6: ed88 lsll #6,%d0 <== NOT EXECUTED 44bb8: 9081 subl %d1,%d0 <== NOT EXECUTED 44bba: d082 addl %d2,%d0 <== NOT EXECUTED 44bbc: ed88 lsll #6,%d0 <== NOT EXECUTED adjustment += delta->tv_usec; /* too small to account for */ if ( adjustment < _TOD_Microseconds_per_tick ) 44bbe: d0aa 0004 addl %a2@(4),%d0 <== NOT EXECUTED 44bc2: b0b9 0005 9b5a cmpl 59b5a <_TOD_Microseconds_per_tick>,%d0 <== NOT EXECUTED 44bc8: 6500 0094 bcsw 44c5e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44bcc: 2039 0005 99cc movel 599cc <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44bd2: 5280 addql #1,%d0 <== NOT EXECUTED 44bd4: 23c0 0005 99cc movel %d0,599cc <_Thread_Dispatch_disable_level> <== NOT EXECUTED * This prevents context switches while we are adjusting the TOD */ _Thread_Disable_dispatch(); _TOD_Get( &ts ); 44bda: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 44bde: 4eb9 0004 64ac jsr 464ac <_TOD_Get> <== NOT EXECUTED int adjtime( struct timeval *delta, struct timeval *olddelta ) { 44be4: 2052 moveal %a2@,%a0 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Get( &ts ); ts.tv_sec += delta->tv_sec; ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 44be6: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED 44bea: 2401 movel %d1,%d2 <== NOT EXECUTED 44bec: 2001 movel %d1,%d0 <== NOT EXECUTED 44bee: e58a lsll #2,%d2 <== NOT EXECUTED 44bf0: ef88 lsll #7,%d0 <== NOT EXECUTED 44bf2: 9082 subl %d2,%d0 <== NOT EXECUTED 44bf4: d081 addl %d1,%d0 <== NOT EXECUTED 44bf6: e788 lsll #3,%d0 <== NOT EXECUTED 44bf8: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED int adjtime( struct timeval *delta, struct timeval *olddelta ) { 44bfc: d1ee fff8 addal %fp@(-8),%a0 <== NOT EXECUTED 44c00: 2200 movel %d0,%d1 <== NOT EXECUTED 44c02: 263c 3b9a ca00 movel #1000000000,%d3 <== NOT EXECUTED 44c08: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED 44c0c: 41f0 1800 lea %a0@(00000000,%d1:l),%a0 <== NOT EXECUTED 44c10: 243c c465 3600 movel #-1000000000,%d2 <== NOT EXECUTED 44c16: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 44c1a: 588f addql #4,%sp <== NOT EXECUTED 44c1c: d280 addl %d0,%d1 <== NOT EXECUTED 44c1e: 6006 bras 44c26 <== NOT EXECUTED 44c20: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED 44c26: 2008 movel %a0,%d0 <== NOT EXECUTED 44c28: 5388 subql #1,%a0 <== 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) ) { 44c2a: 0c81 c465 3600 cmpil #-1000000000,%d1 <== NOT EXECUTED 44c30: 63ee blss 44c20 <== NOT EXECUTED ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; ts.tv_sec--; } _TOD_Set( &ts ); 44c32: 486e fff8 pea %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) ) { 44c36: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 44c3a: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; ts.tv_sec--; } _TOD_Set( &ts ); 44c3e: 4eb9 0004 6544 jsr 46544 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 44c44: 4eb9 0004 749e jsr 4749e <_Thread_Enable_dispatch> <== NOT EXECUTED /* set the user's output */ if ( olddelta ) 44c4a: 588f addql #4,%sp <== NOT EXECUTED 44c4c: 4a8b tstl %a3 <== NOT EXECUTED 44c4e: 670e beqs 44c5e <== NOT EXECUTED *olddelta = *delta; 44c50: 2012 movel %a2@,%d0 <== NOT EXECUTED 44c52: 276a 0004 0004 movel %a2@(4),%a3@(4) <== NOT EXECUTED 44c58: 4281 clrl %d1 <== NOT EXECUTED 44c5a: 2680 movel %d0,%a3@ <== NOT EXECUTED 44c5c: 6002 bras 44c60 <== NOT EXECUTED 44c5e: 4281 clrl %d1 <== NOT EXECUTED return 0; } 44c60: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 44c66: 4e5e unlk %fp <== NOT EXECUTED 44c68: 2001 movel %d1,%d0 <== NOT EXECUTED 44c6a: 4e75 rts 00044c0c : int aio_cancel( int filedes, struct aiocb *aiocbp ) { 44c0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c10: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c16: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c18: 7058 moveq #88,%d0 <== NOT EXECUTED 44c1a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c1c: 4e5e unlk %fp <== NOT EXECUTED 44c1e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c20: 4e75 rts <== NOT EXECUTED ... 00044c24 : #include int aio_error( const struct aiocb *aiocbp ) { 44c24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c28: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c30: 7058 moveq #88,%d0 <== NOT EXECUTED 44c32: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c34: 4e5e unlk %fp <== NOT EXECUTED 44c36: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c38: 4e75 rts <== NOT EXECUTED ... 00044c3c : int aio_fsync( int op, struct aiocb *aiocbp ) { 44c3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c40: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c46: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c48: 7058 moveq #88,%d0 <== NOT EXECUTED 44c4a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c4c: 4e5e unlk %fp <== NOT EXECUTED 44c4e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c50: 4e75 rts <== NOT EXECUTED ... 00044c54 : #include int aio_read( struct aiocb *aiocbp ) { 44c54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c58: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c5e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c60: 7058 moveq #88,%d0 <== NOT EXECUTED 44c62: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c64: 4e5e unlk %fp <== NOT EXECUTED 44c66: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c68: 4e75 rts <== NOT EXECUTED ... 00044c6c : #include int aio_return( const struct aiocb *aiocbp ) { 44c6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c70: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c76: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c78: 7058 moveq #88,%d0 <== NOT EXECUTED 44c7a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c7c: 4e5e unlk %fp <== NOT EXECUTED 44c7e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c80: 4e75 rts <== NOT EXECUTED ... 00044c84 : int aio_suspend( const struct aiocb * const list[], int nent, const struct timespec *timeout ) { 44c84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44c88: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44c8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44c90: 7058 moveq #88,%d0 <== NOT EXECUTED 44c92: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44c94: 4e5e unlk %fp <== NOT EXECUTED 44c96: 70ff moveq #-1,%d0 <== NOT EXECUTED 44c98: 4e75 rts <== NOT EXECUTED ... 00044c9c : #include int aio_write( struct aiocb *aiocbp ) { 44c9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44ca0: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44ca6: 2040 moveal %d0,%a0 <== NOT EXECUTED 44ca8: 7058 moveq #88,%d0 <== NOT EXECUTED 44caa: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44cac: 4e5e unlk %fp <== NOT EXECUTED 44cae: 70ff moveq #-1,%d0 <== NOT EXECUTED 44cb0: 4e75 rts <== NOT EXECUTED ... 000466a8 : } unsigned int alarm( unsigned int seconds ) { 466a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 466ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 466ae: 4ab9 0005 ca70 tstl 5ca70 <_POSIX_signals_Alarm_timer+0x1c> <== NOT EXECUTED 466b4: 6622 bnes 466d8 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 466b6: 42b9 0005 ca5c clrl 5ca5c <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 466bc: 4282 clrl %d2 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 466be: 203c 0004 6740 movel #288576,%d0 <== NOT EXECUTED 466c4: 23c0 0005 ca70 movel %d0,5ca70 <_POSIX_signals_Alarm_timer+0x1c> <== NOT EXECUTED the_watchdog->id = id; 466ca: 42b9 0005 ca74 clrl 5ca74 <_POSIX_signals_Alarm_timer+0x20> <== NOT EXECUTED the_watchdog->user_data = user_data; 466d0: 42b9 0005 ca78 clrl 5ca78 <_POSIX_signals_Alarm_timer+0x24> <== NOT EXECUTED 466d6: 6042 bras 4671a <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL ); } else { switch ( _Watchdog_Remove( the_timer ) ) { 466d8: 4879 0005 ca54 pea 5ca54 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 466de: 4eb9 0004 aca8 jsr 4aca8 <_Watchdog_Remove> <== NOT EXECUTED 466e4: 588f addql #4,%sp <== NOT EXECUTED 466e6: 5580 subql #2,%d0 <== NOT EXECUTED 466e8: 7201 moveq #1,%d1 <== NOT EXECUTED 466ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 466ec: 6404 bccs 466f2 <== NOT EXECUTED 466ee: 4282 clrl %d2 <== NOT EXECUTED 466f0: 6028 bras 4671a <== 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 - 466f2: 2039 0005 ca6c movel 5ca6c <_POSIX_signals_Alarm_timer+0x18>,%d0 <== NOT EXECUTED 466f8: 90b9 0005 ca68 subl 5ca68 <_POSIX_signals_Alarm_timer+0x14>,%d0 <== NOT EXECUTED 466fe: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED 46704: 41f9 0005 ccd6 lea 5ccd6 <_TOD_Microseconds_per_tick>,%a0 <== NOT EXECUTED 4670a: 4c50 1001 remul %a0@,%d1,%d1 <== NOT EXECUTED 4670e: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED 46712: 2439 0005 ca60 movel 5ca60 <_POSIX_signals_Alarm_timer+0xc>,%d2 <== NOT EXECUTED 46718: 9480 subl %d0,%d2 <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 4671a: 4879 0005 ca54 pea 5ca54 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46720: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 46724: 4879 0005 cc18 pea 5cc18 <_Watchdog_Seconds_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4672a: 23d0 0005 ca60 movel %a0@,5ca60 <_POSIX_signals_Alarm_timer+0xc> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 46730: 4eb9 0004 ab8c jsr 4ab8c <_Watchdog_Insert> <== NOT EXECUTED } _Watchdog_Insert_seconds( the_timer, seconds ); return remaining; } 46736: 2002 movel %d2,%d0 <== NOT EXECUTED 46738: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4673c: 4e5e unlk %fp <== NOT EXECUTED 4673e: 4e75 rts 00044cb4 : int clock_getcpuclockid( pid_t pid, clockid_t *clock_id ) { 44cb4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44cb8: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44cbe: 2040 moveal %d0,%a0 <== NOT EXECUTED 44cc0: 7058 moveq #88,%d0 <== NOT EXECUTED 44cc2: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44cc4: 4e5e unlk %fp <== NOT EXECUTED 44cc6: 70ff moveq #-1,%d0 <== NOT EXECUTED 44cc8: 4e75 rts <== NOT EXECUTED ... 00044ccc : int clock_getenable_attr( clockid_t clock_id, int *attr ) { 44ccc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44cd0: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44cd6: 2040 moveal %d0,%a0 <== NOT EXECUTED 44cd8: 7058 moveq #88,%d0 <== NOT EXECUTED 44cda: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44cdc: 4e5e unlk %fp <== NOT EXECUTED 44cde: 70ff moveq #-1,%d0 <== NOT EXECUTED 44ce0: 4e75 rts <== NOT EXECUTED ... 000455d4 : int clock_getres( clockid_t clock_id, struct timespec *res ) { 455d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 455d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 455da: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 455de: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !res ) 455e0: 4a88 tstl %a0 <== NOT EXECUTED 455e2: 6610 bnes 455f4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 455e4: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 455ea: 7416 moveq #22,%d2 <== NOT EXECUTED 455ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 455ee: 2082 movel %d2,%a0@ <== NOT EXECUTED 455f0: 70ff moveq #-1,%d0 <== NOT EXECUTED 455f2: 6044 bras 45638 <== NOT EXECUTED switch ( clock_id ) { 455f4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 455f8: 7202 moveq #2,%d1 <== NOT EXECUTED 455fa: 5380 subql #1,%d0 <== NOT EXECUTED 455fc: b280 cmpl %d0,%d1 <== NOT EXECUTED 455fe: 652a bcss 4562a <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = _TOD_Microseconds_per_tick / 1000000; 45600: 2039 0005 b6fe movel 5b6fe <_TOD_Microseconds_per_tick>,%d0 <== NOT EXECUTED res->tv_nsec = _TOD_Microseconds_per_tick * 1000; 45606: 2400 movel %d0,%d2 <== NOT EXECUTED 45608: 2200 movel %d0,%d1 <== NOT EXECUTED 4560a: e58a lsll #2,%d2 <== NOT EXECUTED 4560c: ef89 lsll #7,%d1 <== NOT EXECUTED 4560e: 9282 subl %d2,%d1 <== NOT EXECUTED 45610: d280 addl %d0,%d1 <== NOT EXECUTED 45612: e789 lsll #3,%d1 <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = _TOD_Microseconds_per_tick / 1000000; 45614: 2400 movel %d0,%d2 <== NOT EXECUTED res->tv_nsec = _TOD_Microseconds_per_tick * 1000; 45616: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = _TOD_Microseconds_per_tick / 1000000; 4561a: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED 45620: 4c43 2002 remul %d3,%d2,%d2 <== NOT EXECUTED 45624: 2082 movel %d2,%a0@ <== NOT EXECUTED res->tv_nsec = _TOD_Microseconds_per_tick * 1000; 45626: 4280 clrl %d0 <== NOT EXECUTED 45628: 600e bras 45638 <== NOT EXECUTED /* _TOD_From_ticks( _TOD_Microseconds_per_tick, res ); */ } break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4562a: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 45630: 2040 moveal %d0,%a0 <== NOT EXECUTED 45632: 7216 moveq #22,%d1 <== NOT EXECUTED 45634: 70ff moveq #-1,%d0 <== NOT EXECUTED 45636: 2081 movel %d1,%a0@ <== NOT EXECUTED } return 0; } 45638: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4563c: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45640: 4e5e unlk %fp <== NOT EXECUTED 45642: 4e75 rts 00045644 : int clock_gettime( clockid_t clock_id, struct timespec *tp ) { 45644: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45648: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4564c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 45650: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !tp ) 45652: 4a81 tstl %d1 <== NOT EXECUTED 45654: 660e bnes 45664 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45656: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 4565c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4565e: 7016 moveq #22,%d0 <== NOT EXECUTED 45660: 2080 movel %d0,%a0@ <== NOT EXECUTED 45662: 603e bras 456a2 <== NOT EXECUTED if ( clock_id == CLOCK_REALTIME ) 45664: 7401 moveq #1,%d2 <== NOT EXECUTED 45666: b480 cmpl %d0,%d2 <== NOT EXECUTED 45668: 660a bnes 45674 <== NOT EXECUTED _TOD_Get(tp); 4566a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4566c: 4eb9 0004 77e8 jsr 477e8 <_TOD_Get> <== NOT EXECUTED 45672: 6014 bras 45688 <== NOT EXECUTED #ifdef CLOCK_MONOTONIC else if ( clock_id == CLOCK_MONOTONIC ) 45674: 7404 moveq #4,%d2 <== NOT EXECUTED 45676: b480 cmpl %d0,%d2 <== NOT EXECUTED 45678: 6706 beqs 45680 <== NOT EXECUTED _TOD_Get_uptime(tp); #endif #ifdef _POSIX_CPUTIME else if ( clock_id == CLOCK_PROCESS_CPUTIME ) 4567a: 7402 moveq #2,%d2 <== NOT EXECUTED 4567c: b480 cmpl %d0,%d2 <== NOT EXECUTED 4567e: 660e bnes 4568e <== NOT EXECUTED _TOD_Get_uptime(tp); 45680: 2f01 movel %d1,%sp@- <== NOT EXECUTED 45682: 4eb9 0004 7848 jsr 47848 <_TOD_Get_uptime> <== NOT EXECUTED 45688: 588f addql #4,%sp <== NOT EXECUTED 4568a: 4280 clrl %d0 <== NOT EXECUTED 4568c: 6022 bras 456b0 <== NOT EXECUTED 4568e: 41f9 0004 cf8c lea 4cf8c <__errno>,%a0 <== NOT EXECUTED #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) 45694: 7203 moveq #3,%d1 <== NOT EXECUTED 45696: b280 cmpl %d0,%d1 <== NOT EXECUTED 45698: 660c bnes 456a6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4569a: 4e90 jsr %a0@ <== NOT EXECUTED 4569c: 7458 moveq #88,%d2 <== NOT EXECUTED 4569e: 2040 moveal %d0,%a0 <== NOT EXECUTED 456a0: 2082 movel %d2,%a0@ <== NOT EXECUTED 456a2: 70ff moveq #-1,%d0 <== NOT EXECUTED 456a4: 600a bras 456b0 <== NOT EXECUTED #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 456a6: 4e90 jsr %a0@ <== NOT EXECUTED 456a8: 2040 moveal %d0,%a0 <== NOT EXECUTED 456aa: 7216 moveq #22,%d1 <== NOT EXECUTED 456ac: 70ff moveq #-1,%d0 <== NOT EXECUTED 456ae: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 456b0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 456b4: 4e5e unlk %fp <== NOT EXECUTED 456b6: 4e75 rts 00044d58 : int clock_setenable_attr( clockid_t clock_id, int attr ) { 44d58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44d5c: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44d62: 2040 moveal %d0,%a0 <== NOT EXECUTED 44d64: 7058 moveq #88,%d0 <== NOT EXECUTED 44d66: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44d68: 4e5e unlk %fp <== NOT EXECUTED 44d6a: 70ff moveq #-1,%d0 <== NOT EXECUTED 44d6c: 4e75 rts <== NOT EXECUTED ... 0005cec4 : int clock_settime( clockid_t clock_id, const struct timespec *tp ) { 5cec4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cec8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5cecc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( !tp ) 5ced0: 4a88 tstl %a0 <== NOT EXECUTED 5ced2: 6710 beqs 5cee4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 5ced4: 7201 moveq #1,%d1 <== NOT EXECUTED 5ced6: b280 cmpl %d0,%d1 <== NOT EXECUTED 5ced8: 663a bnes 5cf14 <== NOT EXECUTED if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 ) 5ceda: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED 5cee0: b090 cmpl %a0@,%d0 <== NOT EXECUTED 5cee2: 650e bcss 5cef2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 5cee4: 4eb9 0006 8a8c jsr 68a8c <__errno> <== NOT EXECUTED 5ceea: 7216 moveq #22,%d1 <== NOT EXECUTED 5ceec: 2040 moveal %d0,%a0 <== NOT EXECUTED 5ceee: 2081 movel %d1,%a0@ <== NOT EXECUTED 5cef0: 6034 bras 5cf26 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 5cef2: 2039 0009 38b8 movel 938b8 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 5cef8: 5280 addql #1,%d0 <== NOT EXECUTED 5cefa: 23c0 0009 38b8 movel %d0,938b8 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( tp ); 5cf00: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5cf02: 4eb9 0005 e31c jsr 5e31c <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 5cf08: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5cf0e: 588f addql #4,%sp <== NOT EXECUTED 5cf10: 4280 clrl %d0 <== NOT EXECUTED 5cf12: 6030 bras 5cf44 <== NOT EXECUTED } #ifdef _POSIX_CPUTIME else if ( clock_id == CLOCK_PROCESS_CPUTIME ) 5cf14: 7202 moveq #2,%d1 <== NOT EXECUTED 5cf16: b280 cmpl %d0,%d1 <== NOT EXECUTED 5cf18: 6610 bnes 5cf2a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 5cf1a: 4eb9 0006 8a8c jsr 68a8c <__errno> <== NOT EXECUTED 5cf20: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cf22: 7058 moveq #88,%d0 <== NOT EXECUTED 5cf24: 2080 movel %d0,%a0@ <== NOT EXECUTED 5cf26: 70ff moveq #-1,%d0 <== NOT EXECUTED 5cf28: 601a bras 5cf44 <== NOT EXECUTED 5cf2a: 41f9 0006 8a8c lea 68a8c <__errno>,%a0 <== NOT EXECUTED #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) 5cf30: 7203 moveq #3,%d1 <== NOT EXECUTED 5cf32: b280 cmpl %d0,%d1 <== NOT EXECUTED 5cf34: 6604 bnes 5cf3a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 5cf36: 4e90 jsr %a0@ <== NOT EXECUTED 5cf38: 60e6 bras 5cf20 <== NOT EXECUTED #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 5cf3a: 4e90 jsr %a0@ <== NOT EXECUTED 5cf3c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cf3e: 7216 moveq #22,%d1 <== NOT EXECUTED 5cf40: 70ff moveq #-1,%d0 <== NOT EXECUTED 5cf42: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 5cf44: 4e5e unlk %fp <== NOT EXECUTED 5cf46: 4e75 rts 00044df4 : int filedes, void *dev_data_ptr, size_t nbyte, int *dev_info_ptr ) { 44df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44df8: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44dfe: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e00: 7058 moveq #88,%d0 <== NOT EXECUTED 44e02: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e04: 4e5e unlk %fp <== NOT EXECUTED 44e06: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e08: 4e75 rts <== NOT EXECUTED ... 00044e24 : const char *path, const char *arg, ... ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e28: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e30: 7058 moveq #88,%d0 <== NOT EXECUTED 44e32: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e34: 4e5e unlk %fp <== NOT EXECUTED 44e36: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e38: 4e75 rts <== NOT EXECUTED ... 00044e0c : const char *path, char const *arg, ... ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e10: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e16: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e18: 7058 moveq #88,%d0 <== NOT EXECUTED 44e1a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e1c: 4e5e unlk %fp <== NOT EXECUTED 44e1e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e20: 4e75 rts <== NOT EXECUTED ... 00044e3c : const char *file, const char *arg, ... ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e40: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e46: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e48: 7058 moveq #88,%d0 <== NOT EXECUTED 44e4a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e4c: 4e5e unlk %fp <== NOT EXECUTED 44e4e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e50: 4e75 rts <== NOT EXECUTED ... 00044e6c : int execv( const char *file, char *const argv[] ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e70: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e76: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e78: 7058 moveq #88,%d0 <== NOT EXECUTED 44e7a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e7c: 4e5e unlk %fp <== NOT EXECUTED 44e7e: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e80: 4e75 rts <== NOT EXECUTED ... 00044e54 : const char *path, char *const argv[], char *const envp[] ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e58: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e5e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e60: 7058 moveq #88,%d0 <== NOT EXECUTED 44e62: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e64: 4e5e unlk %fp <== NOT EXECUTED 44e66: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e68: 4e75 rts <== NOT EXECUTED ... 00044e84 : int execvp( const char *path, char *const argv[] ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e88: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44e8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e90: 7058 moveq #88,%d0 <== NOT EXECUTED 44e92: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44e94: 4e5e unlk %fp <== NOT EXECUTED 44e96: 70ff moveq #-1,%d0 <== NOT EXECUTED 44e98: 4e75 rts <== NOT EXECUTED ... 00044e9c : #include #include int fork( void ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 44e9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44ea0: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44ea6: 2040 moveal %d0,%a0 <== NOT EXECUTED 44ea8: 7058 moveq #88,%d0 <== NOT EXECUTED 44eaa: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44eac: 4e5e unlk %fp <== NOT EXECUTED 44eae: 70ff moveq #-1,%d0 <== NOT EXECUTED 44eb0: 4e75 rts <== NOT EXECUTED ... 00044f84 : int kill( pid_t pid, int sig ) { 44f84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 44f88: 42a7 clrl %sp@- <== NOT EXECUTED 44f8a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 44f8e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44f92: 4eb9 0004 ac10 jsr 4ac10 <== NOT EXECUTED } 44f98: 4e5e unlk %fp <== NOT EXECUTED 44f9a: 4e75 rts 00054178 : int killinfo( pid_t pid, int sig, const union sigval *value ) { 54178: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 5417c: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED 54180: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 54184: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * Only supported for the "calling process" (i.e. this node). */ if ( pid != getpid() ) 54188: 4eb9 0005 3d68 jsr 53d68 <== NOT EXECUTED 5418e: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 54192: 670e beqs 541a2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 54194: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 5419a: 7403 moveq #3,%d2 <== NOT EXECUTED 5419c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5419e: 2082 movel %d2,%a0@ <== NOT EXECUTED 541a0: 6010 bras 541b2 <== NOT EXECUTED /* * Validate the signal passed. */ if ( !sig ) 541a2: 4a83 tstl %d3 <== NOT EXECUTED 541a4: 6612 bnes 541b8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 541a6: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 541ac: 7216 moveq #22,%d1 <== NOT EXECUTED 541ae: 2040 moveal %d0,%a0 <== NOT EXECUTED 541b0: 2081 movel %d1,%a0@ <== NOT EXECUTED 541b2: 70ff moveq #-1,%d0 <== NOT EXECUTED 541b4: 6000 01f0 braw 543a6 <== NOT EXECUTED if ( !is_valid_signo(sig) ) 541b8: 2403 movel %d3,%d2 <== NOT EXECUTED 541ba: 5382 subql #1,%d2 <== NOT EXECUTED 541bc: 701f moveq #31,%d0 <== NOT EXECUTED 541be: b082 cmpl %d2,%d0 <== NOT EXECUTED 541c0: 65e4 bcss 541a6 <== NOT EXECUTED /* * If the signal is being ignored, then we are out of here. */ if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 541c2: 2203 movel %d3,%d1 <== NOT EXECUTED 541c4: 2003 movel %d3,%d0 <== NOT EXECUTED 541c6: e589 lsll #2,%d1 <== NOT EXECUTED 541c8: e988 lsll #4,%d0 <== NOT EXECUTED 541ca: 9081 subl %d1,%d0 <== NOT EXECUTED 541cc: 0680 0005 838e addil #361358,%d0 <== NOT EXECUTED 541d2: 7201 moveq #1,%d1 <== NOT EXECUTED 541d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 541d6: b290 cmpl %a0@,%d1 <== NOT EXECUTED 541d8: 6700 01ca beqw 543a4 <== 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 ) ) 541dc: 7008 moveq #8,%d0 <== NOT EXECUTED 541de: b083 cmpl %d3,%d0 <== NOT EXECUTED 541e0: 670e beqs 541f0 <== NOT EXECUTED 541e2: 7204 moveq #4,%d1 <== NOT EXECUTED 541e4: b283 cmpl %d3,%d1 <== NOT EXECUTED 541e6: 6708 beqs 541f0 <== NOT EXECUTED 541e8: 103c 000b moveb #11,%d0 <== NOT EXECUTED 541ec: b083 cmpl %d3,%d0 <== NOT EXECUTED 541ee: 6616 bnes 54206 <== NOT EXECUTED return pthread_kill( pthread_self(), sig ); 541f0: 4eb9 0005 45a8 jsr 545a8 <== NOT EXECUTED 541f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 541f8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 541fa: 4eb9 0005 44e4 jsr 544e4 <== NOT EXECUTED 54200: 508f addql #8,%sp <== NOT EXECUTED 54202: 6000 01a2 braw 543a6 <== NOT EXECUTED mask = signo_to_mask( sig ); 54206: 7801 moveq #1,%d4 <== NOT EXECUTED * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER; 54208: 7201 moveq #1,%d1 <== NOT EXECUTED */ if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) ) return pthread_kill( pthread_self(), sig ); mask = signo_to_mask( sig ); 5420a: e5ac lsll %d2,%d4 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; 5420c: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED siginfo->si_code = SI_USER; 54210: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED if ( !value ) { 54214: 4a8a tstl %a2 <== NOT EXECUTED 54216: 6606 bnes 5421e <== NOT EXECUTED siginfo->si_value.sival_int = 0; 54218: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 5421c: 6004 bras 54222 <== NOT EXECUTED } else { siginfo->si_value = *value; 5421e: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED 54222: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 54228: 5280 addql #1,%d0 <== NOT EXECUTED 5422a: 23c0 0005 7e7c movel %d0,57e7c <_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; 54230: 2279 0005 7f3a moveal 57f3a <_Thread_Executing>,%a1 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( _POSIX_signals_Is_interested( api, mask ) ) { 54236: 2069 0110 moveal %a1@(272),%a0 <== NOT EXECUTED 5423a: 2028 00c4 movel %a0@(196),%d0 <== NOT EXECUTED 5423e: 4680 notl %d0 <== NOT EXECUTED 54240: c084 andl %d4,%d0 <== NOT EXECUTED 54242: 6600 00d0 bnew 54314 <== NOT EXECUTED goto process_it; 54246: 223c 0005 8512 movel #361746,%d1 <== NOT EXECUTED index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { the_chain = &_POSIX_signals_Wait_queue.Queues.Priority[ index ]; for ( the_node = the_chain->first ; 5424c: 2441 moveal %d1,%a2 <== NOT EXECUTED 5424e: 205a moveal %a2@+,%a0 <== NOT EXECUTED 54250: 601c bras 5426e <== NOT EXECUTED !_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 ]; 54252: 2668 0110 moveal %a0@(272),%a3 <== NOT EXECUTED if ((the_thread->Wait.option & mask) || (~api->signals_blocked & mask)) { 54256: 2004 movel %d4,%d0 <== NOT EXECUTED 54258: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED 5425c: 6600 00b6 bnew 54314 <== NOT EXECUTED 54260: 202b 00c4 movel %a3@(196),%d0 <== NOT EXECUTED 54264: 4680 notl %d0 <== NOT EXECUTED 54266: c084 andl %d4,%d0 <== NOT EXECUTED 54268: 6600 00aa bnew 54314 <== NOT EXECUTED the_chain = &_POSIX_signals_Wait_queue.Queues.Priority[ index ]; for ( the_node = the_chain->first ; !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { 5426c: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_thread = (Thread_Control *)the_node; 5426e: 2248 moveal %a0,%a1 <== NOT EXECUTED index++ ) { the_chain = &_POSIX_signals_Wait_queue.Queues.Priority[ index ]; for ( the_node = the_chain->first ; !_Chain_Is_tail( the_chain, the_node ) ; 54270: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 54272: 66de bnes 54252 <== NOT EXECUTED 54274: 0681 0000 000c addil #12,%d1 <== NOT EXECUTED */ /* XXX violation of visibility -- need to define thread queue support */ for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; 5427a: 0c81 0005 8542 cmpil #361794,%d1 <== NOT EXECUTED 54280: 66ca bnes 5424c <== NOT EXECUTED * * + rtems internal threads do not receive signals. */ interested_thread = NULL; interested_priority = PRIORITY_MAXIMUM + 1; 54282: 4280 clrl %d0 <== NOT EXECUTED 54284: 1039 0005 62f2 moveb 562f2 ,%d0 <== NOT EXECUTED 5428a: 2440 moveal %d0,%a2 <== NOT EXECUTED 5428c: 528a addql #1,%a2 <== NOT EXECUTED 5428e: 4bf9 0005 7e3c lea 57e3c <_Objects_Information_table+0x8>,%a5 <== NOT EXECUTED 54294: 4285 clrl %d5 <== NOT EXECUTED the_api++ ) { /* * Thie can occur when no one is interested and ITRON is not configured. */ if ( !_Objects_Information_table[ the_api ] ) 54296: 2055 moveal %a5@,%a0 <== NOT EXECUTED 54298: 4a88 tstl %a0 <== NOT EXECUTED 5429a: 6768 beqs 54304 <== NOT EXECUTED continue; the_info = _Objects_Information_table[ the_api ][ 1 ]; 5429c: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED /* * This cannot happen in the current (as of Dec 2007) implementation * of initialization but at some point, the object information * structure for a particular manager may not be installed. */ if ( !the_info ) 542a0: 4a88 tstl %a0 <== NOT EXECUTED 542a2: 6760 beqs 54304 <== NOT EXECUTED continue; maximum = the_info->maximum; 542a4: 2868 001a moveal %a0@(26),%a4 <== NOT EXECUTED 542a8: 4286 clrl %d6 <== NOT EXECUTED 542aa: 588c addql #4,%a4 <== NOT EXECUTED 542ac: 3c28 000e movew %a0@(14),%d6 <== NOT EXECUTED 542b0: 367c 0001 moveaw #1,%a3 <== NOT EXECUTED 542b4: 604a bras 54300 <== NOT EXECUTED object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { the_thread = (Thread_Control *) object_table[ index ]; 542b6: 2254 moveal %a4@,%a1 <== NOT EXECUTED if ( !the_thread ) 542b8: 4a89 tstl %a1 <== NOT EXECUTED 542ba: 6738 beqs 542f4 <== 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 ) 542bc: 2429 0014 movel %a1@(20),%d2 <== NOT EXECUTED 542c0: b5c2 cmpal %d2,%a2 <== NOT EXECUTED 542c2: 6530 bcss 542f4 <== NOT EXECUTED /* * If this thread is not interested, then go on to the next thread. */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 542c4: 2069 0110 moveal %a1@(272),%a0 <== NOT EXECUTED if ( !api || !_POSIX_signals_Is_interested( api, mask ) ) 542c8: 4a88 tstl %a0 <== NOT EXECUTED 542ca: 6728 beqs 542f4 <== NOT EXECUTED 542cc: 2028 00c4 movel %a0@(196),%d0 <== NOT EXECUTED 542d0: 4680 notl %d0 <== NOT EXECUTED 542d2: c084 andl %d4,%d0 <== NOT EXECUTED 542d4: 671e beqs 542f4 <== NOT EXECUTED * Now we know the thread under connsideration is interested. * If the thread under consideration is of higher priority, then * it becomes the interested thread. */ if ( the_thread->current_priority < interested_priority ) { 542d6: b5c2 cmpal %d2,%a2 <== NOT EXECUTED 542d8: 621e bhis 542f8 <== NOT EXECUTED * Now the thread and the interested thread have the same priority. * If the interested thread is ready, then we don't need to send it * to a blocked thread. */ if ( _States_Is_ready( interested_thread->current_state ) ) 542da: 2045 moveal %d5,%a0 <== NOT EXECUTED 542dc: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 542e0: 6712 beqs 542f4 <== NOT EXECUTED * Now the interested thread is blocked. * If the thread we are considering is not, the it becomes the * interested thread. */ if ( _States_Is_ready( the_thread->current_state ) ) { 542e2: 2029 0010 movel %a1@(16),%d0 <== NOT EXECUTED 542e6: 6710 beqs 542f8 <== NOT EXECUTED * Now we know both threads are blocked. * If the interested thread is interruptible, then just use it. */ /* XXX need a new states macro */ if ( interested_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) 542e8: 0801 001c btst #28,%d1 <== NOT EXECUTED 542ec: 6606 bnes 542f4 <== NOT EXECUTED * If the thread under consideration is interruptible by a signal, * then it becomes the interested thread. */ /* XXX need a new states macro */ if ( the_thread->current_state & STATES_INTERRUPTIBLE_BY_SIGNAL ) { 542ee: 0800 001c btst #28,%d0 <== NOT EXECUTED 542f2: 6604 bnes 542f8 <== NOT EXECUTED 542f4: 240a movel %a2,%d2 <== NOT EXECUTED 542f6: 6002 bras 542fa <== NOT EXECUTED 542f8: 2a09 movel %a1,%d5 <== NOT EXECUTED continue; maximum = the_info->maximum; object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 542fa: 528b addql #1,%a3 <== NOT EXECUTED 542fc: 588c addql #4,%a4 <== NOT EXECUTED 542fe: 2442 moveal %d2,%a2 <== NOT EXECUTED 54300: bc8b cmpl %a3,%d6 <== NOT EXECUTED 54302: 64b2 bccs 542b6 <== NOT EXECUTED 54304: 588d addql #4,%a5 <== NOT EXECUTED interested_thread = NULL; interested_priority = PRIORITY_MAXIMUM + 1; for ( the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; 54306: bbfc 0005 7e48 cmpal #360008,%a5 <== NOT EXECUTED 5430c: 6688 bnes 54296 <== NOT EXECUTED interested_priority = the_thread->current_priority; } } } if ( interested_thread ) { 5430e: 4a85 tstl %d5 <== NOT EXECUTED 54310: 6720 beqs 54332 <== NOT EXECUTED 54312: 2245 moveal %d5,%a1 <== NOT EXECUTED * evaluate the signals pending. */ process_it: the_thread->do_post_task_switch_extension = true; 54314: 7001 moveq #1,%d0 <== NOT EXECUTED 54316: 1340 0075 moveb %d0,%a1@(117) <== 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 ) ) { 5431a: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5431e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 54320: 2f09 movel %a1,%sp@- <== NOT EXECUTED 54322: 4eb9 0005 43e0 jsr 543e0 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 54328: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5432e: 4a00 tstb %d0 <== NOT EXECUTED 54330: 666c bnes 5439e <== 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 ); 54332: 2f04 movel %d4,%sp@- <== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 54334: 2403 movel %d3,%d2 <== NOT EXECUTED 54336: e98a lsll #4,%d2 <== 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 ); 54338: 4eb9 0005 43b0 jsr 543b0 <_POSIX_signals_Set_process_signals> <== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 5433e: e58b lsll #2,%d3 <== NOT EXECUTED 54340: 9483 subl %d3,%d2 <== NOT EXECUTED 54342: 588f addql #4,%sp <== NOT EXECUTED 54344: 41f9 0005 8386 lea 58386 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 5434a: 7202 moveq #2,%d1 <== NOT EXECUTED 5434c: b2b0 2800 cmpl %a0@(00000000,%d2:l),%d1 <== NOT EXECUTED 54350: 664c bnes 5439e <== NOT EXECUTED psiginfo = (POSIX_signals_Siginfo_node *) 54352: 4879 0005 8506 pea 58506 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 54358: 4eb9 0004 a1ec jsr 4a1ec <_Chain_Get> <== NOT EXECUTED _Chain_Get( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { 5435e: 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 *) 54360: 2440 moveal %d0,%a2 <== NOT EXECUTED _Chain_Get( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { 54362: 4a80 tstl %d0 <== NOT EXECUTED 54364: 6610 bnes 54376 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 54366: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 5436c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5436e: 700b moveq #11,%d0 <== NOT EXECUTED 54370: 2080 movel %d0,%a0@ <== NOT EXECUTED 54372: 6000 fe3e braw 541b2 <== NOT EXECUTED } psiginfo->Info = *siginfo; 54376: 4878 000c pea c <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5437a: 0682 0005 8556 addil #361814,%d2 <== NOT EXECUTED _Chain_Get( &_POSIX_signals_Inactive_siginfo ); if ( !psiginfo ) { rtems_set_errno_and_return_minus_one( EAGAIN ); } psiginfo->Info = *siginfo; 54380: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 54384: 486a 0008 pea %a2@(8) <== NOT EXECUTED 54388: 4eb9 0004 bf4c jsr 4bf4c <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5438e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 54390: 2f02 movel %d2,%sp@- <== NOT EXECUTED 54392: 4eb9 0004 5964 jsr 45964 <_Chain_Append> <== NOT EXECUTED 54398: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); 5439e: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 543a4: 4280 clrl %d0 <== NOT EXECUTED return 0; } 543a6: 4cee 3c7c ffd0 moveml %fp@(-48),%d2-%d6/%a2-%a5 <== NOT EXECUTED 543ac: 4e5e unlk %fp <== NOT EXECUTED 543ae: 4e75 rts 00044eb4 : int mode, struct aiocb * const list[], int nent, struct sigevent *sig ) { 44eb4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44eb8: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44ebe: 2040 moveal %d0,%a0 <== NOT EXECUTED 44ec0: 7058 moveq #88,%d0 <== NOT EXECUTED 44ec2: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44ec4: 4e5e unlk %fp <== NOT EXECUTED 44ec6: 70ff moveq #-1,%d0 <== NOT EXECUTED 44ec8: 4e75 rts <== NOT EXECUTED ... 00044ecc : * As of gcc 4.2.2, the gcc SPARC backend doesn't appear to have a * way to call this for RTEMS anymore but it doesn't hurt to leave it. */ int mprotect(const void *addr, size_t len, int prot) { 44ecc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 44ed0: 4e5e unlk %fp <== NOT EXECUTED 44ed2: 4280 clrl %d0 <== NOT EXECUTED 44ed4: 4e75 rts <== NOT EXECUTED ... 00048800 : */ int mq_close( mqd_t mqdes ) { 48800: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48804: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) 48806: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4880a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4880e: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48814: 4eb9 0004 bc50 jsr 4bc50 <_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 ) { 4881a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48820: 2440 moveal %d0,%a2 <== NOT EXECUTED 48822: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48826: 663c bnes 48864 <== 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; 48828: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED the_mq->open_count -= 1; 4882c: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Message_queue_Delete( the_mq ); 48830: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48832: 4eb9 0004 887c jsr 4887c <_POSIX_Message_queue_Delete> <== NOT EXECUTED /* * Now close this file descriptor. */ _Objects_Close( 48838: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4883a: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48840: 4eb9 0004 b878 jsr 4b878 <_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 ); 48846: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48848: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 4884e: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 48854: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 4885a: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 48860: 4280 clrl %d0 <== NOT EXECUTED 48862: 600e bras 48872 <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); 48864: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 4886a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4886c: 7209 moveq #9,%d1 <== NOT EXECUTED 4886e: 70ff moveq #-1,%d0 <== NOT EXECUTED 48870: 2081 movel %d1,%a0@ <== NOT EXECUTED } 48872: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48876: 4e5e unlk %fp <== NOT EXECUTED 48878: 4e75 rts <== NOT EXECUTED ... 000488dc : int mq_getattr( mqd_t mqdes, struct mq_attr *mqstat ) { 488dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 488e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 488e2: 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 ) 488e6: 4a8a tstl %a2 <== NOT EXECUTED 488e8: 6610 bnes 488fa <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 488ea: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 488f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 488f2: 7016 moveq #22,%d0 <== NOT EXECUTED 488f4: 2080 movel %d0,%a0@ <== NOT EXECUTED 488f6: 70ff moveq #-1,%d0 <== NOT EXECUTED 488f8: 6054 bras 4894e <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) 488fa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 488fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48902: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48908: 4eb9 0004 bc50 jsr 4bc50 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 4890e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48914: 2040 moveal %d0,%a0 <== NOT EXECUTED 48916: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4891a: 6624 bnes 48940 <== NOT EXECUTED * Return the old values. */ the_mq_attr = &the_mq->Message_queue.Attributes; mqstat->mq_flags = the_mq_fd->oflag; 4891c: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 48920: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED */ the_mq_attr = &the_mq->Message_queue.Attributes; mqstat->mq_flags = the_mq_fd->oflag; mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size; 48924: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages; 4892a: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages; 48930: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 48936: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 4893c: 4280 clrl %d0 <== NOT EXECUTED 4893e: 600e bras 4894e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 48940: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48946: 2040 moveal %d0,%a0 <== NOT EXECUTED 48948: 7209 moveq #9,%d1 <== NOT EXECUTED 4894a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4894c: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4894e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48952: 4e5e unlk %fp <== NOT EXECUTED 48954: 4e75 rts <== NOT EXECUTED ... 00048958 : int mq_notify( mqd_t mqdes, const struct sigevent *notification ) { 48958: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4895c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4895e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48960: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 48964: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48968: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4896c: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48972: 4eb9 0004 bc50 jsr 4bc50 <_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 ) { 48978: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4897e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48980: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48984: 6664 bnes 489ea <== NOT EXECUTED case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 48986: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED if ( notification ) { 4898a: 4a82 tstl %d2 <== NOT EXECUTED 4898c: 674a beqs 489d8 <== NOT EXECUTED if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) { 4898e: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED 48992: 6716 beqs 489aa <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EBUSY ); 48994: 7410 moveq #16,%d2 <== 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(); 48996: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); 4899c: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 489a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 489a4: 2082 movel %d2,%a0@ <== NOT EXECUTED 489a6: 70ff moveq #-1,%d0 <== NOT EXECUTED 489a8: 604e bras 489f8 <== 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; 489aa: 42aa 007a clrl %a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 489ae: 42aa 007e clrl %a2@(126) <== NOT EXECUTED } _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); the_mq->notification = *notification; 489b2: 4878 0014 pea 14 <== NOT EXECUTED 489b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 489b8: 486a 008e pea %a2@(142) <== NOT EXECUTED 489bc: 4eb9 0005 1bd4 jsr 51bd4 <== 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; 489c2: 203c 0004 8a04 movel #297476,%d0 <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 489c8: 254a 007e movel %a2,%a2@(126) <== NOT EXECUTED 489cc: dffc 0000 000c addal #12,%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; 489d2: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED 489d6: 6008 bras 489e0 <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 489d8: 42aa 007e clrl %a2@(126) <== 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; 489dc: 42aa 007a clrl %a2@(122) <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } _Thread_Enable_dispatch(); 489e0: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 489e6: 4280 clrl %d0 <== NOT EXECUTED 489e8: 600e bras 489f8 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 489ea: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 489f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 489f2: 7209 moveq #9,%d1 <== NOT EXECUTED 489f4: 70ff moveq #-1,%d0 <== NOT EXECUTED 489f6: 2081 movel %d1,%a0@ <== NOT EXECUTED } 489f8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 489fc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48a00: 4e5e unlk %fp <== NOT EXECUTED 48a02: 4e75 rts 00048a3c : rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 48a3c: 2039 0006 0168 movel 60168 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) { 48a42: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 48a46: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 48a4a: 5280 addql #1,%d0 <== NOT EXECUTED 48a4c: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED 48a50: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 48a54: 23c0 0006 0168 movel %d0,60168 <_Thread_Dispatch_disable_level> <== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 48a5a: 2803 movel %d3,%d4 <== NOT EXECUTED 48a5c: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 48a62: 6604 bnes 48a68 <== NOT EXECUTED 48a64: 4285 clrl %d5 <== NOT EXECUTED 48a66: 6004 bras 48a6c <== NOT EXECUTED va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); attr = (struct mq_attr *) va_arg( arg, struct mq_attr * ); 48a68: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * _POSIX_Message_queue_Allocate_fd( void ) { return (POSIX_Message_queue_Control_fd *) 48a6c: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48a72: 4eb9 0004 b7f0 jsr 4b7f0 <_Objects_Allocate> <== NOT EXECUTED va_end(arg); } the_mq_fd = _POSIX_Message_queue_Allocate_fd(); if ( !the_mq_fd ) { 48a78: 588f addql #4,%sp <== NOT EXECUTED 48a7a: 2440 moveal %d0,%a2 <== NOT EXECUTED 48a7c: 4a80 tstl %d0 <== NOT EXECUTED 48a7e: 6614 bnes 48a94 <== NOT EXECUTED _Thread_Enable_dispatch(); 48a80: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 48a86: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48a8c: 7217 moveq #23,%d1 <== NOT EXECUTED 48a8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48a90: 2081 movel %d1,%a0@ <== NOT EXECUTED 48a92: 6042 bras 48ad6 <== NOT EXECUTED } the_mq_fd->oflag = oflag; 48a94: 2543 0014 movel %d3,%a2@(20) <== NOT EXECUTED status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 48a98: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48a9c: 2f06 movel %d6,%sp@- <== NOT EXECUTED 48a9e: 4eb9 0004 f130 jsr 4f130 <_POSIX_Message_queue_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 "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 48aa4: 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 ); 48aa6: 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 "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 48aa8: 6732 beqs 48adc <== 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) ) ) { 48aaa: 7002 moveq #2,%d0 <== NOT EXECUTED 48aac: b082 cmpl %d2,%d0 <== NOT EXECUTED 48aae: 6606 bnes 48ab6 <== NOT EXECUTED 48ab0: 4a84 tstl %d4 <== NOT EXECUTED 48ab2: 6600 00a0 bnew 48b54 <== 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 ); 48ab6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48ab8: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48abe: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 48ac4: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, mqd_t ); 48aca: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48ad0: 2040 moveal %d0,%a0 <== NOT EXECUTED 48ad2: 2082 movel %d2,%a0@ <== NOT EXECUTED 48ad4: 508f addql #8,%sp <== NOT EXECUTED 48ad6: 70ff moveq #-1,%d0 <== NOT EXECUTED 48ad8: 6000 00d2 braw 48bac <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 48adc: 0283 0000 0a00 andil #2560,%d3 <== NOT EXECUTED 48ae2: 47f9 0004 c48a lea 4c48a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 48ae8: 0c83 0000 0a00 cmpil #2560,%d3 <== NOT EXECUTED 48aee: 661e bnes 48b0e <== NOT EXECUTED 48af0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48af2: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48af8: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 48afe: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t ); 48b00: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48b06: 2040 moveal %d0,%a0 <== NOT EXECUTED 48b08: 7011 moveq #17,%d0 <== NOT EXECUTED 48b0a: 2080 movel %d0,%a0@ <== NOT EXECUTED 48b0c: 60c6 bras 48ad4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control *) 48b0e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 48b12: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48b16: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 48b1c: 4eb9 0004 bc50 jsr 4bc50 <_Objects_Get> <== NOT EXECUTED 48b22: 2040 moveal %d0,%a0 <== 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; 48b24: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 48b28: 2279 0006 05cc moveal 605cc <_POSIX_Message_queue_Information_fds+0x1a>,%a1 <== NOT EXECUTED 48b2e: 4280 clrl %d0 <== NOT EXECUTED 48b30: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 48b34: 238a 0c00 movel %a2,%a1@(00000000,%d0:l:4) <== 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 ); 48b38: 2d48 fff8 movel %a0,%fp@(-8) <== NOT EXECUTED the_mq->open_count += 1; the_mq_fd->Queue = the_mq; 48b3c: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string */ the_object->name.name_p = name; 48b40: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Objects_Open_string( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 48b44: 4e93 jsr %a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 48b46: 4e93 jsr %a3@ <== NOT EXECUTED return (mqd_t)the_mq_fd->Object.id; 48b48: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 48b4c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48b52: 6058 bras 48bac <== 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( 48b54: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48b58: 47f9 0004 c48a lea 4c48a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 48b5e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48b60: 4878 0001 pea 1 <== NOT EXECUTED 48b64: 2f06 movel %d6,%sp@- <== NOT EXECUTED 48b66: 4eb9 0004 efb4 jsr 4efb4 <_POSIX_Message_queue_Create_support> <== NOT EXECUTED /* * errno was set by Create_support, so don't set it again. */ if ( status == -1 ) { 48b6c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 48b72: 72ff moveq #-1,%d1 <== NOT EXECUTED 48b74: b280 cmpl %d0,%d1 <== NOT EXECUTED 48b76: 6614 bnes 48b8c <== NOT EXECUTED _Thread_Enable_dispatch(); 48b78: 4e93 jsr %a3@ <== 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 ); 48b7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48b7c: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48b82: 4eb9 0004 baf0 jsr 4baf0 <_Objects_Free> <== NOT EXECUTED 48b88: 6000 ff4a braw 48ad4 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 48b8c: 2079 0006 05cc moveal 605cc <_POSIX_Message_queue_Information_fds+0x1a>,%a0 <== NOT EXECUTED 48b92: 4280 clrl %d0 <== NOT EXECUTED 48b94: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 48b98: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); return (mqd_t) -1; } the_mq_fd->Queue = the_mq; 48b9c: 256e fff8 0010 movel %fp@(-8),%a2@(16) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string */ the_object->name.name_p = name; 48ba2: 42aa 000c clrl %a2@(12) <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 48ba6: 4e93 jsr %a3@ <== NOT EXECUTED return (mqd_t) the_mq_fd->Object.id; 48ba8: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED } 48bac: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 48bb2: 4e5e unlk %fp <== NOT EXECUTED 48bb4: 4e75 rts <== NOT EXECUTED ... 00048bb8 : mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio ) { 48bb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Receive_support( 48bbc: 42a7 clrl %sp@- <== NOT EXECUTED 48bbe: 4878 0001 pea 1 <== NOT EXECUTED 48bc2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 48bc6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48bca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48bce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48bd2: 4eb9 0004 8bdc jsr 48bdc <_POSIX_Message_queue_Receive_support> <== NOT EXECUTED msg_len, msg_prio, TRUE, THREAD_QUEUE_WAIT_FOREVER ); } 48bd8: 4e5e unlk %fp <== NOT EXECUTED 48bda: 4e75 rts 00048cf8 : mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio ) { 48cf8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Send_support( 48cfc: 42a7 clrl %sp@- <== NOT EXECUTED 48cfe: 4878 0001 pea 1 <== NOT EXECUTED 48d02: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 48d06: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48d0a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48d0e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48d12: 4eb9 0004 8d1c jsr 48d1c <_POSIX_Message_queue_Send_support> <== NOT EXECUTED msg_len, msg_prio, TRUE, THREAD_QUEUE_WAIT_FOREVER ); } 48d18: 4e5e unlk %fp <== NOT EXECUTED 48d1a: 4e75 rts 00048e18 : int mq_setattr( mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat ) { 48e18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48e1c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48e1e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 48e22: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e24: 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 ) 48e28: 4a8b tstl %a3 <== NOT EXECUTED 48e2a: 6610 bnes 48e3c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 48e2c: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48e32: 2040 moveal %d0,%a0 <== NOT EXECUTED 48e34: 7016 moveq #22,%d0 <== NOT EXECUTED 48e36: 2080 movel %d0,%a0@ <== NOT EXECUTED 48e38: 70ff moveq #-1,%d0 <== NOT EXECUTED 48e3a: 605c bras 48e98 <== NOT EXECUTED 48e3c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48e40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48e44: 4879 0006 05b2 pea 605b2 <_POSIX_Message_queue_Information_fds> <== NOT EXECUTED 48e4a: 4eb9 0004 bc50 jsr 4bc50 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 48e50: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48e56: 2240 moveal %d0,%a1 <== NOT EXECUTED 48e58: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48e5c: 662c bnes 48e8a <== NOT EXECUTED case OBJECTS_LOCAL: the_core_mq = &the_mq_fd->Queue->Message_queue; 48e5e: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED /* * Return the old values. */ if ( omqstat ) { 48e62: 4a8a tstl %a2 <== NOT EXECUTED 48e64: 6716 beqs 48e7c <== NOT EXECUTED omqstat->mq_flags = the_mq_fd->oflag; 48e66: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED omqstat->mq_msgsize = the_core_mq->maximum_message_size; 48e6a: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages; 48e70: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages; 48e76: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED } the_mq_fd->oflag = mqstat->mq_flags; 48e7c: 2353 0014 movel %a3@,%a1@(20) <== NOT EXECUTED _Thread_Enable_dispatch(); 48e80: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 48e86: 4280 clrl %d0 <== NOT EXECUTED 48e88: 600e bras 48e98 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 48e8a: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48e90: 2040 moveal %d0,%a0 <== NOT EXECUTED 48e92: 7209 moveq #9,%d1 <== NOT EXECUTED 48e94: 70ff moveq #-1,%d0 <== NOT EXECUTED 48e96: 2081 movel %d1,%a0@ <== NOT EXECUTED } 48e98: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 48e9c: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 48ea0: 4e5e unlk %fp <== NOT EXECUTED 48ea2: 4e75 rts 00048ea4 : char *msg_ptr, size_t msg_len, unsigned int *msg_prio, const struct timespec *abstime ) { 48ea4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ switch ( _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ) ) { 48ea8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48eac: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 48eb0: 4eb9 0004 8fd4 jsr 48fd4 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED 48eb6: 508f addql #8,%sp <== NOT EXECUTED 48eb8: 7202 moveq #2,%d1 <== NOT EXECUTED default: /* only to silence warnings */ do_wait = TRUE; break; } return _POSIX_Message_queue_Receive_support( 48eba: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ switch ( _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ) ) { 48ebe: b280 cmpl %d0,%d1 <== NOT EXECUTED 48ec0: 55c0 scs %d0 <== NOT EXECUTED 48ec2: 4480 negl %d0 <== NOT EXECUTED default: /* only to silence warnings */ do_wait = TRUE; break; } return _POSIX_Message_queue_Receive_support( 48ec4: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 48eca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48ecc: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 48ed0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48ed4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48ed8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48edc: 4eb9 0004 8bdc jsr 48bdc <_POSIX_Message_queue_Receive_support> <== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 48ee2: 4e5e unlk %fp <== NOT EXECUTED 48ee4: 4e75 rts <== NOT EXECUTED ... 00048ee8 : const char *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec *abstime ) { 48ee8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ switch ( _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ) ) { 48eec: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48ef0: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 48ef4: 4eb9 0004 8fd4 jsr 48fd4 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED 48efa: 508f addql #8,%sp <== NOT EXECUTED 48efc: 7202 moveq #2,%d1 <== NOT EXECUTED default: /* only to silence warnings */ do_wait = TRUE; break; } return _POSIX_Message_queue_Send_support( 48efe: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ switch ( _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ) ) { 48f02: b280 cmpl %d0,%d1 <== NOT EXECUTED 48f04: 55c0 scs %d0 <== NOT EXECUTED 48f06: 4480 negl %d0 <== NOT EXECUTED default: /* only to silence warnings */ do_wait = TRUE; break; } return _POSIX_Message_queue_Send_support( 48f08: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 48f0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48f10: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 48f14: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48f18: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48f1c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48f20: 4eb9 0004 8d1c jsr 48d1c <_POSIX_Message_queue_Send_support> <== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 48f26: 4e5e unlk %fp <== NOT EXECUTED 48f28: 4e75 rts <== NOT EXECUTED ... 00048f44 : 48f44: 2039 0006 0168 movel 60168 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED */ int mq_unlink( const char *name ) { 48f4a: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48f4e: 5280 addql #1,%d0 <== NOT EXECUTED 48f50: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f52: 23c0 0006 0168 movel %d0,60168 <_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 ); 48f58: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48f5c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48f60: 4eb9 0004 f130 jsr 4f130 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 48f66: 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 ); 48f68: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( status != 0 ) { 48f6a: 4a80 tstl %d0 <== NOT EXECUTED 48f6c: 6714 beqs 48f82 <== NOT EXECUTED _Thread_Enable_dispatch(); 48f6e: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 48f74: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 48f7a: 2040 moveal %d0,%a0 <== NOT EXECUTED 48f7c: 208a movel %a2,%a0@ <== NOT EXECUTED 48f7e: 70ff moveq #-1,%d0 <== NOT EXECUTED 48f80: 604a bras 48fcc <== NOT EXECUTED RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( Objects_Information *information, uint16_t index ) { if ( index > information->maximum ) 48f82: 4281 clrl %d1 <== NOT EXECUTED 48f84: 4280 clrl %d0 <== NOT EXECUTED 48f86: 322e fffe movew %fp@(-2),%d1 <== NOT EXECUTED 48f8a: 3039 0006 0458 movew 60458 <_POSIX_Message_queue_Information+0xe>,%d0 <== NOT EXECUTED 48f90: b081 cmpl %d1,%d0 <== NOT EXECUTED 48f92: 6404 bccs 48f98 <== NOT EXECUTED 48f94: 95ca subal %a2,%a2 <== NOT EXECUTED 48f96: 600a bras 48fa2 <== NOT EXECUTED return NULL; return information->local_table[ index ]; 48f98: 2079 0006 0464 moveal 60464 <_POSIX_Message_queue_Information+0x1a>,%a0 <== NOT EXECUTED 48f9e: 2470 1c00 moveal %a0@(00000000,%d1:l:4),%a2 <== NOT EXECUTED the_mq = (POSIX_Message_queue_Control *) _Objects_Get_local_object( &_POSIX_Message_queue_Information, _Objects_Get_index( the_mq_id ) ); the_mq->linked = FALSE; 48fa2: 4200 clrb %d0 <== NOT EXECUTED 48fa4: 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( 48fa8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48faa: 4879 0006 044a pea 6044a <_POSIX_Message_queue_Information> <== NOT EXECUTED 48fb0: 4eb9 0004 bd84 jsr 4bd84 <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); 48fb6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48fb8: 4eb9 0004 887c jsr 4887c <_POSIX_Message_queue_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 48fbe: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 48fc4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48fca: 4280 clrl %d0 <== NOT EXECUTED return 0; } 48fcc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48fd0: 4e5e unlk %fp <== NOT EXECUTED 48fd2: 4e75 rts 0004ee40 : int nanosleep( const struct timespec *rqtp, struct timespec *rmtp ) { 4ee40: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4ee44: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 4ee48: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ee4c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED Watchdog_Interval ticks; if ( !_Timespec_Is_valid( rqtp ) ) 4ee50: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ee52: 4eb9 0005 07c8 jsr 507c8 <_Timespec_Is_valid> <== NOT EXECUTED 4ee58: 588f addql #4,%sp <== NOT EXECUTED 4ee5a: 4a00 tstb %d0 <== NOT EXECUTED 4ee5c: 670a beqs 4ee68 <== 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 ( rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 ) 4ee5e: 4a92 tstl %a2@ <== NOT EXECUTED 4ee60: 6d06 blts 4ee68 <== NOT EXECUTED 4ee62: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4ee66: 6c10 bges 4ee78 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4ee68: 4eb9 0005 2e00 jsr 52e00 <__errno> <== NOT EXECUTED 4ee6e: 7216 moveq #22,%d1 <== NOT EXECUTED 4ee70: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ee72: 2081 movel %d1,%a0@ <== NOT EXECUTED 4ee74: 6000 00cc braw 4ef42 <== NOT EXECUTED ticks = _Timespec_To_ticks( rqtp ); 4ee78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ee7a: 4eb9 0005 07f0 jsr 507f0 <_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 ) { 4ee80: 588f addql #4,%sp <== NOT EXECUTED * FSU and GNU/Linux pthreads shares this behavior. */ if ( rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 ) rtems_set_errno_and_return_minus_one( EINVAL ); ticks = _Timespec_To_ticks( rqtp ); 4ee82: 2440 moveal %d0,%a2 <== NOT EXECUTED 4ee84: 49f9 0004 a936 lea 4a936 <_Thread_Enable_dispatch>,%a4 <== 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 ) { 4ee8a: 4a80 tstl %d0 <== NOT EXECUTED 4ee8c: 6628 bnes 4eeb6 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4ee8e: 2039 0006 3be4 movel 63be4 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4ee94: 5280 addql #1,%d0 <== NOT EXECUTED 4ee96: 23c0 0006 3be4 movel %d0,63be4 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); _Thread_Yield_processor(); 4ee9c: 4eb9 0004 b5a8 jsr 4b5a8 <_Thread_Yield_processor> <== NOT EXECUTED _Thread_Enable_dispatch(); 4eea2: 4e94 jsr %a4@ <== NOT EXECUTED if ( rmtp ) { 4eea4: 4a8b tstl %a3 <== NOT EXECUTED 4eea6: 6700 009e beqw 4ef46 <== NOT EXECUTED rmtp->tv_sec = 0; rmtp->tv_nsec = 0; 4eeaa: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED 4eeae: 4280 clrl %d0 <== NOT EXECUTED if ( !ticks ) { _Thread_Disable_dispatch(); _Thread_Yield_processor(); _Thread_Enable_dispatch(); if ( rmtp ) { rmtp->tv_sec = 0; 4eeb0: 4293 clrl %a3@ <== NOT EXECUTED 4eeb2: 6000 0094 braw 4ef48 <== NOT EXECUTED 4eeb6: 2039 0006 3be4 movel 63be4 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4eebc: 5280 addql #1,%d0 <== NOT EXECUTED 4eebe: 23c0 0006 3be4 movel %d0,63be4 <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * Block for the desired amount of time */ _Thread_Disable_dispatch(); _Thread_Set_state( 4eec4: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED 4eeca: 2f39 0006 3ca2 movel 63ca2 <_Thread_Executing>,%sp@- <== NOT EXECUTED 4eed0: 4eb9 0004 b1a8 jsr 4b1a8 <_Thread_Set_state> <== NOT EXECUTED _Thread_Executing, STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Watchdog_Initialize( 4eed6: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== NOT EXECUTED 4eedc: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 4eee0: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4eee4: 203c 0004 a7a8 movel #305064,%d0 <== NOT EXECUTED 4eeea: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4eeee: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 4eef2: 42a8 006c clrl %a0@(108) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4eef6: 214a 0054 movel %a2,%a0@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4eefa: 4868 0048 pea %a0@(72) <== NOT EXECUTED 4eefe: 4879 0006 3cc0 pea 63cc0 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4ef04: 4eb9 0004 b97c jsr 4b97c <_Watchdog_Insert> <== NOT EXECUTED _Thread_Delay_ended, _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); _Thread_Enable_dispatch(); 4ef0a: 4e94 jsr %a4@ <== NOT EXECUTED /* calculate time remaining */ if ( rmtp ) { 4ef0c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4ef12: 4a8b tstl %a3 <== NOT EXECUTED 4ef14: 6730 beqs 4ef46 <== NOT EXECUTED ticks -= 4ef16: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== NOT EXECUTED 4ef1c: 2428 005c movel %a0@(92),%d2 <== NOT EXECUTED 4ef20: 94a8 0060 subl %a0@(96),%d2 <== NOT EXECUTED _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; _Timespec_From_ticks( ticks, rmtp ); 4ef24: 2f0b movel %a3,%sp@- <== NOT EXECUTED _Thread_Enable_dispatch(); /* calculate time remaining */ if ( rmtp ) { ticks -= 4ef26: d48a addl %a2,%d2 <== NOT EXECUTED _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; _Timespec_From_ticks( ticks, rmtp ); 4ef28: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef2a: 4eb9 0005 0788 jsr 50788 <_Timespec_From_ticks> <== NOT EXECUTED /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) 4ef30: 508f addql #8,%sp <== NOT EXECUTED 4ef32: 4a82 tstl %d2 <== NOT EXECUTED 4ef34: 6710 beqs 4ef46 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); 4ef36: 4eb9 0005 2e00 jsr 52e00 <__errno> <== NOT EXECUTED 4ef3c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef3e: 7004 moveq #4,%d0 <== NOT EXECUTED 4ef40: 2080 movel %d0,%a0@ <== NOT EXECUTED 4ef42: 70ff moveq #-1,%d0 <== NOT EXECUTED 4ef44: 6002 bras 4ef48 <== NOT EXECUTED 4ef46: 4280 clrl %d0 <== NOT EXECUTED } return 0; } 4ef48: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4ef4e: 4e5e unlk %fp <== NOT EXECUTED 4ef50: 4e75 rts <== NOT EXECUTED ... 000467f8 : /* * 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81 */ int pause( void ) { 467f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 467fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED sigset_t all_signals; int status; (void) sigfillset( &all_signals ); 467fe: 240e movel %fp,%d2 <== NOT EXECUTED 46800: 5982 subql #4,%d2 <== NOT EXECUTED 46802: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46804: 4eb9 0004 718c jsr 4718c <== NOT EXECUTED status = sigtimedwait( &all_signals, NULL, NULL ); 4680a: 42a7 clrl %sp@- <== NOT EXECUTED 4680c: 42a7 clrl %sp@- <== NOT EXECUTED 4680e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46810: 4eb9 0004 7308 jsr 47308 <== NOT EXECUTED return status; } 46816: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4681a: 4e5e unlk %fp <== NOT EXECUTED 4681c: 4e75 rts <== NOT EXECUTED ... 00044ed8 : int pthread_atfork( void (*prepare)(void), void (*parent)(void), void (*child)(void) ) { 44ed8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44edc: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44ee2: 2040 moveal %d0,%a0 <== NOT EXECUTED 44ee4: 7058 moveq #88,%d0 <== NOT EXECUTED 44ee6: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44ee8: 4e5e unlk %fp <== NOT EXECUTED 44eea: 70ff moveq #-1,%d0 <== NOT EXECUTED 44eec: 4e75 rts <== NOT EXECUTED ... 00048628 : #include int pthread_attr_destroy( pthread_attr_t *attr ) { 48628: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4862c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 48630: 4a88 tstl %a0 <== NOT EXECUTED 48632: 670a beqs 4863e <== NOT EXECUTED 48634: 4a90 tstl %a0@ <== NOT EXECUTED 48636: 6706 beqs 4863e <== NOT EXECUTED return EINVAL; attr->is_initialized = FALSE; 48638: 4290 clrl %a0@ <== NOT EXECUTED 4863a: 4280 clrl %d0 <== NOT EXECUTED 4863c: 6002 bras 48640 <== NOT EXECUTED return 0; 4863e: 7016 moveq #22,%d0 <== NOT EXECUTED } 48640: 4e5e unlk %fp <== NOT EXECUTED 48642: 4e75 rts 00048bf0 : int pthread_attr_getcputime( pthread_attr_t *attr, int *clock_allowed ) { 48bf0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48bf4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48bf8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !clock_allowed ) 48bfc: 4a88 tstl %a0 <== NOT EXECUTED 48bfe: 6710 beqs 48c10 <== NOT EXECUTED 48c00: 4a90 tstl %a0@ <== NOT EXECUTED 48c02: 670c beqs 48c10 <== NOT EXECUTED 48c04: 4a89 tstl %a1 <== NOT EXECUTED 48c06: 6708 beqs 48c10 <== NOT EXECUTED return EINVAL; *clock_allowed = attr->cputime_clock_allowed; 48c08: 22a8 0030 movel %a0@(48),%a1@ <== NOT EXECUTED 48c0c: 4280 clrl %d0 <== NOT EXECUTED 48c0e: 6002 bras 48c12 <== NOT EXECUTED return 0; 48c10: 7016 moveq #22,%d0 <== NOT EXECUTED } 48c12: 4e5e unlk %fp <== NOT EXECUTED 48c14: 4e75 rts <== NOT EXECUTED ... 00048644 : int pthread_attr_getdetachstate( const pthread_attr_t *attr, int *detachstate ) { 48644: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48648: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4864c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !detachstate ) 48650: 4a88 tstl %a0 <== NOT EXECUTED 48652: 6710 beqs 48664 <== NOT EXECUTED 48654: 4a90 tstl %a0@ <== NOT EXECUTED 48656: 670c beqs 48664 <== NOT EXECUTED 48658: 4a89 tstl %a1 <== NOT EXECUTED 4865a: 6708 beqs 48664 <== NOT EXECUTED return EINVAL; *detachstate = attr->detachstate; 4865c: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED 48660: 4280 clrl %d0 <== NOT EXECUTED 48662: 6002 bras 48666 <== NOT EXECUTED return 0; 48664: 7016 moveq #22,%d0 <== NOT EXECUTED } 48666: 4e5e unlk %fp <== NOT EXECUTED 48668: 4e75 rts <== NOT EXECUTED ... 0004866c : int pthread_attr_getinheritsched( const pthread_attr_t *attr, int *inheritsched ) { 4866c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48670: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48674: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !inheritsched ) 48678: 4a88 tstl %a0 <== NOT EXECUTED 4867a: 6710 beqs 4868c <== NOT EXECUTED 4867c: 4a90 tstl %a0@ <== NOT EXECUTED 4867e: 670c beqs 4868c <== NOT EXECUTED 48680: 4a89 tstl %a1 <== NOT EXECUTED 48682: 6708 beqs 4868c <== NOT EXECUTED return EINVAL; *inheritsched = attr->inheritsched; 48684: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED 48688: 4280 clrl %d0 <== NOT EXECUTED 4868a: 6002 bras 4868e <== NOT EXECUTED return 0; 4868c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4868e: 4e5e unlk %fp <== NOT EXECUTED 48690: 4e75 rts <== NOT EXECUTED ... 00048694 : int pthread_attr_getschedparam( const pthread_attr_t *attr, struct sched_param *param ) { 48694: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48698: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4869c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 486a0: 4a88 tstl %a0 <== NOT EXECUTED 486a2: 6722 beqs 486c6 <== NOT EXECUTED 486a4: 4a90 tstl %a0@ <== NOT EXECUTED 486a6: 671e beqs 486c6 <== NOT EXECUTED 486a8: 4a80 tstl %d0 <== NOT EXECUTED 486aa: 671a beqs 486c6 <== NOT EXECUTED return EINVAL; *param = attr->schedparam; 486ac: 4878 0018 pea 18 <== NOT EXECUTED 486b0: 4868 0018 pea %a0@(24) <== NOT EXECUTED 486b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 486b6: 4eb9 0005 0764 jsr 50764 <== NOT EXECUTED 486bc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 486c2: 4280 clrl %d0 <== NOT EXECUTED 486c4: 6002 bras 486c8 <== NOT EXECUTED return 0; 486c6: 7016 moveq #22,%d0 <== NOT EXECUTED } 486c8: 4e5e unlk %fp <== NOT EXECUTED 486ca: 4e75 rts 000486cc : int pthread_attr_getschedpolicy( const pthread_attr_t *attr, int *policy ) { 486cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 486d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 486d4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !policy ) 486d8: 4a88 tstl %a0 <== NOT EXECUTED 486da: 6710 beqs 486ec <== NOT EXECUTED 486dc: 4a90 tstl %a0@ <== NOT EXECUTED 486de: 670c beqs 486ec <== NOT EXECUTED 486e0: 4a89 tstl %a1 <== NOT EXECUTED 486e2: 6708 beqs 486ec <== NOT EXECUTED return EINVAL; *policy = attr->schedpolicy; 486e4: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED 486e8: 4280 clrl %d0 <== NOT EXECUTED 486ea: 6002 bras 486ee <== NOT EXECUTED return 0; 486ec: 7016 moveq #22,%d0 <== NOT EXECUTED } 486ee: 4e5e unlk %fp <== NOT EXECUTED 486f0: 4e75 rts <== NOT EXECUTED ... 000486f4 : int pthread_attr_getscope( const pthread_attr_t *attr, int *contentionscope ) { 486f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 486f8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 486fc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !contentionscope ) 48700: 4a88 tstl %a0 <== NOT EXECUTED 48702: 6710 beqs 48714 <== NOT EXECUTED 48704: 4a90 tstl %a0@ <== NOT EXECUTED 48706: 670c beqs 48714 <== NOT EXECUTED 48708: 4a89 tstl %a1 <== NOT EXECUTED 4870a: 6708 beqs 48714 <== NOT EXECUTED return EINVAL; *contentionscope = attr->contentionscope; 4870c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED 48710: 4280 clrl %d0 <== NOT EXECUTED 48712: 6002 bras 48716 <== NOT EXECUTED return 0; 48714: 7016 moveq #22,%d0 <== NOT EXECUTED } 48716: 4e5e unlk %fp <== NOT EXECUTED 48718: 4e75 rts <== NOT EXECUTED ... 0004871c : int pthread_attr_getstackaddr( const pthread_attr_t *attr, void **stackaddr ) { 4871c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48720: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48724: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stackaddr ) 48728: 4a88 tstl %a0 <== NOT EXECUTED 4872a: 6710 beqs 4873c <== NOT EXECUTED 4872c: 4a90 tstl %a0@ <== NOT EXECUTED 4872e: 670c beqs 4873c <== NOT EXECUTED 48730: 4a89 tstl %a1 <== NOT EXECUTED 48732: 6708 beqs 4873c <== NOT EXECUTED return EINVAL; *stackaddr = attr->stackaddr; 48734: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED 48738: 4280 clrl %d0 <== NOT EXECUTED 4873a: 6002 bras 4873e <== NOT EXECUTED return 0; 4873c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4873e: 4e5e unlk %fp <== NOT EXECUTED 48740: 4e75 rts <== NOT EXECUTED ... 00048744 : int pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize ) { 48744: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48748: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4874c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stacksize ) 48750: 4a88 tstl %a0 <== NOT EXECUTED 48752: 6710 beqs 48764 <== NOT EXECUTED 48754: 4a90 tstl %a0@ <== NOT EXECUTED 48756: 670c beqs 48764 <== NOT EXECUTED 48758: 4a89 tstl %a1 <== NOT EXECUTED 4875a: 6708 beqs 48764 <== NOT EXECUTED return EINVAL; *stacksize = attr->stacksize; 4875c: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED 48760: 4280 clrl %d0 <== NOT EXECUTED 48762: 6002 bras 48766 <== NOT EXECUTED return 0; 48764: 7016 moveq #22,%d0 <== NOT EXECUTED } 48766: 4e5e unlk %fp <== NOT EXECUTED 48768: 4e75 rts <== NOT EXECUTED ... 0004b734 : #include int pthread_attr_init( pthread_attr_t *attr ) { 4b734: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b738: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !attr ) 4b73c: 6606 bnes 4b744 <== NOT EXECUTED 4b73e: 103c 0016 moveb #22,%d0 <== NOT EXECUTED 4b742: 601a bras 4b75e <== NOT EXECUTED return EINVAL; *attr = _POSIX_Threads_Default_attributes; 4b744: 4878 0038 pea 38 <== NOT EXECUTED 4b748: 4879 0005 86f8 pea 586f8 <_POSIX_Threads_Default_attributes> <== NOT EXECUTED 4b74e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b750: 4eb9 0004 d7bc jsr 4d7bc <== NOT EXECUTED 4b756: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4b75c: 4280 clrl %d0 <== NOT EXECUTED return 0; } 4b75e: 4e5e unlk %fp <== NOT EXECUTED 4b760: 4e75 rts <== NOT EXECUTED ... 000490d4 : int pthread_attr_setcputime( pthread_attr_t *attr, int clock_allowed ) { 490d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 490d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 490dc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 490e0: 4a88 tstl %a0 <== NOT EXECUTED 490e2: 6712 beqs 490f6 <== NOT EXECUTED 490e4: 4a90 tstl %a0@ <== NOT EXECUTED 490e6: 670e beqs 490f6 <== NOT EXECUTED return EINVAL; switch ( clock_allowed ) { 490e8: 7201 moveq #1,%d1 <== NOT EXECUTED 490ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 490ec: 6508 bcss 490f6 <== NOT EXECUTED case CLOCK_ENABLED: case CLOCK_DISABLED: attr->cputime_clock_allowed = clock_allowed; 490ee: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED 490f2: 4280 clrl %d0 <== NOT EXECUTED 490f4: 6002 bras 490f8 <== NOT EXECUTED return 0; 490f6: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 490f8: 4e5e unlk %fp <== NOT EXECUTED 490fa: 4e75 rts 0004879c : int pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate ) { 4879c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 487a0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 487a4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 487a8: 4a88 tstl %a0 <== NOT EXECUTED 487aa: 6712 beqs 487be <== NOT EXECUTED 487ac: 4a90 tstl %a0@ <== NOT EXECUTED 487ae: 670e beqs 487be <== NOT EXECUTED return EINVAL; switch ( detachstate ) { 487b0: 7201 moveq #1,%d1 <== NOT EXECUTED 487b2: b280 cmpl %d0,%d1 <== NOT EXECUTED 487b4: 6508 bcss 487be <== NOT EXECUTED case PTHREAD_CREATE_DETACHED: case PTHREAD_CREATE_JOINABLE: attr->detachstate = detachstate; 487b6: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 487ba: 4280 clrl %d0 <== NOT EXECUTED 487bc: 6002 bras 487c0 <== NOT EXECUTED return 0; 487be: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 487c0: 4e5e unlk %fp <== NOT EXECUTED 487c2: 4e75 rts 0004b764 : int pthread_attr_setinheritsched( pthread_attr_t *attr, int inheritsched ) { 4b764: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b768: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b76c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b770: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b772: 4a88 tstl %a0 <== NOT EXECUTED 4b774: 671c beqs 4b792 <== NOT EXECUTED 4b776: 4a90 tstl %a0@ <== NOT EXECUTED 4b778: 6718 beqs 4b792 <== NOT EXECUTED return EINVAL; switch ( inheritsched ) { 4b77a: 2009 movel %a1,%d0 <== NOT EXECUTED 4b77c: 5380 subql #1,%d0 <== NOT EXECUTED 4b77e: 223c 0000 0086 movel #134,%d1 <== NOT EXECUTED 4b784: 7401 moveq #1,%d2 <== NOT EXECUTED 4b786: b480 cmpl %d0,%d2 <== NOT EXECUTED 4b788: 650a bcss 4b794 <== NOT EXECUTED case PTHREAD_INHERIT_SCHED: case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; 4b78a: 2149 0010 movel %a1,%a0@(16) <== NOT EXECUTED 4b78e: 4201 clrb %d1 <== NOT EXECUTED 4b790: 6002 bras 4b794 <== NOT EXECUTED return 0; 4b792: 7216 moveq #22,%d1 <== NOT EXECUTED default: return ENOTSUP; } } 4b794: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b796: 4e5e unlk %fp <== NOT EXECUTED 4b798: 2001 movel %d1,%d0 <== NOT EXECUTED 4b79a: 4e75 rts 000487fc : int pthread_attr_setschedparam( pthread_attr_t *attr, const struct sched_param *param ) { 487fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48800: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48804: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 48808: 4a88 tstl %a0 <== NOT EXECUTED 4880a: 6722 beqs 4882e <== NOT EXECUTED 4880c: 4a90 tstl %a0@ <== NOT EXECUTED 4880e: 671e beqs 4882e <== NOT EXECUTED 48810: 4a80 tstl %d0 <== NOT EXECUTED 48812: 671a beqs 4882e <== NOT EXECUTED return EINVAL; attr->schedparam = *param; 48814: 4878 0018 pea 18 <== NOT EXECUTED 48818: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4881a: 4868 0018 pea %a0@(24) <== NOT EXECUTED 4881e: 4eb9 0005 0764 jsr 50764 <== NOT EXECUTED 48824: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4882a: 4280 clrl %d0 <== NOT EXECUTED 4882c: 6002 bras 48830 <== NOT EXECUTED return 0; 4882e: 7016 moveq #22,%d0 <== NOT EXECUTED } 48830: 4e5e unlk %fp <== NOT EXECUTED 48832: 4e75 rts 00048834 : int pthread_attr_setschedpolicy( pthread_attr_t *attr, int policy ) { 48834: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48838: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4883c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 48840: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 48842: 4a88 tstl %a0 <== NOT EXECUTED 48844: 6718 beqs 4885e <== NOT EXECUTED 48846: 4a90 tstl %a0@ <== NOT EXECUTED 48848: 6714 beqs 4885e <== NOT EXECUTED return EINVAL; switch ( policy ) { 4884a: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED 48850: 7403 moveq #3,%d2 <== NOT EXECUTED 48852: b481 cmpl %d1,%d2 <== NOT EXECUTED 48854: 650a bcss 48860 <== NOT EXECUTED case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: case SCHED_SPORADIC: attr->schedpolicy = policy; 48856: 2141 0014 movel %d1,%a0@(20) <== NOT EXECUTED 4885a: 4200 clrb %d0 <== NOT EXECUTED 4885c: 6002 bras 48860 <== NOT EXECUTED return 0; 4885e: 7016 moveq #22,%d0 <== NOT EXECUTED default: return ENOTSUP; } } 48860: 241f movel %sp@+,%d2 <== NOT EXECUTED 48862: 4e5e unlk %fp <== NOT EXECUTED 48864: 4e75 rts <== NOT EXECUTED ... 00048868 : int pthread_attr_setscope( pthread_attr_t *attr, int contentionscope ) { 48868: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4886c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48870: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 48874: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 48876: 4a88 tstl %a0 <== NOT EXECUTED 48878: 671e beqs 48898 <== NOT EXECUTED 4887a: 4a90 tstl %a0@ <== NOT EXECUTED 4887c: 671a beqs 48898 <== NOT EXECUTED return EINVAL; switch ( contentionscope ) { 4887e: 4a81 tstl %d1 <== NOT EXECUTED 48880: 670e beqs 48890 <== NOT EXECUTED 48882: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED 48888: 7401 moveq #1,%d2 <== NOT EXECUTED 4888a: b481 cmpl %d1,%d2 <== NOT EXECUTED 4888c: 660a bnes 48898 <== NOT EXECUTED 4888e: 600a bras 4889a <== NOT EXECUTED case PTHREAD_SCOPE_PROCESS: attr->contentionscope = contentionscope; 48890: 42a8 000c clrl %a0@(12) <== NOT EXECUTED 48894: 4280 clrl %d0 <== NOT EXECUTED 48896: 6002 bras 4889a <== NOT EXECUTED return 0; 48898: 7016 moveq #22,%d0 <== NOT EXECUTED return ENOTSUP; default: return EINVAL; } } 4889a: 241f movel %sp@+,%d2 <== NOT EXECUTED 4889c: 4e5e unlk %fp <== NOT EXECUTED 4889e: 4e75 rts 000488a0 : int pthread_attr_setstackaddr( pthread_attr_t *attr, void *stackaddr ) { 488a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 488a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 488a8: 4a88 tstl %a0 <== NOT EXECUTED 488aa: 670e beqs 488ba <== NOT EXECUTED 488ac: 4a90 tstl %a0@ <== NOT EXECUTED 488ae: 670a beqs 488ba <== NOT EXECUTED return EINVAL; attr->stackaddr = stackaddr; 488b0: 4280 clrl %d0 <== NOT EXECUTED 488b2: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED 488b8: 6002 bras 488bc <== NOT EXECUTED return 0; 488ba: 7016 moveq #22,%d0 <== NOT EXECUTED } 488bc: 4e5e unlk %fp <== NOT EXECUTED 488be: 4e75 rts 0004b79c : int pthread_attr_setstacksize( pthread_attr_t *attr, size_t stacksize ) { 4b79c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b7a0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b7a4: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4b7a8: 4a88 tstl %a0 <== NOT EXECUTED 4b7aa: 671e beqs 4b7ca <== NOT EXECUTED 4b7ac: 4a90 tstl %a0@ <== NOT EXECUTED 4b7ae: 671a beqs 4b7ca <== NOT EXECUTED return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) 4b7b0: 2039 0005 9a0e movel 59a0e ,%d0 <== NOT EXECUTED 4b7b6: d080 addl %d0,%d0 <== NOT EXECUTED 4b7b8: b081 cmpl %d1,%d0 <== NOT EXECUTED 4b7ba: 6306 blss 4b7c2 <== NOT EXECUTED attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; 4b7bc: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED 4b7c0: 6004 bras 4b7c6 <== NOT EXECUTED else attr->stacksize = stacksize; 4b7c2: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED 4b7c6: 4280 clrl %d0 <== NOT EXECUTED 4b7c8: 6002 bras 4b7cc <== NOT EXECUTED 4b7ca: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; } 4b7cc: 4e5e unlk %fp <== NOT EXECUTED 4b7ce: 4e75 rts 00044e60 : */ int pthread_barrier_destroy( pthread_barrier_t *barrier ) { 44e60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44e64: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44e66: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44e6a: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 44e6c: 4a88 tstl %a0 <== NOT EXECUTED 44e6e: 675a beqs 44eca <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 44e70: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44e74: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44e76: 4879 0005 965e pea 5965e <_POSIX_Barrier_Information> <== NOT EXECUTED 44e7c: 4eb9 0004 74f0 jsr 474f0 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 44e82: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44e88: 2440 moveal %d0,%a2 <== NOT EXECUTED 44e8a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44e8e: 663a bnes 44eca <== NOT EXECUTED 44e90: 47f9 0004 7c62 lea 47c62 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) { 44e96: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 44e9a: 6706 beqs 44ea2 <== NOT EXECUTED _Thread_Enable_dispatch(); 44e9c: 4e93 jsr %a3@ <== NOT EXECUTED 44e9e: 7010 moveq #16,%d0 <== NOT EXECUTED 44ea0: 602a bras 44ecc <== NOT EXECUTED return EBUSY; } _Objects_Close( &_POSIX_Barrier_Information, &the_barrier->Object ); 44ea2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44ea4: 4879 0005 965e pea 5965e <_POSIX_Barrier_Information> <== NOT EXECUTED 44eaa: 4eb9 0004 7118 jsr 47118 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free ( POSIX_Barrier_Control *the_barrier ) { _Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object ); 44eb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44eb2: 4879 0005 965e pea 5965e <_POSIX_Barrier_Information> <== NOT EXECUTED 44eb8: 4eb9 0004 7390 jsr 47390 <_Objects_Free> <== NOT EXECUTED _POSIX_Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 44ebe: 4e93 jsr %a3@ <== NOT EXECUTED 44ec0: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44ec6: 4280 clrl %d0 <== NOT EXECUTED 44ec8: 6002 bras 44ecc <== NOT EXECUTED return 0; 44eca: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44ecc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 44ed0: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 44ed4: 4e5e unlk %fp <== NOT EXECUTED 44ed6: 4e75 rts 00044ed8 : int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) { 44ed8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 44edc: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 44ee0: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 44ee4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 44ee8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED const pthread_barrierattr_t *the_attr; /* * Error check parameters */ if ( !barrier ) 44eec: 4a8c tstl %a4 <== NOT EXECUTED 44eee: 6700 0092 beqw 44f82 <== NOT EXECUTED return EINVAL; if ( count == 0 ) 44ef2: 4a8a tstl %a2 <== NOT EXECUTED 44ef4: 6700 008c beqw 44f82 <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 44ef8: 4a82 tstl %d2 <== NOT EXECUTED 44efa: 6704 beqs 44f00 <== NOT EXECUTED 44efc: 2042 moveal %d2,%a0 <== NOT EXECUTED 44efe: 6014 bras 44f14 <== NOT EXECUTED the_attr = attr; } else { (void) pthread_barrierattr_init( &my_attr ); 44f00: 240e movel %fp,%d2 <== NOT EXECUTED 44f02: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED 44f08: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f0a: 4eb9 0004 4e18 jsr 44e18 <== NOT EXECUTED 44f10: 588f addql #4,%sp <== NOT EXECUTED 44f12: 2042 moveal %d2,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 44f14: 4a90 tstl %a0@ <== NOT EXECUTED 44f16: 676a beqs 44f82 <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 44f18: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 44f1c: 6664 bnes 44f82 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44f1e: 2039 0005 9304 movel 59304 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44f24: 5280 addql #1,%d0 <== NOT EXECUTED 44f26: 23c0 0005 9304 movel %d0,59304 <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * Convert from POSIX attributes to Core Barrier attributes */ the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; the_attributes.maximum_count = count; 44f2c: 2d4a fffc movel %a2,%fp@(-4) <== NOT EXECUTED } /* * Convert from POSIX attributes to Core Barrier attributes */ the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 44f30: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED * This function allocates a barrier control block from * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void ) { return (POSIX_Barrier_Control *) 44f34: 4879 0005 965e pea 5965e <_POSIX_Barrier_Information> <== NOT EXECUTED 44f3a: 4eb9 0004 7090 jsr 47090 <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _POSIX_Barrier_Allocate(); if ( !the_barrier ) { 44f40: 588f addql #4,%sp <== NOT EXECUTED 44f42: 2440 moveal %d0,%a2 <== NOT EXECUTED 44f44: 47f9 0004 7c62 lea 47c62 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 44f4a: 4a80 tstl %d0 <== NOT EXECUTED 44f4c: 6606 bnes 44f54 <== NOT EXECUTED _Thread_Enable_dispatch(); 44f4e: 4e93 jsr %a3@ <== NOT EXECUTED 44f50: 700b moveq #11,%d0 <== NOT EXECUTED 44f52: 6030 bras 44f84 <== NOT EXECUTED return EAGAIN; } _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 44f54: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 44f58: 486a 0010 pea %a2@(16) <== NOT EXECUTED 44f5c: 4eb9 0004 6894 jsr 46894 <_CORE_barrier_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 44f62: 2079 0005 9678 moveal 59678 <_POSIX_Barrier_Information+0x1a>,%a0 <== NOT EXECUTED 44f68: 4280 clrl %d0 <== NOT EXECUTED 44f6a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 44f6e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 44f72: 42aa 000c clrl %a2@(12) <== NOT EXECUTED ); /* * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; 44f76: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 44f7a: 4e93 jsr %a3@ <== NOT EXECUTED 44f7c: 508f addql #8,%sp <== NOT EXECUTED 44f7e: 4280 clrl %d0 <== NOT EXECUTED 44f80: 6002 bras 44f84 <== NOT EXECUTED return 0; 44f82: 7016 moveq #22,%d0 <== NOT EXECUTED } 44f84: 4cee 1c04 ffe0 moveml %fp@(-32),%d2/%a2-%a4 <== NOT EXECUTED 44f8a: 4e5e unlk %fp <== NOT EXECUTED 44f8c: 4e75 rts <== NOT EXECUTED ... 00044f90 : */ int pthread_barrier_wait( pthread_barrier_t *barrier ) { 44f90: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44f94: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 44f98: 4a88 tstl %a0 <== NOT EXECUTED 44f9a: 6754 beqs 44ff0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 44f9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44fa0: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44fa2: 4879 0005 965e pea 5965e <_POSIX_Barrier_Information> <== NOT EXECUTED 44fa8: 4eb9 0004 74f0 jsr 474f0 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 44fae: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44fb4: 2040 moveal %d0,%a0 <== NOT EXECUTED 44fb6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44fba: 6634 bnes 44ff0 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 44fbc: 42a7 clrl %sp@- <== NOT EXECUTED 44fbe: 42a7 clrl %sp@- <== NOT EXECUTED 44fc0: 4878 0001 pea 1 <== NOT EXECUTED 44fc4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44fc8: 4868 0010 pea %a0@(16) <== NOT EXECUTED 44fcc: 4eb9 0004 68d0 jsr 468d0 <_CORE_barrier_Wait> <== NOT EXECUTED the_barrier->Object.id, TRUE, 0, NULL ); _Thread_Enable_dispatch(); 44fd2: 4eb9 0004 7c62 jsr 47c62 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Barrier_Translate_core_barrier_return_code( 44fd8: 2079 0005 93c2 moveal 593c2 <_Thread_Executing>,%a0 <== NOT EXECUTED 44fde: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 44fe2: 4eb9 0004 a968 jsr 4a968 <_POSIX_Barrier_Translate_core_barrier_return_code> <== NOT EXECUTED 44fe8: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 44fee: 6002 bras 44ff2 <== NOT EXECUTED 44ff0: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44ff2: 4e5e unlk %fp <== NOT EXECUTED 44ff4: 4e75 rts <== NOT EXECUTED ... 00044dd8 : */ int pthread_barrierattr_destroy( pthread_barrierattr_t *attr ) { 44dd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44ddc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == FALSE ) 44de0: 4a88 tstl %a0 <== NOT EXECUTED 44de2: 670a beqs 44dee <== NOT EXECUTED 44de4: 4a90 tstl %a0@ <== NOT EXECUTED 44de6: 6706 beqs 44dee <== NOT EXECUTED return EINVAL; attr->is_initialized = FALSE; 44de8: 4290 clrl %a0@ <== NOT EXECUTED 44dea: 4280 clrl %d0 <== NOT EXECUTED 44dec: 6002 bras 44df0 <== NOT EXECUTED return 0; 44dee: 7016 moveq #22,%d0 <== NOT EXECUTED } 44df0: 4e5e unlk %fp <== NOT EXECUTED 44df2: 4e75 rts 00044df4 : int pthread_barrierattr_getpshared( const pthread_barrierattr_t *attr, int *pshared ) { 44df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44df8: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED if ( !attr ) 44dfc: 4a89 tstl %a1 <== NOT EXECUTED 44dfe: 6710 beqs 44e10 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 44e00: 4a91 tstl %a1@ <== NOT EXECUTED 44e02: 670c beqs 44e10 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 44e04: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 44e08: 20a9 0004 movel %a1@(4),%a0@ <== NOT EXECUTED 44e0c: 4280 clrl %d0 <== NOT EXECUTED 44e0e: 6002 bras 44e12 <== NOT EXECUTED return 0; 44e10: 7016 moveq #22,%d0 <== NOT EXECUTED } 44e12: 4e5e unlk %fp <== NOT EXECUTED 44e14: 4e75 rts <== NOT EXECUTED ... 00044e18 : */ int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { 44e18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e1c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 44e20: 4a88 tstl %a0 <== NOT EXECUTED 44e22: 6604 bnes 44e28 <== NOT EXECUTED 44e24: 7016 moveq #22,%d0 <== NOT EXECUTED 44e26: 600a bras 44e32 <== NOT EXECUTED return EINVAL; attr->is_initialized = TRUE; 44e28: 7201 moveq #1,%d1 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; 44e2a: 4280 clrl %d0 <== NOT EXECUTED 44e2c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = TRUE; 44e30: 2081 movel %d1,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 44e32: 4e5e unlk %fp <== NOT EXECUTED 44e34: 4e75 rts <== NOT EXECUTED ... 00044e38 : int pthread_barrierattr_setpshared( pthread_barrierattr_t *attr, int pshared ) { 44e38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e3c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44e40: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 44e44: 4a88 tstl %a0 <== NOT EXECUTED 44e46: 6712 beqs 44e5a <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 44e48: 4a90 tstl %a0@ <== NOT EXECUTED 44e4a: 670e beqs 44e5a <== NOT EXECUTED return EINVAL; switch ( pshared ) { 44e4c: 7201 moveq #1,%d1 <== NOT EXECUTED 44e4e: b280 cmpl %d0,%d1 <== NOT EXECUTED 44e50: 6508 bcss 44e5a <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 44e52: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 44e56: 4280 clrl %d0 <== NOT EXECUTED 44e58: 6002 bras 44e5c <== NOT EXECUTED return 0; 44e5a: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 44e5c: 4e5e unlk %fp <== NOT EXECUTED 44e5e: 4e75 rts 00044748 : */ int pthread_cancel( pthread_t thread ) { 44748: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4474c: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * Don't even think about deleting a resource from an ISR. */ if ( _ISR_Is_in_progress() ) 4474e: 2039 0005 9916 movel 59916 <_ISR_Nest_level>,%d0 <== NOT EXECUTED */ int pthread_cancel( pthread_t thread ) { 44754: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Don't even think about deleting a resource from an ISR. */ if ( _ISR_Is_in_progress() ) 44756: 4a80 tstl %d0 <== NOT EXECUTED 44758: 6704 beqs 4475e <== NOT EXECUTED 4475a: 7047 moveq #71,%d0 <== NOT EXECUTED 4475c: 6060 bras 447be <== NOT EXECUTED RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get ( pthread_t id, Objects_Locations *location ) { return (Thread_Control *) 4475e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44762: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44766: 4879 0005 9a6a pea 59a6a <_POSIX_Threads_Information> <== NOT EXECUTED 4476c: 4eb9 0004 6e90 jsr 46e90 <_Objects_Get> <== NOT EXECUTED return EPROTO; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 44772: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44778: 2440 moveal %d0,%a2 <== NOT EXECUTED 4477a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4477e: 6704 beqs 44784 <== NOT EXECUTED 44780: 7016 moveq #22,%d0 <== NOT EXECUTED 44782: 603a bras 447be <== NOT EXECUTED case OBJECTS_LOCAL: thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; 44784: 206a 0110 moveal %a2@(272),%a0 <== NOT EXECUTED thread_support->cancelation_requested = 1; 44788: 7001 moveq #1,%d0 <== NOT EXECUTED 4478a: 2140 00d4 movel %d0,%a0@(212) <== NOT EXECUTED if (thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 4478e: 4aa8 00cc tstl %a0@(204) <== NOT EXECUTED 44792: 6704 beqs 44798 <== NOT EXECUTED 44794: 4202 clrb %d2 <== NOT EXECUTED 44796: 600c bras 447a4 <== NOT EXECUTED 44798: 7001 moveq #1,%d0 <== NOT EXECUTED 4479a: b0a8 00d0 cmpl %a0@(208),%d0 <== NOT EXECUTED 4479e: 57c0 seq %d0 <== NOT EXECUTED 447a0: 2400 movel %d0,%d2 <== NOT EXECUTED 447a2: 4482 negl %d2 <== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS) cancel = true; _Thread_Enable_dispatch(); 447a4: 4eb9 0004 7602 jsr 47602 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) 447aa: 4a02 tstb %d2 <== NOT EXECUTED 447ac: 670e beqs 447bc <== NOT EXECUTED _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); 447ae: 4878 ffff pea ffffffff <== NOT EXECUTED 447b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 447b4: 4eb9 0004 4a3c jsr 44a3c <_POSIX_Thread_Exit> <== NOT EXECUTED 447ba: 508f addql #8,%sp <== NOT EXECUTED 447bc: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 447be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 447c2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 447c6: 4e5e unlk %fp <== NOT EXECUTED 447c8: 4e75 rts <== NOT EXECUTED ... 00044c20 : rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44c20: 2039 0005 a4dc movel 5a4dc <_Thread_Dispatch_disable_level>,%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 ]; 44c26: 2079 0005 a59a moveal 5a59a <_Thread_Executing>,%a0 <== NOT EXECUTED */ void pthread_cleanup_pop( int execute ) { 44c2c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 44c30: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 44c34: 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 ]; 44c36: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED */ void pthread_cleanup_pop( int execute ) { 44c3a: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 44c3e: 23c0 0005 a4dc movel %d0,5a4dc <_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 ); 44c44: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 44c4a: 40c2 movew %sr,%d2 <== NOT EXECUTED 44c4c: 8082 orl %d2,%d0 <== NOT EXECUTED 44c4e: 46c0 movew %d0,%sr <== NOT EXECUTED 44c50: 47f9 0004 7e3a lea 47e3a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 44c56: 43e8 00dc lea %a0@(220),%a1 <== NOT EXECUTED if ( _Chain_Is_empty( handler_stack ) ) { 44c5a: b3e8 00d8 cmpal %a0@(216),%a1 <== NOT EXECUTED 44c5e: 6606 bnes 44c66 <== NOT EXECUTED _Thread_Enable_dispatch(); 44c60: 4e93 jsr %a3@ <== NOT EXECUTED _ISR_Enable( level ); 44c62: 46c2 movew %d2,%sr <== NOT EXECUTED 44c64: 604e bras 44cb4 <== NOT EXECUTED return; } handler = (POSIX_Cancel_Handler_control *) 44c66: 2469 0004 moveal %a1@(4),%a2 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 44c6a: 2252 moveal %a2@,%a1 <== NOT EXECUTED previous = the_node->previous; 44c6c: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; previous->next = next; 44c70: 2089 movel %a1,%a0@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 44c72: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 44c76: 46c2 movew %d2,%sr <== NOT EXECUTED tmp_handler = *handler; 44c78: 4878 0010 pea 10 <== NOT EXECUTED 44c7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c7e: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 44c82: 4eb9 0004 d000 jsr 4d000 <== NOT EXECUTED 44c88: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 44c8c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED _Workspace_Free( handler ); 44c90: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c92: 4eb9 0004 905c jsr 4905c <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 44c98: 4e93 jsr %a3@ <== NOT EXECUTED if ( execute ) 44c9a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44ca0: 4a84 tstl %d4 <== NOT EXECUTED 44ca2: 6710 beqs 44cb4 <== NOT EXECUTED (*tmp_handler.routine)( tmp_handler.arg ); 44ca4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED 44ca8: 2243 moveal %d3,%a1 <== NOT EXECUTED } 44caa: 4cee 0c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a3 <== NOT EXECUTED 44cb0: 4e5e unlk %fp <== NOT EXECUTED _Workspace_Free( handler ); _Thread_Enable_dispatch(); if ( execute ) (*tmp_handler.routine)( tmp_handler.arg ); 44cb2: 4ed1 jmp %a1@ <== NOT EXECUTED } 44cb4: 4cee 0c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a3 <== NOT EXECUTED 44cba: 4e5e unlk %fp <== NOT EXECUTED 44cbc: 4e75 rts <== NOT EXECUTED ... 00044cc0 : void pthread_cleanup_push( void (*routine)( void * ), void *arg ) { 44cc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44cc4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44cc6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 44cca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44ccc: 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 ) 44cd0: 6754 beqs 44d26 <== NOT EXECUTED 44cd2: 2039 0005 a4dc movel 5a4dc <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44cd8: 5280 addql #1,%d0 <== NOT EXECUTED 44cda: 23c0 0005 a4dc movel %d0,5a4dc <_Thread_Dispatch_disable_level> <== NOT EXECUTED return; _Thread_Disable_dispatch(); handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); 44ce0: 4878 0010 pea 10 <== NOT EXECUTED 44ce4: 4eb9 0004 9074 jsr 49074 <_Workspace_Allocate> <== NOT EXECUTED if ( handler ) { 44cea: 588f addql #4,%sp <== NOT EXECUTED */ if ( !routine ) return; _Thread_Disable_dispatch(); handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); 44cec: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( handler ) { 44cee: 4a80 tstl %d0 <== NOT EXECUTED 44cf0: 6724 beqs 44d16 <== NOT EXECUTED thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; 44cf2: 2079 0005 a59a moveal 5a59a <_Thread_Executing>,%a0 <== NOT EXECUTED 44cf8: 2028 0110 movel %a0@(272),%d0 <== NOT EXECUTED handler->routine = routine; 44cfc: 2342 0008 movel %d2,%a1@(8) <== 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; 44d00: 0680 0000 00d8 addil #216,%d0 <== NOT EXECUTED handler->routine = routine; handler->arg = arg; 44d06: 2343 000c movel %d3,%a1@(12) <== NOT EXECUTED _Chain_Append( handler_stack, &handler->Node ); 44d0a: 2f09 movel %a1,%sp@- <== NOT EXECUTED 44d0c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44d0e: 4eb9 0004 6b04 jsr 46b04 <_Chain_Append> <== NOT EXECUTED 44d14: 508f addql #8,%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); } 44d16: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44d1a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 44d1e: 4e5e unlk %fp <== NOT EXECUTED handler->routine = routine; handler->arg = arg; _Chain_Append( handler_stack, &handler->Node ); } _Thread_Enable_dispatch(); 44d20: 4ef9 0004 7e3a jmp 47e3a <_Thread_Enable_dispatch> <== NOT EXECUTED } 44d26: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44d2a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 44d2e: 4e5e unlk %fp <== NOT EXECUTED 44d30: 4e75 rts <== NOT EXECUTED ... 000457dc : */ int pthread_cond_broadcast( pthread_cond_t *cond ) { 457dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, TRUE ); 457e0: 4878 0001 pea 1 <== NOT EXECUTED 457e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 457e8: 4eb9 0004 5974 jsr 45974 <_POSIX_Condition_variables_Signal_support> <== NOT EXECUTED } 457ee: 4e5e unlk %fp <== NOT EXECUTED 457f0: 4e75 rts <== NOT EXECUTED ... 000457f4 : */ int pthread_cond_destroy( pthread_cond_t *cond ) { 457f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 457f8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 457fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 457fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45800: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45804: 4eb9 0004 5868 jsr 45868 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 4580a: 508f addql #8,%sp <== NOT EXECUTED ) { POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 4580c: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 4580e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45812: 6704 beqs 45818 <== NOT EXECUTED 45814: 7016 moveq #22,%d0 <== NOT EXECUTED 45816: 6042 bras 4585a <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_queue_First( &the_cond->Wait_queue ) ) { 45818: 486a 0018 pea %a2@(24) <== NOT EXECUTED 4581c: 4eb9 0004 91f0 jsr 491f0 <_Thread_queue_First> <== NOT EXECUTED 45822: 588f addql #4,%sp <== NOT EXECUTED 45824: 47f9 0004 8b6a lea 48b6a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4582a: 4a80 tstl %d0 <== NOT EXECUTED 4582c: 6706 beqs 45834 <== NOT EXECUTED _Thread_Enable_dispatch(); 4582e: 4e93 jsr %a3@ <== NOT EXECUTED 45830: 7010 moveq #16,%d0 <== NOT EXECUTED 45832: 6026 bras 4585a <== NOT EXECUTED return EBUSY; } _Objects_Close( 45834: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45836: 4879 0005 b806 pea 5b806 <_POSIX_Condition_variables_Information> <== NOT EXECUTED 4583c: 4eb9 0004 8020 jsr 48020 <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free ( POSIX_Condition_variables_Control *the_condition_variable ) { _Objects_Free( 45842: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45844: 4879 0005 b806 pea 5b806 <_POSIX_Condition_variables_Information> <== NOT EXECUTED 4584a: 4eb9 0004 8298 jsr 48298 <_Objects_Free> <== NOT EXECUTED &_POSIX_Condition_variables_Information, &the_cond->Object ); _POSIX_Condition_variables_Free( the_cond ); _Thread_Enable_dispatch(); 45850: 4e93 jsr %a3@ <== NOT EXECUTED 45852: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45858: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4585a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4585e: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 45862: 4e5e unlk %fp <== NOT EXECUTED 45864: 4e75 rts <== NOT EXECUTED ... 000458bc : int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) { 458bc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 458c0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 458c4: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED POSIX_Condition_variables_Control *the_cond; const pthread_condattr_t *the_attr; if ( attr ) the_attr = attr; 458c8: 47f9 0005 8592 lea 58592 <_POSIX_Condition_variables_Default_attributes>,%a3 <== NOT EXECUTED 458ce: 4a80 tstl %d0 <== NOT EXECUTED 458d0: 6702 beqs 458d4 <== NOT EXECUTED 458d2: 2640 moveal %d0,%a3 <== NOT EXECUTED /* * Be careful about attributes when global!!! */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) 458d4: 7001 moveq #1,%d0 <== NOT EXECUTED 458d6: b0ab 0004 cmpl %a3@(4),%d0 <== NOT EXECUTED 458da: 6778 beqs 45954 <== NOT EXECUTED return EINVAL; if ( !the_attr->is_initialized ) 458dc: 4a93 tstl %a3@ <== NOT EXECUTED 458de: 6774 beqs 45954 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 458e0: 2039 0005 b430 movel 5b430 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 458e6: 5280 addql #1,%d0 <== NOT EXECUTED 458e8: 23c0 0005 b430 movel %d0,5b430 <_Thread_Dispatch_disable_level> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control *_POSIX_Condition_variables_Allocate( void ) { return (POSIX_Condition_variables_Control *) 458ee: 4879 0005 b806 pea 5b806 <_POSIX_Condition_variables_Information> <== NOT EXECUTED 458f4: 4eb9 0004 7f98 jsr 47f98 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_cond = _POSIX_Condition_variables_Allocate(); if ( !the_cond ) { 458fa: 588f addql #4,%sp <== NOT EXECUTED 458fc: 2440 moveal %d0,%a2 <== NOT EXECUTED 458fe: 49f9 0004 8b6a lea 48b6a <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 45904: 4a80 tstl %d0 <== NOT EXECUTED 45906: 6606 bnes 4590e <== NOT EXECUTED _Thread_Enable_dispatch(); 45908: 4e94 jsr %a4@ <== NOT EXECUTED 4590a: 700c moveq #12,%d0 <== NOT EXECUTED 4590c: 6048 bras 45956 <== NOT EXECUTED return ENOMEM; } the_cond->process_shared = the_attr->process_shared; 4590e: 256b 0004 0010 movel %a3@(4),%a2@(16) <== NOT EXECUTED the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 45914: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED /* XXX some more initialization might need to go here */ _Thread_queue_Initialize( 45918: 4878 0074 pea 74 <== NOT EXECUTED 4591c: 4878 0800 pea 800 <== NOT EXECUTED 45920: 42a7 clrl %sp@- <== NOT EXECUTED 45922: 486a 0018 pea %a2@(24) <== NOT EXECUTED 45926: 4eb9 0004 927c jsr 4927c <_Thread_queue_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4592c: 2079 0005 b820 moveal 5b820 <_POSIX_Condition_variables_Information+0x1a>,%a0 <== NOT EXECUTED 45932: 4280 clrl %d0 <== NOT EXECUTED 45934: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 45938: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 4593c: 42aa 000c clrl %a2@(12) <== NOT EXECUTED &_POSIX_Condition_variables_Information, &the_cond->Object, 0 ); *cond = the_cond->Object.id; 45940: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45944: 20aa 0008 movel %a2@(8),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 45948: 4e94 jsr %a4@ <== NOT EXECUTED 4594a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45950: 4280 clrl %d0 <== NOT EXECUTED 45952: 6002 bras 45956 <== NOT EXECUTED return 0; 45954: 7016 moveq #22,%d0 <== NOT EXECUTED } 45956: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4595c: 4e5e unlk %fp <== NOT EXECUTED 4595e: 4e75 rts 00045960 : */ int pthread_cond_signal( pthread_cond_t *cond ) { 45960: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, FALSE ); 45964: 42a7 clrl %sp@- <== NOT EXECUTED 45966: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4596a: 4eb9 0004 5974 jsr 45974 <_POSIX_Condition_variables_Signal_support> <== NOT EXECUTED } 45970: 4e5e unlk %fp <== NOT EXECUTED 45972: 4e75 rts 000459d4 : int pthread_cond_timedwait( pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime ) { 459d4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ switch ( _POSIX_Absolute_timeout_to_ticks(abstime, &ticks) ) { 459d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 459dc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 459e0: 4eb9 0004 5e50 jsr 45e50 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED 459e6: 508f addql #8,%sp <== NOT EXECUTED 459e8: 7202 moveq #2,%d1 <== NOT EXECUTED 459ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 459ec: 650a bcss 459f8 <== NOT EXECUTED 459ee: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 459f2: b280 cmpl %d0,%d1 <== NOT EXECUTED 459f4: 630a blss 45a00 <== NOT EXECUTED 459f6: 6004 bras 459fc <== NOT EXECUTED 459f8: 4200 clrb %d0 <== NOT EXECUTED 459fa: 6006 bras 45a02 <== NOT EXECUTED 459fc: 7016 moveq #22,%d0 <== NOT EXECUTED 459fe: 6020 bras 45a20 <== NOT EXECUTED 45a00: 7001 moveq #1,%d0 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: already_timedout = FALSE; break; } return _POSIX_Condition_variables_Wait_support( 45a02: 7201 moveq #1,%d1 <== NOT EXECUTED 45a04: c280 andl %d0,%d1 <== NOT EXECUTED 45a06: 2f01 movel %d1,%sp@- <== NOT EXECUTED 45a08: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 45a0c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45a10: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45a14: 4eb9 0004 5a40 jsr 45a40 <_POSIX_Condition_variables_Wait_support> <== NOT EXECUTED 45a1a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED cond, mutex, ticks, already_timedout ); } 45a20: 4e5e unlk %fp <== NOT EXECUTED 45a22: 4e75 rts 00045a24 : int pthread_cond_wait( pthread_cond_t *cond, pthread_mutex_t *mutex ) { 45a24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Wait_support( 45a28: 42a7 clrl %sp@- <== NOT EXECUTED 45a2a: 42a7 clrl %sp@- <== NOT EXECUTED 45a2c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45a30: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45a34: 4eb9 0004 5a40 jsr 45a40 <_POSIX_Condition_variables_Wait_support> <== NOT EXECUTED cond, mutex, THREAD_QUEUE_WAIT_FOREVER, FALSE ); } 45a3a: 4e5e unlk %fp <== NOT EXECUTED 45a3c: 4e75 rts <== NOT EXECUTED ... 00045754 : */ int pthread_condattr_destroy( pthread_condattr_t *attr ) { 45754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45758: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == FALSE ) 4575c: 4a88 tstl %a0 <== NOT EXECUTED 4575e: 670a beqs 4576a <== NOT EXECUTED 45760: 4a90 tstl %a0@ <== NOT EXECUTED 45762: 6706 beqs 4576a <== NOT EXECUTED return EINVAL; attr->is_initialized = FALSE; 45764: 4290 clrl %a0@ <== NOT EXECUTED 45766: 4280 clrl %d0 <== NOT EXECUTED 45768: 6002 bras 4576c <== NOT EXECUTED return 0; 4576a: 7016 moveq #22,%d0 <== NOT EXECUTED } 4576c: 4e5e unlk %fp <== NOT EXECUTED 4576e: 4e75 rts 00045770 : int pthread_condattr_getpshared( const pthread_condattr_t *attr, int *pshared ) { 45770: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45774: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED if ( !attr ) 45778: 4a89 tstl %a1 <== NOT EXECUTED 4577a: 6604 bnes 45780 <== NOT EXECUTED 4577c: 7016 moveq #22,%d0 <== NOT EXECUTED 4577e: 600a bras 4578a <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 45780: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 45784: 4280 clrl %d0 <== NOT EXECUTED 45786: 20a9 0004 movel %a1@(4),%a0@ <== NOT EXECUTED return 0; } 4578a: 4e5e unlk %fp <== NOT EXECUTED 4578c: 4e75 rts <== NOT EXECUTED ... 00045790 : */ int pthread_condattr_init( pthread_condattr_t *attr ) { 45790: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45794: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 45798: 4a88 tstl %a0 <== NOT EXECUTED 4579a: 6604 bnes 457a0 <== NOT EXECUTED 4579c: 7016 moveq #22,%d0 <== NOT EXECUTED 4579e: 6014 bras 457b4 <== NOT EXECUTED return EINVAL; *attr = _POSIX_Condition_variables_Default_attributes; 457a0: 2039 0005 8592 movel 58592 <_POSIX_Condition_variables_Default_attributes>,%d0 <== NOT EXECUTED 457a6: 2239 0005 8596 movel 58596 <_POSIX_Condition_variables_Default_attributes+0x4>,%d1 <== NOT EXECUTED 457ac: 2080 movel %d0,%a0@ <== NOT EXECUTED 457ae: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 457b2: 4280 clrl %d0 <== NOT EXECUTED return 0; } 457b4: 4e5e unlk %fp <== NOT EXECUTED 457b6: 4e75 rts 000457b8 : int pthread_condattr_setpshared( pthread_condattr_t *attr, int pshared ) { 457b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 457bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 457c0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 457c4: 4a88 tstl %a0 <== NOT EXECUTED 457c6: 670e beqs 457d6 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 457c8: 7201 moveq #1,%d1 <== NOT EXECUTED 457ca: b280 cmpl %d0,%d1 <== NOT EXECUTED 457cc: 6508 bcss 457d6 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 457ce: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 457d2: 4280 clrl %d0 <== NOT EXECUTED 457d4: 6002 bras 457d8 <== NOT EXECUTED return 0; 457d6: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 457d8: 4e5e unlk %fp <== NOT EXECUTED 457da: 4e75 rts 00045850 : pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) { 45850: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 45854: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 45858: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4585c: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED POSIX_API_Control *api; int schedpolicy = SCHED_RR; struct sched_param schedparam; Objects_Name name; if ( !start_routine ) 45860: 6606 bnes 45868 <== NOT EXECUTED 45862: 700e moveq #14,%d0 <== NOT EXECUTED 45864: 6000 0250 braw 45ab6 <== NOT EXECUTED return EFAULT; the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes; 45868: 4bf9 0005 86f8 lea 586f8 <_POSIX_Threads_Default_attributes>,%a5 <== NOT EXECUTED 4586e: 4a80 tstl %d0 <== NOT EXECUTED 45870: 6702 beqs 45874 <== NOT EXECUTED 45872: 2a40 moveal %d0,%a5 <== NOT EXECUTED if ( !the_attr->is_initialized ) 45874: 4a95 tstl %a5@ <== NOT EXECUTED 45876: 6700 023c beqw 45ab4 <== NOT EXECUTED * 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) ) 4587a: 4aad 0004 tstl %a5@(4) <== NOT EXECUTED 4587e: 670e beqs 4588e <== NOT EXECUTED 45880: 2039 0005 9a0e movel 59a0e ,%d0 <== NOT EXECUTED 45886: b0ad 0008 cmpl %a5@(8),%d0 <== NOT EXECUTED 4588a: 6200 0228 bhiw 45ab4 <== NOT EXECUTED * 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 ) { 4588e: 202d 0010 movel %a5@(16),%d0 <== NOT EXECUTED 45892: 7201 moveq #1,%d1 <== NOT EXECUTED 45894: b280 cmpl %d0,%d1 <== NOT EXECUTED 45896: 670a beqs 458a2 <== NOT EXECUTED 45898: 7402 moveq #2,%d2 <== NOT EXECUTED 4589a: b480 cmpl %d0,%d2 <== NOT EXECUTED 4589c: 6600 0216 bnew 45ab4 <== NOT EXECUTED 458a0: 6018 bras 458ba <== NOT EXECUTED case PTHREAD_INHERIT_SCHED: api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 458a2: 2079 0005 b62e moveal 5b62e <_Thread_Executing>,%a0 <== NOT EXECUTED 458a8: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED schedpolicy = api->schedpolicy; 458ac: 2628 007c movel %a0@(124),%d3 <== NOT EXECUTED schedparam = api->schedparam; 458b0: 4878 0018 pea 18 <== NOT EXECUTED 458b4: 4868 0080 pea %a0@(128) <== NOT EXECUTED 458b8: 600c bras 458c6 <== NOT EXECUTED break; case PTHREAD_EXPLICIT_SCHED: schedpolicy = the_attr->schedpolicy; 458ba: 262d 0014 movel %a5@(20),%d3 <== NOT EXECUTED schedparam = the_attr->schedparam; 458be: 4878 0018 pea 18 <== NOT EXECUTED 458c2: 486d 0018 pea %a5@(24) <== NOT EXECUTED 458c6: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 458ca: 4eb9 0004 d7bc jsr 4d7bc <== NOT EXECUTED 458d0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED /* * Check the contentionscope since rtems only supports PROCESS wide * contention (i.e. no system wide contention). */ if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS ) 458d6: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED 458dc: 4aad 000c tstl %a5@(12) <== NOT EXECUTED 458e0: 6600 01d4 bnew 45ab6 <== NOT EXECUTED /* * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) 458e4: 282e ffe8 movel %fp@(-24),%d4 <== NOT EXECUTED 458e8: 2004 movel %d4,%d0 <== NOT EXECUTED 458ea: 5380 subql #1,%d0 <== NOT EXECUTED 458ec: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 458f2: 6200 01c0 bhiw 45ab4 <== NOT EXECUTED */ budget_callout = NULL; budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; switch ( schedpolicy ) { 458f6: 7001 moveq #1,%d0 <== NOT EXECUTED 458f8: b083 cmpl %d3,%d0 <== NOT EXECUTED 458fa: 671a beqs 45916 <== NOT EXECUTED 458fc: 6d08 blts 45906 <== NOT EXECUTED 458fe: 4a83 tstl %d3 <== NOT EXECUTED 45900: 6718 beqs 4591a <== NOT EXECUTED 45902: 6000 01b0 braw 45ab4 <== NOT EXECUTED 45906: 7202 moveq #2,%d1 <== NOT EXECUTED 45908: b283 cmpl %d3,%d1 <== NOT EXECUTED 4590a: 6716 beqs 45922 <== NOT EXECUTED 4590c: 7403 moveq #3,%d2 <== NOT EXECUTED 4590e: b483 cmpl %d3,%d2 <== NOT EXECUTED 45910: 6600 01a2 bnew 45ab4 <== NOT EXECUTED 45914: 6012 bras 45928 <== NOT EXECUTED 45916: 95ca subal %a2,%a2 <== NOT EXECUTED 45918: 6004 bras 4591e <== NOT EXECUTED 4591a: 347c 0001 moveaw #1,%a2 <== NOT EXECUTED 4591e: 4282 clrl %d2 <== NOT EXECUTED 45920: 603c bras 4595e <== NOT EXECUTED 45922: 347c 0002 moveaw #2,%a2 <== NOT EXECUTED 45926: 60f6 bras 4591e <== NOT EXECUTED case SCHED_SPORADIC: budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; budget_callout = _POSIX_Threads_Sporadic_budget_callout; if ( _Timespec_To_ticks( &schedparam.ss_replenish_period ) < 45928: 45f9 0004 9618 lea 49618 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED 4592e: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 45932: 4e92 jsr %a2@ <== NOT EXECUTED 45934: 2400 movel %d0,%d2 <== NOT EXECUTED 45936: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4593a: 4e92 jsr %a2@ <== NOT EXECUTED 4593c: 508f addql #8,%sp <== NOT EXECUTED 4593e: b082 cmpl %d2,%d0 <== NOT EXECUTED 45940: 6200 0172 bhiw 45ab4 <== NOT EXECUTED _Timespec_To_ticks( &schedparam.ss_initial_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( schedparam.ss_low_priority ) ) 45944: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 45948: 5380 subql #1,%d0 <== NOT EXECUTED 4594a: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 45950: 6200 0162 bhiw 45ab4 <== NOT EXECUTED 45954: 347c 0003 moveaw #3,%a2 <== NOT EXECUTED 45958: 243c 0004 5e18 movel #286232,%d2 <== NOT EXECUTED #endif /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 4595e: 2f39 0005 b626 movel 5b626 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45964: 4eb9 0004 73a0 jsr 473a0 <_API_Mutex_Lock> <== NOT EXECUTED * _POSIX_Threads_Allocate */ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information ); 4596a: 4879 0005 b762 pea 5b762 <_POSIX_Threads_Information> <== NOT EXECUTED 45970: 4eb9 0004 7c68 jsr 47c68 <_Objects_Allocate> <== NOT EXECUTED * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { 45976: 508f addql #8,%sp <== NOT EXECUTED 45978: 2840 moveal %d0,%a4 <== NOT EXECUTED 4597a: 4a80 tstl %d0 <== NOT EXECUTED 4597c: 6610 bnes 4598e <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4597e: 2f39 0005 b626 movel 5b626 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45984: 4eb9 0004 7404 jsr 47404 <_API_Mutex_Unlock> <== NOT EXECUTED 4598a: 588f addql #4,%sp <== NOT EXECUTED 4598c: 606a bras 459f8 <== NOT EXECUTED /* * Initialize the core thread for this task. */ name.name_p = NULL; /* posix threads don't have a name by default */ status = _Thread_Initialize( 4598e: 222d 0008 movel %a5@(8),%d1 <== NOT EXECUTED 45992: 42a7 clrl %sp@- <== NOT EXECUTED 45994: 2039 0005 9a0e movel 59a0e ,%d0 <== NOT EXECUTED 4599a: 42a7 clrl %sp@- <== NOT EXECUTED 4599c: d080 addl %d0,%d0 <== NOT EXECUTED 4599e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 459a0: 243c 0000 00ff movel #255,%d2 <== NOT EXECUTED 459a6: 9484 subl %d4,%d2 <== NOT EXECUTED 459a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 459aa: 4878 0001 pea 1 <== NOT EXECUTED 459ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 459b0: 4878 0001 pea 1 <== NOT EXECUTED 459b4: b280 cmpl %d0,%d1 <== NOT EXECUTED 459b6: 6302 blss 459ba <== NOT EXECUTED 459b8: 2001 movel %d1,%d0 <== NOT EXECUTED 459ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 459bc: 2f2d 0004 movel %a5@(4),%sp@- <== NOT EXECUTED 459c0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 459c2: 4879 0005 b762 pea 5b762 <_POSIX_Threads_Information> <== NOT EXECUTED 459c8: 4eb9 0004 8928 jsr 48928 <_Thread_Initialize> <== NOT EXECUTED budget_callout, 0, /* isr level */ name /* posix threads don't have a name */ ); if ( !status ) { 459ce: dffc 0000 002c addal #44,%sp <== NOT EXECUTED 459d4: 4a00 tstb %d0 <== NOT EXECUTED 459d6: 6626 bnes 459fe <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 459d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 459da: 4879 0005 b762 pea 5b762 <_POSIX_Threads_Information> <== NOT EXECUTED 459e0: 4eb9 0004 7f68 jsr 47f68 <_Objects_Free> <== NOT EXECUTED _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 459e6: 2f39 0005 b626 movel 5b626 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 459ec: 4eb9 0004 7404 jsr 47404 <_API_Mutex_Unlock> <== NOT EXECUTED 459f2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 459f8: 700b moveq #11,%d0 <== NOT EXECUTED 459fa: 6000 00ba braw 45ab6 <== NOT EXECUTED /* * finish initializing the per API structure */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 459fe: 266c 0110 moveal %a4@(272),%a3 <== NOT EXECUTED api->Attributes = *the_attr; 45a02: 4878 0038 pea 38 <== NOT EXECUTED 45a06: 45f9 0004 d7bc lea 4d7bc ,%a2 <== NOT EXECUTED 45a0c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 45a0e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45a10: 4e92 jsr %a2@ <== NOT EXECUTED api->detachstate = the_attr->detachstate; 45a12: 276d 0034 0038 movel %a5@(52),%a3@(56) <== NOT EXECUTED api->schedpolicy = schedpolicy; 45a18: 2743 007c movel %d3,%a3@(124) <== NOT EXECUTED api->schedparam = schedparam; 45a1c: 4878 0018 pea 18 <== NOT EXECUTED 45a20: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 45a24: 486b 0080 pea %a3@(128) <== NOT EXECUTED 45a28: 4e92 jsr %a2@ <== NOT EXECUTED * first run. * * NOTE: Since the thread starts with all unblocked, this is necessary. */ the_thread->do_post_task_switch_extension = true; 45a2a: 7001 moveq #1,%d0 <== NOT EXECUTED 45a2c: 1940 0075 moveb %d0,%a4@(117) <== NOT EXECUTED /* * POSIX threads are allocated and started in one operation. */ status = _Thread_Start( 45a30: 42a7 clrl %sp@- <== NOT EXECUTED 45a32: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 45a36: 2f05 movel %d5,%sp@- <== NOT EXECUTED 45a38: 4878 0001 pea 1 <== NOT EXECUTED 45a3c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 45a3e: 4eb9 0004 92f8 jsr 492f8 <_Thread_Start> <== NOT EXECUTED start_routine, arg, 0 /* unused */ ); if ( schedpolicy == SCHED_SPORADIC ) { 45a44: dffc 0000 002c addal #44,%sp <== NOT EXECUTED /* * POSIX threads are allocated and started in one operation. */ status = _Thread_Start( 45a4a: 1400 moveb %d0,%d2 <== NOT EXECUTED start_routine, arg, 0 /* unused */ ); if ( schedpolicy == SCHED_SPORADIC ) { 45a4c: 7203 moveq #3,%d1 <== NOT EXECUTED 45a4e: b283 cmpl %d3,%d1 <== NOT EXECUTED 45a50: 6624 bnes 45a76 <== NOT EXECUTED _Watchdog_Insert_ticks( 45a52: 486b 0088 pea %a3@(136) <== NOT EXECUTED 45a56: 4eb9 0004 9618 jsr 49618 <_Timespec_To_ticks> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45a5c: 2740 00a8 movel %d0,%a3@(168) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45a60: 486b 009c pea %a3@(156) <== NOT EXECUTED 45a64: 4879 0005 b64c pea 5b64c <_Watchdog_Ticks_chain> <== NOT EXECUTED 45a6a: 4eb9 0004 9964 jsr 49964 <_Watchdog_Insert> <== NOT EXECUTED 45a70: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45a76: 45f9 0004 7404 lea 47404 <_API_Mutex_Unlock>,%a2 <== NOT EXECUTED * * NOTE: This can only happen if someone slips in and touches the * thread while we are creating it. */ if ( !status ) { 45a7c: 4a02 tstb %d2 <== NOT EXECUTED 45a7e: 661e bnes 45a9e <== NOT EXECUTED 45a80: 2f0c movel %a4,%sp@- <== NOT EXECUTED 45a82: 4879 0005 b762 pea 5b762 <_POSIX_Threads_Information> <== NOT EXECUTED 45a88: 4eb9 0004 7f68 jsr 47f68 <_Objects_Free> <== NOT EXECUTED _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 45a8e: 2f39 0005 b626 movel 5b626 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45a94: 4e92 jsr %a2@ <== NOT EXECUTED 45a96: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45a9c: 6016 bras 45ab4 <== NOT EXECUTED /* * Return the id and indicate we successfully created the thread */ *thread = the_thread->Object.id; 45a9e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45aa2: 20ac 0008 movel %a4@(8),%a0@ <== NOT EXECUTED _RTEMS_Unlock_allocator(); 45aa6: 2f39 0005 b626 movel 5b626 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45aac: 4e92 jsr %a2@ <== NOT EXECUTED 45aae: 588f addql #4,%sp <== NOT EXECUTED 45ab0: 4280 clrl %d0 <== NOT EXECUTED 45ab2: 6002 bras 45ab6 <== NOT EXECUTED return 0; 45ab4: 7016 moveq #22,%d0 <== NOT EXECUTED } 45ab6: 4cee 3c3c ffc8 moveml %fp@(-56),%d2-%d5/%a2-%a5 <== NOT EXECUTED 45abc: 4e5e unlk %fp <== NOT EXECUTED 45abe: 4e75 rts 00044f00 : #include int pthread_detach( pthread_t thread ) { 44f00: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get ( pthread_t id, Objects_Locations *location ) { return (Thread_Control *) 44f04: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44f08: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44f0c: 4879 0005 a4fa pea 5a4fa <_POSIX_Threads_Information> <== NOT EXECUTED 44f12: 4eb9 0004 72a0 jsr 472a0 <_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 ) { 44f18: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44f1e: 2040 moveal %d0,%a0 <== NOT EXECUTED 44f20: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44f24: 6704 beqs 44f2a <== NOT EXECUTED 44f26: 7003 moveq #3,%d0 <== NOT EXECUTED 44f28: 6010 bras 44f3a <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; api->detachstate = PTHREAD_CREATE_DETACHED; 44f2a: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED 44f2e: 42a8 0038 clrl %a0@(56) <== NOT EXECUTED _Thread_Enable_dispatch(); 44f32: 4eb9 0004 7a12 jsr 47a12 <_Thread_Enable_dispatch> <== NOT EXECUTED 44f38: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 44f3a: 4e5e unlk %fp <== NOT EXECUTED 44f3c: 4e75 rts <== NOT EXECUTED ... 00045ac0 : int pthread_equal( pthread_t t1, pthread_t t2 ) { 45ac0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45ac4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 45ac8: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 45acc: 57c0 seq %d0 <== NOT EXECUTED 45ace: 49c0 extbl %d0 <== NOT EXECUTED break; } return status; #endif } 45ad0: 4e5e unlk %fp <== NOT EXECUTED 45ad2: 4480 negl %d0 <== NOT EXECUTED 45ad4: 4e75 rts <== NOT EXECUTED ... 0004b2c2 : } void pthread_exit( void *value_ptr ) { 4b2c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, value_ptr ); 4b2c6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b2ca: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 4b2d0: 4eb9 0004 b250 jsr 4b250 <_POSIX_Thread_Exit> <== NOT EXECUTED 4b2d6: 508f addql #8,%sp <== NOT EXECUTED } 4b2d8: 4e5e unlk %fp <== NOT EXECUTED 4b2da: 4e75 rts 00044ef0 : int pthread_getcpuclockid( pthread_t pid, clockid_t *clock_id ) { 44ef0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44ef4: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44efa: 2040 moveal %d0,%a0 <== NOT EXECUTED 44efc: 7058 moveq #88,%d0 <== NOT EXECUTED 44efe: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44f00: 4e5e unlk %fp <== NOT EXECUTED 44f02: 70ff moveq #-1,%d0 <== NOT EXECUTED 44f04: 4e75 rts <== NOT EXECUTED ... 00046e0c : int pthread_getschedparam( pthread_t thread, int *policy, struct sched_param *param ) { 46e0c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46e10: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 46e14: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED 46e18: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED Objects_Locations location; POSIX_API_Control *api; register Thread_Control *the_thread; if ( !policy || !param ) 46e1c: 4a8c tstl %a4 <== NOT EXECUTED 46e1e: 675e beqs 46e7e <== NOT EXECUTED 46e20: 4a8b tstl %a3 <== NOT EXECUTED 46e22: 675a beqs 46e7e <== NOT EXECUTED RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get ( pthread_t id, Objects_Locations *location ) { return (Thread_Control *) 46e24: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46e28: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46e2c: 4879 0005 d20a pea 5d20a <_POSIX_Threads_Information> <== NOT EXECUTED 46e32: 4eb9 0004 9224 jsr 49224 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 46e38: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46e3e: 2440 moveal %d0,%a2 <== NOT EXECUTED 46e40: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46e44: 6704 beqs 46e4a <== NOT EXECUTED 46e46: 7003 moveq #3,%d0 <== NOT EXECUTED 46e48: 6036 bras 46e80 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 46e4a: 206a 0110 moveal %a2@(272),%a0 <== NOT EXECUTED if ( policy ) *policy = api->schedpolicy; 46e4e: 28a8 007c movel %a0@(124),%a4@ <== NOT EXECUTED if ( param ) { *param = api->schedparam; 46e52: 4878 0018 pea 18 <== NOT EXECUTED 46e56: 4868 0080 pea %a0@(128) <== NOT EXECUTED 46e5a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46e5c: 4eb9 0004 ea7c jsr 4ea7c <== NOT EXECUTED param->sched_priority = 46e62: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 46e68: 90aa 0014 subl %a2@(20),%d0 <== NOT EXECUTED 46e6c: 2680 movel %d0,%a3@ <== NOT EXECUTED _POSIX_Priority_From_core( the_thread->current_priority ); } _Thread_Enable_dispatch(); 46e6e: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 46e74: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 46e7a: 4280 clrl %d0 <== NOT EXECUTED 46e7c: 6002 bras 46e80 <== NOT EXECUTED return 0; 46e7e: 7016 moveq #22,%d0 <== NOT EXECUTED break; } return ESRCH; } 46e80: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 46e86: 4e5e unlk %fp <== NOT EXECUTED 46e88: 4e75 rts <== NOT EXECUTED ... 00044e00 : */ void *pthread_getspecific( pthread_key_t key ) { 44e00: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44e04: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Keys_Control *) 44e06: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44e0a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44e0e: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44e14: 4eb9 0004 73f8 jsr 473f8 <_Objects_Get> <== NOT EXECUTED uint32_t index; Objects_Locations location; void *key_data; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 44e1a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44e20: 2240 moveal %d0,%a1 <== NOT EXECUTED 44e22: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44e26: 6704 beqs 44e2c <== NOT EXECUTED 44e28: 4282 clrl %d2 <== NOT EXECUTED 44e2a: 602a bras 44e56 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 44e2c: 2079 0005 a496 moveal 5a496 <_Thread_Executing>,%a0 <== NOT EXECUTED 44e32: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); key_data = (void *) the_key->Values[ api ][ index ]; 44e36: 7418 moveq #24,%d2 <== NOT EXECUTED 44e38: 2001 movel %d1,%d0 <== NOT EXECUTED 44e3a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 44e3c: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 44e40: c082 andl %d2,%d0 <== NOT EXECUTED 44e42: 2071 0c16 moveal %a1@(00000016,%d0:l:4),%a0 <== NOT EXECUTED 44e46: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 44e4c: 2430 1c00 movel %a0@(00000000,%d1:l:4),%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 44e50: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED case OBJECTS_ERROR: break; } return NULL; } 44e56: 2002 movel %d2,%d0 <== NOT EXECUTED 44e58: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44e5c: 4e5e unlk %fp <== NOT EXECUTED 44e5e: 4e75 rts 00048d2c : int pthread_join( pthread_t thread, void **value_ptr ) { 48d2c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 48d30: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 48d34: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48d38: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED 48d3c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48d40: 4879 0005 fac2 pea 5fac2 <_POSIX_Threads_Information> <== NOT EXECUTED 48d46: 4eb9 0004 b0d0 jsr 4b0d0 <_Objects_Get> <== NOT EXECUTED POSIX_API_Control *api; Objects_Locations location; void *return_pointer; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 48d4c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48d52: 2440 moveal %d0,%a2 <== NOT EXECUTED 48d54: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48d58: 6704 beqs 48d5e <== NOT EXECUTED 48d5a: 7003 moveq #3,%d0 <== NOT EXECUTED 48d5c: 6060 bras 48dbe <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 48d5e: 206a 0110 moveal %a2@(272),%a0 <== NOT EXECUTED if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { 48d62: 4aa8 0038 tstl %a0@(56) <== NOT EXECUTED 48d66: 660a bnes 48d72 <== NOT EXECUTED _Thread_Enable_dispatch(); 48d68: 4eb9 0004 b842 jsr 4b842 <_Thread_Enable_dispatch> <== NOT EXECUTED 48d6e: 7016 moveq #22,%d0 <== NOT EXECUTED 48d70: 604c bras 48dbe <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Executing ); 48d72: 2279 0005 f98e moveal 5f98e <_Thread_Executing>,%a1 <== NOT EXECUTED 48d78: 47f9 0004 b842 lea 4b842 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED return EINVAL; } if ( _Thread_Is_executing( the_thread ) ) { 48d7e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 48d80: 6606 bnes 48d88 <== NOT EXECUTED _Thread_Enable_dispatch(); 48d82: 4e93 jsr %a3@ <== NOT EXECUTED 48d84: 702d moveq #45,%d0 <== NOT EXECUTED 48d86: 6036 bras 48dbe <== NOT EXECUTED /* * Put ourself on the threads join list */ _Thread_Executing->Wait.return_argument = &return_pointer; 48d88: 200e movel %fp,%d0 <== NOT EXECUTED 48d8a: 5180 subql #8,%d0 <== NOT EXECUTED 48d8c: 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; 48d90: 7001 moveq #1,%d0 <== NOT EXECUTED 48d92: 2140 006c movel %d0,%a0@(108) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &api->Join_List ); _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT ); 48d96: 4879 0004 bfe0 pea 4bfe0 <_Thread_queue_Timeout> <== NOT EXECUTED 48d9c: 42a7 clrl %sp@- <== NOT EXECUTED 48d9e: 4868 003c pea %a0@(60) <== NOT EXECUTED 48da2: 4eb9 0004 bca8 jsr 4bca8 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); 48da8: 4e93 jsr %a3@ <== NOT EXECUTED if ( value_ptr ) 48daa: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 48db0: 4a8c tstl %a4 <== NOT EXECUTED 48db2: 6604 bnes 48db8 <== NOT EXECUTED 48db4: 4280 clrl %d0 <== NOT EXECUTED 48db6: 6006 bras 48dbe <== NOT EXECUTED *value_ptr = return_pointer; 48db8: 4280 clrl %d0 <== NOT EXECUTED 48dba: 28ae fff8 movel %fp@(-8),%a4@ <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 48dbe: 4cee 1c00 ffec moveml %fp@(-20),%a2-%a4 <== NOT EXECUTED 48dc4: 4e5e unlk %fp <== NOT EXECUTED 48dc6: 4e75 rts 00044c54 : 44c54: 2039 0005 a3d8 movel 5a3d8 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED int pthread_key_create( pthread_key_t *key, void (*destructor)( void * ) ) { 44c5a: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 44c5e: 5280 addql #1,%d0 <== NOT EXECUTED 44c60: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 44c64: 23c0 0005 a3d8 movel %d0,5a3d8 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * _POSIX_Keys_Allocate */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) { return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information ); 44c6a: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44c70: 4eb9 0004 6f98 jsr 46f98 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_key = _POSIX_Keys_Allocate(); if ( !the_key ) { 44c76: 588f addql #4,%sp <== NOT EXECUTED 44c78: 2640 moveal %d0,%a3 <== NOT EXECUTED 44c7a: 4a80 tstl %d0 <== NOT EXECUTED 44c7c: 660c bnes 44c8a <== NOT EXECUTED _Thread_Enable_dispatch(); 44c7e: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 44c84: 700b moveq #11,%d0 <== NOT EXECUTED 44c86: 6000 00c8 braw 44d50 <== NOT EXECUTED return EAGAIN; } the_key->destructor = destructor; 44c8a: 4bf9 0005 a394 lea 5a394 <_Objects_Information_table+0x4>,%a5 <== NOT EXECUTED 44c90: 49eb 001a lea %a3@(26),%a4 <== NOT EXECUTED 44c94: 347c 0001 moveaw #1,%a2 <== NOT EXECUTED INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 44c98: 283c 0004 8e28 movel #298536,%d4 <== NOT EXECUTED _Thread_Enable_dispatch(); return ENOMEM; } the_key->Values[ the_api ] = table; memset( table, '\0', bytes_to_allocate ); 44c9e: 263c 0004 cd14 movel #314644,%d3 <== NOT EXECUTED if ( !the_key ) { _Thread_Enable_dispatch(); return EAGAIN; } the_key->destructor = destructor; 44ca4: 276e 000c 0012 movel %fp@(12),%a3@(18) <== NOT EXECUTED for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { if ( _Objects_Information_table[ the_api ] ) { 44caa: 2055 moveal %a5@,%a0 <== NOT EXECUTED 44cac: 4a88 tstl %a0 <== NOT EXECUTED 44cae: 6768 beqs 44d18 <== NOT EXECUTED INTERNAL_ERROR_CORE, TRUE, INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * 44cb0: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 44cb4: 4280 clrl %d0 <== NOT EXECUTED 44cb6: 3028 000e movew %a0@(14),%d0 <== NOT EXECUTED 44cba: 2400 movel %d0,%d2 <== NOT EXECUTED 44cbc: 5282 addql #1,%d2 <== NOT EXECUTED 44cbe: e58a lsll #2,%d2 <== NOT EXECUTED (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 44cc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44cc2: 2044 moveal %d4,%a0 <== NOT EXECUTED 44cc4: 4e90 jsr %a0@ <== NOT EXECUTED if ( !table ) { 44cc6: 588f addql #4,%sp <== NOT EXECUTED 44cc8: 4a80 tstl %d0 <== NOT EXECUTED 44cca: 6638 bnes 44d04 <== NOT EXECUTED for ( --the_api; 44ccc: 240a movel %a2,%d2 <== NOT EXECUTED 44cce: 5382 subql #1,%d2 <== NOT EXECUTED 44cd0: 45f3 2c16 lea %a3@(00000016,%d2:l:4),%a2 <== NOT EXECUTED the_api >= 1; the_api-- ) _Workspace_Free( the_key->Values[ the_api ] ); 44cd4: 49f9 0004 8e10 lea 48e10 <_Workspace_Free>,%a4 <== NOT EXECUTED 44cda: 600a bras 44ce6 <== NOT EXECUTED 44cdc: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 44cde: 4e94 jsr %a4@ <== NOT EXECUTED (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); if ( !table ) { for ( --the_api; the_api >= 1; the_api-- ) 44ce0: 5382 subql #1,%d2 <== NOT EXECUTED 44ce2: 598a subql #4,%a2 <== NOT EXECUTED 44ce4: 588f addql #4,%sp <== NOT EXECUTED bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); if ( !table ) { for ( --the_api; the_api >= 1; 44ce6: 4a82 tstl %d2 <== NOT EXECUTED 44ce8: 66f2 bnes 44cdc <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 44cea: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44cec: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44cf2: 4eb9 0004 7298 jsr 47298 <_Objects_Free> <== NOT EXECUTED the_api-- ) _Workspace_Free( the_key->Values[ the_api ] ); _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); 44cf8: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 44cfe: 508f addql #8,%sp <== NOT EXECUTED 44d00: 700c moveq #12,%d0 <== NOT EXECUTED 44d02: 604c bras 44d50 <== NOT EXECUTED return ENOMEM; } the_key->Values[ the_api ] = table; 44d04: 2880 movel %d0,%a4@ <== NOT EXECUTED memset( table, '\0', bytes_to_allocate ); 44d06: 2043 moveal %d3,%a0 <== NOT EXECUTED 44d08: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44d0a: 42a7 clrl %sp@- <== NOT EXECUTED 44d0c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44d0e: 4e90 jsr %a0@ <== NOT EXECUTED 44d10: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44d16: 6002 bras 44d1a <== NOT EXECUTED } else { the_key->Values[ the_api ] = NULL; 44d18: 4294 clrl %a4@ <== NOT EXECUTED * for. [NOTE: Currently RTEMS Classic API tasks are always enabled.] */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { 44d1a: 528a addql #1,%a2 <== NOT EXECUTED 44d1c: 588d addql #4,%a5 <== NOT EXECUTED 44d1e: 588c addql #4,%a4 <== NOT EXECUTED * APIs are optional. Thus there may be no ITRON tasks to have keys * for. [NOTE: Currently RTEMS Classic API tasks are always enabled.] */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; 44d20: 7005 moveq #5,%d0 <== NOT EXECUTED 44d22: b08a cmpl %a2,%d0 <== NOT EXECUTED 44d24: 6684 bnes 44caa <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 44d26: 2079 0005 a78c moveal 5a78c <_POSIX_Keys_Information+0x1a>,%a0 <== NOT EXECUTED 44d2c: 4280 clrl %d0 <== NOT EXECUTED 44d2e: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 44d32: 218b 0c00 movel %a3,%a0@(00000000,%d0:l:4) <== NOT EXECUTED } } the_key->is_active = TRUE; 44d36: 7001 moveq #1,%d0 <== NOT EXECUTED 44d38: 1740 0010 moveb %d0,%a3@(16) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 44d3c: 42ab 000c clrl %a3@(12) <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; 44d40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44d44: 20ab 0008 movel %a3@(8),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 44d48: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 44d4e: 4280 clrl %d0 <== NOT EXECUTED return 0; } 44d50: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 44d56: 4e5e unlk %fp <== NOT EXECUTED 44d58: 4e75 rts <== NOT EXECUTED ... 00044d5c : */ int pthread_key_delete( pthread_key_t key ) { 44d5c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44d60: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Keys_Control *) 44d62: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44d66: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44d6a: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44d70: 4eb9 0004 73f8 jsr 473f8 <_Objects_Get> <== NOT EXECUTED register POSIX_Keys_Control *the_key; Objects_Locations location; uint32_t the_api; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 44d76: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44d7c: 2440 moveal %d0,%a2 <== NOT EXECUTED 44d7e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44d82: 6704 beqs 44d88 <== NOT EXECUTED 44d84: 7016 moveq #22,%d0 <== NOT EXECUTED 44d86: 6070 bras 44df8 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Keys_Information, &the_key->Object ); 44d88: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44d8a: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44d90: 4eb9 0004 7020 jsr 47020 <_Objects_Close> <== NOT EXECUTED the_key->is_active = FALSE; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 44d96: 202a 001a movel %a2@(26),%d0 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Keys_Information, &the_key->Object ); the_key->is_active = FALSE; 44d9a: 4201 clrb %d1 <== NOT EXECUTED 44d9c: 1541 0010 moveb %d1,%a2@(16) <== NOT EXECUTED for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 44da0: 508f addql #8,%sp <== NOT EXECUTED 44da2: 4a80 tstl %d0 <== NOT EXECUTED 44da4: 670a beqs 44db0 <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 44da6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44da8: 4eb9 0004 8e10 jsr 48e10 <_Workspace_Free> <== NOT EXECUTED 44dae: 588f addql #4,%sp <== NOT EXECUTED the_key->is_active = FALSE; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 44db0: 202a 001e movel %a2@(30),%d0 <== NOT EXECUTED 44db4: 670a beqs 44dc0 <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 44db6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44db8: 4eb9 0004 8e10 jsr 48e10 <_Workspace_Free> <== NOT EXECUTED 44dbe: 588f addql #4,%sp <== NOT EXECUTED the_key->is_active = FALSE; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 44dc0: 202a 0022 movel %a2@(34),%d0 <== NOT EXECUTED 44dc4: 670a beqs 44dd0 <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 44dc6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44dc8: 4eb9 0004 8e10 jsr 48e10 <_Workspace_Free> <== NOT EXECUTED 44dce: 588f addql #4,%sp <== NOT EXECUTED the_key->is_active = FALSE; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 44dd0: 202a 0026 movel %a2@(38),%d0 <== NOT EXECUTED 44dd4: 670a beqs 44de0 <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 44dd6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44dd8: 4eb9 0004 8e10 jsr 48e10 <_Workspace_Free> <== NOT EXECUTED 44dde: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 44de0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44de2: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44de8: 4eb9 0004 7298 jsr 47298 <_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(); 44dee: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 44df4: 508f addql #8,%sp <== NOT EXECUTED 44df6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44df8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44dfc: 4e5e unlk %fp <== NOT EXECUTED 44dfe: 4e75 rts 000544e4 : int pthread_kill( pthread_t thread, int sig ) { 544e4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 544e8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 544ec: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED POSIX_API_Control *api; Thread_Control *the_thread; Objects_Locations location; if ( !sig ) 544f0: 670a beqs 544fc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 544f2: 2602 movel %d2,%d3 <== NOT EXECUTED 544f4: 5383 subql #1,%d3 <== NOT EXECUTED 544f6: 701f moveq #31,%d0 <== NOT EXECUTED 544f8: b083 cmpl %d3,%d0 <== NOT EXECUTED 544fa: 6412 bccs 5450e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 544fc: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 54502: 7416 moveq #22,%d2 <== NOT EXECUTED 54504: 2040 moveal %d0,%a0 <== NOT EXECUTED 54506: 2082 movel %d2,%a0@ <== NOT EXECUTED 54508: 70ff moveq #-1,%d0 <== NOT EXECUTED 5450a: 6000 0090 braw 5459c <== NOT EXECUTED RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get ( pthread_t id, Objects_Locations *location ) { return (Thread_Control *) 5450e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 54512: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 54516: 4879 0005 806e pea 5806e <_POSIX_Threads_Information> <== NOT EXECUTED 5451c: 4eb9 0004 6528 jsr 46528 <_Objects_Get> <== NOT EXECUTED the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 54522: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 54528: 2440 moveal %d0,%a2 <== NOT EXECUTED 5452a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5452e: 665e bnes 5458e <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 54530: 2202 movel %d2,%d1 <== NOT EXECUTED 54532: 2002 movel %d2,%d0 <== NOT EXECUTED 54534: e589 lsll #2,%d1 <== NOT EXECUTED 54536: e988 lsll #4,%d0 <== NOT EXECUTED 54538: 9081 subl %d1,%d0 <== NOT EXECUTED 5453a: 0680 0005 838e addil #361358,%d0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * If sig == 0 then just validate arguments */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 54540: 206a 0110 moveal %a2@(272),%a0 <== NOT EXECUTED if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 54544: 7201 moveq #1,%d1 <== NOT EXECUTED 54546: 2240 moveal %d0,%a1 <== NOT EXECUTED 54548: b291 cmpl %a1@,%d1 <== NOT EXECUTED 5454a: 6738 beqs 54584 <== NOT EXECUTED return 0; } /* XXX critical section */ api->signals_pending |= signo_to_mask( sig ); 5454c: 7001 moveq #1,%d0 <== NOT EXECUTED 5454e: e7a8 lsll %d3,%d0 <== NOT EXECUTED 54550: 81a8 00c8 orl %d0,%a0@(200) <== NOT EXECUTED (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); 54554: 42a7 clrl %sp@- <== NOT EXECUTED 54556: 2f02 movel %d2,%sp@- <== NOT EXECUTED 54558: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5455a: 4eb9 0005 43e0 jsr 543e0 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED the_thread->do_post_task_switch_extension = true; if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 54560: 2039 0005 7f1a movel 57f1a <_ISR_Nest_level>,%d0 <== NOT EXECUTED api->signals_pending |= signo_to_mask( sig ); (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); the_thread->do_post_task_switch_extension = true; 54566: 7201 moveq #1,%d1 <== NOT EXECUTED 54568: 1541 0075 moveb %d1,%a2@(117) <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 5456c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 54572: 4a80 tstl %d0 <== NOT EXECUTED 54574: 670e beqs 54584 <== NOT EXECUTED 54576: b5f9 0005 7f3a cmpal 57f3a <_Thread_Executing>,%a2 <== NOT EXECUTED 5457c: 6606 bnes 54584 <== NOT EXECUTED _ISR_Signals_to_thread_executing = TRUE; 5457e: 13c1 0005 7fc8 moveb %d1,57fc8 <_ISR_Signals_to_thread_executing> <== NOT EXECUTED } _Thread_Enable_dispatch(); 54584: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 5458a: 4280 clrl %d0 <== NOT EXECUTED 5458c: 600e bras 5459c <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); 5458e: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 54594: 2040 moveal %d0,%a0 <== NOT EXECUTED 54596: 7203 moveq #3,%d1 <== NOT EXECUTED 54598: 70ff moveq #-1,%d0 <== NOT EXECUTED 5459a: 2081 movel %d1,%a0@ <== NOT EXECUTED } 5459c: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 545a2: 4e5e unlk %fp <== NOT EXECUTED 545a4: 4e75 rts <== NOT EXECUTED ... 00046638 : */ int pthread_mutex_destroy( pthread_mutex_t *mutex ) { 46638: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4663c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4663e: 2f0a movel %a2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46640: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46644: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46648: 4eb9 0004 6708 jsr 46708 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 4664e: 508f addql #8,%sp <== NOT EXECUTED ) { register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46650: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 46652: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46656: 6704 beqs 4665c <== NOT EXECUTED 46658: 7016 moveq #22,%d0 <== NOT EXECUTED 4665a: 6048 bras 466a4 <== NOT EXECUTED 4665c: 47f9 0004 9996 lea 49996 <_Thread_Enable_dispatch>,%a3 <== 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 ) ) { 46662: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED 46666: 6606 bnes 4666e <== NOT EXECUTED _Thread_Enable_dispatch(); 46668: 4e93 jsr %a3@ <== NOT EXECUTED 4666a: 7010 moveq #16,%d0 <== NOT EXECUTED 4666c: 6036 bras 466a4 <== NOT EXECUTED return EBUSY; } _Objects_Close( &_POSIX_Mutex_Information, &the_mutex->Object ); 4666e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46670: 4879 0005 d336 pea 5d336 <_POSIX_Mutex_Information> <== NOT EXECUTED 46676: 4eb9 0004 8e4c jsr 48e4c <_Objects_Close> <== NOT EXECUTED _CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL ); 4667c: 4878 0016 pea 16 <== NOT EXECUTED 46680: 42a7 clrl %sp@- <== NOT EXECUTED 46682: 486a 0014 pea %a2@(20) <== NOT EXECUTED 46686: 4eb9 0004 862c jsr 4862c <_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 ); 4668c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4668e: 4879 0005 d336 pea 5d336 <_POSIX_Mutex_Information> <== NOT EXECUTED 46694: 4eb9 0004 90c4 jsr 490c4 <_Objects_Free> <== NOT EXECUTED _POSIX_Mutex_Free( the_mutex ); _Thread_Enable_dispatch(); 4669a: 4e93 jsr %a3@ <== NOT EXECUTED 4669c: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 466a2: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 466a4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 466a8: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 466ac: 4e5e unlk %fp <== NOT EXECUTED 466ae: 4e75 rts 0004675c : int pthread_mutex_getprioceiling( pthread_mutex_t *mutex, int *prioceiling ) { 4675c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46760: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46762: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; if ( !prioceiling ) 46766: 4a8a tstl %a2 <== NOT EXECUTED 46768: 672e beqs 46798 <== NOT EXECUTED return EINVAL; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 4676a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4676e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46772: 4eb9 0004 6708 jsr 46708 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 46778: 508f addql #8,%sp <== NOT EXECUTED Objects_Locations location; if ( !prioceiling ) return EINVAL; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 4677a: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 4677c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46780: 6616 bnes 46798 <== NOT EXECUTED case OBJECTS_LOCAL: *prioceiling = _POSIX_Priority_From_core( 46782: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 46788: 90a8 005e subl %a0@(94),%d0 <== NOT EXECUTED 4678c: 2480 movel %d0,%a2@ <== NOT EXECUTED the_mutex->Mutex.Attributes.priority_ceiling ); _Thread_Enable_dispatch(); 4678e: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 46794: 4280 clrl %d0 <== NOT EXECUTED 46796: 6002 bras 4679a <== NOT EXECUTED return 0; 46798: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4679a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4679e: 4e5e unlk %fp <== NOT EXECUTED 467a0: 4e75 rts <== NOT EXECUTED ... 000467a4 : int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutexattr_t *attr ) { 467a4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 467a8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 467ac: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 467b0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED #if 0 register POSIX_Mutex_Control *mutex_in_use; Objects_Locations location; #endif if ( attr ) the_attr = attr; 467b4: 47f9 0005 a11c lea 5a11c <_POSIX_Mutex_Default_attributes>,%a3 <== NOT EXECUTED 467ba: 6702 beqs 467be <== NOT EXECUTED 467bc: 2640 moveal %d0,%a3 <== NOT EXECUTED else the_attr = &_POSIX_Mutex_Default_attributes; /* Check for NULL mutex */ if ( !mutex ) 467be: 4a8c tstl %a4 <== NOT EXECUTED 467c0: 6700 00f0 beqw 468b2 <== NOT EXECUTED break; } } #endif if ( !the_attr->is_initialized ) 467c4: 4a93 tstl %a3@ <== NOT EXECUTED 467c6: 6700 00ea beqw 468b2 <== NOT EXECUTED /* * XXX: Be careful about attributes when global!!! */ assert( the_attr->process_shared == PTHREAD_PROCESS_PRIVATE ); 467ca: 4aab 0004 tstl %a3@(4) <== NOT EXECUTED 467ce: 671c beqs 467ec <== NOT EXECUTED 467d0: 4879 0005 a130 pea 5a130 <_POSIX_Mutex_Default_attributes+0x14> <== NOT EXECUTED 467d6: 4879 0005 a1aa pea 5a1aa <__func__.3812> <== NOT EXECUTED 467dc: 4878 0068 pea 68 <== NOT EXECUTED 467e0: 4879 0005 a164 pea 5a164 <_POSIX_Mutex_Default_attributes+0x48> <== NOT EXECUTED 467e6: 4eb9 0004 3bb8 jsr 43bb8 <__assert_func> <== NOT EXECUTED /* * Determine the discipline of the mutex */ switch ( the_attr->protocol ) { 467ec: 202b 000c movel %a3@(12),%d0 <== NOT EXECUTED 467f0: 7201 moveq #1,%d1 <== NOT EXECUTED 467f2: b280 cmpl %d0,%d1 <== NOT EXECUTED 467f4: 6710 beqs 46806 <== NOT EXECUTED 467f6: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 467fa: b280 cmpl %d0,%d1 <== NOT EXECUTED 467fc: 6710 beqs 4680e <== NOT EXECUTED 467fe: 4a80 tstl %d0 <== NOT EXECUTED 46800: 6708 beqs 4680a <== NOT EXECUTED 46802: 6000 00ae braw 468b2 <== NOT EXECUTED 46806: 7402 moveq #2,%d2 <== NOT EXECUTED 46808: 6006 bras 46810 <== NOT EXECUTED 4680a: 4282 clrl %d2 <== NOT EXECUTED 4680c: 6002 bras 46810 <== NOT EXECUTED 4680e: 7403 moveq #3,%d2 <== NOT EXECUTED break; default: return EINVAL; } if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) ) 46810: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED 46814: 5380 subql #1,%d0 <== NOT EXECUTED 46816: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 4681c: 6200 0094 bhiw 468b2 <== NOT EXECUTED 46820: 2039 0005 d018 movel 5d018 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 46826: 5280 addql #1,%d0 <== NOT EXECUTED 46828: 23c0 0005 d018 movel %d0,5d018 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * _POSIX_Mutex_Allocate */ RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void ) { return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information ); 4682e: 4879 0005 d336 pea 5d336 <_POSIX_Mutex_Information> <== NOT EXECUTED 46834: 4eb9 0004 8dc4 jsr 48dc4 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_mutex = _POSIX_Mutex_Allocate(); if ( !the_mutex ) { 4683a: 588f addql #4,%sp <== NOT EXECUTED 4683c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4683e: 4a80 tstl %d0 <== NOT EXECUTED 46840: 660a bnes 4684c <== NOT EXECUTED _Thread_Enable_dispatch(); 46842: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 46848: 700b moveq #11,%d0 <== NOT EXECUTED 4684a: 6068 bras 468b4 <== NOT EXECUTED else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = TRUE; the_mutex_attr->priority_ceiling = _POSIX_Priority_To_core( the_attr->prio_ceiling ); the_mutex_attr->discipline = the_discipline; 4684c: 2542 005a movel %d2,%a2@(90) <== NOT EXECUTED if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = TRUE; 46850: 7201 moveq #1,%d1 <== NOT EXECUTED 46852: 1541 0058 moveb %d1,%a2@(88) <== NOT EXECUTED if ( !the_mutex ) { _Thread_Enable_dispatch(); return EAGAIN; } the_mutex->process_shared = the_attr->process_shared; 46856: 256b 0004 0010 movel %a3@(4),%a2@(16) <== NOT EXECUTED the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 4685c: 4aab 0010 tstl %a3@(16) <== NOT EXECUTED 46860: 57c0 seq %d0 <== NOT EXECUTED 46862: 49c0 extbl %d0 <== NOT EXECUTED 46864: 4480 negl %d0 <== NOT EXECUTED 46866: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = TRUE; the_mutex_attr->priority_ceiling = 4686a: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 46870: 90ab 0008 subl %a3@(8),%d0 <== NOT EXECUTED 46874: 2540 005e movel %d0,%a2@(94) <== NOT EXECUTED /* * Must be initialized to unlocked. */ _CORE_mutex_Initialize( 46878: 4878 0001 pea 1 <== NOT EXECUTED 4687c: 486a 0054 pea %a2@(84) <== NOT EXECUTED 46880: 486a 0014 pea %a2@(20) <== NOT EXECUTED 46884: 4eb9 0004 8638 jsr 48638 <_CORE_mutex_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4688a: 2079 0005 d350 moveal 5d350 <_POSIX_Mutex_Information+0x1a>,%a0 <== NOT EXECUTED 46890: 4280 clrl %d0 <== NOT EXECUTED 46892: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 46896: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 4689a: 42aa 000c clrl %a2@(12) <== NOT EXECUTED CORE_MUTEX_UNLOCKED ); _Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 ); *mutex = the_mutex->Object.id; 4689e: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 468a2: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 468a8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 468ae: 4280 clrl %d0 <== NOT EXECUTED 468b0: 6002 bras 468b4 <== NOT EXECUTED return 0; 468b2: 7016 moveq #22,%d0 <== NOT EXECUTED } 468b4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 468ba: 4e5e unlk %fp <== NOT EXECUTED 468bc: 4e75 rts <== NOT EXECUTED ... 000468c0 : */ int pthread_mutex_lock( pthread_mutex_t *mutex ) { 468c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, TRUE, THREAD_QUEUE_WAIT_FOREVER ); 468c4: 42a7 clrl %sp@- <== NOT EXECUTED 468c6: 4878 0001 pea 1 <== NOT EXECUTED 468ca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 468ce: 4eb9 0004 68d8 jsr 468d8 <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 468d4: 4e5e unlk %fp <== NOT EXECUTED 468d6: 4e75 rts 00046940 : int pthread_mutex_setprioceiling( pthread_mutex_t *mutex, int prioceiling, int *old_ceiling ) { 46940: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46944: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 46948: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4694c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 46950: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; Priority_Control the_priority; int status; if ( !old_ceiling ) 46954: 4a8a tstl %a2 <== NOT EXECUTED 46956: 6766 beqs 469be <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 46958: 2004 movel %d4,%d0 <== NOT EXECUTED 4695a: 5380 subql #1,%d0 <== NOT EXECUTED 4695c: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 46962: 625a bhis 469be <== NOT EXECUTED /* * Must acquire the mutex before we can change it's ceiling */ status = pthread_mutex_lock( mutex ); 46964: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46966: 4eb9 0004 68c0 jsr 468c0 <== NOT EXECUTED if ( status ) 4696c: 588f addql #4,%sp <== NOT EXECUTED /* * Must acquire the mutex before we can change it's ceiling */ status = pthread_mutex_lock( mutex ); 4696e: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status ) 46970: 664e bnes 469c0 <== NOT EXECUTED return status; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46972: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46976: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46978: 4eb9 0004 6708 jsr 46708 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 4697e: 508f addql #8,%sp <== NOT EXECUTED status = pthread_mutex_lock( mutex ); if ( status ) return status; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46980: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 46982: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46986: 6636 bnes 469be <== NOT EXECUTED case OBJECTS_LOCAL: *old_ceiling = _POSIX_Priority_From_core( 46988: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 4698e: 90a8 005e subl %a0@(94),%d0 <== NOT EXECUTED 46992: 2480 movel %d0,%a2@ <== NOT EXECUTED the_mutex->Mutex.Attributes.priority_ceiling ); the_mutex->Mutex.Attributes.priority_ceiling = the_priority; 46994: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 4699a: 9084 subl %d4,%d0 <== NOT EXECUTED 4699c: 2140 005e movel %d0,%a0@(94) <== NOT EXECUTED _CORE_mutex_Surrender( 469a0: 42a7 clrl %sp@- <== NOT EXECUTED 469a2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 469a6: 4868 0014 pea %a0@(20) <== NOT EXECUTED 469aa: 4eb9 0004 87f4 jsr 487f4 <_CORE_mutex_Surrender> <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 469b0: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 469b6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 469bc: 6002 bras 469c0 <== NOT EXECUTED return 0; 469be: 7416 moveq #22,%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 469c0: 2002 movel %d2,%d0 <== NOT EXECUTED 469c2: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 469c8: 4e5e unlk %fp <== NOT EXECUTED 469ca: 4e75 rts 000469cc : int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) { 469cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 469d0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 469d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 469d8: 4eb9 0004 6a90 jsr 46a90 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED switch ( status ) { 469de: 508f addql #8,%sp <== NOT EXECUTED 469e0: 7202 moveq #2,%d1 <== NOT EXECUTED 469e2: b280 cmpl %d0,%d1 <== NOT EXECUTED 469e4: 640a bccs 469f0 <== NOT EXECUTED 469e6: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 469ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 469ec: 6608 bnes 469f6 <== NOT EXECUTED 469ee: 6004 bras 469f4 <== NOT EXECUTED 469f0: 4200 clrb %d0 <== NOT EXECUTED 469f2: 6002 bras 469f6 <== NOT EXECUTED 469f4: 7001 moveq #1,%d0 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: do_wait = TRUE; break; } lock_status = _POSIX_Mutex_Lock_support( 469f6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 469fa: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 46a00: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46a02: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46a06: 4eb9 0004 68d8 jsr 468d8 <_POSIX_Mutex_Lock_support> <== NOT EXECUTED break; } } return lock_status; } 46a0c: 4e5e unlk %fp <== NOT EXECUTED 46a0e: 4e75 rts 00046a28 : */ int pthread_mutex_trylock( pthread_mutex_t *mutex ) { 46a28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, FALSE, THREAD_QUEUE_WAIT_FOREVER ); 46a2c: 42a7 clrl %sp@- <== NOT EXECUTED 46a2e: 42a7 clrl %sp@- <== NOT EXECUTED 46a30: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46a34: 4eb9 0004 68d8 jsr 468d8 <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 46a3a: 4e5e unlk %fp <== NOT EXECUTED 46a3c: 4e75 rts <== NOT EXECUTED ... 00046a40 : */ int pthread_mutex_unlock( pthread_mutex_t *mutex ) { 46a40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46a44: 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 ); 46a46: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46a4a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46a4e: 4eb9 0004 6708 jsr 46708 <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 46a54: 508f addql #8,%sp <== NOT EXECUTED { register POSIX_Mutex_Control *the_mutex; Objects_Locations location; CORE_mutex_Status status; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46a56: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 46a58: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46a5c: 6704 beqs 46a62 <== NOT EXECUTED 46a5e: 7016 moveq #22,%d0 <== NOT EXECUTED 46a60: 6026 bras 46a88 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_mutex_Surrender( 46a62: 42a7 clrl %sp@- <== NOT EXECUTED 46a64: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 46a68: 4868 0014 pea %a0@(20) <== NOT EXECUTED 46a6c: 4eb9 0004 87f4 jsr 487f4 <_CORE_mutex_Surrender> <== NOT EXECUTED 46a72: 2400 movel %d0,%d2 <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 46a74: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Mutex_Translate_core_mutex_return_code( status ); 46a7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46a7c: 4eb9 0004 6a10 jsr 46a10 <_POSIX_Mutex_Translate_core_mutex_return_code> <== NOT EXECUTED 46a82: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46a88: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46a8c: 4e5e unlk %fp <== NOT EXECUTED 46a8e: 4e75 rts 000464f4 : */ int pthread_mutexattr_destroy( pthread_mutexattr_t *attr ) { 464f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 464f8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 464fc: 4a88 tstl %a0 <== NOT EXECUTED 464fe: 670a beqs 4650a <== NOT EXECUTED 46500: 4a90 tstl %a0@ <== NOT EXECUTED 46502: 6706 beqs 4650a <== NOT EXECUTED return EINVAL; attr->is_initialized = FALSE; 46504: 4290 clrl %a0@ <== NOT EXECUTED 46506: 4280 clrl %d0 <== NOT EXECUTED 46508: 6002 bras 4650c <== NOT EXECUTED return 0; 4650a: 7016 moveq #22,%d0 <== NOT EXECUTED } 4650c: 4e5e unlk %fp <== NOT EXECUTED 4650e: 4e75 rts 00046510 : int pthread_mutexattr_getprioceiling( const pthread_mutexattr_t *attr, int *prioceiling ) { 46510: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46514: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46518: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !prioceiling ) 4651c: 4a88 tstl %a0 <== NOT EXECUTED 4651e: 6710 beqs 46530 <== NOT EXECUTED 46520: 4a90 tstl %a0@ <== NOT EXECUTED 46522: 670c beqs 46530 <== NOT EXECUTED 46524: 4a89 tstl %a1 <== NOT EXECUTED 46526: 6708 beqs 46530 <== NOT EXECUTED return EINVAL; *prioceiling = attr->prio_ceiling; 46528: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED 4652c: 4280 clrl %d0 <== NOT EXECUTED 4652e: 6002 bras 46532 <== NOT EXECUTED return 0; 46530: 7016 moveq #22,%d0 <== NOT EXECUTED } 46532: 4e5e unlk %fp <== NOT EXECUTED 46534: 4e75 rts <== NOT EXECUTED ... 00046538 : int pthread_mutexattr_getprotocol( const pthread_mutexattr_t *attr, int *protocol ) { 46538: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4653c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46540: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !protocol ) 46544: 4a88 tstl %a0 <== NOT EXECUTED 46546: 6710 beqs 46558 <== NOT EXECUTED 46548: 4a90 tstl %a0@ <== NOT EXECUTED 4654a: 670c beqs 46558 <== NOT EXECUTED 4654c: 4a89 tstl %a1 <== NOT EXECUTED 4654e: 6708 beqs 46558 <== NOT EXECUTED return EINVAL; *protocol = attr->protocol; 46550: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED 46554: 4280 clrl %d0 <== NOT EXECUTED 46556: 6002 bras 4655a <== NOT EXECUTED return 0; 46558: 7016 moveq #22,%d0 <== NOT EXECUTED } 4655a: 4e5e unlk %fp <== NOT EXECUTED 4655c: 4e75 rts <== NOT EXECUTED ... 00046560 : int pthread_mutexattr_getpshared( const pthread_mutexattr_t *attr, int *pshared ) { 46560: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46564: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46568: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !pshared ) 4656c: 4a88 tstl %a0 <== NOT EXECUTED 4656e: 6710 beqs 46580 <== NOT EXECUTED 46570: 4a90 tstl %a0@ <== NOT EXECUTED 46572: 670c beqs 46580 <== NOT EXECUTED 46574: 4a89 tstl %a1 <== NOT EXECUTED 46576: 6708 beqs 46580 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 46578: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED 4657c: 4280 clrl %d0 <== NOT EXECUTED 4657e: 6002 bras 46582 <== NOT EXECUTED return 0; 46580: 7016 moveq #22,%d0 <== NOT EXECUTED } 46582: 4e5e unlk %fp <== NOT EXECUTED 46584: 4e75 rts <== NOT EXECUTED ... 00046588 : */ int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { 46588: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4658c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !attr ) 46590: 6606 bnes 46598 <== NOT EXECUTED 46592: 103c 0016 moveb #22,%d0 <== NOT EXECUTED 46596: 601a bras 465b2 <== NOT EXECUTED return EINVAL; *attr = _POSIX_Mutex_Default_attributes; 46598: 4878 0014 pea 14 <== NOT EXECUTED 4659c: 4879 0005 a11c pea 5a11c <_POSIX_Mutex_Default_attributes> <== NOT EXECUTED 465a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465a4: 4eb9 0004 ea7c jsr 4ea7c <== NOT EXECUTED 465aa: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 465b0: 4280 clrl %d0 <== NOT EXECUTED return 0; } 465b2: 4e5e unlk %fp <== NOT EXECUTED 465b4: 4e75 rts <== NOT EXECUTED ... 000465b8 : int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int prioceiling ) { 465b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 465bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 465c0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 465c4: 4a88 tstl %a0 <== NOT EXECUTED 465c6: 6718 beqs 465e0 <== NOT EXECUTED 465c8: 4a90 tstl %a0@ <== NOT EXECUTED 465ca: 6714 beqs 465e0 <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 465cc: 2001 movel %d1,%d0 <== NOT EXECUTED 465ce: 5380 subql #1,%d0 <== NOT EXECUTED 465d0: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 465d6: 6208 bhis 465e0 <== NOT EXECUTED return EINVAL; attr->prio_ceiling = prioceiling; 465d8: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED 465dc: 4280 clrl %d0 <== NOT EXECUTED 465de: 6002 bras 465e2 <== NOT EXECUTED return 0; 465e0: 7016 moveq #22,%d0 <== NOT EXECUTED } 465e2: 4e5e unlk %fp <== NOT EXECUTED 465e4: 4e75 rts <== NOT EXECUTED ... 000465e8 : int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol ) { 465e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 465ec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 465f0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 465f4: 4a88 tstl %a0 <== NOT EXECUTED 465f6: 6712 beqs 4660a <== NOT EXECUTED 465f8: 4a90 tstl %a0@ <== NOT EXECUTED 465fa: 670e beqs 4660a <== NOT EXECUTED return EINVAL; switch ( protocol ) { 465fc: 7202 moveq #2,%d1 <== NOT EXECUTED 465fe: b280 cmpl %d0,%d1 <== NOT EXECUTED 46600: 6508 bcss 4660a <== NOT EXECUTED case PTHREAD_PRIO_NONE: case PTHREAD_PRIO_INHERIT: case PTHREAD_PRIO_PROTECT: attr->protocol = protocol; 46602: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED 46606: 4280 clrl %d0 <== NOT EXECUTED 46608: 6002 bras 4660c <== NOT EXECUTED return 0; 4660a: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 4660c: 4e5e unlk %fp <== NOT EXECUTED 4660e: 4e75 rts 00046610 : int pthread_mutexattr_setpshared( pthread_mutexattr_t *attr, int pshared ) { 46610: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46614: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46618: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4661c: 4a88 tstl %a0 <== NOT EXECUTED 4661e: 6712 beqs 46632 <== NOT EXECUTED 46620: 4a90 tstl %a0@ <== NOT EXECUTED 46622: 670e beqs 46632 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 46624: 7201 moveq #1,%d1 <== NOT EXECUTED 46626: b280 cmpl %d0,%d1 <== NOT EXECUTED 46628: 6508 bcss 46632 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 4662a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 4662e: 4280 clrl %d0 <== NOT EXECUTED 46630: 6002 bras 46634 <== NOT EXECUTED return 0; 46632: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 46634: 4e5e unlk %fp <== NOT EXECUTED 46636: 4e75 rts 00045ef0 : int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) { 45ef0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45ef4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45ef6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45efa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45efc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !once_control || !init_routine ) 45f00: 4a8a tstl %a2 <== NOT EXECUTED 45f02: 674e beqs 45f52 <== NOT EXECUTED 45f04: 4a8b tstl %a3 <== NOT EXECUTED 45f06: 674a beqs 45f52 <== NOT EXECUTED return EINVAL; if ( !once_control->init_executed ) { 45f08: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 45f0c: 6640 bnes 45f4e <== NOT EXECUTED rtems_mode saveMode; rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 45f0e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45f12: 4878 0100 pea 100 <== NOT EXECUTED 45f16: 4878 0100 pea 100 <== NOT EXECUTED 45f1a: 4eb9 0004 6c58 jsr 46c58 <== NOT EXECUTED if ( !once_control->init_executed ) { 45f20: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45f26: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 45f2a: 660a bnes 45f36 <== NOT EXECUTED once_control->is_initialized = TRUE; once_control->init_executed = TRUE; 45f2c: 7001 moveq #1,%d0 <== NOT EXECUTED 45f2e: 2540 0004 movel %d0,%a2@(4) <== 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; 45f32: 2480 movel %d0,%a2@ <== NOT EXECUTED once_control->init_executed = TRUE; (*init_routine)(); 45f34: 4e93 jsr %a3@ <== NOT EXECUTED } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); 45f36: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45f3a: 4878 0100 pea 100 <== NOT EXECUTED 45f3e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 45f42: 4eb9 0004 6c58 jsr 46c58 <== NOT EXECUTED 45f48: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45f4e: 4280 clrl %d0 <== NOT EXECUTED 45f50: 6002 bras 45f54 <== NOT EXECUTED 45f52: 7016 moveq #22,%d0 <== NOT EXECUTED } return 0; } 45f54: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 45f58: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 45f5c: 4e5e unlk %fp <== NOT EXECUTED 45f5e: 4e75 rts 00045428 : */ int pthread_rwlock_destroy( pthread_rwlock_t *rwlock ) { 45428: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4542c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4542e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45432: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock = NULL; Objects_Locations location; if ( !rwlock ) 45434: 4a88 tstl %a0 <== NOT EXECUTED 45436: 6764 beqs 4549c <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 45438: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4543c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4543e: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 45444: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 4544a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45450: 2440 moveal %d0,%a2 <== NOT EXECUTED 45452: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45456: 6644 bnes 4549c <== 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 ) { 45458: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4545c: 4eb9 0004 8f5c jsr 48f5c <_Thread_queue_First> <== NOT EXECUTED 45462: 588f addql #4,%sp <== NOT EXECUTED 45464: 47f9 0004 87ca lea 487ca <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4546a: 4a80 tstl %d0 <== NOT EXECUTED 4546c: 6706 beqs 45474 <== NOT EXECUTED _Thread_Enable_dispatch(); 4546e: 4e93 jsr %a3@ <== NOT EXECUTED 45470: 7010 moveq #16,%d0 <== NOT EXECUTED 45472: 602a bras 4549e <== NOT EXECUTED /* * POSIX doesn't require behavior when it is locked. */ _Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object ); 45474: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45476: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 4547c: 4eb9 0004 7c80 jsr 47c80 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free ( POSIX_RWLock_Control *the_RWLock ) { _Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object ); 45482: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45484: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 4548a: 4eb9 0004 7ef8 jsr 47ef8 <_Objects_Free> <== NOT EXECUTED _POSIX_RWLock_Free( the_rwlock ); _Thread_Enable_dispatch(); 45490: 4e93 jsr %a3@ <== NOT EXECUTED 45492: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45498: 4280 clrl %d0 <== NOT EXECUTED 4549a: 6002 bras 4549e <== NOT EXECUTED return 0; 4549c: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4549e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 454a2: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 454a6: 4e5e unlk %fp <== NOT EXECUTED 454a8: 4e75 rts <== NOT EXECUTED ... 000454ac : int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) { 454ac: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 454b0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 454b4: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 454b8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED const pthread_rwlockattr_t *the_attr; /* * Error check parameters */ if ( !rwlock ) 454bc: 4a8c tstl %a4 <== NOT EXECUTED 454be: 6700 0084 beqw 45544 <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 454c2: 4a82 tstl %d2 <== NOT EXECUTED 454c4: 6704 beqs 454ca <== NOT EXECUTED 454c6: 2042 moveal %d2,%a0 <== NOT EXECUTED 454c8: 6014 bras 454de <== NOT EXECUTED the_attr = attr; } else { (void) pthread_rwlockattr_init( &default_attr ); 454ca: 240e movel %fp,%d2 <== NOT EXECUTED 454cc: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 454d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 454d4: 4eb9 0004 5e90 jsr 45e90 <== NOT EXECUTED 454da: 588f addql #4,%sp <== NOT EXECUTED 454dc: 2042 moveal %d2,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 454de: 4a90 tstl %a0@ <== NOT EXECUTED 454e0: 6762 beqs 45544 <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 454e2: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 454e6: 665c bnes 45544 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 454e8: 2039 0005 a284 movel 5a284 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 454ee: 5280 addql #1,%d0 <== NOT EXECUTED 454f0: 23c0 0005 a284 movel %d0,5a284 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * This function allocates a RWLock control block from * the inactive chain of free RWLock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void ) { return (POSIX_RWLock_Control *) 454f6: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 454fc: 4eb9 0004 7bf8 jsr 47bf8 <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_rwlock = _POSIX_RWLock_Allocate(); if ( !the_rwlock ) { 45502: 588f addql #4,%sp <== NOT EXECUTED 45504: 2440 moveal %d0,%a2 <== NOT EXECUTED 45506: 47f9 0004 87ca lea 487ca <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4550c: 4a80 tstl %d0 <== NOT EXECUTED 4550e: 6606 bnes 45516 <== NOT EXECUTED _Thread_Enable_dispatch(); 45510: 4e93 jsr %a3@ <== NOT EXECUTED 45512: 700b moveq #11,%d0 <== NOT EXECUTED 45514: 6030 bras 45546 <== NOT EXECUTED return EAGAIN; } _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes ); 45516: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4551a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4551e: 4eb9 0004 74e0 jsr 474e0 <_CORE_RWLock_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45524: 2079 0005 a454 moveal 5a454 <_POSIX_RWLock_Information+0x1a>,%a0 <== NOT EXECUTED 4552a: 4280 clrl %d0 <== NOT EXECUTED 4552c: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 45530: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 45534: 42aa 000c clrl %a2@(12) <== NOT EXECUTED &_POSIX_RWLock_Information, &the_rwlock->Object, 0 ); *rwlock = the_rwlock->Object.id; 45538: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4553c: 4e93 jsr %a3@ <== NOT EXECUTED 4553e: 508f addql #8,%sp <== NOT EXECUTED 45540: 4280 clrl %d0 <== NOT EXECUTED 45542: 6002 bras 45546 <== NOT EXECUTED return 0; 45544: 7016 moveq #22,%d0 <== NOT EXECUTED } 45546: 4cee 1c04 ffe4 moveml %fp@(-28),%d2/%a2-%a4 <== NOT EXECUTED 4554c: 4e5e unlk %fp <== NOT EXECUTED 4554e: 4e75 rts 00045550 : */ int pthread_rwlock_rdlock( pthread_rwlock_t *rwlock ) { 45550: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45554: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45556: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 4555a: 4a8a tstl %a2 <== NOT EXECUTED 4555c: 6752 beqs 455b0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 4555e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45562: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45564: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 4556a: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 45570: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45576: 2040 moveal %d0,%a0 <== NOT EXECUTED 45578: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4557c: 6632 bnes 455b0 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 4557e: 42a7 clrl %sp@- <== NOT EXECUTED 45580: 42a7 clrl %sp@- <== NOT EXECUTED 45582: 4878 0001 pea 1 <== NOT EXECUTED 45586: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45588: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4558c: 4eb9 0004 7518 jsr 47518 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED TRUE, /* we are willing to wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 45592: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( 45598: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 4559e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 455a2: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 455a8: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 455ae: 6002 bras 455b2 <== NOT EXECUTED 455b0: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 455b2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 455b6: 4e5e unlk %fp <== NOT EXECUTED 455b8: 4e75 rts <== NOT EXECUTED ... 000455bc : int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 455bc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 455c0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 455c4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 455c8: 4a8a tstl %a2 <== NOT EXECUTED 455ca: 6700 00a2 beqw 4566e <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 455ce: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 455d2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 455d6: 4eb9 0004 b684 jsr 4b684 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED 455dc: 2600 movel %d0,%d3 <== NOT EXECUTED switch (status) { 455de: 508f addql #8,%sp <== NOT EXECUTED 455e0: 7002 moveq #2,%d0 <== NOT EXECUTED 455e2: b083 cmpl %d3,%d0 <== NOT EXECUTED 455e4: 640a bccs 455f0 <== NOT EXECUTED 455e6: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 455ea: b083 cmpl %d3,%d0 <== NOT EXECUTED 455ec: 6608 bnes 455f6 <== NOT EXECUTED 455ee: 6004 bras 455f4 <== NOT EXECUTED 455f0: 4202 clrb %d2 <== NOT EXECUTED 455f2: 6002 bras 455f6 <== NOT EXECUTED 455f4: 7401 moveq #1,%d2 <== NOT EXECUTED 455f6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 455fa: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 455fc: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 45602: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED do_wait = TRUE; break; } the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 45608: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4560e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45610: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45614: 6658 bnes 4566e <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 45616: 42a7 clrl %sp@- <== NOT EXECUTED 45618: 4280 clrl %d0 <== NOT EXECUTED 4561a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4561e: 1002 moveb %d2,%d0 <== NOT EXECUTED 45620: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45622: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45624: 4868 0010 pea %a0@(16) <== NOT EXECUTED 45628: 4eb9 0004 7518 jsr 47518 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 4562e: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait && 45634: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4563a: 4a02 tstb %d2 <== NOT EXECUTED 4563c: 661c bnes 4565a <== NOT EXECUTED 4563e: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 45644: 7002 moveq #2,%d0 <== NOT EXECUTED 45646: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4564a: 660e bnes 4565a <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { switch (status) { 4564c: 4a83 tstl %d3 <== NOT EXECUTED 4564e: 671e beqs 4566e <== NOT EXECUTED 45650: b083 cmpl %d3,%d0 <== NOT EXECUTED 45652: 6506 bcss 4565a <== NOT EXECUTED 45654: 103c 0074 moveb #116,%d0 <== NOT EXECUTED 45658: 6016 bras 45670 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: break; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( 4565a: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 45660: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 45664: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 4566a: 588f addql #4,%sp <== NOT EXECUTED 4566c: 6002 bras 45670 <== NOT EXECUTED 4566e: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45670: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 45676: 4e5e unlk %fp <== NOT EXECUTED 45678: 4e75 rts <== NOT EXECUTED ... 0004567c : int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 4567c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45680: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 45684: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 45688: 4a8a tstl %a2 <== NOT EXECUTED 4568a: 6700 00a2 beqw 4572e <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4568e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45692: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45696: 4eb9 0004 b684 jsr 4b684 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED 4569c: 2600 movel %d0,%d3 <== NOT EXECUTED switch (status) { 4569e: 508f addql #8,%sp <== NOT EXECUTED 456a0: 7002 moveq #2,%d0 <== NOT EXECUTED 456a2: b083 cmpl %d3,%d0 <== NOT EXECUTED 456a4: 640a bccs 456b0 <== NOT EXECUTED 456a6: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 456aa: b083 cmpl %d3,%d0 <== NOT EXECUTED 456ac: 6608 bnes 456b6 <== NOT EXECUTED 456ae: 6004 bras 456b4 <== NOT EXECUTED 456b0: 4202 clrb %d2 <== NOT EXECUTED 456b2: 6002 bras 456b6 <== NOT EXECUTED 456b4: 7401 moveq #1,%d2 <== NOT EXECUTED 456b6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 456ba: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 456bc: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 456c2: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED do_wait = TRUE; break; } the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 456c8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 456ce: 2040 moveal %d0,%a0 <== NOT EXECUTED 456d0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 456d4: 6658 bnes 4572e <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 456d6: 42a7 clrl %sp@- <== NOT EXECUTED 456d8: 4280 clrl %d0 <== NOT EXECUTED 456da: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 456de: 1002 moveb %d2,%d0 <== NOT EXECUTED 456e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 456e2: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 456e4: 4868 0010 pea %a0@(16) <== NOT EXECUTED 456e8: 4eb9 0004 75c8 jsr 475c8 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 456ee: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait && 456f4: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 456fa: 4a02 tstb %d2 <== NOT EXECUTED 456fc: 661c bnes 4571a <== NOT EXECUTED 456fe: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 45704: 7002 moveq #2,%d0 <== NOT EXECUTED 45706: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4570a: 660e bnes 4571a <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { switch (status) { 4570c: 4a83 tstl %d3 <== NOT EXECUTED 4570e: 671e beqs 4572e <== NOT EXECUTED 45710: b083 cmpl %d3,%d0 <== NOT EXECUTED 45712: 6506 bcss 4571a <== NOT EXECUTED 45714: 103c 0074 moveb #116,%d0 <== NOT EXECUTED 45718: 6016 bras 45730 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: break; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( 4571a: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 45720: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 45724: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 4572a: 588f addql #4,%sp <== NOT EXECUTED 4572c: 6002 bras 45730 <== NOT EXECUTED 4572e: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45730: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 45736: 4e5e unlk %fp <== NOT EXECUTED 45738: 4e75 rts <== NOT EXECUTED ... 00045754 : */ int pthread_rwlock_tryrdlock( pthread_rwlock_t *rwlock ) { 45754: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45758: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4575a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 4575e: 4a8a tstl %a2 <== NOT EXECUTED 45760: 6750 beqs 457b2 <== NOT EXECUTED 45762: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45766: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45768: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 4576e: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 45774: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4577a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4577c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45780: 6630 bnes 457b2 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 45782: 42a7 clrl %sp@- <== NOT EXECUTED 45784: 42a7 clrl %sp@- <== NOT EXECUTED 45786: 42a7 clrl %sp@- <== NOT EXECUTED 45788: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4578a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4578e: 4eb9 0004 7518 jsr 47518 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); 45794: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( 4579a: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 457a0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 457a4: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 457aa: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 457b0: 6002 bras 457b4 <== NOT EXECUTED 457b2: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 457b4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 457b8: 4e5e unlk %fp <== NOT EXECUTED 457ba: 4e75 rts 000457bc : */ int pthread_rwlock_trywrlock( pthread_rwlock_t *rwlock ) { 457bc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 457c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 457c2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 457c6: 4a8a tstl %a2 <== NOT EXECUTED 457c8: 6750 beqs 4581a <== NOT EXECUTED 457ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 457ce: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 457d0: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 457d6: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 457dc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 457e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 457e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 457e8: 6630 bnes 4581a <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 457ea: 42a7 clrl %sp@- <== NOT EXECUTED 457ec: 42a7 clrl %sp@- <== NOT EXECUTED 457ee: 42a7 clrl %sp@- <== NOT EXECUTED 457f0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 457f2: 4868 0010 pea %a0@(16) <== NOT EXECUTED 457f6: 4eb9 0004 75c8 jsr 475c8 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED FALSE, /* we are not willing to wait */ 0, NULL ); _Thread_Enable_dispatch(); 457fc: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( 45802: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 45808: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4580c: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 45812: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 45818: 6002 bras 4581c <== NOT EXECUTED 4581a: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 4581c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 45820: 4e5e unlk %fp <== NOT EXECUTED 45822: 4e75 rts 00045824 : */ int pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) { 45824: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45828: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4582c: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; CORE_RWLock_Status status; if ( !rwlock ) 4582e: 4a88 tstl %a0 <== NOT EXECUTED 45830: 673e beqs 45870 <== NOT EXECUTED 45832: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45836: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 45838: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 4583e: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 45844: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4584a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4584c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45850: 661e bnes 45870 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_RWLock_Release( &the_rwlock->RWLock ); 45852: 4868 0010 pea %a0@(16) <== NOT EXECUTED 45856: 4eb9 0004 7654 jsr 47654 <_CORE_RWLock_Release> <== NOT EXECUTED 4585c: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 4585e: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( status ); 45864: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45866: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 4586c: 508f addql #8,%sp <== NOT EXECUTED 4586e: 6002 bras 45872 <== NOT EXECUTED 45870: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 45872: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45876: 4e5e unlk %fp <== NOT EXECUTED 45878: 4e75 rts <== NOT EXECUTED ... 0004587c : */ int pthread_rwlock_wrlock( pthread_rwlock_t *rwlock ) { 4587c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45880: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45882: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 45886: 4a8a tstl %a2 <== NOT EXECUTED 45888: 6752 beqs 458dc <== NOT EXECUTED 4588a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4588e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45890: 4879 0005 a43a pea 5a43a <_POSIX_RWLock_Information> <== NOT EXECUTED 45896: 4eb9 0004 8058 jsr 48058 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 4589c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 458a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 458a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 458a8: 6632 bnes 458dc <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 458aa: 42a7 clrl %sp@- <== NOT EXECUTED 458ac: 42a7 clrl %sp@- <== NOT EXECUTED 458ae: 4878 0001 pea 1 <== NOT EXECUTED 458b2: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 458b4: 4868 0010 pea %a0@(16) <== NOT EXECUTED 458b8: 4eb9 0004 75c8 jsr 475c8 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED TRUE, /* do not timeout -- wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 458be: 4eb9 0004 87ca jsr 487ca <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( 458c4: 2079 0005 a342 moveal 5a342 <_Thread_Executing>,%a0 <== NOT EXECUTED 458ca: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 458ce: 4eb9 0004 573c jsr 4573c <_POSIX_RWLock_Translate_core_RWLock_return_code> <== NOT EXECUTED 458d4: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 458da: 6002 bras 458de <== NOT EXECUTED 458dc: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 458de: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 458e2: 4e5e unlk %fp <== NOT EXECUTED 458e4: 4e75 rts <== NOT EXECUTED ... 00045e50 : */ int pthread_rwlockattr_destroy( pthread_rwlockattr_t *attr ) { 45e50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45e54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == FALSE ) 45e58: 4a88 tstl %a0 <== NOT EXECUTED 45e5a: 670a beqs 45e66 <== NOT EXECUTED 45e5c: 4a90 tstl %a0@ <== NOT EXECUTED 45e5e: 6706 beqs 45e66 <== NOT EXECUTED return EINVAL; attr->is_initialized = FALSE; 45e60: 4290 clrl %a0@ <== NOT EXECUTED 45e62: 4280 clrl %d0 <== NOT EXECUTED 45e64: 6002 bras 45e68 <== NOT EXECUTED return 0; 45e66: 7016 moveq #22,%d0 <== NOT EXECUTED } 45e68: 4e5e unlk %fp <== NOT EXECUTED 45e6a: 4e75 rts 00045e6c : int pthread_rwlockattr_getpshared( const pthread_rwlockattr_t *attr, int *pshared ) { 45e6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45e70: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED if ( !attr ) 45e74: 4a89 tstl %a1 <== NOT EXECUTED 45e76: 6710 beqs 45e88 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 45e78: 4a91 tstl %a1@ <== NOT EXECUTED 45e7a: 670c beqs 45e88 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 45e7c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 45e80: 20a9 0004 movel %a1@(4),%a0@ <== NOT EXECUTED 45e84: 4280 clrl %d0 <== NOT EXECUTED 45e86: 6002 bras 45e8a <== NOT EXECUTED return 0; 45e88: 7016 moveq #22,%d0 <== NOT EXECUTED } 45e8a: 4e5e unlk %fp <== NOT EXECUTED 45e8c: 4e75 rts <== NOT EXECUTED ... 00045e90 : */ int pthread_rwlockattr_init( pthread_rwlockattr_t *attr ) { 45e90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45e94: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 45e98: 4a88 tstl %a0 <== NOT EXECUTED 45e9a: 6604 bnes 45ea0 <== NOT EXECUTED 45e9c: 7016 moveq #22,%d0 <== NOT EXECUTED 45e9e: 600a bras 45eaa <== NOT EXECUTED return EINVAL; attr->is_initialized = TRUE; 45ea0: 7201 moveq #1,%d1 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; 45ea2: 4280 clrl %d0 <== NOT EXECUTED 45ea4: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = TRUE; 45ea8: 2081 movel %d1,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 45eaa: 4e5e unlk %fp <== NOT EXECUTED 45eac: 4e75 rts <== NOT EXECUTED ... 00045eb0 : int pthread_rwlockattr_setpshared( pthread_rwlockattr_t *attr, int pshared ) { 45eb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45eb4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45eb8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 45ebc: 4a88 tstl %a0 <== NOT EXECUTED 45ebe: 6712 beqs 45ed2 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 45ec0: 4a90 tstl %a0@ <== NOT EXECUTED 45ec2: 670e beqs 45ed2 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 45ec4: 7201 moveq #1,%d1 <== NOT EXECUTED 45ec6: b280 cmpl %d0,%d1 <== NOT EXECUTED 45ec8: 6508 bcss 45ed2 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 45eca: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 45ece: 4280 clrl %d0 <== NOT EXECUTED 45ed0: 6002 bras 45ed4 <== NOT EXECUTED return 0; 45ed2: 7016 moveq #22,%d0 <== NOT EXECUTED default: return EINVAL; } } 45ed4: 4e5e unlk %fp <== NOT EXECUTED 45ed6: 4e75 rts 000545a8 : #include #include pthread_t pthread_self( void ) { 545a8: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 545ae: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Thread_Executing->Object.id; } 545b2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 545b6: 4e5e unlk %fp <== NOT EXECUTED 545b8: 4e75 rts <== NOT EXECUTED ... 00044e5c : int pthread_setcancelstate( int state, int *oldstate ) { 44e5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44e60: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44e64: 226e 000c moveal %fp@(12),%a1 <== 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() ) 44e68: 2039 0005 9916 movel 59916 <_ISR_Nest_level>,%d0 <== NOT EXECUTED int pthread_setcancelstate( int state, int *oldstate ) { 44e6e: 2f02 movel %d2,%sp@- <== 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() ) 44e70: 4a80 tstl %d0 <== NOT EXECUTED 44e72: 6704 beqs 44e78 <== NOT EXECUTED 44e74: 7047 moveq #71,%d0 <== NOT EXECUTED 44e76: 6064 bras 44edc <== NOT EXECUTED return EPROTO; if ( !oldstate ) 44e78: 4a89 tstl %a1 <== NOT EXECUTED 44e7a: 675e beqs 44eda <== NOT EXECUTED return EINVAL; if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE ) 44e7c: 7001 moveq #1,%d0 <== NOT EXECUTED 44e7e: b081 cmpl %d1,%d0 <== NOT EXECUTED 44e80: 6558 bcss 44eda <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44e82: 2039 0005 9878 movel 59878 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 44e88: 2079 0005 9936 moveal 59936 <_Thread_Executing>,%a0 <== NOT EXECUTED 44e8e: 5280 addql #1,%d0 <== NOT EXECUTED 44e90: 23c0 0005 9878 movel %d0,59878 <_Thread_Dispatch_disable_level> <== NOT EXECUTED 44e96: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED _Thread_Disable_dispatch(); *oldstate = thread_support->cancelability_state; 44e9a: 22a8 00cc movel %a0@(204),%a1@ <== NOT EXECUTED thread_support->cancelability_state = state; 44e9e: 2141 00cc movel %d1,%a0@(204) <== NOT EXECUTED if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 44ea2: 6614 bnes 44eb8 <== NOT EXECUTED 44ea4: 7001 moveq #1,%d0 <== NOT EXECUTED 44ea6: b0a8 00d0 cmpl %a0@(208),%d0 <== NOT EXECUTED 44eaa: 660c bnes 44eb8 <== NOT EXECUTED 44eac: 4aa8 00d4 tstl %a0@(212) <== NOT EXECUTED 44eb0: 56c0 sne %d0 <== NOT EXECUTED 44eb2: 2400 movel %d0,%d2 <== NOT EXECUTED 44eb4: 4482 negl %d2 <== NOT EXECUTED 44eb6: 6002 bras 44eba <== NOT EXECUTED 44eb8: 4202 clrb %d2 <== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 44eba: 4eb9 0004 7602 jsr 47602 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) 44ec0: 4a02 tstb %d2 <== NOT EXECUTED 44ec2: 6712 beqs 44ed6 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); 44ec4: 4878 ffff pea ffffffff <== NOT EXECUTED 44ec8: 2f39 0005 9936 movel 59936 <_Thread_Executing>,%sp@- <== NOT EXECUTED 44ece: 4eb9 0004 4a3c jsr 44a3c <_POSIX_Thread_Exit> <== NOT EXECUTED 44ed4: 508f addql #8,%sp <== NOT EXECUTED 44ed6: 4280 clrl %d0 <== NOT EXECUTED 44ed8: 6002 bras 44edc <== NOT EXECUTED 44eda: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; } 44edc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44ee0: 4e5e unlk %fp <== NOT EXECUTED 44ee2: 4e75 rts 00044ee4 : int pthread_setcanceltype( int type, int *oldtype ) { 44ee4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44ee8: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44eec: 226e 000c moveal %fp@(12),%a1 <== 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() ) 44ef0: 2039 0005 9916 movel 59916 <_ISR_Nest_level>,%d0 <== NOT EXECUTED int pthread_setcanceltype( int type, int *oldtype ) { 44ef6: 2f02 movel %d2,%sp@- <== 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() ) 44ef8: 4a80 tstl %d0 <== NOT EXECUTED 44efa: 6704 beqs 44f00 <== NOT EXECUTED 44efc: 7047 moveq #71,%d0 <== NOT EXECUTED 44efe: 6066 bras 44f66 <== NOT EXECUTED return EPROTO; if ( !oldtype ) 44f00: 4a89 tstl %a1 <== NOT EXECUTED 44f02: 6760 beqs 44f64 <== NOT EXECUTED return EINVAL; if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS ) 44f04: 7001 moveq #1,%d0 <== NOT EXECUTED 44f06: b081 cmpl %d1,%d0 <== NOT EXECUTED 44f08: 655a bcss 44f64 <== NOT EXECUTED 44f0a: 2039 0005 9878 movel 59878 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 44f10: 2079 0005 9936 moveal 59936 <_Thread_Executing>,%a0 <== NOT EXECUTED 44f16: 5280 addql #1,%d0 <== NOT EXECUTED 44f18: 23c0 0005 9878 movel %d0,59878 <_Thread_Dispatch_disable_level> <== NOT EXECUTED 44f1e: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED _Thread_Disable_dispatch(); *oldtype = thread_support->cancelability_type; 44f22: 22a8 00d0 movel %a0@(208),%a1@ <== NOT EXECUTED thread_support->cancelability_type = type; 44f26: 2141 00d0 movel %d1,%a0@(208) <== NOT EXECUTED if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 44f2a: 4aa8 00cc tstl %a0@(204) <== NOT EXECUTED 44f2e: 6612 bnes 44f42 <== NOT EXECUTED 44f30: 7001 moveq #1,%d0 <== NOT EXECUTED 44f32: b081 cmpl %d1,%d0 <== NOT EXECUTED 44f34: 660c bnes 44f42 <== NOT EXECUTED 44f36: 4aa8 00d4 tstl %a0@(212) <== NOT EXECUTED 44f3a: 56c0 sne %d0 <== NOT EXECUTED 44f3c: 2400 movel %d0,%d2 <== NOT EXECUTED 44f3e: 4482 negl %d2 <== NOT EXECUTED 44f40: 6002 bras 44f44 <== NOT EXECUTED 44f42: 4202 clrb %d2 <== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 44f44: 4eb9 0004 7602 jsr 47602 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) 44f4a: 4a02 tstb %d2 <== NOT EXECUTED 44f4c: 6712 beqs 44f60 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); 44f4e: 4878 ffff pea ffffffff <== NOT EXECUTED 44f52: 2f39 0005 9936 movel 59936 <_Thread_Executing>,%sp@- <== NOT EXECUTED 44f58: 4eb9 0004 4a3c jsr 44a3c <_POSIX_Thread_Exit> <== NOT EXECUTED 44f5e: 508f addql #8,%sp <== NOT EXECUTED 44f60: 4280 clrl %d0 <== NOT EXECUTED 44f62: 6002 bras 44f66 <== NOT EXECUTED 44f64: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; } 44f66: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44f6a: 4e5e unlk %fp <== NOT EXECUTED 44f6c: 4e75 rts <== NOT EXECUTED ... 0004722c : int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) { 4722c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 47230: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 47234: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 47238: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED /* * Check all the parameters */ if ( !param ) 4723c: 4a8c tstl %a4 <== NOT EXECUTED 4723e: 6700 013e beqw 4737e <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( param->sched_priority ) ) 47242: 2014 movel %a4@,%d0 <== NOT EXECUTED 47244: 5380 subql #1,%d0 <== NOT EXECUTED 47246: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 4724c: 6200 0130 bhiw 4737e <== NOT EXECUTED return EINVAL; budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; budget_callout = NULL; switch ( policy ) { 47250: 7001 moveq #1,%d0 <== NOT EXECUTED 47252: b084 cmpl %d4,%d0 <== NOT EXECUTED 47254: 671a beqs 47270 <== NOT EXECUTED 47256: 6d08 blts 47260 <== NOT EXECUTED 47258: 4a84 tstl %d4 <== NOT EXECUTED 4725a: 6718 beqs 47274 <== NOT EXECUTED 4725c: 6000 0120 braw 4737e <== NOT EXECUTED 47260: 7202 moveq #2,%d1 <== NOT EXECUTED 47262: b284 cmpl %d4,%d1 <== NOT EXECUTED 47264: 6714 beqs 4727a <== NOT EXECUTED 47266: 7003 moveq #3,%d0 <== NOT EXECUTED 47268: b084 cmpl %d4,%d0 <== NOT EXECUTED 4726a: 6600 0112 bnew 4737e <== NOT EXECUTED 4726e: 600e bras 4727e <== NOT EXECUTED 47270: 4283 clrl %d3 <== NOT EXECUTED 47272: 6002 bras 47276 <== NOT EXECUTED 47274: 7601 moveq #1,%d3 <== NOT EXECUTED 47276: 4282 clrl %d2 <== NOT EXECUTED 47278: 6038 bras 472b2 <== NOT EXECUTED 4727a: 7602 moveq #2,%d3 <== NOT EXECUTED 4727c: 60f8 bras 47276 <== NOT EXECUTED case SCHED_SPORADIC: budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; budget_callout = _POSIX_Threads_Sporadic_budget_callout; if ( _Timespec_To_ticks( ¶m->ss_replenish_period ) < 4727e: 45f9 0004 a734 lea 4a734 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED 47284: 486c 0008 pea %a4@(8) <== NOT EXECUTED 47288: 4e92 jsr %a2@ <== NOT EXECUTED 4728a: 2400 movel %d0,%d2 <== NOT EXECUTED 4728c: 486c 0010 pea %a4@(16) <== NOT EXECUTED 47290: 4e92 jsr %a2@ <== NOT EXECUTED 47292: 508f addql #8,%sp <== NOT EXECUTED 47294: b082 cmpl %d2,%d0 <== NOT EXECUTED 47296: 6200 00e6 bhiw 4737e <== NOT EXECUTED _Timespec_To_ticks( ¶m->ss_initial_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( param->ss_low_priority ) ) 4729a: 202c 0004 movel %a4@(4),%d0 <== NOT EXECUTED 4729e: 5380 subql #1,%d0 <== NOT EXECUTED 472a0: 0c80 0000 00fd cmpil #253,%d0 <== NOT EXECUTED 472a6: 6200 00d6 bhiw 4737e <== NOT EXECUTED 472aa: 7603 moveq #3,%d3 <== NOT EXECUTED 472ac: 243c 0004 7140 movel #291136,%d2 <== NOT EXECUTED 472b2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 472b6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 472ba: 4879 0005 d20a pea 5d20a <_POSIX_Threads_Information> <== NOT EXECUTED 472c0: 4eb9 0004 9224 jsr 49224 <_Objects_Get> <== NOT EXECUTED /* * Actually change the scheduling policy and parameters */ the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 472c6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 472cc: 2640 moveal %d0,%a3 <== NOT EXECUTED 472ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 472d2: 6706 beqs 472da <== NOT EXECUTED 472d4: 7003 moveq #3,%d0 <== NOT EXECUTED 472d6: 6000 00a8 braw 47380 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 472da: 246b 0110 moveal %a3@(272),%a2 <== NOT EXECUTED if ( api->schedpolicy == SCHED_SPORADIC ) 472de: 7203 moveq #3,%d1 <== NOT EXECUTED 472e0: b2aa 007c cmpl %a2@(124),%d1 <== NOT EXECUTED 472e4: 660c bnes 472f2 <== NOT EXECUTED (void) _Watchdog_Remove( &api->Sporadic_timer ); 472e6: 486a 009c pea %a2@(156) <== NOT EXECUTED 472ea: 4eb9 0004 ab9c jsr 4ab9c <_Watchdog_Remove> <== NOT EXECUTED 472f0: 588f addql #4,%sp <== NOT EXECUTED api->schedpolicy = policy; 472f2: 2544 007c movel %d4,%a2@(124) <== NOT EXECUTED api->schedparam = *param; 472f6: 4878 0018 pea 18 <== NOT EXECUTED 472fa: 2f0c movel %a4,%sp@- <== NOT EXECUTED 472fc: 486a 0080 pea %a2@(128) <== NOT EXECUTED 47300: 4eb9 0004 ea7c jsr 4ea7c <== NOT EXECUTED the_thread->budget_algorithm = budget_algorithm; the_thread->budget_callout = budget_callout; switch ( api->schedpolicy ) { 47306: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; api->schedparam = *param; the_thread->budget_algorithm = budget_algorithm; 4730a: 2743 007c movel %d3,%a3@(124) <== NOT EXECUTED the_thread->budget_callout = budget_callout; switch ( api->schedpolicy ) { 4730e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; api->schedparam = *param; the_thread->budget_algorithm = budget_algorithm; the_thread->budget_callout = budget_callout; 47314: 2742 0080 movel %d2,%a3@(128) <== NOT EXECUTED switch ( api->schedpolicy ) { 47318: 4a80 tstl %d0 <== NOT EXECUTED 4731a: 6d58 blts 47374 <== NOT EXECUTED 4731c: 7202 moveq #2,%d1 <== NOT EXECUTED 4731e: b280 cmpl %d0,%d1 <== NOT EXECUTED 47320: 6c0a bges 4732c <== NOT EXECUTED 47322: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 47326: b280 cmpl %d0,%d1 <== NOT EXECUTED 47328: 664a bnes 47374 <== NOT EXECUTED 4732a: 6028 bras 47354 <== NOT EXECUTED case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 4732c: 41f9 0005 cfc8 lea 5cfc8 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 47332: 203c 0000 00ff movel #255,%d0 <== NOT EXECUTED 47338: 90aa 0080 subl %a2@(128),%d0 <== NOT EXECUTED 4733c: 2750 0078 movel %a0@,%a3@(120) <== NOT EXECUTED the_thread->real_priority = 47340: 2740 0018 movel %d0,%a3@(24) <== NOT EXECUTED _POSIX_Priority_To_core( api->schedparam.sched_priority ); _Thread_Change_priority( 47344: 4878 0001 pea 1 <== NOT EXECUTED 47348: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4734a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4734c: 4eb9 0004 9490 jsr 49490 <_Thread_Change_priority> <== NOT EXECUTED 47352: 601a bras 4736e <== NOT EXECUTED TRUE ); break; case SCHED_SPORADIC: api->ss_high_priority = api->schedparam.sched_priority; 47354: 256a 0080 0098 movel %a2@(128),%a2@(152) <== NOT EXECUTED _Watchdog_Remove( &api->Sporadic_timer ); 4735a: 486a 009c pea %a2@(156) <== NOT EXECUTED 4735e: 4eb9 0004 ab9c jsr 4ab9c <_Watchdog_Remove> <== NOT EXECUTED _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread ); 47364: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47366: 42a7 clrl %sp@- <== NOT EXECUTED 47368: 4eb9 0004 7184 jsr 47184 <_POSIX_Threads_Sporadic_budget_TSR> <== NOT EXECUTED 4736e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED break; } _Thread_Enable_dispatch(); 47374: 4eb9 0004 9996 jsr 49996 <_Thread_Enable_dispatch> <== NOT EXECUTED 4737a: 4280 clrl %d0 <== NOT EXECUTED 4737c: 6002 bras 47380 <== NOT EXECUTED return 0; 4737e: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 47380: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47386: 4e5e unlk %fp <== NOT EXECUTED 47388: 4e75 rts <== NOT EXECUTED ... 00044e60 : int pthread_setspecific( pthread_key_t key, const void *value ) { 44e60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44e64: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44e66: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44e6a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44e6e: 4879 0005 a772 pea 5a772 <_POSIX_Keys_Information> <== NOT EXECUTED 44e74: 4eb9 0004 73f8 jsr 473f8 <_Objects_Get> <== NOT EXECUTED uint32_t api; uint32_t index; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 44e7a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44e80: 2240 moveal %d0,%a1 <== NOT EXECUTED 44e82: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44e86: 6704 beqs 44e8c <== NOT EXECUTED 44e88: 7016 moveq #22,%d0 <== NOT EXECUTED 44e8a: 6030 bras 44ebc <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 44e8c: 2079 0005 a496 moveal 5a496 <_Thread_Executing>,%a0 <== NOT EXECUTED 44e92: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); the_key->Values[ api ][ index ] = (void *) value; 44e96: 7418 moveq #24,%d2 <== NOT EXECUTED 44e98: 2001 movel %d1,%d0 <== NOT EXECUTED 44e9a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 44e9c: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 44ea0: c082 andl %d2,%d0 <== NOT EXECUTED 44ea2: 2071 0c16 moveal %a1@(00000016,%d0:l:4),%a0 <== NOT EXECUTED 44ea6: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 44eac: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED 44eb0: 2191 1c00 movel %a1@,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 44eb4: 4eb9 0004 7b6a jsr 47b6a <_Thread_Enable_dispatch> <== NOT EXECUTED 44eba: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44ebc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44ec0: 4e5e unlk %fp <== NOT EXECUTED 44ec2: 4e75 rts 0004ad78 : int pthread_sigmask( int how, const sigset_t *set, sigset_t *oset ) { 4ad78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ad7c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ad7e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4ad82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ad84: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4ad88: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED POSIX_API_Control *api; if ( !set && !oset ) 4ad8c: 4a8a tstl %a2 <== NOT EXECUTED 4ad8e: 6604 bnes 4ad94 <== NOT EXECUTED 4ad90: 4a89 tstl %a1 <== NOT EXECUTED 4ad92: 6742 beqs 4add6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4ad94: 2679 0005 a446 moveal 5a446 <_Thread_Executing>,%a3 <== NOT EXECUTED 4ad9a: 206b 0110 moveal %a3@(272),%a0 <== NOT EXECUTED if ( oset ) 4ad9e: 4a89 tstl %a1 <== NOT EXECUTED 4ada0: 6704 beqs 4ada6 <== NOT EXECUTED *oset = api->signals_blocked; 4ada2: 22a8 00c4 movel %a0@(196),%a1@ <== NOT EXECUTED if ( !set ) 4ada6: 4a8a tstl %a2 <== NOT EXECUTED 4ada8: 675c beqs 4ae06 <== NOT EXECUTED return 0; switch ( how ) { 4adaa: 7201 moveq #1,%d1 <== NOT EXECUTED 4adac: b280 cmpl %d0,%d1 <== NOT EXECUTED 4adae: 670e beqs 4adbe <== NOT EXECUTED 4adb0: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4adb4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4adb6: 670e beqs 4adc6 <== NOT EXECUTED 4adb8: 4a80 tstl %d0 <== NOT EXECUTED 4adba: 6714 beqs 4add0 <== NOT EXECUTED 4adbc: 6018 bras 4add6 <== NOT EXECUTED case SIG_BLOCK: api->signals_blocked |= *set; 4adbe: 2012 movel %a2@,%d0 <== NOT EXECUTED 4adc0: 81a8 00c4 orl %d0,%a0@(196) <== NOT EXECUTED 4adc4: 6020 bras 4ade6 <== NOT EXECUTED break; case SIG_UNBLOCK: api->signals_blocked &= ~*set; 4adc6: 2012 movel %a2@,%d0 <== NOT EXECUTED 4adc8: 4680 notl %d0 <== NOT EXECUTED 4adca: c1a8 00c4 andl %d0,%a0@(196) <== NOT EXECUTED 4adce: 6016 bras 4ade6 <== NOT EXECUTED break; case SIG_SETMASK: api->signals_blocked = *set; 4add0: 2152 00c4 movel %a2@,%a0@(196) <== NOT EXECUTED 4add4: 6010 bras 4ade6 <== NOT EXECUTED break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4add6: 4eb9 0004 c648 jsr 4c648 <__errno> <== NOT EXECUTED 4addc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4adde: 7016 moveq #22,%d0 <== NOT EXECUTED 4ade0: 2080 movel %d0,%a0@ <== NOT EXECUTED 4ade2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4ade4: 6022 bras 4ae08 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & 4ade6: 2228 00c4 movel %a0@(196),%d1 <== NOT EXECUTED 4adea: 2039 0005 aa5e movel 5aa5e <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4adf0: 4681 notl %d1 <== NOT EXECUTED 4adf2: 80a8 00c8 orl %a0@(200),%d0 <== NOT EXECUTED 4adf6: c081 andl %d1,%d0 <== NOT EXECUTED 4adf8: 670c beqs 4ae06 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Executing->do_post_task_switch_extension = true; 4adfa: 7201 moveq #1,%d1 <== NOT EXECUTED 4adfc: 1741 0075 moveb %d1,%a3@(117) <== NOT EXECUTED _Thread_Dispatch(); 4ae00: 4eb9 0004 7afc jsr 47afc <_Thread_Dispatch> <== NOT EXECUTED 4ae06: 4280 clrl %d0 <== NOT EXECUTED } return 0; } 4ae08: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ae0c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4ae10: 4e5e unlk %fp <== NOT EXECUTED 4ae12: 4e75 rts 00044c24 : */ int pthread_spin_destroy( pthread_spinlock_t *spinlock ) { 44c24: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44c28: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44c2a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44c2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; if ( !spinlock ) 44c30: 4a88 tstl %a0 <== NOT EXECUTED 44c32: 675a beqs 44c8e <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 44c34: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44c38: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44c3a: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44c40: 4eb9 0004 6e5c jsr 46e5c <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 44c46: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44c4c: 2440 moveal %d0,%a2 <== NOT EXECUTED 44c4e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44c52: 663a bnes 44c8e <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( CORE_spinlock_Control *the_spinlock ) { return (the_spinlock->users != 0); 44c54: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED 44c58: 47f9 0004 75ce lea 475ce <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) { 44c5e: 6706 beqs 44c66 <== NOT EXECUTED _Thread_Enable_dispatch(); 44c60: 4e93 jsr %a3@ <== NOT EXECUTED 44c62: 7010 moveq #16,%d0 <== NOT EXECUTED 44c64: 602a bras 44c90 <== NOT EXECUTED return EBUSY; } _Objects_Close( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 44c66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c68: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44c6e: 4eb9 0004 6a84 jsr 46a84 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free ( POSIX_Spinlock_Control *the_spinlock ) { _Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 44c74: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c76: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44c7c: 4eb9 0004 6cfc jsr 46cfc <_Objects_Free> <== NOT EXECUTED _POSIX_Spinlock_Free( the_spinlock ); _Thread_Enable_dispatch(); 44c82: 4e93 jsr %a3@ <== NOT EXECUTED 44c84: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44c8a: 4280 clrl %d0 <== NOT EXECUTED 44c8c: 6002 bras 44c90 <== NOT EXECUTED return 0; 44c8e: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44c90: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 44c94: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 44c98: 4e5e unlk %fp <== NOT EXECUTED 44c9a: 4e75 rts 00044c9c : int pthread_spin_init( pthread_spinlock_t *spinlock, int pshared ) { 44c9c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 44ca0: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 44ca4: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock; CORE_spinlock_Attributes attributes; if ( !spinlock ) 44ca8: 4a8c tstl %a4 <== NOT EXECUTED 44caa: 6762 beqs 44d0e <== NOT EXECUTED return EINVAL; switch ( pshared ) { 44cac: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 44cb0: 665c bnes 44d0e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44cb2: 2039 0005 8d58 movel 58d58 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44cb8: 5280 addql #1,%d0 <== NOT EXECUTED 44cba: 23c0 0005 8d58 movel %d0,58d58 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * This function allocates a spinlock control block from * the inactive chain of free spinlock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void ) { return (POSIX_Spinlock_Control *) 44cc0: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44cc6: 4eb9 0004 69fc jsr 469fc <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_spinlock = _POSIX_Spinlock_Allocate(); if ( !the_spinlock ) { 44ccc: 588f addql #4,%sp <== NOT EXECUTED 44cce: 2440 moveal %d0,%a2 <== NOT EXECUTED 44cd0: 47f9 0004 75ce lea 475ce <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 44cd6: 4a80 tstl %d0 <== NOT EXECUTED 44cd8: 6606 bnes 44ce0 <== NOT EXECUTED _Thread_Enable_dispatch(); 44cda: 4e93 jsr %a3@ <== NOT EXECUTED 44cdc: 700b moveq #11,%d0 <== NOT EXECUTED 44cde: 6030 bras 44d10 <== NOT EXECUTED return EAGAIN; } _CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes ); 44ce0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44ce4: 486a 0010 pea %a2@(16) <== NOT EXECUTED 44ce8: 4eb9 0004 64f8 jsr 464f8 <_CORE_spinlock_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 44cee: 2079 0005 8fa0 moveal 58fa0 <_POSIX_Spinlock_Information+0x1a>,%a0 <== NOT EXECUTED 44cf4: 4280 clrl %d0 <== NOT EXECUTED 44cf6: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 44cfa: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 44cfe: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 ); *spinlock = the_spinlock->Object.id; 44d02: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 44d06: 4e93 jsr %a3@ <== NOT EXECUTED 44d08: 508f addql #8,%sp <== NOT EXECUTED 44d0a: 4280 clrl %d0 <== NOT EXECUTED 44d0c: 6002 bras 44d10 <== NOT EXECUTED return 0; 44d0e: 7016 moveq #22,%d0 <== NOT EXECUTED } 44d10: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 44d16: 4e5e unlk %fp <== NOT EXECUTED 44d18: 4e75 rts <== NOT EXECUTED ... 00044d1c : */ int pthread_spin_lock( pthread_spinlock_t *spinlock ) { 44d1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44d20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44d24: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 44d26: 4a88 tstl %a0 <== NOT EXECUTED 44d28: 6748 beqs 44d72 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 44d2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44d2e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44d30: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44d36: 4eb9 0004 6e5c jsr 46e5c <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 44d3c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44d42: 2040 moveal %d0,%a0 <== NOT EXECUTED 44d44: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44d48: 6628 bnes 44d72 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, TRUE, 0 ); 44d4a: 42a7 clrl %sp@- <== NOT EXECUTED 44d4c: 4878 0001 pea 1 <== NOT EXECUTED 44d50: 4868 0010 pea %a0@(16) <== NOT EXECUTED 44d54: 4eb9 0004 656c jsr 4656c <_CORE_spinlock_Wait> <== NOT EXECUTED 44d5a: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 44d5c: 4eb9 0004 75ce jsr 475ce <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 44d62: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44d64: 4eb9 0004 4d7c jsr 44d7c <_POSIX_Spinlock_Translate_core_spinlock_return_code> <== NOT EXECUTED 44d6a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44d70: 6002 bras 44d74 <== NOT EXECUTED 44d72: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44d74: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44d78: 4e5e unlk %fp <== NOT EXECUTED 44d7a: 4e75 rts 00044d94 : */ int pthread_spin_trylock( pthread_spinlock_t *spinlock ) { 44d94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44d98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44d9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 44d9e: 4a88 tstl %a0 <== NOT EXECUTED 44da0: 6746 beqs 44de8 <== NOT EXECUTED 44da2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44da6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44da8: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44dae: 4eb9 0004 6e5c jsr 46e5c <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 44db4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44dba: 2040 moveal %d0,%a0 <== NOT EXECUTED 44dbc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44dc0: 6626 bnes 44de8 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, FALSE, 0 ); 44dc2: 42a7 clrl %sp@- <== NOT EXECUTED 44dc4: 42a7 clrl %sp@- <== NOT EXECUTED 44dc6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 44dca: 4eb9 0004 656c jsr 4656c <_CORE_spinlock_Wait> <== NOT EXECUTED 44dd0: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 44dd2: 4eb9 0004 75ce jsr 475ce <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 44dd8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44dda: 4eb9 0004 4d7c jsr 44d7c <_POSIX_Spinlock_Translate_core_spinlock_return_code> <== NOT EXECUTED 44de0: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44de6: 6002 bras 44dea <== NOT EXECUTED 44de8: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44dea: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44dee: 4e5e unlk %fp <== NOT EXECUTED 44df0: 4e75 rts <== NOT EXECUTED ... 00044df4 : */ int pthread_spin_unlock( pthread_spinlock_t *spinlock ) { 44df4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44df8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44dfc: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 44dfe: 4a88 tstl %a0 <== NOT EXECUTED 44e00: 673e beqs 44e40 <== NOT EXECUTED 44e02: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44e06: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 44e08: 4879 0005 8f86 pea 58f86 <_POSIX_Spinlock_Information> <== NOT EXECUTED 44e0e: 4eb9 0004 6e5c jsr 46e5c <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 44e14: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44e1a: 2040 moveal %d0,%a0 <== NOT EXECUTED 44e1c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44e20: 661e bnes 44e40 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Release( &the_spinlock->Spinlock ); 44e22: 4868 0010 pea %a0@(16) <== NOT EXECUTED 44e26: 4eb9 0004 6518 jsr 46518 <_CORE_spinlock_Release> <== NOT EXECUTED 44e2c: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 44e2e: 4eb9 0004 75ce jsr 475ce <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 44e34: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44e36: 4eb9 0004 4d7c jsr 44d7c <_POSIX_Spinlock_Translate_core_spinlock_return_code> <== NOT EXECUTED 44e3c: 508f addql #8,%sp <== NOT EXECUTED 44e3e: 6002 bras 44e42 <== NOT EXECUTED 44e40: 7016 moveq #22,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 44e42: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44e46: 4e5e unlk %fp <== NOT EXECUTED 44e48: 4e75 rts <== NOT EXECUTED ... 00044f94 : * 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() ) 44f94: 2039 0005 9916 movel 59916 <_ISR_Nest_level>,%d0 <== NOT EXECUTED * * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) { 44f9a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44f9e: 2f02 movel %d2,%sp@- <== 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() ) 44fa0: 4a80 tstl %d0 <== NOT EXECUTED 44fa2: 6648 bnes 44fec <== NOT EXECUTED return; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 44fa4: 2079 0005 9936 moveal 59936 <_Thread_Executing>,%a0 <== NOT EXECUTED 44faa: 2039 0005 9878 movel 59878 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44fb0: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED 44fb4: 5280 addql #1,%d0 <== NOT EXECUTED 44fb6: 23c0 0005 9878 movel %d0,59878 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 44fbc: 4aa8 00cc tstl %a0@(204) <== NOT EXECUTED 44fc0: 6704 beqs 44fc6 <== NOT EXECUTED 44fc2: 4202 clrb %d2 <== NOT EXECUTED 44fc4: 600a bras 44fd0 <== NOT EXECUTED 44fc6: 4aa8 00d4 tstl %a0@(212) <== NOT EXECUTED 44fca: 56c0 sne %d0 <== NOT EXECUTED 44fcc: 2400 movel %d0,%d2 <== NOT EXECUTED 44fce: 4482 negl %d2 <== NOT EXECUTED thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 44fd0: 4eb9 0004 7602 jsr 47602 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) 44fd6: 4a02 tstb %d2 <== NOT EXECUTED 44fd8: 6712 beqs 44fec <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); 44fda: 4878 ffff pea ffffffff <== NOT EXECUTED 44fde: 2f39 0005 9936 movel 59936 <_Thread_Executing>,%sp@- <== NOT EXECUTED 44fe4: 4eb9 0004 4a3c jsr 44a3c <_POSIX_Thread_Exit> <== NOT EXECUTED 44fea: 508f addql #8,%sp <== NOT EXECUTED } 44fec: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44ff0: 4e5e unlk %fp <== NOT EXECUTED 44ff2: 4e75 rts 000450d8 : rtems_name name, rtems_attribute attribute_set, uint32_t maximum_waiters, rtems_id *id ) { 450d8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 450dc: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 450e0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 450e4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 450e8: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 450ec: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED Barrier_Control *the_barrier; CORE_barrier_Attributes the_attributes; if ( !rtems_is_name_valid( name ) ) 450f0: 4a83 tstl %d3 <== NOT EXECUTED 450f2: 6606 bnes 450fa <== NOT EXECUTED 450f4: 7003 moveq #3,%d0 <== NOT EXECUTED 450f6: 6000 0086 braw 4517e <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 450fa: 4a8c tstl %a4 <== NOT EXECUTED 450fc: 6604 bnes 45102 <== NOT EXECUTED 450fe: 7009 moveq #9,%d0 <== NOT EXECUTED 45100: 607c bras 4517e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { 45102: 0802 0004 btst #4,%d2 <== NOT EXECUTED 45106: 670e beqs 45116 <== NOT EXECUTED the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; if ( maximum_waiters == 0 ) 45108: 4a81 tstl %d1 <== NOT EXECUTED 4510a: 6604 bnes 45110 <== NOT EXECUTED 4510c: 700a moveq #10,%d0 <== NOT EXECUTED 4510e: 606e bras 4517e <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 45110: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED 45114: 6006 bras 4511c <== NOT EXECUTED if ( maximum_waiters == 0 ) return RTEMS_INVALID_NUMBER; } else the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE; 45116: 7001 moveq #1,%d0 <== NOT EXECUTED 45118: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4511c: 2039 0005 9fa4 movel 59fa4 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45122: 5280 addql #1,%d0 <== NOT EXECUTED the_attributes.maximum_count = maximum_waiters; 45124: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED 45128: 23c0 0005 9fa4 movel %d0,59fa4 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * 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 ); 4512e: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 45134: 4eb9 0004 6e34 jsr 46e34 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _Barrier_Allocate(); if ( !the_barrier ) { 4513a: 588f addql #4,%sp <== NOT EXECUTED 4513c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4513e: 47f9 0004 7a76 lea 47a76 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 45144: 4a80 tstl %d0 <== NOT EXECUTED 45146: 6606 bnes 4514e <== NOT EXECUTED _Thread_Enable_dispatch(); 45148: 4e93 jsr %a3@ <== NOT EXECUTED 4514a: 7005 moveq #5,%d0 <== NOT EXECUTED 4514c: 6030 bras 4517e <== NOT EXECUTED return RTEMS_TOO_MANY; } the_barrier->attribute_set = attribute_set; 4514e: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 45152: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45156: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4515a: 4eb9 0004 6604 jsr 46604 <_CORE_barrier_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45160: 2079 0005 9eb6 moveal 59eb6 <_Barrier_Information+0x1a>,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 45166: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4516a: 4280 clrl %d0 <== NOT EXECUTED 4516c: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED &_Barrier_Information, &the_barrier->Object, (Objects_Name) name ); *id = the_barrier->Object.id; 45170: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED 45174: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 45178: 4e93 jsr %a3@ <== NOT EXECUTED 4517a: 508f addql #8,%sp <== NOT EXECUTED 4517c: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4517e: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 45184: 4e5e unlk %fp <== NOT EXECUTED 45186: 4e75 rts 00045188 : */ rtems_status_code rtems_barrier_delete( rtems_id id ) { 45188: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4518c: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get ( Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) 4518e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45192: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45196: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 4519c: 4eb9 0004 7294 jsr 47294 <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 451a2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 451a8: 2440 moveal %d0,%a2 <== NOT EXECUTED 451aa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 451ae: 6704 beqs 451b4 <== NOT EXECUTED 451b0: 7004 moveq #4,%d0 <== NOT EXECUTED 451b2: 603a bras 451ee <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Flush( 451b4: 4878 0002 pea 2 <== NOT EXECUTED 451b8: 42a7 clrl %sp@- <== NOT EXECUTED 451ba: 486a 0014 pea %a2@(20) <== NOT EXECUTED 451be: 4eb9 0004 80fc jsr 480fc <_Thread_queue_Flush> <== NOT EXECUTED &the_barrier->Barrier, NULL, CORE_BARRIER_WAS_DELETED ); _Objects_Close( &_Barrier_Information, &the_barrier->Object ); 451c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 451c6: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 451cc: 4eb9 0004 6ebc jsr 46ebc <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Barrier_Free ( Barrier_Control *the_barrier ) { _Objects_Free( &_Barrier_Information, &the_barrier->Object ); 451d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 451d4: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 451da: 4eb9 0004 7134 jsr 47134 <_Objects_Free> <== NOT EXECUTED _Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 451e0: 4eb9 0004 7a76 jsr 47a76 <_Thread_Enable_dispatch> <== NOT EXECUTED 451e6: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 451ec: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 451ee: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 451f2: 4e5e unlk %fp <== NOT EXECUTED 451f4: 4e75 rts <== NOT EXECUTED ... 000451f8 : rtems_status_code rtems_barrier_ident( rtems_name name, rtems_id *id ) { 451f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 451fc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45200: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 45206: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4520a: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 45210: 4eb9 0004 73f8 jsr 473f8 <_Objects_Name_to_id_u32> <== NOT EXECUTED 45216: 41f9 0005 71f0 lea 571f0 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 4521c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 45220: 4e5e unlk %fp <== NOT EXECUTED 45222: 4e75 rts 00045224 : rtems_status_code rtems_barrier_release( rtems_id id, uint32_t *released ) { 45224: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45228: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4522a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4522e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45230: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; if ( !released ) 45234: 4a8a tstl %a2 <== NOT EXECUTED 45236: 6604 bnes 4523c <== NOT EXECUTED 45238: 7009 moveq #9,%d0 <== NOT EXECUTED 4523a: 6042 bras 4527e <== NOT EXECUTED RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get ( Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) 4523c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45240: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45242: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 45248: 4eb9 0004 7294 jsr 47294 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4524e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45254: 2040 moveal %d0,%a0 <== NOT EXECUTED 45256: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4525a: 6704 beqs 45260 <== NOT EXECUTED 4525c: 7004 moveq #4,%d0 <== NOT EXECUTED 4525e: 601e bras 4527e <== NOT EXECUTED case OBJECTS_LOCAL: *released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL ); 45260: 42a7 clrl %sp@- <== NOT EXECUTED 45262: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45264: 4868 0014 pea %a0@(20) <== NOT EXECUTED 45268: 4eb9 0004 6640 jsr 46640 <_CORE_barrier_Release> <== NOT EXECUTED 4526e: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 45270: 4eb9 0004 7a76 jsr 47a76 <_Thread_Enable_dispatch> <== NOT EXECUTED 45276: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4527c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4527e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 45282: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 45286: 4e5e unlk %fp <== NOT EXECUTED 45288: 4e75 rts <== NOT EXECUTED ... 0004528c : rtems_status_code rtems_barrier_wait( rtems_id id, rtems_interval timeout ) { 4528c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45290: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45292: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45296: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4529a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4529c: 4879 0005 9e9c pea 59e9c <_Barrier_Information> <== NOT EXECUTED 452a2: 4eb9 0004 7294 jsr 47294 <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 452a8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 452ae: 2040 moveal %d0,%a0 <== NOT EXECUTED 452b0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 452b4: 6704 beqs 452ba <== NOT EXECUTED 452b6: 7004 moveq #4,%d0 <== NOT EXECUTED 452b8: 6032 bras 452ec <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 452ba: 42a7 clrl %sp@- <== NOT EXECUTED 452bc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 452c0: 4878 0001 pea 1 <== NOT EXECUTED 452c4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 452c6: 4868 0014 pea %a0@(20) <== NOT EXECUTED 452ca: 4eb9 0004 6674 jsr 46674 <_CORE_barrier_Wait> <== NOT EXECUTED id, TRUE, timeout, NULL ); _Thread_Enable_dispatch(); 452d0: 4eb9 0004 7a76 jsr 47a76 <_Thread_Enable_dispatch> <== NOT EXECUTED return _Barrier_Translate_core_barrier_return_code( 452d6: 2079 0005 a062 moveal 5a062 <_Thread_Executing>,%a0 <== NOT EXECUTED 452dc: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 452e0: 4eb9 0004 aae4 jsr 4aae4 <_Barrier_Translate_core_barrier_return_code> <== NOT EXECUTED 452e6: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 452ec: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 452f0: 4e5e unlk %fp <== NOT EXECUTED 452f2: 4e75 rts 00046090 : uint32_t api, uint32_t class, uint32_t node, uint32_t index ) { 46090: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46094: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46096: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4609a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4609e: 761b moveq #27,%d3 <== NOT EXECUTED 460a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 460a2: e7a8 lsll %d3,%d0 <== NOT EXECUTED 460a4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 460a8: 163c 0018 moveb #24,%d3 <== NOT EXECUTED 460ac: e7a9 lsll %d3,%d1 <== NOT EXECUTED 460ae: 8081 orl %d1,%d0 <== NOT EXECUTED 460b0: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED 460b4: 4842 swap %d2 <== NOT EXECUTED 460b6: 4242 clrw %d2 <== NOT EXECUTED return _Objects_Build_id( api, class, node, index ); } 460b8: 8082 orl %d2,%d0 <== NOT EXECUTED 460ba: 241f movel %sp@+,%d2 <== NOT EXECUTED 460bc: 261f movel %sp@+,%d3 <== NOT EXECUTED 460be: 4e5e unlk %fp <== NOT EXECUTED 460c0: 4e75 rts <== NOT EXECUTED ... 000460c4 : char C1, char C2, char C3, char C4 ) { 460c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 460c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 460ca: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED 460ce: 7218 moveq #24,%d1 <== NOT EXECUTED 460d0: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED 460d4: 49c2 extbl %d2 <== NOT EXECUTED 460d6: e3aa lsll %d1,%d2 <== NOT EXECUTED 460d8: 49c0 extbl %d0 <== NOT EXECUTED 460da: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED 460de: 4840 swap %d0 <== NOT EXECUTED 460e0: 4240 clrw %d0 <== NOT EXECUTED 460e2: 8082 orl %d2,%d0 <== NOT EXECUTED 460e4: 49c1 extbl %d1 <== NOT EXECUTED 460e6: e189 lsll #8,%d1 <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); } 460e8: 241f movel %sp@+,%d2 <== NOT EXECUTED char C1, char C2, char C3, char C4 ) { 460ea: 8081 orl %d1,%d0 <== NOT EXECUTED 460ec: 122e 0017 moveb %fp@(23),%d1 <== NOT EXECUTED 460f0: 49c1 extbl %d1 <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); } 460f2: 4e5e unlk %fp <== NOT EXECUTED 460f4: 8081 orl %d1,%d0 <== NOT EXECUTED 460f6: 4e75 rts 00044640 : rtems_status_code rtems_clock_get( rtems_clock_get_options option, void *time_buffer ) { 44640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44644: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44646: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4464a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED if ( !time_buffer ) 4464e: 4a8a tstl %a2 <== NOT EXECUTED 44650: 6604 bnes 44656 <== NOT EXECUTED 44652: 7009 moveq #9,%d0 <== NOT EXECUTED 44654: 6062 bras 446b8 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; switch ( option ) { 44656: 7204 moveq #4,%d1 <== NOT EXECUTED 44658: b280 cmpl %d0,%d1 <== NOT EXECUTED 4465a: 6514 bcss 44670 <== NOT EXECUTED 4465c: 303b 0a08 movew %pc@(44666 ,%d0:l:2),%d0 <== NOT EXECUTED 44660: 48c0 extl %d0 <== NOT EXECUTED 44662: 4efb 0802 jmp %pc@(44666 ,%d0:l) <== NOT EXECUTED 44666: 000e 016 <== NOT EXECUTED 44668: 001e 036 <== NOT EXECUTED 4466a: 002e 056 <== NOT EXECUTED 4466c: 0036 066 <== NOT EXECUTED 4466e: 0042 0102 <== NOT EXECUTED 44670: 700a moveq #10,%d0 <== NOT EXECUTED 44672: 6044 bras 446b8 <== NOT EXECUTED case RTEMS_CLOCK_GET_TOD: return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 44674: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED break; } return RTEMS_INVALID_NUMBER; } 44678: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4467c: 4e5e unlk %fp <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; switch ( option ) { case RTEMS_CLOCK_GET_TOD: return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 4467e: 4ef9 0004 4710 jmp 44710 <== NOT EXECUTED case RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH: return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 44684: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED break; } return RTEMS_INVALID_NUMBER; } 44688: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4468c: 4e5e unlk %fp <== NOT EXECUTED switch ( option ) { case RTEMS_CLOCK_GET_TOD: return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); case RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH: return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 4468e: 4ef9 0004 46c0 jmp 446c0 <== NOT EXECUTED case RTEMS_CLOCK_GET_TICKS_SINCE_BOOT: { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_since_boot(); 44694: 4eb9 0004 4700 jsr 44700 <== NOT EXECUTED 4469a: 6006 bras 446a2 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } case RTEMS_CLOCK_GET_TICKS_PER_SECOND: { rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_per_second(); 4469c: 4eb9 0004 46e8 jsr 446e8 <== NOT EXECUTED 446a2: 2480 movel %d0,%a2@ <== NOT EXECUTED 446a4: 4280 clrl %d0 <== NOT EXECUTED 446a6: 6010 bras 446b8 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } case RTEMS_CLOCK_GET_TIME_VALUE: return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 446a8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED break; } return RTEMS_INVALID_NUMBER; } 446ac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 446b0: 4e5e unlk %fp <== NOT EXECUTED *interval = rtems_clock_get_ticks_per_second(); return RTEMS_SUCCESSFUL; } case RTEMS_CLOCK_GET_TIME_VALUE: return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 446b2: 4ef9 0004 47c8 jmp 447c8 <== NOT EXECUTED break; } return RTEMS_INVALID_NUMBER; } 446b8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 446bc: 4e5e unlk %fp <== NOT EXECUTED 446be: 4e75 rts 000446c0 : #include rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ) { 446c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 446c4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !the_interval ) 446c8: 4a88 tstl %a0 <== NOT EXECUTED 446ca: 6604 bnes 446d0 <== NOT EXECUTED 446cc: 7009 moveq #9,%d0 <== NOT EXECUTED 446ce: 6014 bras 446e4 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 446d0: 4a39 0005 7e90 tstb 57e90 <_TOD_Is_set> <== NOT EXECUTED 446d6: 6604 bnes 446dc <== NOT EXECUTED 446d8: 700b moveq #11,%d0 <== NOT EXECUTED 446da: 6008 bras 446e4 <== NOT EXECUTED return RTEMS_NOT_DEFINED; *the_interval = _TOD_Seconds_since_epoch; 446dc: 4280 clrl %d0 <== NOT EXECUTED 446de: 20b9 0005 7f0e movel 57f0e <_TOD_Now>,%a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 446e4: 4e5e unlk %fp <== NOT EXECUTED 446e6: 4e75 rts 000446e8 : #include #include #include rtems_interval rtems_clock_get_ticks_per_second(void) { 446e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return TOD_MICROSECONDS_PER_SECOND / _TOD_Microseconds_per_tick; } 446ec: 41f9 0005 800a lea 5800a <_TOD_Microseconds_per_tick>,%a0 <== NOT EXECUTED 446f2: 4e5e unlk %fp <== NOT EXECUTED 446f4: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 446fa: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED 446fe: 4e75 rts 00044700 : #include #include #include rtems_interval rtems_clock_get_ticks_since_boot(void) { 44700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Watchdog_Ticks_since_boot; 44704: 2039 0005 7fc4 movel 57fc4 <_Watchdog_Ticks_since_boot>,%d0 <== NOT EXECUTED } 4470a: 4e5e unlk %fp <== NOT EXECUTED 4470c: 4e75 rts <== NOT EXECUTED ... 00044710 : #include rtems_status_code rtems_clock_get_tod( rtems_time_of_day *time_buffer ) { 44710: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 44714: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44716: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4471a: 2f02 movel %d2,%sp@- <== NOT EXECUTED rtems_time_of_day *tmbuf = time_buffer; struct tm time; struct timeval now; if ( !time_buffer ) 4471c: 4a8a tstl %a2 <== NOT EXECUTED 4471e: 6606 bnes 44726 <== NOT EXECUTED 44720: 7009 moveq #9,%d0 <== NOT EXECUTED 44722: 6000 0096 braw 447ba <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 44726: 4a39 0005 7e90 tstb 57e90 <_TOD_Is_set> <== NOT EXECUTED 4472c: 6606 bnes 44734 <== NOT EXECUTED 4472e: 700b moveq #11,%d0 <== NOT EXECUTED 44730: 6000 0088 braw 447ba <== NOT EXECUTED ) { ISR_Level level; struct timespec now; _ISR_Disable(level); 44734: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4473a: 40c2 movew %sr,%d2 <== NOT EXECUTED 4473c: 8082 orl %d2,%d0 <== NOT EXECUTED 4473e: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 44740: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 44744: 4eb9 0004 5d14 jsr 45d14 <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 4474a: 46c2 movew %d2,%sr <== NOT EXECUTED time->tv_sec = now.tv_sec; time->tv_usec = now.tv_nsec / TOD_NANOSECONDS_PER_MICROSECOND; 4474c: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED /* Obtain the current time */ _TOD_Get_timeval( &now ); /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); 44750: 486e ffcc pea %fp@(-52) <== NOT EXECUTED 44754: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 4475a: 4c42 1001 remul %d2,%d1,%d1 <== NOT EXECUTED 4475e: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); time->tv_sec = now.tv_sec; 44762: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED 44768: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4476c: 4eb9 0004 bf30 jsr 4bf30 <== 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 / _TOD_Microseconds_per_tick; 44772: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 44776: 41f9 0005 800a lea 5800a <_TOD_Microseconds_per_tick>,%a0 <== NOT EXECUTED 4477c: 4c50 1001 remul %a0@,%d1,%d1 <== NOT EXECUTED 44780: 2541 0018 movel %d1,%a2@(24) <== 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; 44784: 222e ffe0 movel %fp@(-32),%d1 <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; 44788: 242e ffdc movel %fp@(-36),%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; 4478c: 0681 0000 076c addil #1900,%d1 <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; 44792: 5282 addql #1,%d2 <== NOT EXECUTED 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 / _TOD_Microseconds_per_tick; 44794: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4479a: 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; 4479c: 2481 movel %d1,%a2@ <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; 4479e: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED tmbuf->hour = time.tm_hour; 447a4: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED tmbuf->minute = time.tm_min; 447aa: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED tmbuf->second = time.tm_sec; 447b0: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== 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; 447b6: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / _TOD_Microseconds_per_tick; return RTEMS_SUCCESSFUL; } 447ba: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED 447be: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 447c2: 4e5e unlk %fp <== NOT EXECUTED 447c4: 4e75 rts <== NOT EXECUTED ... 000447c8 : #include rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ) { 447c8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 447cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 447ce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 447d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !time ) 447d4: 4a8a tstl %a2 <== NOT EXECUTED 447d6: 6604 bnes 447dc <== NOT EXECUTED 447d8: 7009 moveq #9,%d0 <== NOT EXECUTED 447da: 603e bras 4481a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 447dc: 4a39 0005 7e90 tstb 57e90 <_TOD_Is_set> <== NOT EXECUTED 447e2: 6604 bnes 447e8 <== NOT EXECUTED 447e4: 700b moveq #11,%d0 <== NOT EXECUTED 447e6: 6032 bras 4481a <== NOT EXECUTED ) { ISR_Level level; struct timespec now; _ISR_Disable(level); 447e8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 447ee: 40c2 movew %sr,%d2 <== NOT EXECUTED 447f0: 8082 orl %d2,%d0 <== NOT EXECUTED 447f2: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 447f4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 447f8: 4eb9 0004 5d14 jsr 45d14 <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 447fe: 46c2 movew %d2,%sr <== NOT EXECUTED time->tv_sec = now.tv_sec; time->tv_usec = now.tv_nsec / TOD_NANOSECONDS_PER_MICROSECOND; 44800: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 44804: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 4480a: 4c42 1001 remul %d2,%d1,%d1 <== NOT EXECUTED 4480e: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 44812: 588f addql #4,%sp <== NOT EXECUTED 44814: 4280 clrl %d0 <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); time->tv_sec = now.tv_sec; 44816: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED return RTEMS_NOT_DEFINED; _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; } 4481a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4481e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 44822: 4e5e unlk %fp <== NOT EXECUTED 44824: 4e75 rts <== NOT EXECUTED ... 00044a18 : * error code - if unsuccessful */ rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ) { 44a18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44a1c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !uptime ) 44a20: 6606 bnes 44a28 <== NOT EXECUTED 44a22: 103c 0009 moveb #9,%d0 <== NOT EXECUTED 44a26: 600c bras 44a34 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _TOD_Get_uptime( uptime ); 44a28: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44a2a: 4eb9 0004 60f0 jsr 460f0 <_TOD_Get_uptime> <== NOT EXECUTED 44a30: 588f addql #4,%sp <== NOT EXECUTED 44a32: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 44a34: 4e5e unlk %fp <== NOT EXECUTED 44a36: 4e75 rts 000454d0 : */ rtems_status_code rtems_clock_set( rtems_time_of_day *time_buffer ) { 454d0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 454d4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 454d8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED struct timespec newtime; if ( !time_buffer ) 454dc: 4a8a tstl %a2 <== NOT EXECUTED 454de: 6604 bnes 454e4 <== NOT EXECUTED 454e0: 7009 moveq #9,%d0 <== NOT EXECUTED 454e2: 6060 bras 45544 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { 454e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 454e6: 4eb9 0004 5640 jsr 45640 <_TOD_Validate> <== NOT EXECUTED 454ec: 588f addql #4,%sp <== NOT EXECUTED 454ee: 4a00 tstb %d0 <== NOT EXECUTED 454f0: 6604 bnes 454f6 <== NOT EXECUTED 454f2: 7014 moveq #20,%d0 <== NOT EXECUTED 454f4: 604e bras 45544 <== NOT EXECUTED newtime.tv_sec = _TOD_To_seconds( time_buffer ); 454f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 454f8: 4eb9 0004 558c jsr 4558c <_TOD_To_seconds> <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * 454fe: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED 45502: 41f9 0006 2322 lea 62322 <_TOD_Microseconds_per_tick>,%a0 <== NOT EXECUTED 45508: 4c10 2800 mulsl %a0@,%d2 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4550c: 2079 0006 2194 moveal 62194 <_Thread_Dispatch_disable_level>,%a0 <== NOT EXECUTED 45512: 2602 movel %d2,%d3 <== NOT EXECUTED 45514: 2202 movel %d2,%d1 <== NOT EXECUTED 45516: e58b lsll #2,%d3 <== NOT EXECUTED 45518: ef89 lsll #7,%d1 <== NOT EXECUTED 4551a: 9283 subl %d3,%d1 <== NOT EXECUTED 4551c: d282 addl %d2,%d1 <== NOT EXECUTED 4551e: 5288 addql #1,%a0 <== NOT EXECUTED 45520: e789 lsll #3,%d1 <== NOT EXECUTED 45522: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED 45526: 23c8 0006 2194 movel %a0,62194 <_Thread_Dispatch_disable_level> <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { newtime.tv_sec = _TOD_To_seconds( time_buffer ); 4552c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * (_TOD_Microseconds_per_tick * TOD_NANOSECONDS_PER_MICROSECOND); _Thread_Disable_dispatch(); _TOD_Set( &newtime ); 45530: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45534: 4eb9 0004 6e04 jsr 46e04 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 4553a: 4eb9 0004 7ea2 jsr 47ea2 <_Thread_Enable_dispatch> <== NOT EXECUTED 45540: 508f addql #8,%sp <== NOT EXECUTED 45542: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; } 45544: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4554a: 4e5e unlk %fp <== NOT EXECUTED 4554c: 4e75 rts <== NOT EXECUTED ... 00044828 : * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) { 44828: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4482c: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED if ( !routine ) 44830: 6604 bnes 44836 <== NOT EXECUTED 44832: 7009 moveq #9,%d0 <== NOT EXECUTED 44834: 6008 bras 4483e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _Watchdog_Nanoseconds_since_tick_handler = routine; 44836: 4280 clrl %d0 <== NOT EXECUTED 44838: 23c1 0005 8012 movel %d1,58012 <_Watchdog_Nanoseconds_since_tick_handler> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4483e: 4e5e unlk %fp <== NOT EXECUTED 44840: 4e75 rts <== NOT EXECUTED ... 00044844 : * * NOTE: This routine only works for leap-years through 2099. */ rtems_status_code rtems_clock_tick( void ) { 44844: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _TOD_Tickle_ticks(); 44848: 4eb9 0004 5dac jsr 45dac <_TOD_Tickle_ticks> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void ) { _Watchdog_Tickle( &_Watchdog_Ticks_chain ); 4484e: 4879 0005 7f58 pea 57f58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 44854: 4eb9 0004 7e18 jsr 47e18 <_Watchdog_Tickle> <== NOT EXECUTED _Watchdog_Tickle_ticks(); _Thread_Tickle_timeslice(); 4485a: 4eb9 0004 78dc jsr 478dc <_Thread_Tickle_timeslice> <== NOT EXECUTED if ( _Thread_Is_context_switch_necessary() && 44860: 588f addql #4,%sp <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void ) { return ( _Context_Switch_necessary ); 44862: 1039 0005 7f4a moveb 57f4a <_Context_Switch_necessary>,%d0 <== NOT EXECUTED 44868: 670e beqs 44878 <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void ) { return ( _Thread_Dispatch_disable_level == 0 ); 4486a: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44870: 6606 bnes 44878 <== NOT EXECUTED _Thread_Is_dispatching_enabled() ) _Thread_Dispatch(); 44872: 4eb9 0004 6bb8 jsr 46bb8 <_Thread_Dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 44878: 4e5e unlk %fp <== NOT EXECUTED 4487a: 4280 clrl %d0 <== NOT EXECUTED 4487c: 4e75 rts <== NOT EXECUTED ... 0004a148 : */ void rtems_debug_disable ( rtems_debug_control to_be_disabled ) { 4a148: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Debug_Level &= ~to_be_disabled; 4a14c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4a150: 4e5e unlk %fp <== NOT EXECUTED void rtems_debug_disable ( rtems_debug_control to_be_disabled ) { _Debug_Level &= ~to_be_disabled; 4a152: 4680 notl %d0 <== NOT EXECUTED 4a154: c1b9 0005 7f3e andl %d0,57f3e <_Debug_Level> <== NOT EXECUTED } 4a15a: 4e75 rts 0004a136 : */ void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { 4a136: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Debug_Level |= to_be_enabled; 4a13a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4a13e: 4e5e unlk %fp <== NOT EXECUTED void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { _Debug_Level |= to_be_enabled; 4a140: 81b9 0005 7f3e orl %d0,57f3e <_Debug_Level> <== NOT EXECUTED } 4a146: 4e75 rts 00044880 : rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 44880: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44884: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44888: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED RTEMS_API_Control *api; if ( !event_out ) 4488c: 4a89 tstl %a1 <== NOT EXECUTED 4488e: 6604 bnes 44894 <== NOT EXECUTED 44890: 7009 moveq #9,%d0 <== NOT EXECUTED 44892: 604a bras 448de <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; 44894: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 4489a: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED if ( _Event_sets_Is_empty( event_in ) ) { 4489e: 4a81 tstl %d1 <== NOT EXECUTED 448a0: 6606 bnes 448a8 <== NOT EXECUTED *event_out = api->pending_events; 448a2: 2290 movel %a0@,%a1@ <== NOT EXECUTED 448a4: 4280 clrl %d0 <== NOT EXECUTED 448a6: 6036 bras 448de <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 448a8: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 448ae: 5280 addql #1,%d0 <== NOT EXECUTED 448b0: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); 448b6: 2f09 movel %a1,%sp@- <== NOT EXECUTED 448b8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 448bc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 448c0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 448c2: 4eb9 0004 48e4 jsr 448e4 <_Event_Seize> <== NOT EXECUTED _Thread_Enable_dispatch(); 448c8: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED return( _Thread_Executing->Wait.return_code ); 448ce: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 448d4: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED 448d8: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED } 448de: 4e5e unlk %fp <== NOT EXECUTED 448e0: 4e75 rts <== NOT EXECUTED ... 000449e8 : rtems_status_code rtems_event_send( Objects_Id id, rtems_event_set event_in ) { 449e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; the_thread = _Thread_Get( id, &location ); 449ec: 486e fffc pea %fp@(-4) <== NOT EXECUTED 449f0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 449f4: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 449fa: 508f addql #8,%sp <== NOT EXECUTED { register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; the_thread = _Thread_Get( id, &location ); 449fc: 2240 moveal %d0,%a1 <== NOT EXECUTED switch ( location ) { 449fe: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44a02: 6704 beqs 44a08 <== NOT EXECUTED 44a04: 7004 moveq #4,%d0 <== NOT EXECUTED 44a06: 602a bras 44a32 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 44a08: 2069 010c moveal %a1@(268),%a0 <== NOT EXECUTED rtems_event_set *the_event_set ) { ISR_Level level; _ISR_Disable( level ); 44a0c: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 44a12: 40c0 movew %sr,%d0 <== NOT EXECUTED 44a14: 8280 orl %d0,%d1 <== NOT EXECUTED 44a16: 46c1 movew %d1,%sr <== NOT EXECUTED *the_event_set |= the_new_events; 44a18: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 44a1c: 8390 orl %d1,%a0@ <== NOT EXECUTED _ISR_Enable( level ); 44a1e: 46c0 movew %d0,%sr <== NOT EXECUTED _Event_sets_Post( event_in, &api->pending_events ); _Event_Surrender( the_thread ); 44a20: 2f09 movel %a1,%sp@- <== NOT EXECUTED 44a22: 4eb9 0004 4a38 jsr 44a38 <_Event_Surrender> <== NOT EXECUTED _Thread_Enable_dispatch(); 44a28: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44a2e: 588f addql #4,%sp <== NOT EXECUTED 44a30: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 44a32: 4e5e unlk %fp <== NOT EXECUTED 44a34: 4e75 rts <== NOT EXECUTED ... 00048fec : rtems_status_code rtems_extension_create( rtems_name name, rtems_extensions_table *extension_table, Objects_Id *id ) { 48fec: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48ff0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 48ff4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48ff8: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED Extension_Control *the_extension; if ( !id ) 48ffc: 4a8c tstl %a4 <== NOT EXECUTED 48ffe: 6604 bnes 49004 <== NOT EXECUTED 49000: 7009 moveq #9,%d0 <== NOT EXECUTED 49002: 6062 bras 49066 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 49004: 4a82 tstl %d2 <== NOT EXECUTED 49006: 6604 bnes 4900c <== NOT EXECUTED 49008: 7003 moveq #3,%d0 <== NOT EXECUTED 4900a: 605a bras 49066 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4900c: 2039 0006 3be4 movel 63be4 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 49012: 5280 addql #1,%d0 <== NOT EXECUTED 49014: 23c0 0006 3be4 movel %d0,63be4 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * the inactive chain of free extension control blocks. */ RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void ) { return (Extension_Control *) _Objects_Allocate( &_Extension_Information ); 4901a: 4879 0006 3d9a pea 63d9a <_Extension_Information> <== NOT EXECUTED 49020: 4eb9 0004 9c84 jsr 49c84 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_extension = _Extension_Allocate(); if ( !the_extension ) { 49026: 588f addql #4,%sp <== NOT EXECUTED 49028: 2440 moveal %d0,%a2 <== NOT EXECUTED 4902a: 47f9 0004 a936 lea 4a936 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 49030: 4a80 tstl %d0 <== NOT EXECUTED 49032: 6606 bnes 4903a <== NOT EXECUTED _Thread_Enable_dispatch(); 49034: 4e93 jsr %a3@ <== NOT EXECUTED 49036: 7005 moveq #5,%d0 <== NOT EXECUTED 49038: 602c bras 49066 <== NOT EXECUTED return RTEMS_TOO_MANY; } _User_extensions_Add_set( &the_extension->Extension, extension_table ); 4903a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4903e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 49042: 4eb9 0004 b6ac jsr 4b6ac <_User_extensions_Add_set> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49048: 4280 clrl %d0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4904a: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4904e: 2079 0006 3db4 moveal 63db4 <_Extension_Information+0x1a>,%a0 <== NOT EXECUTED 49054: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED &_Extension_Information, &the_extension->Object, (Objects_Name) name ); *id = the_extension->Object.id; 49058: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED 4905c: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 49060: 4e93 jsr %a3@ <== NOT EXECUTED 49062: 508f addql #8,%sp <== NOT EXECUTED 49064: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 49066: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4906c: 4e5e unlk %fp <== NOT EXECUTED 4906e: 4e75 rts 00049070 : */ rtems_status_code rtems_extension_delete( Objects_Id id ) { 49070: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49074: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Get ( Objects_Id id, Objects_Locations *location ) { return (Extension_Control *) 49076: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4907a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4907e: 4879 0006 3d9a pea 63d9a <_Extension_Information> <== NOT EXECUTED 49084: 4eb9 0004 a0e4 jsr 4a0e4 <_Objects_Get> <== NOT EXECUTED Extension_Control *the_extension; Objects_Locations location; the_extension = _Extension_Get( id, &location ); switch ( location ) { 4908a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 49090: 2440 moveal %d0,%a2 <== NOT EXECUTED 49092: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49096: 6704 beqs 4909c <== NOT EXECUTED 49098: 7004 moveq #4,%d0 <== NOT EXECUTED 4909a: 6034 bras 490d0 <== NOT EXECUTED case OBJECTS_LOCAL: _User_extensions_Remove_set( &the_extension->Extension ); 4909c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 490a0: 4eb9 0004 b7c0 jsr 4b7c0 <_User_extensions_Remove_set> <== NOT EXECUTED _Objects_Close( &_Extension_Information, &the_extension->Object ); 490a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 490a8: 4879 0006 3d9a pea 63d9a <_Extension_Information> <== NOT EXECUTED 490ae: 4eb9 0004 9d0c jsr 49d0c <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Extension_Free ( Extension_Control *the_extension ) { _Objects_Free( &_Extension_Information, &the_extension->Object ); 490b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 490b6: 4879 0006 3d9a pea 63d9a <_Extension_Information> <== NOT EXECUTED 490bc: 4eb9 0004 9f84 jsr 49f84 <_Objects_Free> <== NOT EXECUTED _Extension_Free( the_extension ); _Thread_Enable_dispatch(); 490c2: 4eb9 0004 a936 jsr 4a936 <_Thread_Enable_dispatch> <== NOT EXECUTED 490c8: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 490ce: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 490d0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 490d4: 4e5e unlk %fp <== NOT EXECUTED 490d6: 4e75 rts 00046cf0 : rtems_status_code rtems_extension_ident( rtems_name name, Objects_Id *id ) { 46cf0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 46cf4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 46cf8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 46cfe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46d02: 4879 0005 b722 pea 5b722 <_Extension_Information> <== NOT EXECUTED 46d08: 4eb9 0004 7e58 jsr 47e58 <_Objects_Name_to_id_u32> <== NOT EXECUTED 46d0e: 41f9 0005 85a8 lea 585a8 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 46d14: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 46d18: 4e5e unlk %fp <== NOT EXECUTED 46d1a: 4e75 rts 00045580 : */ void rtems_fatal_error_occurred( uint32_t the_error ) { 45580: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, FALSE, the_error ); 45584: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45588: 42a7 clrl %sp@- <== NOT EXECUTED 4558a: 4878 0001 pea 1 <== NOT EXECUTED 4558e: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED 00046c78 : #endif #include const char *rtems_get_version_string(void) { 46c78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _RTEMS_version; } 46c7c: 4e5e unlk %fp <== NOT EXECUTED 46c7e: 203c 0005 9698 movel #366232,%d0 <== NOT EXECUTED 46c84: 4e75 rts <== NOT EXECUTED ... 000453f6 : * Scheduling can properly occur now as long as we avoid dispatching. */ } void rtems_initialize_before_drivers(void) { 453f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * Run the API and BSPs predriver hook. */ _API_extensions_Run_predriver(); } 453fa: 4e5e unlk %fp <== NOT EXECUTED /* * Run the API and BSPs predriver hook. */ _API_extensions_Run_predriver(); 453fc: 4ef9 0004 57bc jmp 457bc <_API_extensions_Run_predriver> <== NOT EXECUTED 00045402 : Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ]; void rtems_initialize_data_structures( rtems_configuration_table *configuration_table ) { 45402: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45406: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45408: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * Dispatching and interrupts are disabled until the end of the * initialization sequence. This prevents an inadvertent context * switch before the executive is initialized. */ _ISR_Disable( bsp_level ); 4540c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45412: 40c1 movew %sr,%d1 <== NOT EXECUTED 45414: 8081 orl %d1,%d0 <== NOT EXECUTED 45416: 46c0 movew %d0,%sr <== NOT EXECUTED /* * Make sure the parameters were not NULL. */ if ( configuration_table == NULL ) 45418: 4a8a tstl %a2 <== NOT EXECUTED 4541a: 660e bnes 4542a <== NOT EXECUTED _Internal_error_Occurred( 4541c: 42a7 clrl %sp@- <== NOT EXECUTED 4541e: 4878 0001 pea 1 <== NOT EXECUTED 45422: 42a7 clrl %sp@- <== NOT EXECUTED 45424: 4eb9 0004 5ffc jsr 45ffc <_Internal_error_Occurred> <== NOT EXECUTED _Configuration_Table = configuration_table; /* * Initialize any target architecture specific support as early as possible */ _CPU_Initialize( _Thread_Dispatch ); 4542a: 4879 0004 6bb8 pea 46bb8 <_Thread_Dispatch> <== NOT EXECUTED ); /* * Provide pointers just for later convenience. */ _Configuration_Table = configuration_table; 45430: 23ca 0005 7f16 movel %a2,57f16 <_Configuration_Table> <== NOT EXECUTED /* * Initialize any target architecture specific support as early as possible */ _CPU_Initialize( _Thread_Dispatch ); 45436: 4eb9 0004 802c jsr 4802c <_CPU_Initialize> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _System_state_Handler_initialization ( bool is_multiprocessing ) { _System_state_Current = SYSTEM_STATE_BEFORE_INITIALIZATION; 4543c: 42b9 0005 800e clrl 5800e <_System_state_Current> <== NOT EXECUTED /* * Do this as early as possible to insure no debugging output * is even attempted to be printed. */ _Debug_Manager_initialization(); 45442: 4eb9 0004 a128 jsr 4a128 <_Debug_Manager_initialization> <== NOT EXECUTED _API_extensions_Initialization(); 45448: 4eb9 0004 579c jsr 4579c <_API_extensions_Initialization> <== NOT EXECUTED /* * Before this is called, we are not allowed to allocate memory * from the Workspace because it is not initialized. */ _Workspace_Handler_initialization( 4544e: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED * This routine initializes the thread dispatching subsystem. */ RTEMS_INLINE_ROUTINE void _Thread_Dispatch_initialization( void ) { _Thread_Dispatch_disable_level = 1; 45452: 7001 moveq #1,%d0 <== NOT EXECUTED 45454: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED 4545a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4545c: 4eb9 0004 7ef2 jsr 47ef2 <_Workspace_Handler_initialization> <== NOT EXECUTED (void *)configuration_table->work_space_start, configuration_table->work_space_size ); _User_extensions_Handler_initialization( 45462: 2f2a 003a movel %a2@(58),%sp@- <== NOT EXECUTED 45466: 2f2a 0036 movel %a2@(54),%sp@- <== NOT EXECUTED 4546a: 4eb9 0004 7a50 jsr 47a50 <_User_extensions_Handler_initialization> <== NOT EXECUTED configuration_table->number_of_initial_extensions, configuration_table->User_extension_table ); _ISR_Handler_initialization(); 45470: 4eb9 0004 6058 jsr 46058 <_ISR_Handler_initialization> <== NOT EXECUTED _Objects_Handler_initialization( 45476: 4eb9 0004 66fc jsr 466fc <_Objects_Handler_initialization> <== NOT EXECUTED _Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects; /* * Initialize the internal allocator Mutex */ _API_Mutex_Initialization( 1 ); 4547c: 4878 0001 pea 1 <== NOT EXECUTED _Configuration_MP_table->maximum_nodes, _Configuration_MP_table->maximum_global_objects #endif ); _Objects_Information_table[OBJECTS_INTERNAL_API] = _Internal_Objects; 45480: 203c 0005 7e92 movel #360082,%d0 <== NOT EXECUTED 45486: 23c0 0005 7e38 movel %d0,57e38 <_Objects_Information_table+0x4> <== NOT EXECUTED /* * Initialize the internal allocator Mutex */ _API_Mutex_Initialization( 1 ); 4548c: 4eb9 0004 5900 jsr 45900 <_API_Mutex_Initialization> <== NOT EXECUTED _API_Mutex_Allocate( &_RTEMS_Allocator_Mutex ); 45492: 4879 0005 7f32 pea 57f32 <_RTEMS_Allocator_Mutex> <== NOT EXECUTED 45498: 4eb9 0004 585c jsr 4585c <_API_Mutex_Allocate> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Handler_initialization( void ) { size_t index; _Priority_Major_bit_map = 0; 4549e: 4240 clrw %d0 <== NOT EXECUTED 454a0: 33c0 0005 7f30 movew %d0,57f30 <_Priority_Major_bit_map> <== NOT EXECUTED 454a6: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 454ac: 41f9 0005 7fa0 lea 57fa0 <_Priority_Bit_map>,%a0 <== NOT EXECUTED for ( index=0 ; index <16 ; index++ ) _Priority_Bit_map[ index ] = 0; 454b2: 4258 clrw %a0@+ <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Priority_Handler_initialization( void ) { size_t index; _Priority_Major_bit_map = 0; for ( index=0 ; index <16 ; index++ ) 454b4: b1fc 0005 7fc0 cmpal #360384,%a0 <== NOT EXECUTED 454ba: 66f6 bnes 454b2 <== NOT EXECUTED _Priority_Handler_initialization(); _Watchdog_Handler_initialization(); 454bc: 4eb9 0004 7d50 jsr 47d50 <_Watchdog_Handler_initialization> <== NOT EXECUTED _TOD_Handler_initialization( configuration_table->microseconds_per_tick ); 454c2: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 454c6: 4eb9 0004 5d74 jsr 45d74 <_TOD_Handler_initialization> <== NOT EXECUTED _Thread_Handler_initialization( 454cc: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 454d0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 454d4: 4eb9 0004 6f4c jsr 46f4c <_Thread_Handler_initialization> <== NOT EXECUTED ); #endif /* MANAGERS */ _RTEMS_API_Initialize( configuration_table ); 454da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 454dc: 4eb9 0004 5708 jsr 45708 <_RTEMS_API_Initialize> <== NOT EXECUTED _Extension_Manager_initialization( configuration_table->maximum_extensions ); 454e2: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 454e6: 4eb9 0004 5550 jsr 45550 <_Extension_Manager_initialization> <== NOT EXECUTED _IO_Manager_initialization( 454ec: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED 454f0: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED 454f4: 2f2a 0032 movel %a2@(50),%sp@- <== NOT EXECUTED 454f8: 4eb9 0004 55ca jsr 455ca <_IO_Manager_initialization> <== NOT EXECUTED configuration_table->number_of_device_drivers, configuration_table->maximum_drivers ); #ifdef RTEMS_POSIX_API _POSIX_API_Initialize( configuration_table ); 454fe: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 45504: 2e8a movel %a2,%sp@ <== NOT EXECUTED 45506: 4eb9 0004 565c jsr 4565c <_POSIX_API_Initialize> <== NOT EXECUTED * * At this point all API extensions are in place. After the call to * _Thread_Create_idle() _Thread_Executing and _Thread_Heir will be set. */ _Thread_Create_idle(); 4550c: 588f addql #4,%sp <== NOT EXECUTED /* * Scheduling can properly occur now as long as we avoid dispatching. */ } 4550e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45512: 4e5e unlk %fp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state ) { _System_state_Current = state; 45514: 7001 moveq #1,%d0 <== NOT EXECUTED 45516: 23c0 0005 800e movel %d0,5800e <_System_state_Current> <== NOT EXECUTED * * At this point all API extensions are in place. After the call to * _Thread_Create_idle() _Thread_Executing and _Thread_Heir will be set. */ _Thread_Create_idle(); 4551c: 4ef9 0004 6ac8 jmp 46ac8 <_Thread_Create_idle> <== NOT EXECUTED ... 000453e4 : _API_extensions_Run_predriver(); } void rtems_initialize_device_drivers(void) { 453e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * Initialize all the device drivers and initialize the MPCI layer. * * NOTE: The MPCI may be build upon a device driver. */ _IO_Initialize_all_drivers(); 453e8: 4eb9 0004 5594 jsr 45594 <_IO_Initialize_all_drivers> <== NOT EXECUTED * * The API extensions are supposed to create user initialization tasks. */ _API_extensions_Run_postdriver(); } 453ee: 4e5e unlk %fp <== NOT EXECUTED * Run the APIs and BSPs postdriver hooks. * * The API extensions are supposed to create user initialization tasks. */ _API_extensions_Run_postdriver(); 453f0: 4ef9 0004 57e6 jmp 457e6 <_API_extensions_Run_postdriver> <== NOT EXECUTED 000453d0 : _API_extensions_Run_postdriver(); } void rtems_initialize_start_multitasking(void) { 453d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ****** APPLICATION RUNS HERE ****** ****** RETURNS WHEN SYSTEM IS SHUT DOWN ****** ******************************************************************* ******************************************************************* *******************************************************************/ } 453d4: 4e5e unlk %fp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state ) { _System_state_Current = state; 453d6: 7002 moveq #2,%d0 <== NOT EXECUTED 453d8: 23c0 0005 800e movel %d0,5800e <_System_state_Current> <== NOT EXECUTED void rtems_initialize_start_multitasking(void) { _System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING ); _Thread_Start_multitasking(); 453de: 4ef9 0004 7744 jmp 47744 <_Thread_Start_multitasking> <== NOT EXECUTED 00044bd0 : rtems_status_code rtems_interrupt_catch( rtems_isr_entry new_isr_handler, rtems_vector_number vector, rtems_isr_entry *old_isr_handler ) { 44bd0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44bd4: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44bd8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 44bdc: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED if ( !_ISR_Is_vector_number_valid( vector ) ) 44be0: b1fc 0000 00ff cmpal #255,%a0 <== NOT EXECUTED 44be6: 6304 blss 44bec <== NOT EXECUTED 44be8: 700a moveq #10,%d0 <== NOT EXECUTED 44bea: 6020 bras 44c0c <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) 44bec: 4a81 tstl %d1 <== NOT EXECUTED 44bee: 671a beqs 44c0a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) 44bf0: 4a80 tstl %d0 <== NOT EXECUTED 44bf2: 6716 beqs 44c0a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _ISR_Install_vector( 44bf4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44bf6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 44bf8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 44bfa: 4eb9 0004 8066 jsr 48066 <_CPU_ISR_install_vector> <== NOT EXECUTED 44c00: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44c06: 4280 clrl %d0 <== NOT EXECUTED 44c08: 6002 bras 44c0c <== NOT EXECUTED vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; 44c0a: 7009 moveq #9,%d0 <== NOT EXECUTED } 44c0c: 4e5e unlk %fp <== NOT EXECUTED 44c0e: 4e75 rts 00045610 : */ #undef rtems_interrupt_disable rtems_interrupt_level rtems_interrupt_disable( void ) { 45610: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_interrupt_level previous_level; _ISR_Disable( previous_level ); 45614: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4561a: 40c0 movew %sr,%d0 <== NOT EXECUTED 4561c: 8280 orl %d0,%d1 <== NOT EXECUTED 4561e: 46c1 movew %d1,%sr <== NOT EXECUTED return previous_level; } 45620: 4e5e unlk %fp <== NOT EXECUTED 45622: 4e75 rts 00045624 : #undef rtems_interrupt_enable void rtems_interrupt_enable( rtems_interrupt_level previous_level ) { 45624: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Enable( previous_level ); 45628: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4562c: 46c0 movew %d0,%sr <== NOT EXECUTED } 4562e: 4e5e unlk %fp <== NOT EXECUTED 45630: 4e75 rts 00045632 : #undef rtems_interrupt_flash void rtems_interrupt_flash( rtems_interrupt_level previous_level ) { 45632: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Flash( previous_level ); 45636: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4563c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45640: 46c0 movew %d0,%sr <== NOT EXECUTED 45642: 8280 orl %d0,%d1 <== NOT EXECUTED 45644: 46c1 movew %d1,%sr <== NOT EXECUTED } 45646: 4e5e unlk %fp <== NOT EXECUTED 45648: 4e75 rts 0004564a : #undef rtems_interrupt_is_in_progress bool rtems_interrupt_is_in_progress( void ) { return _ISR_Is_in_progress(); 4564a: 2039 0005 9f1a movel 59f1a <_ISR_Nest_level>,%d0 <== NOT EXECUTED */ #undef rtems_interrupt_is_in_progress bool rtems_interrupt_is_in_progress( void ) { 45650: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _ISR_Is_in_progress(); 45654: 4a80 tstl %d0 <== NOT EXECUTED 45656: 56c0 sne %d0 <== NOT EXECUTED } 45658: 4e5e unlk %fp <== NOT EXECUTED 4565a: 4480 negl %d0 <== NOT EXECUTED 4565c: 4e75 rts <== NOT EXECUTED ... 0004b3fc : rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4b3fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b400: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b402: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4b406: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b408: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b40c: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4b410: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 4b416: 6504 bcss 4b41c <== NOT EXECUTED 4b418: 700a moveq #10,%d0 <== NOT EXECUTED 4b41a: 602c bras 4b448 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; 4b41c: 2002 movel %d2,%d0 <== NOT EXECUTED 4b41e: 2202 movel %d2,%d1 <== NOT EXECUTED 4b420: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4b426: e788 lsll #3,%d0 <== NOT EXECUTED 4b428: eb89 lsll #5,%d1 <== NOT EXECUTED 4b42a: 9280 subl %d0,%d1 <== NOT EXECUTED 4b42c: 2030 1808 movel %a0@(00000008,%d1:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4b430: 6716 beqs 4b448 <== NOT EXECUTED 4b432: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4b436: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b438: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b43c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 4b440: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b442: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b444: 4e5e unlk %fp <== 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; 4b446: 4ed1 jmp %a1@ <== NOT EXECUTED } 4b448: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b44a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b44c: 4e5e unlk %fp <== NOT EXECUTED 4b44e: 4e75 rts 0004b450 : rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4b450: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b454: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b456: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4b45a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b45c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b460: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4b464: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 4b46a: 6504 bcss 4b470 <== NOT EXECUTED 4b46c: 700a moveq #10,%d0 <== NOT EXECUTED 4b46e: 602c bras 4b49c <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; 4b470: 2002 movel %d2,%d0 <== NOT EXECUTED 4b472: 2202 movel %d2,%d1 <== NOT EXECUTED 4b474: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4b47a: e788 lsll #3,%d0 <== NOT EXECUTED 4b47c: eb89 lsll #5,%d1 <== NOT EXECUTED 4b47e: 9280 subl %d0,%d1 <== NOT EXECUTED 4b480: 2030 1814 movel %a0@(00000014,%d1:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4b484: 6716 beqs 4b49c <== NOT EXECUTED 4b486: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4b48a: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b48c: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b490: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 4b494: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b496: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b498: 4e5e unlk %fp <== 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; 4b49a: 4ed1 jmp %a1@ <== NOT EXECUTED } 4b49c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b49e: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b4a0: 4e5e unlk %fp <== NOT EXECUTED 4b4a2: 4e75 rts 0004a174 : rtems_status_code rtems_io_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4a174: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a178: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a17a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4a17e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4a182: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4a186: b2b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d1 <== NOT EXECUTED 4a18c: 6504 bcss 4a192 <== NOT EXECUTED 4a18e: 700a moveq #10,%d0 <== NOT EXECUTED 4a190: 602a bras 4a1bc <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; 4a192: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4a198: 2001 movel %d1,%d0 <== NOT EXECUTED 4a19a: e788 lsll #3,%d0 <== NOT EXECUTED 4a19c: 91c0 subal %d0,%a0 <== NOT EXECUTED 4a19e: 2001 movel %d1,%d0 <== NOT EXECUTED 4a1a0: eb88 lsll #5,%d0 <== NOT EXECUTED 4a1a2: 2030 0800 movel %a0@(00000000,%d0:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4a1a6: 6714 beqs 4a1bc <== NOT EXECUTED 4a1a8: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4a1ac: 2240 moveal %d0,%a1 <== NOT EXECUTED 4a1ae: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED 4a1b2: 2d41 0008 movel %d1,%fp@(8) <== NOT EXECUTED } 4a1b6: 241f movel %sp@+,%d2 <== NOT EXECUTED 4a1b8: 4e5e unlk %fp <== NOT EXECUTED 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; 4a1ba: 4ed1 jmp %a1@ <== NOT EXECUTED } 4a1bc: 241f movel %sp@+,%d2 <== NOT EXECUTED 4a1be: 4e5e unlk %fp <== NOT EXECUTED 4a1c0: 4e75 rts <== NOT EXECUTED ... 0004b4a4 : rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4b4a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b4a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b4aa: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4b4ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b4b0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b4b4: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4b4b8: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 4b4be: 6504 bcss 4b4c4 <== NOT EXECUTED 4b4c0: 700a moveq #10,%d0 <== NOT EXECUTED 4b4c2: 602c bras 4b4f0 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; 4b4c4: 2002 movel %d2,%d0 <== NOT EXECUTED 4b4c6: 2202 movel %d2,%d1 <== NOT EXECUTED 4b4c8: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4b4ce: e788 lsll #3,%d0 <== NOT EXECUTED 4b4d0: eb89 lsll #5,%d1 <== NOT EXECUTED 4b4d2: 9280 subl %d0,%d1 <== NOT EXECUTED 4b4d4: 2030 1804 movel %a0@(00000004,%d1:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4b4d8: 6716 beqs 4b4f0 <== NOT EXECUTED 4b4da: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4b4de: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b4e0: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b4e4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 4b4e8: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b4ea: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b4ec: 4e5e unlk %fp <== 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; 4b4ee: 4ed1 jmp %a1@ <== NOT EXECUTED } 4b4f0: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b4f2: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b4f4: 4e5e unlk %fp <== NOT EXECUTED 4b4f6: 4e75 rts 0004b4f8 : rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4b4f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b4fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b4fe: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4b502: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b504: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b508: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4b50c: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 4b512: 6504 bcss 4b518 <== NOT EXECUTED 4b514: 700a moveq #10,%d0 <== NOT EXECUTED 4b516: 602c bras 4b544 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; 4b518: 2002 movel %d2,%d0 <== NOT EXECUTED 4b51a: 2202 movel %d2,%d1 <== NOT EXECUTED 4b51c: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4b522: e788 lsll #3,%d0 <== NOT EXECUTED 4b524: eb89 lsll #5,%d1 <== NOT EXECUTED 4b526: 9280 subl %d0,%d1 <== NOT EXECUTED 4b528: 2030 180c movel %a0@(0000000c,%d1:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4b52c: 6716 beqs 4b544 <== NOT EXECUTED 4b52e: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4b532: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b534: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b538: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 4b53c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b53e: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b540: 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; 4b542: 4ed1 jmp %a1@ <== NOT EXECUTED } 4b544: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b546: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b548: 4e5e unlk %fp <== NOT EXECUTED 4b54a: 4e75 rts 000461d8 : 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 ) { 461d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 461dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461de: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 461e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 461e4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 461e8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * Validate the pointer data and contents passed in */ if ( !driver_table ) 461ec: 4a89 tstl %a1 <== NOT EXECUTED 461ee: 6700 00aa beqw 4629a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !registered_major ) 461f2: 4a8a tstl %a2 <== NOT EXECUTED 461f4: 6700 00a4 beqw 4629a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !driver_table->initialization_entry && !driver_table->open_entry ) 461f8: 4a91 tstl %a1@ <== NOT EXECUTED 461fa: 6608 bnes 46204 <== NOT EXECUTED 461fc: 4aa9 0004 tstl %a1@(4) <== NOT EXECUTED 46200: 6700 0098 beqw 4629a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; *registered_major = 0; 46204: 4292 clrl %a2@ <== NOT EXECUTED /* * The requested major number is higher than what is configured. */ if ( major >= _IO_Number_of_drivers ) 46206: 2239 0005 a0a2 movel 5a0a2 <_IO_Number_of_drivers>,%d1 <== NOT EXECUTED 4620c: b282 cmpl %d2,%d1 <== NOT EXECUTED 4620e: 6206 bhis 46216 <== NOT EXECUTED 46210: 700a moveq #10,%d0 <== NOT EXECUTED 46212: 6000 008c braw 462a0 <== NOT EXECUTED /* * Test for initialise/open being present to indicate the driver slot is * in use. */ if ( major == 0 ) { 46216: 4a82 tstl %d2 <== NOT EXECUTED 46218: 6632 bnes 4624c <== NOT EXECUTED bool found = false; for ( major = _IO_Number_of_drivers - 1 ; major ; major-- ) { 4621a: 2079 0005 a0a6 moveal 5a0a6 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 46220: 2001 movel %d1,%d0 <== NOT EXECUTED 46222: 2401 movel %d1,%d2 <== NOT EXECUTED 46224: e789 lsll #3,%d1 <== NOT EXECUTED 46226: eb88 lsll #5,%d0 <== NOT EXECUTED 46228: 91c1 subal %d1,%a0 <== NOT EXECUTED 4622a: 5382 subql #1,%d2 <== NOT EXECUTED 4622c: 41f0 08e8 lea %a0@(ffffffe8,%d0:l),%a0 <== NOT EXECUTED 46230: 6012 bras 46244 <== NOT EXECUTED if ( !_IO_Driver_address_table[major].initialization_entry && 46232: 4a90 tstl %a0@ <== NOT EXECUTED 46234: 6606 bnes 4623c <== NOT EXECUTED 46236: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 4623a: 6710 beqs 4624c <== NOT EXECUTED * in use. */ if ( major == 0 ) { bool found = false; for ( major = _IO_Number_of_drivers - 1 ; major ; major-- ) { 4623c: 5382 subql #1,%d2 <== NOT EXECUTED 4623e: d1fc ffff ffe8 addal #-24,%a0 <== NOT EXECUTED 46244: 4a82 tstl %d2 <== NOT EXECUTED 46246: 66ea bnes 46232 <== NOT EXECUTED 46248: 7005 moveq #5,%d0 <== NOT EXECUTED 4624a: 6054 bras 462a0 <== NOT EXECUTED if ( !found ) return RTEMS_TOO_MANY; } if ( _IO_Driver_address_table[major].initialization_entry || 4624c: 2202 movel %d2,%d1 <== NOT EXECUTED 4624e: 2002 movel %d2,%d0 <== NOT EXECUTED 46250: 2079 0005 a0a6 moveal 5a0a6 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 46256: e789 lsll #3,%d1 <== NOT EXECUTED 46258: eb88 lsll #5,%d0 <== NOT EXECUTED 4625a: 9081 subl %d1,%d0 <== NOT EXECUTED 4625c: d1c0 addal %d0,%a0 <== NOT EXECUTED 4625e: 4a90 tstl %a0@ <== NOT EXECUTED 46260: 663c bnes 4629e <== NOT EXECUTED 46262: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 46266: 6636 bnes 4629e <== NOT EXECUTED _IO_Driver_address_table[major].open_entry ) return RTEMS_RESOURCE_IN_USE; _IO_Driver_address_table[major] = *driver_table; 46268: 4878 0018 pea 18 <== NOT EXECUTED 4626c: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4626e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46270: 4eb9 0004 ca08 jsr 4ca08 <== NOT EXECUTED *registered_major = major; 46276: 2482 movel %d2,%a2@ <== NOT EXECUTED return rtems_io_initialize( major, 0, NULL ); } 46278: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED _IO_Driver_address_table[major] = *driver_table; *registered_major = major; return rtems_io_initialize( major, 0, NULL ); 4627c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 46280: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED _IO_Driver_address_table[major] = *driver_table; *registered_major = major; return rtems_io_initialize( major, 0, NULL ); 46284: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4628a: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 4628e: 42ae 000c clrl %fp@(12) <== NOT EXECUTED } 46292: 4e5e unlk %fp <== NOT EXECUTED _IO_Driver_address_table[major] = *driver_table; *registered_major = major; return rtems_io_initialize( major, 0, NULL ); 46294: 4ef9 0004 6018 jmp 46018 <== NOT EXECUTED 4629a: 7009 moveq #9,%d0 <== NOT EXECUTED 4629c: 6002 bras 462a0 <== NOT EXECUTED 4629e: 700c moveq #12,%d0 <== NOT EXECUTED } 462a0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 462a4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 462a8: 4e5e unlk %fp <== NOT EXECUTED 462aa: 4e75 rts 000462ac : */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) { 462ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 462b0: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED if ( major < _IO_Number_of_drivers ) { 462b4: b2b9 0005 a0a2 cmpl 5a0a2 <_IO_Number_of_drivers>,%d1 <== NOT EXECUTED 462ba: 6504 bcss 462c0 <== NOT EXECUTED 462bc: 700d moveq #13,%d0 <== NOT EXECUTED 462be: 6024 bras 462e4 <== NOT EXECUTED memset( 462c0: 4878 0018 pea 18 <== NOT EXECUTED 462c4: 2001 movel %d1,%d0 <== NOT EXECUTED 462c6: e789 lsll #3,%d1 <== NOT EXECUTED 462c8: eb88 lsll #5,%d0 <== NOT EXECUTED 462ca: 9081 subl %d1,%d0 <== NOT EXECUTED 462cc: d0b9 0005 a0a6 addl 5a0a6 <_IO_Driver_address_table>,%d0 <== NOT EXECUTED 462d2: 42a7 clrl %sp@- <== NOT EXECUTED 462d4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 462d6: 4eb9 0004 ca78 jsr 4ca78 <== NOT EXECUTED 462dc: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 462e2: 4280 clrl %d0 <== NOT EXECUTED sizeof( rtems_driver_address_table ) ); return RTEMS_SUCCESSFUL; } return RTEMS_UNSATISFIED; } 462e4: 4e5e unlk %fp <== NOT EXECUTED 462e6: 4e75 rts 0004b54c : rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4b54c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b550: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b552: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4b556: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b558: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b55c: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4b560: b4b9 0005 8716 cmpl 58716 <_IO_Number_of_drivers>,%d2 <== NOT EXECUTED 4b566: 6504 bcss 4b56c <== NOT EXECUTED 4b568: 700a moveq #10,%d0 <== NOT EXECUTED 4b56a: 602c bras 4b598 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; 4b56c: 2002 movel %d2,%d0 <== NOT EXECUTED 4b56e: 2202 movel %d2,%d1 <== NOT EXECUTED 4b570: 2079 0005 871a moveal 5871a <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4b576: e788 lsll #3,%d0 <== NOT EXECUTED 4b578: eb89 lsll #5,%d1 <== NOT EXECUTED 4b57a: 9280 subl %d0,%d1 <== NOT EXECUTED 4b57c: 2030 1810 movel %a0@(00000010,%d1:l),%d0 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4b580: 6716 beqs 4b598 <== NOT EXECUTED 4b582: 2d49 0010 movel %a1,%fp@(16) <== NOT EXECUTED 4b586: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b588: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b58c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } 4b590: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b592: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b594: 4e5e unlk %fp <== 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; 4b596: 4ed1 jmp %a1@ <== NOT EXECUTED } 4b598: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b59a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4b59c: 4e5e unlk %fp <== NOT EXECUTED 4b59e: 4e75 rts 0004718c : #include #include void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) { 4718c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47190: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 47194: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED uint32_t i; uint32_t api_index; Thread_Control *the_thread; Objects_Information *information; if ( !routine ) 47198: 4a8c tstl %a4 <== NOT EXECUTED 4719a: 673e beqs 471da <== NOT EXECUTED return; 4719c: 47f9 0006 2150 lea 62150 <_Objects_Information_table+0x4>,%a3 <== NOT EXECUTED for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) { if ( !_Objects_Information_table[ api_index ] ) 471a2: 2053 moveal %a3@,%a0 <== NOT EXECUTED 471a4: 4a88 tstl %a0 <== NOT EXECUTED 471a6: 6728 beqs 471d0 <== NOT EXECUTED continue; information = _Objects_Information_table[ api_index ][ 1 ]; 471a8: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED if ( information ) { 471ac: 4a8a tstl %a2 <== NOT EXECUTED 471ae: 6720 beqs 471d0 <== NOT EXECUTED 471b0: 7401 moveq #1,%d2 <== NOT EXECUTED 471b2: 6012 bras 471c6 <== NOT EXECUTED for ( i=1 ; i <= information->maximum ; i++ ) { the_thread = (Thread_Control *)information->local_table[ i ]; 471b4: 206a 001a moveal %a2@(26),%a0 <== NOT EXECUTED 471b8: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED if ( !the_thread ) 471bc: 6706 beqs 471c4 <== NOT EXECUTED continue; (*routine)(the_thread); 471be: 2f00 movel %d0,%sp@- <== NOT EXECUTED 471c0: 4e94 jsr %a4@ <== NOT EXECUTED 471c2: 588f addql #4,%sp <== NOT EXECUTED api_index++ ) { if ( !_Objects_Information_table[ api_index ] ) continue; information = _Objects_Information_table[ api_index ][ 1 ]; if ( information ) { for ( i=1 ; i <= information->maximum ; i++ ) { 471c4: 5282 addql #1,%d2 <== NOT EXECUTED 471c6: 4280 clrl %d0 <== NOT EXECUTED 471c8: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 471cc: b082 cmpl %d2,%d0 <== NOT EXECUTED 471ce: 64e4 bccs 471b4 <== NOT EXECUTED 471d0: 588b addql #4,%a3 <== NOT EXECUTED if ( !routine ) return; for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; 471d2: b7fc 0006 2160 cmpal #401760,%a3 <== NOT EXECUTED 471d8: 66c8 bnes 471a2 <== NOT EXECUTED (*routine)(the_thread); } } } } 471da: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 471e0: 4e5e unlk %fp <== NOT EXECUTED 471e2: 4e75 rts 0004cfe8 : Objects_Id id, const void *buffer, size_t size, uint32_t *count ) { 4cfe8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4cfec: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4cff0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4cff4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4cff8: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status core_status; if ( !buffer ) 4cffc: 4a84 tstl %d4 <== NOT EXECUTED 4cffe: 6756 beqs 4d056 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !count ) 4d000: 4a82 tstl %d2 <== NOT EXECUTED 4d002: 6752 beqs 4d056 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get ( Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) 4d004: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d008: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d00a: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 4d010: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4d016: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d01c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d01e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d022: 6704 beqs 4d028 <== NOT EXECUTED 4d024: 7004 moveq #4,%d0 <== NOT EXECUTED 4d026: 6030 bras 4d058 <== NOT EXECUTED case OBJECTS_LOCAL: core_status = _CORE_message_queue_Broadcast( 4d028: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d02a: 42a7 clrl %sp@- <== NOT EXECUTED 4d02c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d02e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4d032: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d034: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4d038: 4eb9 0005 0174 jsr 50174 <_CORE_message_queue_Broadcast> <== NOT EXECUTED 4d03e: 2400 movel %d0,%d2 <== NOT EXECUTED NULL, #endif count ); _Thread_Enable_dispatch(); 4d040: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED return 4d046: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d048: 4eb9 0004 d384 jsr 4d384 <_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 4d04e: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 4d054: 6002 bras 4d058 <== NOT EXECUTED 4d056: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d058: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d05e: 4e5e unlk %fp <== NOT EXECUTED 4d060: 4e75 rts <== NOT EXECUTED ... 0004d064 : uint32_t count, size_t max_message_size, rtems_attribute attribute_set, Objects_Id *id ) { 4d064: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4d068: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 4d06c: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4d070: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4d074: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4d078: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 4d07c: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED CORE_message_queue_Attributes the_msgq_attributes; #if defined(RTEMS_MULTIPROCESSING) bool is_global; #endif if ( !rtems_is_name_valid( name ) ) 4d080: 4a85 tstl %d5 <== NOT EXECUTED 4d082: 6606 bnes 4d08a <== NOT EXECUTED 4d084: 7003 moveq #3,%d0 <== NOT EXECUTED 4d086: 6000 00a6 braw 4d12e <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4d08a: 4a8c tstl %a4 <== NOT EXECUTED 4d08c: 6606 bnes 4d094 <== NOT EXECUTED 4d08e: 7009 moveq #9,%d0 <== NOT EXECUTED 4d090: 6000 009c braw 4d12e <== NOT EXECUTED if ( (is_global = _Attributes_Is_global( attribute_set ) ) && !_System_state_Is_multiprocessing ) return RTEMS_MP_NOT_CONFIGURED; #endif if ( count == 0 ) 4d094: 4a84 tstl %d4 <== NOT EXECUTED 4d096: 6606 bnes 4d09e <== NOT EXECUTED 4d098: 700a moveq #10,%d0 <== NOT EXECUTED 4d09a: 6000 0092 braw 4d12e <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( max_message_size == 0 ) 4d09e: 4a83 tstl %d3 <== NOT EXECUTED 4d0a0: 6606 bnes 4d0a8 <== NOT EXECUTED 4d0a2: 7008 moveq #8,%d0 <== NOT EXECUTED 4d0a4: 6000 0088 braw 4d12e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4d0a8: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4d0ae: 5280 addql #1,%d0 <== NOT EXECUTED 4d0b0: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED #endif #endif _Thread_Disable_dispatch(); /* protects object pointer */ the_message_queue = _Message_queue_Allocate(); 4d0b6: 4eb9 0005 53a0 jsr 553a0 <_Message_queue_Allocate> <== NOT EXECUTED 4d0bc: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !the_message_queue ) { 4d0be: 4a80 tstl %d0 <== NOT EXECUTED 4d0c0: 660a bnes 4d0cc <== NOT EXECUTED _Thread_Enable_dispatch(); 4d0c2: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d0c8: 7005 moveq #5,%d0 <== NOT EXECUTED 4d0ca: 6062 bras 4d12e <== 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; 4d0cc: 44c2 movew %d2,%ccr <== NOT EXECUTED 4d0ce: 56c0 sne %d0 <== NOT EXECUTED 4d0d0: 49c0 extbl %d0 <== NOT EXECUTED 4d0d2: 204e moveal %fp,%a0 <== NOT EXECUTED 4d0d4: 5280 addql #1,%d0 <== NOT EXECUTED 4d0d6: 2100 movel %d0,%a0@- <== NOT EXECUTED 4d0d8: 47f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_message_queue->attribute_set = attribute_set; 4d0de: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED if (_Attributes_Is_priority( attribute_set ) ) the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; else the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; if ( ! _CORE_message_queue_Initialize( 4d0e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d0e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d0e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d0e8: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4d0ec: 4eb9 0005 02a8 jsr 502a8 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4d0f2: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4d0f8: 4a00 tstb %d0 <== NOT EXECUTED 4d0fa: 6616 bnes 4d112 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Message_queue_Free ( Message_queue_Control *the_message_queue ) { _Objects_Free( &_Message_queue_Information, &the_message_queue->Object ); 4d0fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d0fe: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 4d104: 4eb9 0005 1634 jsr 51634 <_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(); 4d10a: 4e93 jsr %a3@ <== NOT EXECUTED 4d10c: 508f addql #8,%sp <== NOT EXECUTED 4d10e: 700d moveq #13,%d0 <== NOT EXECUTED 4d110: 601c bras 4d12e <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4d112: 2545 000c movel %d5,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4d116: 2079 0006 e298 moveal 6e298 <_Message_queue_Information+0x1a>,%a0 <== NOT EXECUTED 4d11c: 4280 clrl %d0 <== NOT EXECUTED 4d11e: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED &_Message_queue_Information, &the_message_queue->Object, (Objects_Name) name ); *id = the_message_queue->Object.id; 4d122: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED 4d126: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED name, 0 ); #endif _Thread_Enable_dispatch(); 4d12a: 4e93 jsr %a3@ <== NOT EXECUTED 4d12c: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4d12e: 4cee 1c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4d134: 4e5e unlk %fp <== NOT EXECUTED 4d136: 4e75 rts 0004f5a0 : */ rtems_status_code rtems_message_queue_delete( Objects_Id id ) { 4f5a0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f5a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get ( Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) 4f5a6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f5aa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f5ae: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f5b4: 4eb9 0004 a0e4 jsr 4a0e4 <_Objects_Get> <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4f5ba: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f5c0: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f5c2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f5c6: 6704 beqs 4f5cc <== NOT EXECUTED 4f5c8: 7004 moveq #4,%d0 <== NOT EXECUTED 4f5ca: 603a bras 4f606 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Message_queue_Information, 4f5cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f5ce: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f5d4: 4eb9 0004 9d0c jsr 49d0c <_Objects_Close> <== NOT EXECUTED &the_message_queue->Object ); _CORE_message_queue_Close( 4f5da: 4878 0005 pea 5 <== NOT EXECUTED 4f5de: 42a7 clrl %sp@- <== NOT EXECUTED 4f5e0: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4f5e4: 4eb9 0004 fba4 jsr 4fba4 <_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 ); 4f5ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f5ec: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f5f2: 4eb9 0004 9f84 jsr 49f84 <_Objects_Free> <== NOT EXECUTED 0, /* Not used */ 0 ); } #endif _Thread_Enable_dispatch(); 4f5f8: 4eb9 0004 a936 jsr 4a936 <_Thread_Enable_dispatch> <== NOT EXECUTED 4f5fe: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 4f604: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f606: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f60a: 4e5e unlk %fp <== NOT EXECUTED 4f60c: 4e75 rts <== NOT EXECUTED ... 0004d1a8 : rtems_status_code rtems_message_queue_flush( Objects_Id id, uint32_t *count ) { 4d1a8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d1ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d1ae: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 4d1b2: 4a8a tstl %a2 <== NOT EXECUTED 4d1b4: 6604 bnes 4d1ba <== NOT EXECUTED 4d1b6: 7009 moveq #9,%d0 <== NOT EXECUTED 4d1b8: 603c bras 4d1f6 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get ( Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) 4d1ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d1be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d1c2: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 4d1c8: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4d1ce: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d1d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d1d6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d1da: 6704 beqs 4d1e0 <== NOT EXECUTED 4d1dc: 7004 moveq #4,%d0 <== NOT EXECUTED 4d1de: 6016 bras 4d1f6 <== NOT EXECUTED case OBJECTS_LOCAL: *count = _CORE_message_queue_Flush( &the_message_queue->message_queue ); 4d1e0: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4d1e4: 4eb9 0005 022c jsr 5022c <_CORE_message_queue_Flush> <== NOT EXECUTED 4d1ea: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4d1ec: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d1f2: 588f addql #4,%sp <== NOT EXECUTED 4d1f4: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d1f6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4d1fa: 4e5e unlk %fp <== NOT EXECUTED 4d1fc: 4e75 rts <== NOT EXECUTED ... 0004d200 : rtems_status_code rtems_message_queue_get_number_pending( Objects_Id id, uint32_t *count ) { 4d200: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d204: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d206: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 4d20a: 4a8a tstl %a2 <== NOT EXECUTED 4d20c: 6604 bnes 4d212 <== NOT EXECUTED 4d20e: 7009 moveq #9,%d0 <== NOT EXECUTED 4d210: 6032 bras 4d244 <== NOT EXECUTED 4d212: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d216: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d21a: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 4d220: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4d226: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d22c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d22e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d232: 6704 beqs 4d238 <== NOT EXECUTED 4d234: 7004 moveq #4,%d0 <== NOT EXECUTED 4d236: 600c bras 4d244 <== NOT EXECUTED case OBJECTS_LOCAL: *count = the_message_queue->message_queue.number_of_pending_messages; 4d238: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4d23c: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d242: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d244: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4d248: 4e5e unlk %fp <== NOT EXECUTED 4d24a: 4e75 rts 0004f610 : rtems_status_code rtems_message_queue_ident( rtems_name name, uint32_t node, Objects_Id *id ) { 4f610: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4f614: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4f618: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f61c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f620: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f626: 4eb9 0004 a248 jsr 4a248 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4f62c: 41f9 0005 ed88 lea 5ed88 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED node, id ); return _Status_Object_name_errors_to_status[ status ]; } 4f632: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4f636: 4e5e unlk %fp <== NOT EXECUTED 4f638: 4e75 rts <== NOT EXECUTED ... 0004f63c : void *buffer, size_t *size, rtems_option option_set, rtems_interval timeout ) { 4f63c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4f640: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4f644: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4f648: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4f64c: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; bool wait; if ( !buffer ) 4f650: 4a84 tstl %d4 <== NOT EXECUTED 4f652: 6766 beqs 4f6ba <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 4f654: 4a83 tstl %d3 <== NOT EXECUTED 4f656: 6762 beqs 4f6ba <== NOT EXECUTED RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get ( Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) 4f658: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f65c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f660: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f666: 4eb9 0004 a0e4 jsr 4a0e4 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4f66c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f672: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f674: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f678: 6704 beqs 4f67e <== NOT EXECUTED 4f67a: 7004 moveq #4,%d0 <== NOT EXECUTED 4f67c: 603e bras 4f6bc <== NOT EXECUTED if ( _Options_Is_no_wait( option_set ) ) wait = false; else wait = true; _CORE_message_queue_Seize( 4f67e: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4f682: 7001 moveq #1,%d0 <== NOT EXECUTED 4f684: b182 eorl %d0,%d2 <== NOT EXECUTED 4f686: c082 andl %d2,%d0 <== NOT EXECUTED 4f688: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f68a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f68c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4f68e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4f692: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4f696: 4eb9 0004 fc44 jsr 4fc44 <_CORE_message_queue_Seize> <== NOT EXECUTED buffer, size, wait, timeout ); _Thread_Enable_dispatch(); 4f69c: 4eb9 0004 a936 jsr 4a936 <_Thread_Enable_dispatch> <== NOT EXECUTED return _Message_queue_Translate_core_message_queue_return_code( 4f6a2: 2079 0006 3ca2 moveal 63ca2 <_Thread_Executing>,%a0 <== NOT EXECUTED 4f6a8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4f6ac: 4eb9 0004 f748 jsr 4f748 <_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 4f6b2: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 4f6b8: 6002 bras 4f6bc <== NOT EXECUTED 4f6ba: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f6bc: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4f6c2: 4e5e unlk %fp <== NOT EXECUTED 4f6c4: 4e75 rts <== NOT EXECUTED ... 0004f6c8 : rtems_status_code rtems_message_queue_send( Objects_Id id, const void *buffer, size_t size ) { 4f6c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f6cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f6ce: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4f6d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f6d4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 4f6d8: 4a83 tstl %d3 <== NOT EXECUTED 4f6da: 6604 bnes 4f6e0 <== NOT EXECUTED 4f6dc: 7009 moveq #9,%d0 <== NOT EXECUTED 4f6de: 605a bras 4f73a <== NOT EXECUTED 4f6e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f6e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f6e6: 4879 0006 44aa pea 644aa <_Message_queue_Information> <== NOT EXECUTED 4f6ec: 4eb9 0004 a0e4 jsr 4a0e4 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4f6f2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f6f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f6fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f6fe: 6704 beqs 4f704 <== NOT EXECUTED 4f700: 7004 moveq #4,%d0 <== NOT EXECUTED 4f702: 6036 bras 4f73a <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 4f704: 42a7 clrl %sp@- <== NOT EXECUTED 4f706: 42a7 clrl %sp@- <== NOT EXECUTED 4f708: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4f70e: 42a7 clrl %sp@- <== NOT EXECUTED 4f710: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f712: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4f716: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f718: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4f71c: 4eb9 0004 fd84 jsr 4fd84 <_CORE_message_queue_Submit> <== NOT EXECUTED MESSAGE_QUEUE_MP_HANDLER, FALSE, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 4f722: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 4f728: 2400 movel %d0,%d2 <== NOT EXECUTED 4f72a: 4eb9 0004 a936 jsr 4a936 <_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); 4f730: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f732: 4eb9 0004 f748 jsr 4f748 <_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 4f738: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f73a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4f73e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4f742: 4e5e unlk %fp <== NOT EXECUTED 4f744: 4e75 rts <== NOT EXECUTED ... 0004d39c : rtems_status_code rtems_message_queue_urgent( Objects_Id id, const void *buffer, size_t size ) { 4d39c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d3a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d3a2: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4d3a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d3a8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 4d3ac: 4a83 tstl %d3 <== NOT EXECUTED 4d3ae: 6604 bnes 4d3b4 <== NOT EXECUTED 4d3b0: 7009 moveq #9,%d0 <== NOT EXECUTED 4d3b2: 605a bras 4d40e <== NOT EXECUTED 4d3b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d3b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d3ba: 4879 0006 e27e pea 6e27e <_Message_queue_Information> <== NOT EXECUTED 4d3c0: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4d3c6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d3cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d3ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d3d2: 6704 beqs 4d3d8 <== NOT EXECUTED 4d3d4: 7004 moveq #4,%d0 <== NOT EXECUTED 4d3d6: 6036 bras 4d40e <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 4d3d8: 42a7 clrl %sp@- <== NOT EXECUTED 4d3da: 42a7 clrl %sp@- <== NOT EXECUTED 4d3dc: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED 4d3e2: 42a7 clrl %sp@- <== NOT EXECUTED 4d3e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d3e6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4d3ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d3ec: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4d3f0: 4eb9 0005 04a4 jsr 504a4 <_CORE_message_queue_Submit> <== NOT EXECUTED id, MESSAGE_QUEUE_MP_HANDLER, FALSE, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 4d3f6: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 4d3fc: 2400 movel %d0,%d2 <== NOT EXECUTED 4d3fe: 4eb9 0005 1fae jsr 51fae <_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); 4d404: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d406: 4eb9 0004 d384 jsr 4d384 <_Message_queue_Translate_core_message_queue_return_code> <== NOT EXECUTED 4d40c: 588f addql #4,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d40e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4d412: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4d416: 4e5e unlk %fp <== NOT EXECUTED 4d418: 4e75 rts <== NOT EXECUTED ... 00044ea4 : #include int rtems_object_api_maximum_class( uint32_t api ) { 44ea4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_API_maximum_class(api); } 44ea8: 4e5e unlk %fp <== NOT EXECUTED int rtems_object_api_maximum_class( uint32_t api ) { return _Objects_API_maximum_class(api); 44eaa: 4ef9 0004 6430 jmp 46430 <_Objects_API_maximum_class> <== NOT EXECUTED 00044eb0 : #include uint32_t rtems_object_api_minimum_class( uint32_t api ) { 44eb0: 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 ) 44eb4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 44eb8: 7203 moveq #3,%d1 <== NOT EXECUTED 44eba: 5380 subql #1,%d0 <== NOT EXECUTED 44ebc: b280 cmpl %d0,%d1 <== NOT EXECUTED 44ebe: 55c0 scs %d0 <== NOT EXECUTED 44ec0: 49c0 extbl %d0 <== NOT EXECUTED if ( _Objects_Is_api_valid( api ) ) return 1; return -1; } 44ec2: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 44ec6: 4e5e unlk %fp <== NOT EXECUTED 44ec8: 8081 orl %d1,%d0 <== NOT EXECUTED 44eca: 4e75 rts 00044ecc : const char *rtems_object_get_api_class_name( uint32_t the_api, uint32_t the_class ) { 44ecc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44ed0: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44ed4: 2f02 movel %d2,%sp@- <== NOT EXECUTED const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) 44ed6: 203c 0005 7fc4 movel #360388,%d0 <== NOT EXECUTED 44edc: 7401 moveq #1,%d2 <== NOT EXECUTED 44ede: b481 cmpl %d1,%d2 <== NOT EXECUTED 44ee0: 671e beqs 44f00 <== NOT EXECUTED api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) 44ee2: 7402 moveq #2,%d2 <== NOT EXECUTED 44ee4: 203c 0005 7fdc movel #360412,%d0 <== NOT EXECUTED 44eea: b481 cmpl %d1,%d2 <== NOT EXECUTED 44eec: 6712 beqs 44f00 <== NOT EXECUTED api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) 44eee: 7403 moveq #3,%d2 <== NOT EXECUTED 44ef0: 203c 0005 67e1 movel #354273,%d0 <== NOT EXECUTED 44ef6: b481 cmpl %d1,%d2 <== NOT EXECUTED 44ef8: 6622 bnes 44f1c <== NOT EXECUTED 44efa: 203c 0005 8054 movel #360532,%d0 <== NOT EXECUTED else if ( the_api == OBJECTS_ITRON_API ) api_assoc = rtems_object_api_itron_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); 44f00: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 44f04: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44f06: 4eb9 0004 90c0 jsr 490c0 <== NOT EXECUTED 44f0c: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( class_assoc ) 44f0e: 508f addql #8,%sp <== NOT EXECUTED 44f10: 203c 0005 67e9 movel #354281,%d0 <== NOT EXECUTED 44f16: 4a88 tstl %a0 <== NOT EXECUTED 44f18: 6702 beqs 44f1c <== NOT EXECUTED return class_assoc->name; 44f1a: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 44f1c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44f20: 4e5e unlk %fp <== NOT EXECUTED 44f22: 4e75 rts 00044f24 : }; const char *rtems_object_get_api_name( uint32_t api ) { 44f24: 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 ); 44f28: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44f2c: 4879 0005 80e4 pea 580e4 <== NOT EXECUTED 44f32: 4eb9 0004 90c0 jsr 490c0 <== NOT EXECUTED 44f38: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( api_assoc ) 44f3a: 508f addql #8,%sp <== NOT EXECUTED 44f3c: 203c 0005 67e9 movel #354281,%d0 <== NOT EXECUTED 44f42: 4a88 tstl %a0 <== NOT EXECUTED 44f44: 6702 beqs 44f48 <== NOT EXECUTED return api_assoc->name; 44f46: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 44f48: 4e5e unlk %fp <== NOT EXECUTED 44f4a: 4e75 rts 000461d8 : rtems_status_code rtems_object_get_class_information( uint32_t the_api, uint32_t the_class, rtems_object_api_class_information *info ) { 461d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 461dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461de: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 461e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t i; /* * Validate parameters and look up information structure. */ if ( !info ) 461e4: 4a8a tstl %a2 <== NOT EXECUTED 461e6: 6604 bnes 461ec <== NOT EXECUTED 461e8: 7009 moveq #9,%d0 <== NOT EXECUTED 461ea: 6052 bras 4623e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; obj_info = _Objects_Get_information( the_api, the_class ); 461ec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 461f0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461f4: 4eb9 0004 7bac jsr 47bac <_Objects_Get_information> <== NOT EXECUTED if ( !obj_info ) 461fa: 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 ); 461fc: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !obj_info ) 461fe: 4a80 tstl %d0 <== NOT EXECUTED 46200: 6604 bnes 46206 <== NOT EXECUTED 46202: 700a moveq #10,%d0 <== NOT EXECUTED 46204: 6038 bras 4623e <== NOT EXECUTED return RTEMS_INVALID_NUMBER; /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; 46206: 24a9 0006 movel %a1@(6),%a2@ <== NOT EXECUTED info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 4620a: 4282 clrl %d2 <== NOT EXECUTED 4620c: 4281 clrl %d1 <== NOT EXECUTED 4620e: 3429 000e movew %a1@(14),%d2 <== NOT EXECUTED 46212: 7001 moveq #1,%d0 <== 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; 46214: 2569 000a 0004 movel %a1@(10),%a2@(4) <== NOT EXECUTED info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 4621a: 2542 0008 movel %d2,%a2@(8) <== 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; 4621e: 1569 0010 000c moveb %a1@(16),%a2@(12) <== NOT EXECUTED 46224: 600e bras 46234 <== NOT EXECUTED info->maximum = obj_info->maximum; for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) if ( !obj_info->local_table[i] ) 46226: 2069 001a moveal %a1@(26),%a0 <== NOT EXECUTED 4622a: 4ab0 0c00 tstl %a0@(00000000,%d0:l:4) <== NOT EXECUTED 4622e: 6602 bnes 46232 <== NOT EXECUTED unallocated++; 46230: 5281 addql #1,%d1 <== 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++ ) 46232: 5280 addql #1,%d0 <== NOT EXECUTED 46234: b480 cmpl %d0,%d2 <== NOT EXECUTED 46236: 64ee bccs 46226 <== NOT EXECUTED if ( !obj_info->local_table[i] ) unallocated++; info->unallocated = unallocated; 46238: 4280 clrl %d0 <== NOT EXECUTED 4623a: 2541 000e movel %d1,%a2@(14) <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4623e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46242: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46246: 4e5e unlk %fp <== NOT EXECUTED 46248: 4e75 rts <== NOT EXECUTED ... 0004582c : rtems_status_code rtems_object_get_classic_name( rtems_id id, rtems_name *name ) { 4582c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45830: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45832: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Name name_u; if ( !name ) 45836: 4a8a tstl %a2 <== NOT EXECUTED 45838: 6604 bnes 4583e <== NOT EXECUTED 4583a: 7009 moveq #9,%d0 <== NOT EXECUTED 4583c: 601e bras 4585c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; status = _Objects_Id_to_name( id, &name_u ); 4583e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45842: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45846: 4eb9 0004 725c jsr 4725c <_Objects_Id_to_name> <== NOT EXECUTED *name = name_u.name_u32; return _Status_Object_name_errors_to_status[ status ]; 4584c: 41f9 0005 71d8 lea 571d8 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED 45852: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 45856: 508f addql #8,%sp <== NOT EXECUTED if ( !name ) return RTEMS_INVALID_ADDRESS; status = _Objects_Id_to_name( id, &name_u ); *name = name_u.name_u32; 45858: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; } 4585c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 45860: 4e5e unlk %fp <== NOT EXECUTED 45862: 4e75 rts 0004f7f0 : char *rtems_object_get_name( Objects_Id id, size_t length, char *name ) { 4f7f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_name_as_string( id, length, name ); } 4f7f4: 4e5e unlk %fp <== NOT EXECUTED Objects_Id id, size_t length, char *name ) { return _Objects_Get_name_as_string( id, length, name ); 4f7f6: 4ef9 0005 0230 jmp 50230 <_Objects_Get_name_as_string> <== NOT EXECUTED 00046258 : #include #include #undef rtems_object_id_api_maximum uint32_t rtems_object_id_api_maximum(void) { 46258: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_ITRON_API; } 4625c: 4e5e unlk %fp <== NOT EXECUTED 4625e: 7004 moveq #4,%d0 <== NOT EXECUTED 46260: 4e75 rts <== NOT EXECUTED ... 00046264 : #include #include #undef rtems_object_id_api_minimum uint32_t rtems_object_id_api_minimum(void) { 46264: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_INTERNAL_API; } 46268: 4e5e unlk %fp <== NOT EXECUTED 4626a: 7001 moveq #1,%d0 <== NOT EXECUTED 4626c: 4e75 rts <== NOT EXECUTED ... 00046270 : #undef rtems_object_id_get_api uint32_t rtems_object_id_get_api( rtems_id id ) { 46270: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46274: 4280 clrl %d0 <== NOT EXECUTED 46276: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED return _Objects_Get_API( id ); } 4627a: 7207 moveq #7,%d1 <== NOT EXECUTED 4627c: 4e5e unlk %fp <== NOT EXECUTED 4627e: c081 andl %d1,%d0 <== NOT EXECUTED 46280: 4e75 rts <== NOT EXECUTED ... 00046284 : #undef rtems_object_id_get_class uint32_t rtems_object_id_get_class( rtems_id id ) { 46284: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46288: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED return _Objects_Get_class( id ); } 4628c: 721b moveq #27,%d1 <== NOT EXECUTED 4628e: 4e5e unlk %fp <== NOT EXECUTED 46290: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 46292: 4e75 rts 00046294 : #undef rtems_object_id_get_index uint32_t rtems_object_id_get_index( rtems_id id ) { 46294: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_index( id ); } 46298: 4280 clrl %d0 <== NOT EXECUTED 4629a: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 4629e: 4e5e unlk %fp <== NOT EXECUTED 462a0: 4e75 rts <== NOT EXECUTED ... 000462a4 : #undef rtems_object_id_get_node uint32_t rtems_object_id_get_node( rtems_id id ) { 462a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_node( id ); } 462a8: 4280 clrl %d0 <== NOT EXECUTED 462aa: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED 462ae: 4e5e unlk %fp <== NOT EXECUTED 462b0: 4e75 rts <== NOT EXECUTED ... 00044f58 : */ rtems_status_code rtems_object_set_name( rtems_id id, const char *name ) { 44f58: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 44f5c: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 44f60: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 44f64: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED Objects_Information *information; Objects_Locations location; Objects_Control *the_object; Objects_Id tmpId; if ( !name ) 44f68: 6604 bnes 44f6e <== NOT EXECUTED 44f6a: 7009 moveq #9,%d0 <== NOT EXECUTED 44f6c: 6058 bras 44fc6 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 44f6e: 4a80 tstl %d0 <== NOT EXECUTED 44f70: 6704 beqs 44f76 <== NOT EXECUTED 44f72: 2400 movel %d0,%d2 <== NOT EXECUTED 44f74: 600a bras 44f80 <== NOT EXECUTED 44f76: 2079 0005 98c6 moveal 598c6 <_Thread_Executing>,%a0 <== NOT EXECUTED 44f7c: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 44f80: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f82: 4eb9 0004 676c jsr 4676c <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 44f88: 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 ); 44f8a: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !information ) 44f8c: 6736 beqs 44fc4 <== NOT EXECUTED return RTEMS_INVALID_ID; the_object = _Objects_Get( information, tmpId, &location ); 44f8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44f92: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f94: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44f96: 4eb9 0004 6934 jsr 46934 <_Objects_Get> <== NOT EXECUTED switch ( location ) { 44f9c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44fa2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44fa6: 661c bnes 44fc4 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Set_name( information, the_object, name ); 44fa8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 44faa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44fac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44fae: 4eb9 0004 6aa0 jsr 46aa0 <_Objects_Set_name> <== NOT EXECUTED _Thread_Enable_dispatch(); 44fb4: 4eb9 0004 718e jsr 4718e <_Thread_Enable_dispatch> <== NOT EXECUTED 44fba: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44fc0: 4280 clrl %d0 <== NOT EXECUTED 44fc2: 6002 bras 44fc6 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 44fc4: 7004 moveq #4,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 44fc6: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 44fcc: 4e5e unlk %fp <== NOT EXECUTED 44fce: 4e75 rts 0004d41c : uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, Objects_Id *id ) { 4d41c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d420: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 4d424: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4d428: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4d42c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 4d430: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 4d434: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED register Partition_Control *the_partition; if ( !rtems_is_name_valid( name ) ) 4d438: 4a85 tstl %d5 <== NOT EXECUTED 4d43a: 6606 bnes 4d442 <== NOT EXECUTED 4d43c: 7003 moveq #3,%d0 <== NOT EXECUTED 4d43e: 6000 00b2 braw 4d4f2 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 4d442: 4a84 tstl %d4 <== NOT EXECUTED 4d444: 6700 00a6 beqw 4d4ec <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 4d448: 4a8c tstl %a4 <== NOT EXECUTED 4d44a: 6700 00a0 beqw 4d4ec <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( length == 0 || buffer_size == 0 || length < buffer_size || 4d44e: 4a82 tstl %d2 <== NOT EXECUTED 4d450: 6700 009e beqw 4d4f0 <== NOT EXECUTED 4d454: 4a83 tstl %d3 <== NOT EXECUTED 4d456: 6700 0098 beqw 4d4f0 <== NOT EXECUTED 4d45a: b682 cmpl %d2,%d3 <== NOT EXECUTED 4d45c: 6200 0092 bhiw 4d4f0 <== NOT EXECUTED 4d460: 7003 moveq #3,%d0 <== NOT EXECUTED 4d462: c083 andl %d3,%d0 <== NOT EXECUTED 4d464: 6600 008a bnew 4d4f0 <== NOT EXECUTED !_Partition_Is_buffer_size_aligned( buffer_size ) ) return RTEMS_INVALID_SIZE; if ( !_Addresses_Is_aligned( starting_address ) ) 4d468: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 4d46c: c084 andl %d4,%d0 <== NOT EXECUTED 4d46e: 667c bnes 4d4ec <== NOT EXECUTED 4d470: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4d476: 5280 addql #1,%d0 <== NOT EXECUTED 4d478: 23c0 0006 da18 movel %d0,6da18 <_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 ); 4d47e: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d484: 4eb9 0005 1334 jsr 51334 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_partition = _Partition_Allocate(); if ( !the_partition ) { 4d48a: 588f addql #4,%sp <== NOT EXECUTED 4d48c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d48e: 47f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4d494: 4a80 tstl %d0 <== NOT EXECUTED 4d496: 6606 bnes 4d49e <== NOT EXECUTED _Thread_Enable_dispatch(); 4d498: 4e93 jsr %a3@ <== NOT EXECUTED 4d49a: 7005 moveq #5,%d0 <== NOT EXECUTED 4d49c: 6054 bras 4d4f2 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; 4d49e: 2544 0010 movel %d4,%a2@(16) <== NOT EXECUTED the_partition->length = length; the_partition->buffer_size = buffer_size; the_partition->attribute_set = attribute_set; 4d4a2: 256e 0018 001c movel %fp@(24),%a2@(28) <== NOT EXECUTED return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; the_partition->length = length; 4d4a8: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED the_partition->buffer_size = buffer_size; the_partition->attribute_set = attribute_set; the_partition->number_of_used_blocks = 0; _Chain_Initialize( &the_partition->Memory, starting_address, 4d4ac: 4c43 2002 remul %d3,%d2,%d2 <== NOT EXECUTED } #endif the_partition->starting_address = starting_address; the_partition->length = length; the_partition->buffer_size = buffer_size; 4d4b0: 2543 0018 movel %d3,%a2@(24) <== NOT EXECUTED the_partition->attribute_set = attribute_set; the_partition->number_of_used_blocks = 0; 4d4b4: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED _Chain_Initialize( &the_partition->Memory, starting_address, 4d4b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d4ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d4bc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d4be: 486a 0024 pea %a2@(36) <== NOT EXECUTED 4d4c2: 4eb9 0005 0138 jsr 50138 <_Chain_Initialize> <== NOT EXECUTED 4d4c8: 2079 0006 d85e moveal 6d85e <_Partition_Information+0x1a>,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4d4ce: 2545 000c movel %d5,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4d4d2: 4280 clrl %d0 <== NOT EXECUTED 4d4d4: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 4d4d8: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_Partition_Information, &the_partition->Object, (Objects_Name) name ); *id = the_partition->Object.id; 4d4dc: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 4d4e0: 4e93 jsr %a3@ <== NOT EXECUTED 4d4e2: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4d4e8: 4280 clrl %d0 <== NOT EXECUTED 4d4ea: 6006 bras 4d4f2 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4d4ec: 7009 moveq #9,%d0 <== NOT EXECUTED 4d4ee: 6002 bras 4d4f2 <== NOT EXECUTED 4d4f0: 7008 moveq #8,%d0 <== NOT EXECUTED } 4d4f2: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4d4f8: 4e5e unlk %fp <== NOT EXECUTED 4d4fa: 4e75 rts 0004d4fc : */ rtems_status_code rtems_partition_delete( Objects_Id id ) { 4d4fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d500: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d502: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get ( Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) 4d504: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d508: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d50c: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d512: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4d518: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d51e: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d520: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d524: 6704 beqs 4d52a <== NOT EXECUTED 4d526: 7004 moveq #4,%d0 <== NOT EXECUTED 4d528: 6038 bras 4d562 <== NOT EXECUTED 4d52a: 47f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_partition->number_of_used_blocks == 0 ) { 4d530: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED 4d534: 6628 bnes 4d55e <== NOT EXECUTED _Objects_Close( &_Partition_Information, &the_partition->Object ); 4d536: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d538: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d53e: 4eb9 0005 13bc jsr 513bc <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Partition_Free ( Partition_Control *the_partition ) { _Objects_Free( &_Partition_Information, &the_partition->Object ); 4d544: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d546: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d54c: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 4d552: 4e93 jsr %a3@ <== NOT EXECUTED 4d554: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4d55a: 4280 clrl %d0 <== NOT EXECUTED 4d55c: 6004 bras 4d562 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 4d55e: 4e93 jsr %a3@ <== NOT EXECUTED 4d560: 700c moveq #12,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d562: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4d566: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4d56a: 4e5e unlk %fp <== NOT EXECUTED 4d56c: 4e75 rts <== NOT EXECUTED ... 0004d570 : rtems_status_code rtems_partition_get_buffer( Objects_Id id, void **buffer ) { 4d570: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4d574: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4d578: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; void *the_buffer; if ( !buffer ) 4d57c: 4a8b tstl %a3 <== NOT EXECUTED 4d57e: 6604 bnes 4d584 <== NOT EXECUTED 4d580: 7009 moveq #9,%d0 <== NOT EXECUTED 4d582: 604c bras 4d5d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get ( Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) 4d584: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d588: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d58c: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d592: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4d598: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d59e: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d5a0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d5a4: 6704 beqs 4d5aa <== NOT EXECUTED 4d5a6: 7004 moveq #4,%d0 <== NOT EXECUTED 4d5a8: 6026 bras 4d5d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer ( Partition_Control *the_partition ) { return _Chain_Get( &the_partition->Memory ); 4d5aa: 486a 0024 pea %a2@(36) <== NOT EXECUTED 4d5ae: 4eb9 0005 0104 jsr 50104 <_Chain_Get> <== NOT EXECUTED case OBJECTS_LOCAL: the_buffer = _Partition_Allocate_buffer( the_partition ); if ( the_buffer ) { 4d5b4: 588f addql #4,%sp <== NOT EXECUTED 4d5b6: 2400 movel %d0,%d2 <== NOT EXECUTED 4d5b8: 41f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 4d5be: 670c beqs 4d5cc <== NOT EXECUTED the_partition->number_of_used_blocks += 1; 4d5c0: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 4d5c4: 4e90 jsr %a0@ <== NOT EXECUTED *buffer = the_buffer; 4d5c6: 4280 clrl %d0 <== NOT EXECUTED 4d5c8: 2682 movel %d2,%a3@ <== NOT EXECUTED 4d5ca: 6004 bras 4d5d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 4d5cc: 4e90 jsr %a0@ <== NOT EXECUTED 4d5ce: 700d moveq #13,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d5d0: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4d5d6: 4e5e unlk %fp <== NOT EXECUTED 4d5d8: 4e75 rts <== NOT EXECUTED ... 0004d5dc : rtems_status_code rtems_partition_ident( rtems_name name, uint32_t node, Objects_Id *id ) { 4d5dc: 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 ); 4d5e0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4d5e4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d5e8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d5ec: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d5f2: 4eb9 0005 1930 jsr 51930 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4d5f8: 41f9 0006 6922 lea 66922 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; } 4d5fe: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4d602: 4e5e unlk %fp <== NOT EXECUTED 4d604: 4e75 rts <== NOT EXECUTED ... 0004d608 : rtems_status_code rtems_partition_return_buffer( Objects_Id id, void *buffer ) { 4d608: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4d60c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get ( Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) 4d610: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d614: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d618: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d61c: 4879 0006 d844 pea 6d844 <_Partition_Information> <== NOT EXECUTED 4d622: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4d628: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d62e: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d630: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d634: 6704 beqs 4d63a <== NOT EXECUTED 4d636: 7004 moveq #4,%d0 <== NOT EXECUTED 4d638: 6044 bras 4d67e <== NOT EXECUTED ) { void *starting; void *ending; starting = the_partition->starting_address; 4d63a: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED ending = _Addresses_Add_offset( starting, the_partition->length ); 4d63e: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED void *address, void *base, void *limit ) { return (address >= base && address <= limit); 4d642: b282 cmpl %d2,%d1 <== NOT EXECUTED 4d644: 6242 bhis 4d688 <== NOT EXECUTED 4d646: d081 addl %d1,%d0 <== NOT EXECUTED 4d648: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d64a: 54c0 scc %d0 <== NOT EXECUTED 4d64c: 49c0 extbl %d0 <== NOT EXECUTED 4d64e: 4480 negl %d0 <== NOT EXECUTED return ( 4d650: 4a00 tstb %d0 <== NOT EXECUTED 4d652: 6734 beqs 4d688 <== NOT EXECUTED 4d654: 2002 movel %d2,%d0 <== NOT EXECUTED 4d656: 9081 subl %d1,%d0 <== NOT EXECUTED 4d658: 2200 movel %d0,%d1 <== NOT EXECUTED 4d65a: 4c6a 1003 0018 remul %a2@(24),%d3,%d1 <== NOT EXECUTED 4d660: 4a83 tstl %d3 <== NOT EXECUTED 4d662: 6624 bnes 4d688 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Partition_Free_buffer ( Partition_Control *the_partition, Chain_Node *the_buffer ) { _Chain_Append( &the_partition->Memory, the_buffer ); 4d664: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d666: 486a 0024 pea %a2@(36) <== NOT EXECUTED 4d66a: 4eb9 0005 00cc jsr 500cc <_Chain_Append> <== 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; 4d670: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 4d674: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d67a: 508f addql #8,%sp <== NOT EXECUTED 4d67c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d67e: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 4d684: 4e5e unlk %fp <== NOT EXECUTED 4d686: 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(); 4d688: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d68e: 7009 moveq #9,%d0 <== NOT EXECUTED 4d690: 60ec bras 4d67e <== NOT EXECUTED ... 0004ca68 : void *internal_start, void *external_start, uint32_t length, Objects_Id *id ) { 4ca68: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4ca6c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4ca70: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ca74: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4ca78: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4ca7c: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; if ( !rtems_is_name_valid( name) ) 4ca80: 4a82 tstl %d2 <== NOT EXECUTED 4ca82: 6604 bnes 4ca88 <== NOT EXECUTED 4ca84: 7003 moveq #3,%d0 <== NOT EXECUTED 4ca86: 606e bras 4caf6 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4ca88: 4a8b tstl %a3 <== NOT EXECUTED 4ca8a: 6768 beqs 4caf4 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_Addresses_Is_aligned( internal_start ) || 4ca8c: 2004 movel %d4,%d0 <== NOT EXECUTED 4ca8e: 8083 orl %d3,%d0 <== NOT EXECUTED 4ca90: 7203 moveq #3,%d1 <== NOT EXECUTED 4ca92: c081 andl %d1,%d0 <== NOT EXECUTED 4ca94: 665e bnes 4caf4 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4ca96: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4ca9c: 5280 addql #1,%d0 <== NOT EXECUTED 4ca9e: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * of free port control blocks. */ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Allocate ( void ) { return (Dual_ported_memory_Control *) 4caa4: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4caaa: 4eb9 0005 1334 jsr 51334 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_port = _Dual_ported_memory_Allocate(); if ( !the_port ) { 4cab0: 588f addql #4,%sp <== NOT EXECUTED 4cab2: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cab4: 45f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 4caba: 4a80 tstl %d0 <== NOT EXECUTED 4cabc: 6606 bnes 4cac4 <== NOT EXECUTED _Thread_Enable_dispatch(); 4cabe: 4e92 jsr %a2@ <== NOT EXECUTED 4cac0: 7005 moveq #5,%d0 <== NOT EXECUTED 4cac2: 6032 bras 4caf6 <== NOT EXECUTED return RTEMS_TOO_MANY; } the_port->internal_base = internal_start; the_port->external_base = external_start; the_port->length = length - 1; 4cac4: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 4cac8: 5380 subql #1,%d0 <== NOT EXECUTED 4caca: 2340 0018 movel %d0,%a1@(24) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4cace: 2079 0006 d822 moveal 6d822 <_Dual_ported_memory_Information+0x1a>,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4cad4: 2342 000c movel %d2,%a1@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4cad8: 4280 clrl %d0 <== NOT EXECUTED 4cada: 3029 000a movew %a1@(10),%d0 <== NOT EXECUTED 4cade: 2189 0c00 movel %a1,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_Dual_ported_memory_Information, &the_port->Object, (Objects_Name) name ); *id = the_port->Object.id; 4cae2: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED if ( !the_port ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_port->internal_base = internal_start; 4cae6: 2343 0010 movel %d3,%a1@(16) <== NOT EXECUTED the_port->external_base = external_start; 4caea: 2344 0014 movel %d4,%a1@(20) <== NOT EXECUTED &the_port->Object, (Objects_Name) name ); *id = the_port->Object.id; _Thread_Enable_dispatch(); 4caee: 4e92 jsr %a2@ <== NOT EXECUTED 4caf0: 4280 clrl %d0 <== NOT EXECUTED 4caf2: 6002 bras 4caf6 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4caf4: 7009 moveq #9,%d0 <== NOT EXECUTED } 4caf6: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4cafc: 4e5e unlk %fp <== NOT EXECUTED 4cafe: 4e75 rts 0004cb00 : */ rtems_status_code rtems_port_delete( Objects_Id id ) { 4cb00: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cb04: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get ( Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) 4cb06: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cb0a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cb0e: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cb14: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4cb1a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4cb20: 2400 movel %d0,%d2 <== NOT EXECUTED 4cb22: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cb26: 6704 beqs 4cb2c <== NOT EXECUTED 4cb28: 7004 moveq #4,%d0 <== NOT EXECUTED 4cb2a: 602a bras 4cb56 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Dual_ported_memory_Information, &the_port->Object ); 4cb2c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cb2e: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cb34: 4eb9 0005 13bc jsr 513bc <_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 ); 4cb3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb3c: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cb42: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED _Dual_ported_memory_Free( the_port ); _Thread_Enable_dispatch(); 4cb48: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4cb4e: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4cb54: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4cb56: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4cb5a: 4e5e unlk %fp <== NOT EXECUTED 4cb5c: 4e75 rts <== NOT EXECUTED ... 0004cb60 : rtems_status_code rtems_port_external_to_internal( Objects_Id id, void *external, void **internal ) { 4cb60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cb64: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb66: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 4cb6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb6c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !internal ) 4cb70: 4a8a tstl %a2 <== NOT EXECUTED 4cb72: 6604 bnes 4cb78 <== NOT EXECUTED 4cb74: 7009 moveq #9,%d0 <== NOT EXECUTED 4cb76: 6044 bras 4cbbc <== NOT EXECUTED RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get ( Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) 4cb78: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cb7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cb80: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cb86: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4cb8c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4cb92: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cb94: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cb98: 6704 beqs 4cb9e <== NOT EXECUTED 4cb9a: 7004 moveq #4,%d0 <== NOT EXECUTED 4cb9c: 601e bras 4cbbc <== NOT EXECUTED RTEMS_INLINE_ROUTINE uint32_t _Addresses_Subtract ( void *left, void *right ) { return ((char *) left - (char *) right); 4cb9e: 2002 movel %d2,%d0 <== NOT EXECUTED 4cba0: 90a8 0014 subl %a0@(20),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( external, the_port->external_base ); if ( ending > the_port->length ) 4cba4: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 4cba8: 6304 blss 4cbae <== NOT EXECUTED *internal = external; 4cbaa: 2482 movel %d2,%a2@ <== NOT EXECUTED 4cbac: 6006 bras 4cbb4 <== NOT EXECUTED else *internal = _Addresses_Add_offset( the_port->internal_base, 4cbae: d0a8 0010 addl %a0@(16),%d0 <== NOT EXECUTED 4cbb2: 2480 movel %d0,%a2@ <== NOT EXECUTED ending ); _Thread_Enable_dispatch(); 4cbb4: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4cbba: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4cbbc: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4cbc0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cbc4: 4e5e unlk %fp <== NOT EXECUTED 4cbc6: 4e75 rts 0004cbc8 : rtems_status_code rtems_port_ident( rtems_name name, Objects_Id *id ) { 4cbc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4cbcc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4cbd0: 42a7 clrl %sp@- <== NOT EXECUTED 4cbd2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cbd6: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cbdc: 4eb9 0005 1930 jsr 51930 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4cbe2: 41f9 0006 6922 lea 66922 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_ALL_NODES, id ); return _Status_Object_name_errors_to_status[ status ]; } 4cbe8: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4cbec: 4e5e unlk %fp <== NOT EXECUTED 4cbee: 4e75 rts 0004cbf0 : rtems_status_code rtems_port_internal_to_external( Objects_Id id, void *internal, void **external ) { 4cbf0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cbf4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cbf6: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 4cbfa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cbfc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !external ) 4cc00: 4a8a tstl %a2 <== NOT EXECUTED 4cc02: 6604 bnes 4cc08 <== NOT EXECUTED 4cc04: 7009 moveq #9,%d0 <== NOT EXECUTED 4cc06: 6044 bras 4cc4c <== NOT EXECUTED 4cc08: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cc0c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cc10: 4879 0006 d808 pea 6d808 <_Dual_ported_memory_Information> <== NOT EXECUTED 4cc16: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4cc1c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4cc22: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cc24: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cc28: 6704 beqs 4cc2e <== NOT EXECUTED 4cc2a: 7004 moveq #4,%d0 <== NOT EXECUTED 4cc2c: 601e bras 4cc4c <== NOT EXECUTED 4cc2e: 2002 movel %d2,%d0 <== NOT EXECUTED 4cc30: 90a8 0010 subl %a0@(16),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( internal, the_port->internal_base ); if ( ending > the_port->length ) 4cc34: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 4cc38: 6304 blss 4cc3e <== NOT EXECUTED *external = internal; 4cc3a: 2482 movel %d2,%a2@ <== NOT EXECUTED 4cc3c: 6006 bras 4cc44 <== NOT EXECUTED else *external = _Addresses_Add_offset( the_port->external_base, 4cc3e: d0a8 0014 addl %a0@(20),%d0 <== NOT EXECUTED 4cc42: 2480 movel %d0,%a2@ <== NOT EXECUTED ending ); _Thread_Enable_dispatch(); 4cc44: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4cc4a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4cc4c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4cc50: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cc54: 4e5e unlk %fp <== NOT EXECUTED 4cc56: 4e75 rts 0004d694 : */ rtems_status_code rtems_rate_monotonic_cancel( Objects_Id id ) { 4d694: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d698: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d69a: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get ( Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) 4d69c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d6a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d6a4: 4879 0006 d880 pea 6d880 <_Rate_monotonic_Information> <== NOT EXECUTED 4d6aa: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4d6b0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d6b6: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d6b8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d6bc: 6704 beqs 4d6c2 <== NOT EXECUTED 4d6be: 7004 moveq #4,%d0 <== NOT EXECUTED 4d6c0: 602c bras 4d6ee <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 4d6c2: 2039 0006 dad6 movel 6dad6 <_Thread_Executing>,%d0 <== NOT EXECUTED 4d6c8: 47f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4d6ce: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4d6d2: 6706 beqs 4d6da <== NOT EXECUTED _Thread_Enable_dispatch(); 4d6d4: 4e93 jsr %a3@ <== NOT EXECUTED 4d6d6: 7017 moveq #23,%d0 <== NOT EXECUTED 4d6d8: 6014 bras 4d6ee <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; } (void) _Watchdog_Remove( &the_period->Timer ); 4d6da: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4d6de: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 4d6e4: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED _Thread_Enable_dispatch(); 4d6e8: 4e93 jsr %a3@ <== NOT EXECUTED 4d6ea: 588f addql #4,%sp <== NOT EXECUTED 4d6ec: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d6ee: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4d6f2: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4d6f6: 4e5e unlk %fp <== NOT EXECUTED 4d6f8: 4e75 rts <== NOT EXECUTED ... 00045900 : rtems_status_code rtems_rate_monotonic_create( rtems_name name, Objects_Id *id ) { 45900: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45904: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 45908: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4590c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED Rate_monotonic_Control *the_period; if ( !rtems_is_name_valid( name ) ) 45910: 6606 bnes 45918 <== NOT EXECUTED 45912: 7003 moveq #3,%d0 <== NOT EXECUTED 45914: 6000 00a6 braw 459bc <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 45918: 4a8c tstl %a4 <== NOT EXECUTED 4591a: 6606 bnes 45922 <== NOT EXECUTED 4591c: 7009 moveq #9,%d0 <== NOT EXECUTED 4591e: 6000 009c braw 459bc <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45922: 2039 0005 a988 movel 5a988 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45928: 5280 addql #1,%d0 <== NOT EXECUTED 4592a: 23c0 0005 a988 movel %d0,5a988 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * This function allocates a period control block from * the inactive chain of free period control blocks. */ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void ) { return (Rate_monotonic_Control *) 45930: 4879 0005 a880 pea 5a880 <_Rate_monotonic_Information> <== NOT EXECUTED 45936: 4eb9 0004 765c jsr 4765c <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_period = _Rate_monotonic_Allocate(); if ( !the_period ) { 4593c: 588f addql #4,%sp <== NOT EXECUTED 4593e: 2440 moveal %d0,%a2 <== NOT EXECUTED 45940: 47f9 0004 838a lea 4838a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 45946: 4a80 tstl %d0 <== NOT EXECUTED 45948: 6606 bnes 45950 <== NOT EXECUTED _Thread_Enable_dispatch(); 4594a: 4e93 jsr %a3@ <== NOT EXECUTED 4594c: 7005 moveq #5,%d0 <== NOT EXECUTED 4594e: 606c bras 459bc <== NOT EXECUTED return RTEMS_TOO_MANY; } the_period->owner = _Thread_Executing; 45950: 41f9 0005 aa46 lea 5aa46 <_Thread_Executing>,%a0 <== NOT EXECUTED 45956: 2550 0050 movel %a0@,%a2@(80) <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 4595a: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4595e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 45962: 42aa 002c clrl %a2@(44) <== NOT EXECUTED the_watchdog->id = id; 45966: 42aa 0030 clrl %a2@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 4596a: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED _Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL ); _Rate_monotonic_Reset_statistics( the_period ); 4596e: 4878 0038 pea 38 <== NOT EXECUTED 45972: 42a7 clrl %sp@- <== NOT EXECUTED 45974: 486a 0054 pea %a2@(84) <== NOT EXECUTED 45978: 4eb9 0004 d714 jsr 4d714 <== NOT EXECUTED 4597e: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 45984: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45988: 2079 0005 a89a moveal 5a89a <_Rate_monotonic_Information+0x1a>,%a0 <== NOT EXECUTED 4598e: 4280 clrl %d0 <== NOT EXECUTED 45990: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 45994: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED 45998: 207c 7fff ffff moveal #2147483647,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4599e: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 459a2: 2548 0060 movel %a0,%a2@(96) <== NOT EXECUTED 459a6: 2548 0074 movel %a0,%a2@(116) <== NOT EXECUTED 459aa: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED &_Rate_monotonic_Information, &the_period->Object, (Objects_Name) name ); *id = the_period->Object.id; 459ae: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 459b2: 4e93 jsr %a3@ <== NOT EXECUTED 459b4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 459ba: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 459bc: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 459c2: 4e5e unlk %fp <== NOT EXECUTED 459c4: 4e75 rts <== NOT EXECUTED ... 0004d7c4 : */ rtems_status_code rtems_rate_monotonic_delete( Objects_Id id ) { 4d7c4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4d7c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get ( Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) 4d7ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d7ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d7d2: 4879 0006 d880 pea 6d880 <_Rate_monotonic_Information> <== NOT EXECUTED 4d7d8: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4d7de: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4d7e4: 2440 moveal %d0,%a2 <== NOT EXECUTED 4d7e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4d7ea: 6704 beqs 4d7f0 <== NOT EXECUTED 4d7ec: 7004 moveq #4,%d0 <== NOT EXECUTED 4d7ee: 6038 bras 4d828 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Rate_monotonic_Information, &the_period->Object ); 4d7f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d7f2: 4879 0006 d880 pea 6d880 <_Rate_monotonic_Information> <== NOT EXECUTED 4d7f8: 4eb9 0005 13bc jsr 513bc <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_period->Timer ); 4d7fe: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4d802: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 4d808: 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 ); 4d80c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d80e: 4879 0006 d880 pea 6d880 <_Rate_monotonic_Information> <== NOT EXECUTED 4d814: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED _Rate_monotonic_Free( the_period ); _Thread_Enable_dispatch(); 4d81a: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4d820: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4d826: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4d828: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4d82c: 4e5e unlk %fp <== NOT EXECUTED 4d82e: 4e75 rts 00066de4 : rtems_status_code rtems_rate_monotonic_get_statistics( Objects_Id id, rtems_rate_monotonic_period_statistics *statistics ) { 66de4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 66de8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 66dea: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; if ( !statistics ) 66dee: 6604 bnes 66df4 <== NOT EXECUTED 66df0: 7009 moveq #9,%d0 <== NOT EXECUTED 66df2: 6044 bras 66e38 <== NOT EXECUTED 66df4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 66df8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 66dfc: 4879 0009 43a4 pea 943a4 <_Rate_monotonic_Information> <== NOT EXECUTED 66e02: 4eb9 0004 a24c jsr 4a24c <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 66e08: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 66e0e: 2040 moveal %d0,%a0 <== NOT EXECUTED 66e10: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 66e14: 6704 beqs 66e1a <== NOT EXECUTED 66e16: 7004 moveq #4,%d0 <== NOT EXECUTED 66e18: 601e bras 66e38 <== NOT EXECUTED case OBJECTS_LOCAL: *statistics = the_period->Statistics; 66e1a: 4878 0038 pea 38 <== NOT EXECUTED 66e1e: 4868 0054 pea %a0@(84) <== NOT EXECUTED 66e22: 2f02 movel %d2,%sp@- <== NOT EXECUTED 66e24: 4eb9 0006 aeec jsr 6aeec <== NOT EXECUTED _Thread_Enable_dispatch(); 66e2a: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 66e30: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 66e36: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 66e38: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 66e3c: 4e5e unlk %fp <== NOT EXECUTED 66e3e: 4e75 rts 00066e40 : rtems_status_code rtems_rate_monotonic_get_status( Objects_Id id, rtems_rate_monotonic_period_status *status ) { 66e40: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 66e44: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 66e48: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; if ( !status ) 66e4c: 4a8b tstl %a3 <== NOT EXECUTED 66e4e: 6606 bnes 66e56 <== NOT EXECUTED 66e50: 7009 moveq #9,%d0 <== NOT EXECUTED 66e52: 6000 0094 braw 66ee8 <== NOT EXECUTED 66e56: 486e fffc pea %fp@(-4) <== NOT EXECUTED 66e5a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 66e5e: 4879 0009 43a4 pea 943a4 <_Rate_monotonic_Information> <== NOT EXECUTED 66e64: 4eb9 0004 a24c jsr 4a24c <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 66e6a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 66e70: 2840 moveal %d0,%a4 <== NOT EXECUTED 66e72: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 66e76: 6704 beqs 66e7c <== NOT EXECUTED 66e78: 7004 moveq #4,%d0 <== NOT EXECUTED 66e7a: 606c bras 66ee8 <== NOT EXECUTED case OBJECTS_LOCAL: status->owner = ((the_period->owner) ? the_period->owner->Object.id : 0); 66e7c: 206c 0050 moveal %a4@(80),%a0 <== NOT EXECUTED 66e80: 4a88 tstl %a0 <== NOT EXECUTED 66e82: 6604 bnes 66e88 <== NOT EXECUTED 66e84: 4281 clrl %d1 <== NOT EXECUTED 66e86: 6004 bras 66e8c <== NOT EXECUTED 66e88: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED status->state = the_period->state; 66e8c: 202c 0038 movel %a4@(56),%d0 <== NOT EXECUTED the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: status->owner = ((the_period->owner) ? the_period->owner->Object.id : 0); 66e90: 2681 movel %d1,%a3@ <== NOT EXECUTED status->state = the_period->state; 66e92: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED if ( status->state == RATE_MONOTONIC_INACTIVE ) { 66e96: 6612 bnes 66eaa <== NOT EXECUTED #else status->since_last_period = 0; #endif #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS status->executed_since_last_period.tv_sec = 0; status->executed_since_last_period.tv_nsec = 0; 66e98: 42ab 0014 clrl %a3@(20) <== NOT EXECUTED status->owner = ((the_period->owner) ? the_period->owner->Object.id : 0); status->state = the_period->state; if ( status->state == RATE_MONOTONIC_INACTIVE ) { #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS status->since_last_period.tv_sec = 0; 66e9c: 42ab 0008 clrl %a3@(8) <== NOT EXECUTED status->since_last_period.tv_nsec = 0; 66ea0: 42ab 000c clrl %a3@(12) <== NOT EXECUTED #else status->since_last_period = 0; #endif #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS status->executed_since_last_period.tv_sec = 0; 66ea4: 42ab 0010 clrl %a3@(16) <== NOT EXECUTED 66ea8: 6036 bras 66ee0 <== NOT EXECUTED * This lets them share one single invocation of _TOD_Get_uptime(). */ #if defined(RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS) || \ defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS) struct timespec uptime; _TOD_Get_uptime( &uptime ); 66eaa: 240e movel %fp,%d2 <== NOT EXECUTED 66eac: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 66eb2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 66eb4: 4eb9 0005 e2bc jsr 5e2bc <_TOD_Get_uptime> <== NOT EXECUTED #endif #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS _Timespec_Subtract( 66eba: 486b 0008 pea %a3@(8) <== NOT EXECUTED 66ebe: 45f9 0004 b790 lea 4b790 <_Timespec_Subtract>,%a2 <== NOT EXECUTED 66ec4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 66ec6: 486c 0044 pea %a4@(68) <== NOT EXECUTED 66eca: 4e92 jsr %a2@ <== NOT EXECUTED status->since_last_period = _Watchdog_Ticks_since_boot - the_period->time_at_period; #endif #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS _Timespec_Subtract( 66ecc: 486b 0010 pea %a3@(16) <== NOT EXECUTED 66ed0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 66ed2: 4879 0009 397e pea 9397e <_Thread_Time_of_last_context_switch> <== NOT EXECUTED 66ed8: 4e92 jsr %a2@ <== NOT EXECUTED 66eda: dffc 0000 001c addal #28,%sp <== NOT EXECUTED the_period->owner->cpu_time_used - the_period->owner_executed_at_period; #endif } _Thread_Enable_dispatch(); 66ee0: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 66ee6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 66ee8: 4cee 1c04 ffe4 moveml %fp@(-28),%d2/%a2-%a4 <== NOT EXECUTED 66eee: 4e5e unlk %fp <== NOT EXECUTED 66ef0: 4e75 rts <== NOT EXECUTED ... 000459c8 : rtems_status_code rtems_rate_monotonic_ident( rtems_name name, Objects_Id *id ) { 459c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 459cc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 459d0: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 459d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 459da: 4879 0005 a880 pea 5a880 <_Rate_monotonic_Information> <== NOT EXECUTED 459e0: 4eb9 0004 7d0c jsr 47d0c <_Objects_Name_to_id_u32> <== NOT EXECUTED 459e6: 41f9 0005 7b38 lea 57b38 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 459ec: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 459f0: 4e5e unlk %fp <== NOT EXECUTED 459f2: 4e75 rts 00045bd0 : rtems_status_code rtems_rate_monotonic_period( Objects_Id id, rtems_interval length ) { 45bd0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45bd4: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get ( Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) 45bd8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45bdc: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 45be0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 45be4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45be6: 4879 0005 a880 pea 5a880 <_Rate_monotonic_Information> <== NOT EXECUTED 45bec: 4eb9 0004 7ba8 jsr 47ba8 <_Objects_Get> <== NOT EXECUTED rtems_rate_monotonic_period_states local_state; ISR_Level level; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 45bf2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45bf8: 2440 moveal %d0,%a2 <== NOT EXECUTED 45bfa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45bfe: 6600 012e bnew 45d2e <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 45c02: 2039 0005 aa46 movel 5aa46 <_Thread_Executing>,%d0 <== NOT EXECUTED 45c08: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 45c0c: 6706 beqs 45c14 <== NOT EXECUTED _Thread_Enable_dispatch(); 45c0e: 7417 moveq #23,%d2 <== NOT EXECUTED 45c10: 6000 00dc braw 45cee <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; } if ( length == RTEMS_PERIOD_STATUS ) { 45c14: 4a83 tstl %d3 <== NOT EXECUTED 45c16: 661c bnes 45c34 <== NOT EXECUTED switch ( the_period->state ) { 45c18: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 45c1c: 6710 beqs 45c2e <== NOT EXECUTED 45c1e: 5780 subql #3,%d0 <== NOT EXECUTED 45c20: 7201 moveq #1,%d1 <== NOT EXECUTED 45c22: b280 cmpl %d0,%d1 <== NOT EXECUTED 45c24: 6500 00c6 bcsw 45cec <== NOT EXECUTED 45c28: 7406 moveq #6,%d2 <== NOT EXECUTED 45c2a: 6000 00c2 braw 45cee <== NOT EXECUTED 45c2e: 740b moveq #11,%d2 <== NOT EXECUTED 45c30: 6000 00bc braw 45cee <== NOT EXECUTED } _Thread_Enable_dispatch(); return( return_value ); } _ISR_Disable( level ); 45c34: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45c3a: 40c2 movew %sr,%d2 <== NOT EXECUTED 45c3c: 8082 orl %d2,%d0 <== NOT EXECUTED 45c3e: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_period->state ) { 45c40: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 45c44: 7202 moveq #2,%d1 <== NOT EXECUTED 45c46: b280 cmpl %d0,%d1 <== NOT EXECUTED 45c48: 6740 beqs 45c8a <== NOT EXECUTED 45c4a: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 45c4e: b280 cmpl %d0,%d1 <== NOT EXECUTED 45c50: 6700 00a4 beqw 45cf6 <== NOT EXECUTED 45c54: 4a80 tstl %d0 <== NOT EXECUTED 45c56: 6600 00d6 bnew 45d2e <== NOT EXECUTED case RATE_MONOTONIC_INACTIVE: { _ISR_Enable( level ); 45c5a: 46c2 movew %d2,%sr <== NOT EXECUTED /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); 45c5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45c5e: 4eb9 0004 59f4 jsr 459f4 <_Rate_monotonic_Initiate_statistics> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 45c64: 7402 moveq #2,%d2 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45c66: 203c 0004 5f98 movel #286616,%d0 <== NOT EXECUTED 45c6c: 2542 0038 movel %d2,%a2@(56) <== NOT EXECUTED ); the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 45c70: 4202 clrb %d2 <== NOT EXECUTED the_watchdog->id = id; 45c72: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45c76: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45c7a: 2540 002c movel %d0,%a2@(44) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45c7e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 45c82: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED 45c86: 6000 0084 braw 45d0c <== NOT EXECUTED case RATE_MONOTONIC_ACTIVE: /* * Update statistics from the concluding period. */ _Rate_monotonic_Update_statistics( the_period ); 45c8a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45c8c: 4eb9 0004 5a6c jsr 45a6c <_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; 45c92: 7201 moveq #1,%d1 <== NOT EXECUTED the_period->next_length = length; 45c94: 2543 004c movel %d3,%a2@(76) <== 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; 45c98: 2541 0038 movel %d1,%a2@(56) <== NOT EXECUTED the_period->next_length = length; _ISR_Enable( level ); 45c9c: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_Executing->Wait.id = the_period->Object.id; 45c9e: 2079 0005 aa46 moveal 5aa46 <_Thread_Executing>,%a0 <== NOT EXECUTED 45ca4: 216a 0008 0020 movel %a2@(8),%a0@(32) <== NOT EXECUTED _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 45caa: 4878 4000 pea 4000 <== NOT EXECUTED 45cae: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45cb0: 4eb9 0004 8bfc jsr 48bfc <_Thread_Set_state> <== NOT EXECUTED /* * Did the watchdog timer expire while we were actually blocking * on it? */ _ISR_Disable( level ); 45cb6: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 45cbc: 40c0 movew %sr,%d0 <== NOT EXECUTED 45cbe: 8280 orl %d0,%d1 <== NOT EXECUTED 45cc0: 46c1 movew %d1,%sr <== NOT EXECUTED local_state = the_period->state; 45cc2: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 45cc6: 7402 moveq #2,%d2 <== NOT EXECUTED 45cc8: 2542 0038 movel %d2,%a2@(56) <== NOT EXECUTED _ISR_Enable( level ); 45ccc: 46c0 movew %d0,%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 ) 45cce: 7003 moveq #3,%d0 <== NOT EXECUTED 45cd0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45cd6: b081 cmpl %d1,%d0 <== NOT EXECUTED 45cd8: 6612 bnes 45cec <== NOT EXECUTED _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 45cda: 4878 4000 pea 4000 <== NOT EXECUTED 45cde: 2f39 0005 aa46 movel 5aa46 <_Thread_Executing>,%sp@- <== NOT EXECUTED 45ce4: 4eb9 0004 7fc8 jsr 47fc8 <_Thread_Clear_state> <== NOT EXECUTED 45cea: 508f addql #8,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 45cec: 4282 clrl %d2 <== NOT EXECUTED 45cee: 4eb9 0004 838a jsr 4838a <_Thread_Enable_dispatch> <== NOT EXECUTED 45cf4: 603a bras 45d30 <== NOT EXECUTED case RATE_MONOTONIC_EXPIRED: /* * Update statistics from the concluding period */ _Rate_monotonic_Update_statistics( the_period ); 45cf6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45cf8: 4eb9 0004 5a6c jsr 45a6c <_Rate_monotonic_Update_statistics> <== NOT EXECUTED _ISR_Enable( level ); 45cfe: 46c2 movew %d2,%sr <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 45d00: 7202 moveq #2,%d1 <== NOT EXECUTED the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 45d02: 7406 moveq #6,%d2 <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45d04: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED */ _Rate_monotonic_Update_statistics( the_period ); _ISR_Enable( level ); the_period->state = RATE_MONOTONIC_ACTIVE; 45d08: 2541 0038 movel %d1,%a2@(56) <== NOT EXECUTED the_period->next_length = length; 45d0c: 2543 004c movel %d3,%a2@(76) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45d10: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45d14: 4879 0005 aa64 pea 5aa64 <_Watchdog_Ticks_chain> <== NOT EXECUTED 45d1a: 4eb9 0004 9420 jsr 49420 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 45d20: 4eb9 0004 838a jsr 4838a <_Thread_Enable_dispatch> <== NOT EXECUTED 45d26: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45d2c: 6002 bras 45d30 <== NOT EXECUTED return RTEMS_TIMEOUT; 45d2e: 7404 moveq #4,%d2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 45d30: 2002 movel %d2,%d0 <== NOT EXECUTED 45d32: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 45d38: 4e5e unlk %fp <== NOT EXECUTED 45d3a: 4e75 rts 0005d99a : void rtems_rate_monotonic_report_statistics( void ) { 5d99a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin ); 5d99e: 4879 0004 65e0 pea 465e0 <== NOT EXECUTED 5d9a4: 42a7 clrl %sp@- <== NOT EXECUTED 5d9a6: 4eb9 0005 d804 jsr 5d804 <== NOT EXECUTED 5d9ac: 508f addql #8,%sp <== NOT EXECUTED } 5d9ae: 4e5e unlk %fp <== NOT EXECUTED 5d9b0: 4e75 rts <== NOT EXECUTED ... 0005d804 : */ void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) { 5d804: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED 5d808: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 5d80c: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 5d810: 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 ) 5d814: 4a8a tstl %a2 <== NOT EXECUTED 5d816: 6700 0178 beqw 5d990 <== NOT EXECUTED return; (*print)( context, "Period information by period\n" ); 5d81a: 4879 0007 b772 pea 7b772 <_POSIX_Threads_Default_attributes+0x38> <== NOT EXECUTED /* * Print part of report line that is not dependent on granularity */ (*print)( context, 5d820: 2a0e movel %fp,%d5 <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d822: 280e movel %fp,%d4 <== NOT EXECUTED char name[5]; if ( !print ) return; (*print)( context, "Period information by period\n" ); 5d824: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d826: 4e92 jsr %a2@ <== NOT EXECUTED #if defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS) (*print)( context, "--- CPU times are in seconds ---\n" ); 5d828: 4879 0007 b790 pea 7b790 <_POSIX_Threads_Default_attributes+0x56> <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d82e: 2e0e movel %fp,%d7 <== NOT EXECUTED status = rtems_rate_monotonic_get_statistics( id, &the_stats ); if ( status != RTEMS_SUCCESSFUL ) continue; /* If the above passed, so should this but check it anyway */ status = rtems_rate_monotonic_get_status( id, &the_status ); 5d830: 4bf9 0006 6e40 lea 66e40 ,%a5 <== NOT EXECUTED if ( !print ) return; (*print)( context, "Period information by period\n" ); #if defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS) (*print)( context, "--- CPU times are in seconds ---\n" ); 5d836: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d838: 4e92 jsr %a2@ <== NOT EXECUTED #endif #if defined(RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS) (*print)( context, "--- Wall times are in seconds ---\n" ); 5d83a: 4879 0007 b7b2 pea 7b7b2 <_POSIX_Threads_Default_attributes+0x78> <== NOT EXECUTED /* * Print part of report line that is not dependent on granularity */ (*print)( context, 5d840: 5b85 subql #5,%d5 <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d842: 0684 ffff fff2 addil #-14,%d4 <== NOT EXECUTED (*print)( context, "Period information by period\n" ); #if defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS) (*print)( context, "--- CPU times are in seconds ---\n" ); #endif #if defined(RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS) (*print)( context, "--- Wall times are in seconds ---\n" ); 5d848: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d84a: 4e92 jsr %a2@ <== NOT EXECUTED Be sure to test the various cases. (*print)( context,"\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789\ \n"); */ (*print)( context, " ID OWNER COUNT MISSED " 5d84c: 4879 0007 b7d5 pea 7b7d5 <_POSIX_Threads_Default_attributes+0x9b> <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d852: 0687 ffff ffba addil #-70,%d7 <== NOT EXECUTED 5d858: 47f9 0005 ebbc lea 5ebbc <_Timespec_Divide_by_integer>,%a3 <== NOT EXECUTED Be sure to test the various cases. (*print)( context,"\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789\ \n"); */ (*print)( context, " ID OWNER COUNT MISSED " 5d85e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d860: 4e92 jsr %a2@ <== NOT EXECUTED #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS " " #endif " WALL TIME\n" ); (*print)( context, " " 5d862: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 5d868: 2ebc 0007 b820 movel #505888,%sp@ <== NOT EXECUTED #endif name[ 0 ] = '\0'; if ( the_status.owner ) { rtems_object_get_name( the_status.owner, sizeof(name), name ); 5d86e: 49f9 0004 87fc lea 487fc ,%a4 <== NOT EXECUTED #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS " " #endif " WALL TIME\n" ); (*print)( context, " " 5d874: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d876: 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 ; 5d878: 2439 0009 43aa movel 943aa <_Rate_monotonic_Information+0x6>,%d2 <== NOT EXECUTED 5d87e: 508f addql #8,%sp <== NOT EXECUTED 5d880: 6000 0104 braw 5d986 <== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { status = rtems_rate_monotonic_get_statistics( id, &the_stats ); 5d884: 486e ffa2 pea %fp@(-94) <== NOT EXECUTED 5d888: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5d88a: 4eb9 0006 6de4 jsr 66de4 <== NOT EXECUTED if ( status != RTEMS_SUCCESSFUL ) 5d890: 508f addql #8,%sp <== NOT EXECUTED 5d892: 4a80 tstl %d0 <== NOT EXECUTED 5d894: 6600 00ee bnew 5d984 <== NOT EXECUTED continue; /* If the above passed, so should this but check it anyway */ status = rtems_rate_monotonic_get_status( id, &the_status ); 5d898: 486e ffda pea %fp@(-38) <== NOT EXECUTED 5d89c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5d89e: 4e95 jsr %a5@ <== NOT EXECUTED continue; #endif name[ 0 ] = '\0'; if ( the_status.owner ) { 5d8a0: 202e ffda movel %fp@(-38),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( status != RTEMS_SUCCESSFUL ) continue; #endif name[ 0 ] = '\0'; 5d8a4: 4201 clrb %d1 <== NOT EXECUTED if ( the_status.owner ) { 5d8a6: 508f addql #8,%sp <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( status != RTEMS_SUCCESSFUL ) continue; #endif name[ 0 ] = '\0'; 5d8a8: 1d41 fffb moveb %d1,%fp@(-5) <== NOT EXECUTED if ( the_status.owner ) { 5d8ac: 4a80 tstl %d0 <== NOT EXECUTED 5d8ae: 6710 beqs 5d8c0 <== NOT EXECUTED rtems_object_get_name( the_status.owner, sizeof(name), name ); 5d8b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5d8b2: 4878 0005 pea 5 <== NOT EXECUTED 5d8b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5d8b8: 4e94 jsr %a4@ <== NOT EXECUTED 5d8ba: dffc 0000 000c addal #12,%sp <== NOT EXECUTED /* * Print part of report line that is not dependent on granularity */ (*print)( context, 5d8c0: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED 5d8c4: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 5d8c8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5d8ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5d8cc: 4879 0007 b86c pea 7b86c <_POSIX_Threads_Default_attributes+0x132> <== NOT EXECUTED 5d8d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d8d4: 4e92 jsr %a2@ <== NOT EXECUTED /* * If the count is zero, don't print statistics */ if (the_stats.count == 0) { 5d8d6: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED 5d8da: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 5d8e0: 6610 bnes 5d8f2 <== NOT EXECUTED (*print)( context, "\n" ); 5d8e2: 4879 0007 bb7c pea 7bb7c <__func__.5644+0x118> <== NOT EXECUTED 5d8e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d8ea: 4e92 jsr %a2@ <== NOT EXECUTED 5d8ec: 508f addql #8,%sp <== NOT EXECUTED 5d8ee: 6000 0094 braw 5d984 <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d8f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED &the_stats.total_cpu_time, the_stats.count, &cpu_average ); (*print)( context, 5d8f4: 2c3c 0000 03e8 movel #1000,%d6 <== NOT EXECUTED */ { #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS struct timespec cpu_average; _Timespec_Divide_by_integer( 5d8fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5d8fc: 2f07 movel %d7,%sp@- <== NOT EXECUTED 5d8fe: 4e93 jsr %a3@ <== NOT EXECUTED &the_stats.total_cpu_time, the_stats.count, &cpu_average ); (*print)( context, 5d900: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 5d904: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 5d908: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5d90a: 202e ffb6 movel %fp@(-74),%d0 <== NOT EXECUTED 5d90e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 5d912: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 5d916: 2240 moveal %d0,%a1 <== NOT EXECUTED 5d918: 2f09 movel %a1,%sp@- <== NOT EXECUTED 5d91a: 222e ffae movel %fp@(-82),%d1 <== NOT EXECUTED 5d91e: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED 5d922: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED 5d926: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5d928: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED 5d92c: 4879 0007 b883 pea 7b883 <_POSIX_Threads_Default_attributes+0x149> <== NOT EXECUTED 5d932: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d934: 4e92 jsr %a2@ <== NOT EXECUTED * print Wall time part of statistics */ { #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS struct timespec wall_average; _Timespec_Divide_by_integer( 5d936: dffc 0000 0028 addal #40,%sp <== NOT EXECUTED 5d93c: 2e84 movel %d4,%sp@ <== NOT EXECUTED 5d93e: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 5d942: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED 5d946: 4e93 jsr %a3@ <== NOT EXECUTED &the_stats.total_wall_time, the_stats.count, &wall_average ); (*print)( context, 5d948: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 5d94c: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 5d950: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5d952: 202e ffce movel %fp@(-50),%d0 <== NOT EXECUTED 5d956: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 5d95a: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 5d95e: 2240 moveal %d0,%a1 <== NOT EXECUTED 5d960: 2f09 movel %a1,%sp@- <== NOT EXECUTED 5d962: 222e ffc6 movel %fp@(-58),%d1 <== NOT EXECUTED 5d966: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED 5d96a: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED 5d96e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5d970: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED 5d974: 4879 0007 b8a2 pea 7b8a2 <_POSIX_Threads_Default_attributes+0x168> <== NOT EXECUTED 5d97a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5d97c: 4e92 jsr %a2@ <== NOT EXECUTED 5d97e: dffc 0000 002c addal #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 ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 5d984: 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 ; id <= _Rate_monotonic_Information.maximum_id ; 5d986: b4b9 0009 43ae cmpl 943ae <_Rate_monotonic_Information+0xa>,%d2 <== NOT EXECUTED 5d98c: 6300 fef6 blsw 5d884 <== NOT EXECUTED the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall ); #endif } } } 5d990: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5d996: 4e5e unlk %fp <== NOT EXECUTED 5d998: 4e75 rts 0005d9b4 : /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) { 5d9b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5d9b8: 2039 0009 38b8 movel 938b8 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 5d9be: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5d9c0: 5280 addql #1,%d0 <== NOT EXECUTED 5d9c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5d9c4: 23c0 0009 38b8 movel %d0,938b8 <_Thread_Dispatch_disable_level> <== 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 ; 5d9ca: 2439 0009 43aa movel 943aa <_Rate_monotonic_Information+0x6>,%d2 <== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { status = rtems_rate_monotonic_reset_statistics( id ); 5d9d0: 45f9 0005 d9f8 lea 5d9f8 ,%a2 <== NOT EXECUTED 5d9d6: 6008 bras 5d9e0 <== NOT EXECUTED 5d9d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5d9da: 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 ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 5d9dc: 5282 addql #1,%d2 <== NOT EXECUTED 5d9de: 588f addql #4,%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 ; 5d9e0: b4b9 0009 43ae cmpl 943ae <_Rate_monotonic_Information+0xa>,%d2 <== NOT EXECUTED 5d9e6: 63f0 blss 5d9d8 <== NOT EXECUTED /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); } 5d9e8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5d9ec: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5d9f0: 4e5e unlk %fp <== NOT EXECUTED } /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); 5d9f2: 4ef9 0004 aa9a jmp 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 0005d9f8 : */ rtems_status_code rtems_rate_monotonic_reset_statistics( Objects_Id id ) { 5d9f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5d9fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get ( Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) 5d9fe: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5da02: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5da06: 4879 0009 43a4 pea 943a4 <_Rate_monotonic_Information> <== NOT EXECUTED 5da0c: 4eb9 0004 a24c jsr 4a24c <_Objects_Get> <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 5da12: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5da18: 2440 moveal %d0,%a2 <== NOT EXECUTED 5da1a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5da1e: 6704 beqs 5da24 <== NOT EXECUTED 5da20: 7004 moveq #4,%d0 <== NOT EXECUTED 5da22: 6034 bras 5da58 <== NOT EXECUTED case OBJECTS_LOCAL: _Rate_monotonic_Reset_statistics( the_period ); 5da24: 4878 0038 pea 38 <== NOT EXECUTED 5da28: 42a7 clrl %sp@- <== NOT EXECUTED 5da2a: 486a 0054 pea %a2@(84) <== NOT EXECUTED 5da2e: 4eb9 0006 b05c jsr 6b05c <== NOT EXECUTED 5da34: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 5da3a: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED 5da3e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 5da42: 2540 0060 movel %d0,%a2@(96) <== NOT EXECUTED 5da46: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED _Thread_Enable_dispatch(); 5da4a: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5da50: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5da56: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5da58: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 5da5c: 4e5e unlk %fp <== NOT EXECUTED 5da5e: 4e75 rts 0004dd24 : uint32_t length, uint32_t page_size, rtems_attribute attribute_set, Objects_Id *id ) { 4dd24: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4dd28: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4dd2c: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED 4dd30: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4dd34: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4dd38: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 4dd3c: 262e 0018 movel %fp@(24),%d3 <== NOT EXECUTED 4dd40: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED rtems_status_code return_status; Region_Control *the_region; if ( !rtems_is_name_valid( name ) ) 4dd44: 4a86 tstl %d6 <== NOT EXECUTED 4dd46: 6606 bnes 4dd4e <== NOT EXECUTED 4dd48: 7403 moveq #3,%d2 <== NOT EXECUTED 4dd4a: 6000 00ca braw 4de16 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 4dd4e: 4a82 tstl %d2 <== NOT EXECUTED 4dd50: 6700 00c2 beqw 4de14 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 4dd54: 4a8b tstl %a3 <== NOT EXECUTED 4dd56: 6700 00bc beqw 4de14 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_Addresses_Is_aligned( starting_address ) ) 4dd5a: 7003 moveq #3,%d0 <== NOT EXECUTED 4dd5c: c082 andl %d2,%d0 <== NOT EXECUTED 4dd5e: 6600 00b4 bnew 4de14 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 4dd62: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4dd68: 4eb9 0005 0034 jsr 50034 <_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 ); 4dd6e: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4dd74: 4eb9 0005 1334 jsr 51334 <_Objects_Allocate> <== NOT EXECUTED the_region = _Region_Allocate(); if ( !the_region ) 4dd7a: 508f addql #8,%sp <== NOT EXECUTED 4dd7c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4dd7e: 4a80 tstl %d0 <== NOT EXECUTED 4dd80: 6604 bnes 4dd86 <== NOT EXECUTED 4dd82: 7405 moveq #5,%d2 <== NOT EXECUTED 4dd84: 607e bras 4de04 <== NOT EXECUTED return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 4dd86: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4dd88: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4dd8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dd8c: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4dd90: 4eb9 0005 0e68 jsr 50e68 <_Heap_Initialize> <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 4dd96: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED if ( !the_region ) return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 4dd9c: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 4dda0: 6614 bnes 4ddb6 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 4dda2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dda4: 7408 moveq #8,%d2 <== NOT EXECUTED 4dda6: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4ddac: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED 4ddb2: 508f addql #8,%sp <== NOT EXECUTED 4ddb4: 604e bras 4de04 <== NOT EXECUTED return_status = RTEMS_INVALID_SIZE; } else { the_region->starting_address = starting_address; 4ddb6: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED the_region->length = length; the_region->page_size = page_size; the_region->attribute_set = attribute_set; the_region->number_of_used_blocks = 0; _Thread_queue_Initialize( 4ddba: 7001 moveq #1,%d0 <== NOT EXECUTED &_Region_Information, &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; 4ddbc: 4282 clrl %d2 <== 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; 4ddbe: 2543 0060 movel %d3,%a2@(96) <== NOT EXECUTED the_region->number_of_used_blocks = 0; _Thread_queue_Initialize( 4ddc2: e48b lsrl #2,%d3 <== NOT EXECUTED } else { the_region->starting_address = starting_address; the_region->length = length; 4ddc4: 2544 0054 movel %d4,%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( 4ddc8: c083 andl %d3,%d0 <== NOT EXECUTED else { the_region->starting_address = starting_address; the_region->length = length; the_region->page_size = page_size; 4ddca: 2545 0058 movel %d5,%a2@(88) <== NOT EXECUTED the_region->attribute_set = attribute_set; the_region->number_of_used_blocks = 0; 4ddce: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED _Thread_queue_Initialize( 4ddd2: 4878 0006 pea 6 <== NOT EXECUTED 4ddd6: 4878 0040 pea 40 <== NOT EXECUTED 4ddda: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dddc: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4dde0: 4eb9 0005 2660 jsr 52660 <_Thread_queue_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4dde6: 2079 0006 d8d6 moveal 6d8d6 <_Region_Information+0x1a>,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4ddec: 2546 000c movel %d6,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ddf0: 4280 clrl %d0 <== NOT EXECUTED 4ddf2: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED &_Region_Information, &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; 4ddf6: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4ddfc: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED 4de00: 26aa 0008 movel %a2@(8),%a3@ <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 4de04: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4de0a: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4de10: 588f addql #4,%sp <== NOT EXECUTED 4de12: 6002 bras 4de16 <== NOT EXECUTED return return_status; 4de14: 7409 moveq #9,%d2 <== NOT EXECUTED } 4de16: 2002 movel %d2,%d0 <== NOT EXECUTED 4de18: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4de1e: 4e5e unlk %fp <== NOT EXECUTED 4de20: 4e75 rts <== NOT EXECUTED ... 0004de24 : */ rtems_status_code rtems_region_delete( Objects_Id id ) { 4de24: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4de28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; register Region_Control *the_region; _RTEMS_Lock_allocator(); 4de2c: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4de32: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Region_Control *_Region_Get ( Objects_Id id, Objects_Locations *location ) { return (Region_Control *) 4de38: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4de3c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4de40: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4de46: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4de4c: 2440 moveal %d0,%a2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4de4e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4de52: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4de58: 670e beqs 4de68 <== NOT EXECUTED 4de5a: 7201 moveq #1,%d1 <== NOT EXECUTED 4de5c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4de5e: 6604 bnes 4de64 <== NOT EXECUTED 4de60: 7404 moveq #4,%d2 <== NOT EXECUTED 4de62: 6032 bras 4de96 <== NOT EXECUTED 4de64: 7419 moveq #25,%d2 <== NOT EXECUTED 4de66: 602e bras 4de96 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) 4de68: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED 4de6c: 6704 beqs 4de72 <== NOT EXECUTED 4de6e: 740c moveq #12,%d2 <== NOT EXECUTED 4de70: 6024 bras 4de96 <== NOT EXECUTED return_status = RTEMS_RESOURCE_IN_USE; else { _Objects_Close( &_Region_Information, &the_region->Object ); 4de72: 2f0a movel %a2,%sp@- <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 4de74: 4282 clrl %d2 <== NOT EXECUTED 4de76: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4de7c: 4eb9 0005 13bc jsr 513bc <_Objects_Close> <== NOT EXECUTED 4de82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de84: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4de8a: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED 4de90: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4de96: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4de9c: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 4dea2: 2002 movel %d2,%d0 <== NOT EXECUTED 4dea4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4dea8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4deac: 4e5e unlk %fp <== NOT EXECUTED 4deae: 4e75 rts 0004deb0 : rtems_status_code rtems_region_extend( Objects_Id id, void *starting_address, uint32_t length ) { 4deb0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4deb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4deb6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4deb8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Heap_Extend_status heap_status; Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; Region_Control *the_region; if ( !starting_address ) 4debc: 6608 bnes 4dec6 <== NOT EXECUTED 4debe: 143c 0009 moveb #9,%d2 <== NOT EXECUTED 4dec2: 6000 008e braw 4df52 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 4dec6: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4decc: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Region_Control *_Region_Get ( Objects_Id id, Objects_Locations *location ) { return (Region_Control *) 4ded2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4ded6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4deda: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4dee0: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4dee6: 2440 moveal %d0,%a2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4dee8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4deec: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4def2: 670a beqs 4defe <== NOT EXECUTED 4def4: 7201 moveq #1,%d1 <== NOT EXECUTED 4def6: b280 cmpl %d0,%d1 <== NOT EXECUTED 4def8: 6648 bnes 4df42 <== NOT EXECUTED 4defa: 7404 moveq #4,%d2 <== NOT EXECUTED 4defc: 6046 bras 4df44 <== NOT EXECUTED case OBJECTS_LOCAL: heap_status = _Heap_Extend( 4defe: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4df02: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4df06: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4df08: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4df0c: 4eb9 0005 0b90 jsr 50b90 <_Heap_Extend> <== NOT EXECUTED starting_address, length, &amount_extended ); switch ( heap_status ) { 4df12: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4df18: 7201 moveq #1,%d1 <== NOT EXECUTED 4df1a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4df1c: 670c beqs 4df2a <== NOT EXECUTED 4df1e: 620e bhis 4df2e <== NOT EXECUTED 4df20: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4df24: b280 cmpl %d0,%d1 <== NOT EXECUTED 4df26: 661a bnes 4df42 <== NOT EXECUTED 4df28: 6014 bras 4df3e <== NOT EXECUTED 4df2a: 7409 moveq #9,%d2 <== NOT EXECUTED 4df2c: 6016 bras 4df44 <== NOT EXECUTED case HEAP_EXTEND_SUCCESSFUL: the_region->length += amount_extended; 4df2e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED the_region->maximum_segment_size += amount_extended; 4df32: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED &amount_extended ); switch ( heap_status ) { case HEAP_EXTEND_SUCCESSFUL: the_region->length += amount_extended; 4df36: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED the_region->maximum_segment_size += amount_extended; 4df3a: 4282 clrl %d2 <== NOT EXECUTED 4df3c: 6006 bras 4df44 <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; break; 4df3e: 7418 moveq #24,%d2 <== NOT EXECUTED 4df40: 6002 bras 4df44 <== NOT EXECUTED 4df42: 7419 moveq #25,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4df44: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4df4a: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4df50: 588f addql #4,%sp <== NOT EXECUTED return return_status; } 4df52: 2002 movel %d2,%d0 <== NOT EXECUTED 4df54: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4df58: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4df5c: 4e5e unlk %fp <== NOT EXECUTED 4df5e: 4e75 rts 0004df60 : rtems_status_code rtems_region_get_free_information( Objects_Id id, Heap_Information_block *the_info ) { 4df60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4df64: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4df66: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4df6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; register Region_Control *the_region; if ( !the_info ) 4df6c: 4a8a tstl %a2 <== NOT EXECUTED 4df6e: 6604 bnes 4df74 <== NOT EXECUTED 4df70: 7409 moveq #9,%d2 <== NOT EXECUTED 4df72: 6066 bras 4dfda <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 4df74: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4df7a: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED 4df80: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4df84: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4df88: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4df8e: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4df94: 2040 moveal %d0,%a0 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4df96: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4df9a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4dfa0: 670e beqs 4dfb0 <== NOT EXECUTED 4dfa2: 7201 moveq #1,%d1 <== NOT EXECUTED 4dfa4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4dfa6: 6604 bnes 4dfac <== NOT EXECUTED 4dfa8: 7404 moveq #4,%d2 <== NOT EXECUTED 4dfaa: 6020 bras 4dfcc <== NOT EXECUTED 4dfac: 7419 moveq #25,%d2 <== NOT EXECUTED 4dfae: 601c bras 4dfcc <== 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 ); 4dfb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dfb2: 4282 clrl %d2 <== NOT EXECUTED 4dfb4: 4868 0068 pea %a0@(104) <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: the_info->Used.number = 0; 4dfb8: 42aa 000c clrl %a2@(12) <== NOT EXECUTED the_info->Used.total = 0; 4dfbc: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED the_info->Used.largest = 0; 4dfc0: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED _Heap_Get_free_information( &the_region->Memory, &the_info->Free ); 4dfc4: 4eb9 0005 0da8 jsr 50da8 <_Heap_Get_free_information> <== NOT EXECUTED 4dfca: 508f addql #8,%sp <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4dfcc: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4dfd2: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4dfd8: 588f addql #4,%sp <== NOT EXECUTED return return_status; } 4dfda: 2002 movel %d2,%d0 <== NOT EXECUTED 4dfdc: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4dfe0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4dfe4: 4e5e unlk %fp <== NOT EXECUTED 4dfe6: 4e75 rts 0004dfe8 : rtems_status_code rtems_region_get_information( Objects_Id id, Heap_Information_block *the_info ) { 4dfe8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4dfec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dfee: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; register Region_Control *the_region; if ( !the_info ) 4dff2: 6606 bnes 4dffa <== NOT EXECUTED 4dff4: 143c 0009 moveb #9,%d2 <== NOT EXECUTED 4dff8: 6062 bras 4e05c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 4dffa: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e000: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED 4e006: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e00a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e00e: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e014: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4e01a: 2040 moveal %d0,%a0 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4e01c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4e020: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e026: 670e beqs 4e036 <== NOT EXECUTED 4e028: 7201 moveq #1,%d1 <== NOT EXECUTED 4e02a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e02c: 6604 bnes 4e032 <== NOT EXECUTED 4e02e: 7404 moveq #4,%d2 <== NOT EXECUTED 4e030: 601c bras 4e04e <== NOT EXECUTED 4e032: 7419 moveq #25,%d2 <== NOT EXECUTED 4e034: 6018 bras 4e04e <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Heap_Get_information( &the_region->Memory, the_info ) != 4e036: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e038: 4868 0068 pea %a0@(104) <== NOT EXECUTED 4e03c: 4eb9 0005 0dec jsr 50dec <_Heap_Get_information> <== NOT EXECUTED 4e042: 508f addql #8,%sp <== NOT EXECUTED 4e044: 4a80 tstl %d0 <== NOT EXECUTED 4e046: 6604 bnes 4e04c <== NOT EXECUTED 4e048: 4282 clrl %d2 <== NOT EXECUTED 4e04a: 6002 bras 4e04e <== NOT EXECUTED 4e04c: 7409 moveq #9,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e04e: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e054: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4e05a: 588f addql #4,%sp <== NOT EXECUTED return return_status; } 4e05c: 2002 movel %d2,%d0 <== NOT EXECUTED 4e05e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4e062: 4e5e unlk %fp <== NOT EXECUTED 4e064: 4e75 rts <== NOT EXECUTED ... 0004e068 : uint32_t size, rtems_option option_set, rtems_interval timeout, void **segment ) { 4e068: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e06c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4e070: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4e074: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4e078: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; register Region_Control *the_region; void *the_segment; if ( !segment ) 4e07c: 4a8c tstl %a4 <== NOT EXECUTED 4e07e: 6606 bnes 4e086 <== NOT EXECUTED 4e080: 7409 moveq #9,%d2 <== NOT EXECUTED 4e082: 6000 00f2 braw 4e176 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; *segment = NULL; 4e086: 4294 clrl %a4@ <== NOT EXECUTED if ( size == 0 ) 4e088: 4a82 tstl %d2 <== NOT EXECUTED 4e08a: 6608 bnes 4e094 <== NOT EXECUTED 4e08c: 143c 0008 moveb #8,%d2 <== NOT EXECUTED 4e090: 6000 00e4 braw 4e176 <== NOT EXECUTED return RTEMS_INVALID_SIZE; _RTEMS_Lock_allocator(); 4e094: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e09a: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED 4e0a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED executing = _Thread_Executing; 4e0a4: 2679 0006 dad6 moveal 6dad6 <_Thread_Executing>,%a3 <== NOT EXECUTED 4e0aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e0ac: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e0b2: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4e0b8: 2440 moveal %d0,%a2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4e0ba: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4e0be: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e0c4: 670e beqs 4e0d4 <== NOT EXECUTED 4e0c6: 7201 moveq #1,%d1 <== NOT EXECUTED 4e0c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e0ca: 6700 009a beqw 4e166 <== NOT EXECUTED 4e0ce: 7419 moveq #25,%d2 <== NOT EXECUTED 4e0d0: 6000 0096 braw 4e168 <== NOT EXECUTED case OBJECTS_LOCAL: if ( size > the_region->maximum_segment_size ) 4e0d4: b4aa 005c cmpl %a2@(92),%d2 <== NOT EXECUTED 4e0d8: 6306 blss 4e0e0 <== NOT EXECUTED 4e0da: 7408 moveq #8,%d2 <== NOT EXECUTED 4e0dc: 6000 008a braw 4e168 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment ( Region_Control *the_region, uint32_t size ) { return _Heap_Allocate( &the_region->Memory, size ); 4e0e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e0e2: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4e0e6: 4eb9 0005 0b10 jsr 50b10 <_Heap_Allocate> <== NOT EXECUTED the_segment = _Region_Allocate_segment( the_region, size ); _Region_Debug_Walk( the_region, 2 ); if ( the_segment ) { 4e0ec: 508f addql #8,%sp <== NOT EXECUTED 4e0ee: 4a80 tstl %d0 <== NOT EXECUTED 4e0f0: 670a beqs 4e0fc <== NOT EXECUTED the_region->number_of_used_blocks += 1; 4e0f2: 52aa 0064 addql #1,%a2@(100) <== NOT EXECUTED *segment = the_segment; 4e0f6: 4282 clrl %d2 <== NOT EXECUTED 4e0f8: 2880 movel %d0,%a4@ <== NOT EXECUTED 4e0fa: 606c bras 4e168 <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; } else if ( _Options_Is_no_wait( option_set ) ) { 4e0fc: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4e100: 0800 0000 btst #0,%d0 <== NOT EXECUTED 4e104: 6704 beqs 4e10a <== NOT EXECUTED 4e106: 740d moveq #13,%d2 <== NOT EXECUTED 4e108: 605e bras 4e168 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4e10a: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4e110: 5280 addql #1,%d0 <== NOT EXECUTED 4e112: 23c0 0006 da18 movel %d0,6da18 <_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(); 4e118: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e11e: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED executing->Wait.queue = &the_region->Wait_queue; 4e124: 200a movel %a2,%d0 <== NOT EXECUTED 4e126: 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; 4e12c: 7201 moveq #1,%d1 <== NOT EXECUTED 4e12e: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.count = size; 4e132: 2742 0024 movel %d2,%a3@(36) <== NOT EXECUTED * because this thread is going to block. */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); executing->Wait.queue = &the_region->Wait_queue; 4e136: 2740 0044 movel %d0,%a3@(68) <== NOT EXECUTED executing->Wait.id = id; 4e13a: 2743 0020 movel %d3,%a3@(32) <== NOT EXECUTED executing->Wait.count = size; executing->Wait.return_argument = segment; 4e13e: 274c 0028 movel %a4,%a3@(40) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_region->Wait_queue ); _Thread_queue_Enqueue( &the_region->Wait_queue, timeout ); 4e142: 4879 0005 274c pea 5274c <_Thread_queue_Timeout> <== NOT EXECUTED 4e148: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4e14c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4e14e: 4eb9 0005 2414 jsr 52414 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); 4e154: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED return (rtems_status_code) executing->Wait.return_code; 4e15a: 242b 0034 movel %a3@(52),%d2 <== NOT EXECUTED 4e15e: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e164: 6010 bras 4e176 <== NOT EXECUTED 4e166: 7404 moveq #4,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e168: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e16e: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4e174: 588f addql #4,%sp <== NOT EXECUTED return return_status; } 4e176: 2002 movel %d2,%d0 <== NOT EXECUTED 4e178: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4e17e: 4e5e unlk %fp <== NOT EXECUTED 4e180: 4e75 rts <== NOT EXECUTED ... 0004e184 : rtems_status_code rtems_region_get_segment_size( Objects_Id id, void *segment, size_t *size ) { 4e184: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4e188: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e18a: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4e18e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e190: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; register Region_Control *the_region; if ( !segment ) 4e194: 4a83 tstl %d3 <== NOT EXECUTED 4e196: 676e beqs 4e206 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 4e198: 4a82 tstl %d2 <== NOT EXECUTED 4e19a: 676a beqs 4e206 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 4e19c: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e1a2: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Region_Control *_Region_Get ( Objects_Id id, Objects_Locations *location ) { return (Region_Control *) 4e1a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e1ac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e1b0: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e1b6: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4e1bc: 2040 moveal %d0,%a0 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4e1be: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4e1c2: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e1c8: 670e beqs 4e1d8 <== NOT EXECUTED 4e1ca: 7201 moveq #1,%d1 <== NOT EXECUTED 4e1cc: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e1ce: 6604 bnes 4e1d4 <== NOT EXECUTED 4e1d0: 7404 moveq #4,%d2 <== NOT EXECUTED 4e1d2: 6022 bras 4e1f6 <== NOT EXECUTED 4e1d4: 7419 moveq #25,%d2 <== NOT EXECUTED 4e1d6: 601e bras 4e1f6 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Heap_Size_of_user_area( &the_region->Memory, segment, size ) ) 4e1d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e1da: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e1dc: 4868 0068 pea %a0@(104) <== NOT EXECUTED 4e1e0: 4eb9 0005 11e4 jsr 511e4 <_Heap_Size_of_user_area> <== NOT EXECUTED 4e1e6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4e1ec: 4a00 tstb %d0 <== NOT EXECUTED 4e1ee: 6704 beqs 4e1f4 <== NOT EXECUTED 4e1f0: 4282 clrl %d2 <== NOT EXECUTED 4e1f2: 6002 bras 4e1f6 <== NOT EXECUTED 4e1f4: 7409 moveq #9,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e1f6: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e1fc: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4e202: 588f addql #4,%sp <== NOT EXECUTED 4e204: 6002 bras 4e208 <== NOT EXECUTED return return_status; 4e206: 7409 moveq #9,%d2 <== NOT EXECUTED } 4e208: 2002 movel %d2,%d0 <== NOT EXECUTED 4e20a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4e20e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4e212: 4e5e unlk %fp <== NOT EXECUTED 4e214: 4e75 rts <== NOT EXECUTED ... 0004e218 : rtems_status_code rtems_region_ident( rtems_name name, Objects_Id *id ) { 4e218: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4e21c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4e220: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4e226: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e22a: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e230: 4eb9 0005 1930 jsr 51930 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4e236: 41f9 0006 6922 lea 66922 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 4e23c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4e240: 4e5e unlk %fp <== NOT EXECUTED 4e242: 4e75 rts 0004e244 : Objects_Id id, void *segment, size_t size, size_t *old_size ) { 4e244: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e248: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4e24c: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED uint32_t osize; rtems_status_code return_status = RTEMS_INTERNAL_ERROR; Heap_Resize_status status; register Region_Control *the_region; if ( !old_size ) 4e250: 4a8b tstl %a3 <== NOT EXECUTED 4e252: 6700 00a0 beqw 4e2f4 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 4e256: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e25c: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED 4e262: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4e266: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e26a: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e270: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4e276: 2440 moveal %d0,%a2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4e278: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4e27c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e282: 670a beqs 4e28e <== NOT EXECUTED 4e284: 7201 moveq #1,%d1 <== NOT EXECUTED 4e286: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e288: 6758 beqs 4e2e2 <== NOT EXECUTED 4e28a: 7419 moveq #25,%d2 <== NOT EXECUTED 4e28c: 6056 bras 4e2e4 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 7 ); status = _Heap_Resize_block( 4e28e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e292: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 4e296: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e29a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4e29e: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4e2a2: 4eb9 0005 103c jsr 5103c <_Heap_Resize_block> <== NOT EXECUTED segment, (uint32_t) size, &osize, &avail_size ); *old_size = (uint32_t) osize; 4e2a8: 26ae fff4 movel %fp@(-12),%a3@ <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 7 ); status = _Heap_Resize_block( 4e2ac: 2400 movel %d0,%d2 <== NOT EXECUTED ); *old_size = (uint32_t) osize; _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL && avail_size > 0 ) 4e2ae: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4e2b4: 6610 bnes 4e2c6 <== NOT EXECUTED 4e2b6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4e2ba: 670a beqs 4e2c6 <== NOT EXECUTED _Region_Process_queue( the_region ); /* unlocks allocator */ 4e2bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e2be: 4eb9 0005 5444 jsr 55444 <_Region_Process_queue> <== NOT EXECUTED 4e2c4: 602a bras 4e2f0 <== NOT EXECUTED else _RTEMS_Unlock_allocator(); 4e2c6: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e2cc: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED return 4e2d2: 588f addql #4,%sp <== NOT EXECUTED 4e2d4: 4a82 tstl %d2 <== NOT EXECUTED 4e2d6: 671e beqs 4e2f6 <== NOT EXECUTED 4e2d8: 7001 moveq #1,%d0 <== NOT EXECUTED 4e2da: b082 cmpl %d2,%d0 <== NOT EXECUTED 4e2dc: 6616 bnes 4e2f4 <== NOT EXECUTED 4e2de: 740d moveq #13,%d2 <== NOT EXECUTED 4e2e0: 6014 bras 4e2f6 <== NOT EXECUTED 4e2e2: 7404 moveq #4,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e2e4: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e2ea: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED 4e2f0: 588f addql #4,%sp <== NOT EXECUTED 4e2f2: 6002 bras 4e2f6 <== NOT EXECUTED return return_status; 4e2f4: 7409 moveq #9,%d2 <== NOT EXECUTED } 4e2f6: 2002 movel %d2,%d0 <== NOT EXECUTED 4e2f8: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 4e2fe: 4e5e unlk %fp <== NOT EXECUTED 4e300: 4e75 rts <== NOT EXECUTED ... 0004e304 : rtems_status_code rtems_region_return_segment( Objects_Id id, void *segment ) { 4e304: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4e308: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e30a: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t size; #endif int status; register Region_Control *the_region; _RTEMS_Lock_allocator(); 4e30c: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e312: 4eb9 0005 0034 jsr 50034 <_API_Mutex_Lock> <== NOT EXECUTED 4e318: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e31c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e320: 4879 0006 d8bc pea 6d8bc <_Region_Information> <== NOT EXECUTED 4e326: 4eb9 0005 1794 jsr 51794 <_Objects_Get_no_protection> <== NOT EXECUTED 4e32c: 2440 moveal %d0,%a2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 4e32e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4e332: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 4e338: 670e beqs 4e348 <== NOT EXECUTED 4e33a: 7201 moveq #1,%d1 <== NOT EXECUTED 4e33c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e33e: 6604 bnes 4e344 <== NOT EXECUTED 4e340: 7404 moveq #4,%d2 <== NOT EXECUTED 4e342: 602a bras 4e36e <== NOT EXECUTED 4e344: 7419 moveq #25,%d2 <== NOT EXECUTED 4e346: 6026 bras 4e36e <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Region_Free_segment ( Region_Control *the_region, void *the_segment ) { return _Heap_Free( &the_region->Memory, the_segment ); 4e348: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4e34c: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4e350: 4eb9 0005 0c24 jsr 50c24 <_Heap_Free> <== NOT EXECUTED #endif status = _Region_Free_segment( the_region, segment ); _Region_Debug_Walk( the_region, 4 ); if ( !status ) 4e356: 508f addql #8,%sp <== NOT EXECUTED 4e358: 4a00 tstb %d0 <== NOT EXECUTED 4e35a: 6710 beqs 4e36c <== NOT EXECUTED return_status = RTEMS_INVALID_ADDRESS; else { the_region->number_of_used_blocks -= 1; 4e35c: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED _Region_Process_queue(the_region); /* unlocks allocator */ 4e360: 4282 clrl %d2 <== NOT EXECUTED 4e362: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e364: 4eb9 0005 5444 jsr 55444 <_Region_Process_queue> <== NOT EXECUTED 4e36a: 600e bras 4e37a <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4e36c: 7409 moveq #9,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e36e: 2f39 0006 dace movel 6dace <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e374: 4eb9 0005 0098 jsr 50098 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 4e37a: 2002 movel %d2,%d0 <== NOT EXECUTED 4e37c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4e380: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 4e384: 588f addql #4,%sp <== NOT EXECUTED return return_status; } 4e386: 4e5e unlk %fp <== NOT EXECUTED 4e388: 4e75 rts <== NOT EXECUTED ... 00044c10 : uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id ) { 44c10: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 44c14: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 44c18: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 44c1c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 44c20: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 44c24: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED register Semaphore_Control *the_semaphore; CORE_mutex_Attributes the_mutex_attributes; CORE_semaphore_Attributes the_semaphore_attributes; if ( !rtems_is_name_valid( name ) ) 44c28: 4a85 tstl %d5 <== NOT EXECUTED 44c2a: 6606 bnes 44c32 <== NOT EXECUTED 44c2c: 7003 moveq #3,%d0 <== NOT EXECUTED 44c2e: 6000 0172 braw 44da2 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 44c32: 4a8b tstl %a3 <== NOT EXECUTED 44c34: 6606 bnes 44c3c <== NOT EXECUTED 44c36: 7009 moveq #9,%d0 <== NOT EXECUTED 44c38: 6000 0168 braw 44da2 <== NOT EXECUTED uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id ) { 44c3c: 2202 movel %d2,%d1 <== NOT EXECUTED 44c3e: 0281 0000 00c0 andil #192,%d1 <== NOT EXECUTED return RTEMS_NOT_DEFINED; } else #endif if ( _Attributes_Is_inherit_priority( attribute_set ) || 44c44: 6724 beqs 44c6a <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE); 44c46: 7030 moveq #48,%d0 <== NOT EXECUTED 44c48: c082 andl %d2,%d0 <== NOT EXECUTED _Attributes_Is_priority_ceiling( attribute_set ) ) { if ( ! ( (_Attributes_Is_binary_semaphore( attribute_set ) || 44c4a: 7610 moveq #16,%d3 <== NOT EXECUTED 44c4c: b680 cmpl %d0,%d3 <== NOT EXECUTED 44c4e: 670a beqs 44c5a <== NOT EXECUTED 44c50: 163c 0020 moveb #32,%d3 <== NOT EXECUTED 44c54: b680 cmpl %d0,%d3 <== NOT EXECUTED 44c56: 6600 0148 bnew 44da0 <== NOT EXECUTED 44c5a: 44c2 movew %d2,%ccr <== NOT EXECUTED 44c5c: 6600 0142 bnew 44da0 <== NOT EXECUTED _Attributes_Is_priority( attribute_set ) ) ) return RTEMS_NOT_DEFINED; } if ( _Attributes_Is_inherit_priority( attribute_set ) && 44c60: 0c81 0000 00c0 cmpil #192,%d1 <== NOT EXECUTED 44c66: 6700 0138 beqw 44da0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE); 44c6a: 7630 moveq #48,%d3 <== NOT EXECUTED 44c6c: c682 andl %d2,%d3 <== NOT EXECUTED _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) 44c6e: 670e beqs 44c7e <== NOT EXECUTED 44c70: 7001 moveq #1,%d0 <== NOT EXECUTED 44c72: b084 cmpl %d4,%d0 <== NOT EXECUTED 44c74: 6408 bccs 44c7e <== NOT EXECUTED 44c76: 103c 000a moveb #10,%d0 <== NOT EXECUTED 44c7a: 6000 0126 braw 44da2 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44c7e: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44c84: 5280 addql #1,%d0 <== NOT EXECUTED 44c86: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED * 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 ); 44c8c: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44c92: 4eb9 0004 60c8 jsr 460c8 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_semaphore = _Semaphore_Allocate(); if ( !the_semaphore ) { 44c98: 588f addql #4,%sp <== NOT EXECUTED 44c9a: 2440 moveal %d0,%a2 <== NOT EXECUTED 44c9c: 4a80 tstl %d0 <== NOT EXECUTED 44c9e: 660c bnes 44cac <== NOT EXECUTED _Thread_Enable_dispatch(); 44ca0: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44ca6: 7005 moveq #5,%d0 <== NOT EXECUTED 44ca8: 6000 00f8 braw 44da2 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_semaphore->attribute_set = attribute_set; 44cac: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED * If it is not a counting semaphore, then it is either a * simple binary semaphore or a more powerful mutex style binary * semaphore. */ if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) { 44cb0: 4a83 tstl %d3 <== NOT EXECUTED 44cb2: 6700 009a beqw 44d4e <== NOT EXECUTED CORE_mutex_Status mutex_status; if ( _Attributes_Is_inherit_priority( attribute_set ) ) 44cb6: 0802 0006 btst #6,%d2 <== NOT EXECUTED 44cba: 6708 beqs 44cc4 <== NOT EXECUTED the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 44cbc: 7202 moveq #2,%d1 <== NOT EXECUTED 44cbe: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED 44cc2: 6014 bras 44cd8 <== NOT EXECUTED else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) 44cc4: 4a02 tstb %d2 <== NOT EXECUTED 44cc6: 6c04 bges 44ccc <== NOT EXECUTED the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 44cc8: 7003 moveq #3,%d0 <== NOT EXECUTED 44cca: 6008 bras 44cd4 <== NOT EXECUTED else if ( _Attributes_Is_priority( attribute_set ) ) the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; 44ccc: 44c2 movew %d2,%ccr <== NOT EXECUTED 44cce: 56c0 sne %d0 <== NOT EXECUTED 44cd0: 49c0 extbl %d0 <== NOT EXECUTED 44cd2: 5280 addql #1,%d0 <== NOT EXECUTED 44cd4: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED else the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { 44cd8: 7210 moveq #16,%d1 <== NOT EXECUTED 44cda: b283 cmpl %d3,%d1 <== NOT EXECUTED 44cdc: 661e bnes 44cfc <== NOT EXECUTED the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; switch ( the_mutex_attributes.discipline ) { 44cde: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED else the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 44ce2: 42ae ffea clrl %fp@(-22) <== NOT EXECUTED switch ( the_mutex_attributes.discipline ) { 44ce6: 7601 moveq #1,%d3 <== NOT EXECUTED 44ce8: b680 cmpl %d0,%d3 <== NOT EXECUTED 44cea: 6416 bccs 44d02 <== NOT EXECUTED 44cec: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 44cf0: b280 cmpl %d0,%d1 <== NOT EXECUTED 44cf2: 6514 bcss 44d08 <== NOT EXECUTED case CORE_MUTEX_DISCIPLINES_PRIORITY: the_mutex_attributes.only_owner_release = FALSE; break; case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT: the_mutex_attributes.only_owner_release = TRUE; 44cf4: 7001 moveq #1,%d0 <== NOT EXECUTED 44cf6: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED 44cfa: 600c bras 44d08 <== NOT EXECUTED break; } } else { the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; 44cfc: 7202 moveq #2,%d1 <== NOT EXECUTED 44cfe: 2d41 ffea movel %d1,%fp@(-22) <== NOT EXECUTED the_mutex_attributes.only_owner_release = FALSE; 44d02: 4203 clrb %d3 <== NOT EXECUTED 44d04: 1d43 ffee moveb %d3,%fp@(-18) <== NOT EXECUTED } the_mutex_attributes.priority_ceiling = priority_ceiling; mutex_status = _CORE_mutex_Initialize( 44d08: 7001 moveq #1,%d0 <== NOT EXECUTED 44d0a: b084 cmpl %d4,%d0 <== NOT EXECUTED 44d0c: 57c0 seq %d0 <== NOT EXECUTED 44d0e: 49c0 extbl %d0 <== NOT EXECUTED 44d10: 4480 negl %d0 <== NOT EXECUTED 44d12: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44d14: 486e ffea pea %fp@(-22) <== NOT EXECUTED } else { the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; the_mutex_attributes.only_owner_release = FALSE; } the_mutex_attributes.priority_ceiling = priority_ceiling; 44d18: 2d6e 0014 fff4 movel %fp@(20),%fp@(-12) <== NOT EXECUTED mutex_status = _CORE_mutex_Initialize( 44d1e: 486a 0014 pea %a2@(20) <== NOT EXECUTED 44d22: 4eb9 0004 59a8 jsr 459a8 <_CORE_mutex_Initialize> <== NOT EXECUTED &the_semaphore->Core_control.mutex, &the_mutex_attributes, (count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED ); if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) { 44d28: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44d2e: 7206 moveq #6,%d1 <== NOT EXECUTED 44d30: b280 cmpl %d0,%d1 <== NOT EXECUTED 44d32: 664a bnes 44d7e <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 44d34: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44d36: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44d3c: 4eb9 0004 63c8 jsr 463c8 <_Objects_Free> <== NOT EXECUTED _Semaphore_Free( the_semaphore ); _Thread_Enable_dispatch(); 44d42: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44d48: 508f addql #8,%sp <== NOT EXECUTED 44d4a: 7013 moveq #19,%d0 <== NOT EXECUTED 44d4c: 6054 bras 44da2 <== NOT EXECUTED */ the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 44d4e: 2f04 movel %d4,%sp@- <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_INVALID_PRIORITY; } } else { if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 44d50: 44c2 movew %d2,%ccr <== NOT EXECUTED 44d52: 56c0 sne %d0 <== NOT EXECUTED */ the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 44d54: 486e fff8 pea %fp@(-8) <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_INVALID_PRIORITY; } } else { if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 44d58: 49c0 extbl %d0 <== NOT EXECUTED 44d5a: 5280 addql #1,%d0 <== NOT EXECUTED /* * This effectively disables limit checking. */ the_semaphore_attributes.maximum_count = 0xFFFFFFFF; 44d5c: 76ff moveq #-1,%d3 <== NOT EXECUTED */ the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 44d5e: 486a 0014 pea %a2@(20) <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_INVALID_PRIORITY; } } else { if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 44d62: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED /* * This effectively disables limit checking. */ the_semaphore_attributes.maximum_count = 0xFFFFFFFF; 44d66: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED /* * The following are just to make Purify happy. */ the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 44d6a: 42ae ffea clrl %fp@(-22) <== NOT EXECUTED the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM; 44d6e: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED _CORE_semaphore_Initialize( 44d72: 4eb9 0004 5c7c jsr 45c7c <_CORE_semaphore_Initialize> <== NOT EXECUTED 44d78: dffc 0000 000c addal #12,%sp <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 44d7e: 2079 0005 7dca moveal 57dca <_Semaphore_Information+0x1a>,%a0 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 44d84: 2545 000c movel %d5,%a2@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 44d88: 4280 clrl %d0 <== NOT EXECUTED 44d8a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED 44d8e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_Semaphore_Information, &the_semaphore->Object, (Objects_Name) name ); *id = the_semaphore->Object.id; 44d92: 26aa 0008 movel %a2@(8),%a3@ <== NOT EXECUTED the_semaphore->Object.id, name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 44d96: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44d9c: 4280 clrl %d0 <== NOT EXECUTED 44d9e: 6002 bras 44da2 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 44da0: 700b moveq #11,%d0 <== NOT EXECUTED } 44da2: 4cee 0c3c ffd0 moveml %fp@(-48),%d2-%d5/%a2-%a3 <== NOT EXECUTED 44da8: 4e5e unlk %fp <== NOT EXECUTED 44daa: 4e75 rts 00044dac : #endif rtems_status_code rtems_semaphore_delete( rtems_id id ) { 44dac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44db0: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get ( Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) 44db2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44db6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44dba: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44dc0: 4eb9 0004 6528 jsr 46528 <_Objects_Get> <== NOT EXECUTED register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 44dc6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44dcc: 2440 moveal %d0,%a2 <== NOT EXECUTED 44dce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44dd2: 6704 beqs 44dd8 <== NOT EXECUTED 44dd4: 7004 moveq #4,%d0 <== NOT EXECUTED 44dd6: 606c bras 44e44 <== NOT EXECUTED 44dd8: 7030 moveq #48,%d0 <== NOT EXECUTED 44dda: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 44dde: 6728 beqs 44e08 <== NOT EXECUTED if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) && 44de0: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED 44de4: 6610 bnes 44df6 <== NOT EXECUTED 44de6: 7220 moveq #32,%d1 <== NOT EXECUTED 44de8: b280 cmpl %d0,%d1 <== NOT EXECUTED 44dea: 670a beqs 44df6 <== NOT EXECUTED !_Attributes_Is_simple_binary_semaphore( the_semaphore->attribute_set ) ) { _Thread_Enable_dispatch(); 44dec: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44df2: 700c moveq #12,%d0 <== NOT EXECUTED 44df4: 604e bras 44e44 <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; } _CORE_mutex_Flush( 44df6: 4878 0004 pea 4 <== NOT EXECUTED 44dfa: 42a7 clrl %sp@- <== NOT EXECUTED 44dfc: 486a 0014 pea %a2@(20) <== NOT EXECUTED 44e00: 4eb9 0004 599c jsr 4599c <_CORE_mutex_Flush> <== NOT EXECUTED 44e06: 6010 bras 44e18 <== NOT EXECUTED &the_semaphore->Core_control.mutex, SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_MUTEX_WAS_DELETED ); } else { _CORE_semaphore_Flush( 44e08: 4878 0002 pea 2 <== NOT EXECUTED 44e0c: 42a7 clrl %sp@- <== NOT EXECUTED 44e0e: 486a 0014 pea %a2@(20) <== NOT EXECUTED 44e12: 4eb9 0004 5c70 jsr 45c70 <_CORE_semaphore_Flush> <== NOT EXECUTED SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_SEMAPHORE_WAS_DELETED ); } _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); 44e18: 508f addql #8,%sp <== NOT EXECUTED 44e1a: 2e8a movel %a2,%sp@ <== NOT EXECUTED 44e1c: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44e22: 4eb9 0004 6150 jsr 46150 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 44e28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44e2a: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44e30: 4eb9 0004 63c8 jsr 463c8 <_Objects_Free> <== NOT EXECUTED 0, /* Not used */ 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 44e36: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44e3c: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44e42: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 44e44: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44e48: 4e5e unlk %fp <== NOT EXECUTED 44e4a: 4e75 rts 0005dacc : #endif rtems_status_code rtems_semaphore_flush( rtems_id id ) { 5dacc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5dad0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5dad4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5dad8: 4879 0009 37ec pea 937ec <_Semaphore_Information> <== NOT EXECUTED 5dade: 4eb9 0004 a24c jsr 4a24c <_Objects_Get> <== NOT EXECUTED register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 5dae4: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 5daea: 2040 moveal %d0,%a0 <== NOT EXECUTED 5daec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5daf0: 6704 beqs 5daf6 <== NOT EXECUTED 5daf2: 7004 moveq #4,%d0 <== NOT EXECUTED 5daf4: 603c bras 5db32 <== NOT EXECUTED 5daf6: 2200 movel %d0,%d1 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 5daf8: 7030 moveq #48,%d0 <== NOT EXECUTED 5dafa: 0681 0000 0014 addil #20,%d1 <== NOT EXECUTED 5db00: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED 5db04: 6710 beqs 5db16 <== NOT EXECUTED _CORE_mutex_Flush( 5db06: 4878 0001 pea 1 <== NOT EXECUTED 5db0a: 42a7 clrl %sp@- <== NOT EXECUTED 5db0c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5db0e: 4eb9 0004 957c jsr 4957c <_CORE_mutex_Flush> <== NOT EXECUTED 5db14: 600e bras 5db24 <== NOT EXECUTED &the_semaphore->Core_control.mutex, SEND_OBJECT_WAS_DELETED, CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT ); } else { _CORE_semaphore_Flush( 5db16: 4878 0001 pea 1 <== NOT EXECUTED 5db1a: 42a7 clrl %sp@- <== NOT EXECUTED 5db1c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5db1e: 4eb9 0004 9850 jsr 49850 <_CORE_semaphore_Flush> <== NOT EXECUTED 5db24: dffc 0000 000c addal #12,%sp <== NOT EXECUTED &the_semaphore->Core_control.semaphore, SEND_OBJECT_WAS_DELETED, CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT ); } _Thread_Enable_dispatch(); 5db2a: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5db30: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5db32: 4e5e unlk %fp <== NOT EXECUTED 5db34: 4e75 rts <== NOT EXECUTED ... 0004e634 : rtems_status_code rtems_semaphore_ident( rtems_name name, uint32_t node, rtems_id *id ) { 4e634: 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 ); 4e638: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e63c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4e640: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e644: 4879 0006 d8f8 pea 6d8f8 <_Semaphore_Information> <== NOT EXECUTED 4e64a: 4eb9 0005 1930 jsr 51930 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4e650: 41f9 0006 6922 lea 66922 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; } 4e656: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4e65a: 4e5e unlk %fp <== NOT EXECUTED 4e65c: 4e75 rts <== NOT EXECUTED ... 00044e4c : rtems_status_code rtems_semaphore_obtain( rtems_id id, rtems_option option_set, rtems_interval timeout ) { 44e4c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 44e50: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED Objects_Id id, Objects_Locations *location, ISR_Level *level ) { return (Semaphore_Control *) 44e54: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 44e58: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 44e5c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44e60: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 44e64: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44e66: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 44e6a: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44e70: 4eb9 0004 64d8 jsr 464d8 <_Objects_Get_isr_disable> <== NOT EXECUTED register Semaphore_Control *the_semaphore; Objects_Locations location; ISR_Level level; the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level ); switch ( location ) { 44e76: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 44e7c: 2240 moveal %d0,%a1 <== NOT EXECUTED 44e7e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44e82: 6706 beqs 44e8a <== NOT EXECUTED 44e84: 7004 moveq #4,%d0 <== NOT EXECUTED 44e86: 6000 00c0 braw 44f48 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 44e8a: 7030 moveq #48,%d0 <== NOT EXECUTED 44e8c: c0a9 0010 andl %a1@(16),%d0 <== NOT EXECUTED 44e90: 6734 beqs 44ec6 <== NOT EXECUTED _CORE_mutex_Seize( 44e92: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 44e96: 7001 moveq #1,%d0 <== NOT EXECUTED 44e98: b182 eorl %d0,%d2 <== NOT EXECUTED 44e9a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 44e9c: c082 andl %d2,%d0 <== NOT EXECUTED 44e9e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44ea0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44ea2: 4869 0014 pea %a1@(20) <== NOT EXECUTED 44ea6: 4eb9 0004 5abc jsr 45abc <_CORE_mutex_Seize> <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? FALSE : TRUE), timeout, level ); return _Semaphore_Translate_core_mutex_return_code( 44eac: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 44eb2: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 44eb6: 4eb9 0004 4fe0 jsr 44fe0 <_Semaphore_Translate_core_mutex_return_code> <== NOT EXECUTED 44ebc: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 44ec2: 6000 0084 braw 44f48 <== NOT EXECUTED Watchdog_Interval timeout, ISR_Level *level_p ) { Thread_Control *executing; ISR_Level level = *level_p; 44ec6: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED /* disabled when you get here */ executing = _Thread_Executing; 44eca: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 44ed0: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 44ed4: 2029 005c movel %a1@(92),%d0 <== NOT EXECUTED 44ed8: 670a beqs 44ee4 <== NOT EXECUTED the_semaphore->count -= 1; 44eda: 5380 subql #1,%d0 <== NOT EXECUTED 44edc: 2340 005c movel %d0,%a1@(92) <== NOT EXECUTED _ISR_Enable( level ); 44ee0: 46c1 movew %d1,%sr <== NOT EXECUTED 44ee2: 6052 bras 44f36 <== NOT EXECUTED return; } if ( !wait ) { 44ee4: 0802 0000 btst #0,%d2 <== NOT EXECUTED 44ee8: 670a beqs 44ef4 <== NOT EXECUTED _ISR_Enable( level ); 44eea: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 44eec: 7001 moveq #1,%d0 <== NOT EXECUTED 44eee: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 44ef2: 6042 bras 44f36 <== NOT EXECUTED 44ef4: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 44efa: 5280 addql #1,%d0 <== NOT EXECUTED 44efc: 23c0 0005 7e7c movel %d0,57e7c <_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; 44f02: 7001 moveq #1,%d0 <== NOT EXECUTED 44f04: 2340 0044 movel %d0,%a1@(68) <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 44f08: 2009 movel %a1,%d0 <== NOT EXECUTED 44f0a: 0680 0000 0014 addil #20,%d0 <== NOT EXECUTED executing->Wait.id = id; 44f10: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 44f14: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; _ISR_Enable( level ); 44f18: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 44f1a: 4879 0004 74a8 pea 474a8 <_Thread_queue_Timeout> <== NOT EXECUTED 44f20: 2f04 movel %d4,%sp@- <== NOT EXECUTED 44f22: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44f24: 4eb9 0004 7170 jsr 47170 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); 44f2a: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 44f30: dffc 0000 000c addal #12,%sp <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? FALSE : TRUE), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( 44f36: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 44f3c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 44f40: 4eb9 0004 4ff6 jsr 44ff6 <_Semaphore_Translate_core_semaphore_return_code> <== NOT EXECUTED 44f46: 588f addql #4,%sp <== NOT EXECUTED break; } return RTEMS_INVALID_ID; } 44f48: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED 44f4e: 4e5e unlk %fp <== NOT EXECUTED 44f50: 4e75 rts <== NOT EXECUTED ... 00044f54 : #endif rtems_status_code rtems_semaphore_release( rtems_id id ) { 44f54: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44f58: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44f5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f5c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get ( Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) 44f60: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44f64: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f66: 4879 0005 7db0 pea 57db0 <_Semaphore_Information> <== NOT EXECUTED 44f6c: 4eb9 0004 6528 jsr 46528 <_Objects_Get> <== NOT EXECUTED Objects_Locations location; CORE_mutex_Status mutex_status; CORE_semaphore_Status semaphore_status; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 44f72: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44f78: 2040 moveal %d0,%a0 <== NOT EXECUTED 44f7a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44f7e: 6704 beqs 44f84 <== NOT EXECUTED 44f80: 7004 moveq #4,%d0 <== NOT EXECUTED 44f82: 604e bras 44fd2 <== NOT EXECUTED 44f84: 2200 movel %d0,%d1 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 44f86: 7030 moveq #48,%d0 <== NOT EXECUTED 44f88: 0681 0000 0014 addil #20,%d1 <== NOT EXECUTED 44f8e: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED 44f92: 45f9 0004 6d0a lea 46d0a <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 44f98: 671a beqs 44fb4 <== NOT EXECUTED mutex_status = _CORE_mutex_Surrender( 44f9a: 42a7 clrl %sp@- <== NOT EXECUTED 44f9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44f9e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 44fa0: 4eb9 0004 5b64 jsr 45b64 <_CORE_mutex_Surrender> <== NOT EXECUTED 44fa6: 2400 movel %d0,%d2 <== NOT EXECUTED &the_semaphore->Core_control.mutex, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 44fa8: 4e92 jsr %a2@ <== NOT EXECUTED return _Semaphore_Translate_core_mutex_return_code( mutex_status ); 44faa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44fac: 4eb9 0004 4fe0 jsr 44fe0 <_Semaphore_Translate_core_mutex_return_code> <== NOT EXECUTED 44fb2: 6018 bras 44fcc <== NOT EXECUTED } else { semaphore_status = _CORE_semaphore_Surrender( 44fb4: 42a7 clrl %sp@- <== NOT EXECUTED 44fb6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44fb8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 44fba: 4eb9 0004 5cc4 jsr 45cc4 <_CORE_semaphore_Surrender> <== NOT EXECUTED 44fc0: 2400 movel %d0,%d2 <== NOT EXECUTED &the_semaphore->Core_control.semaphore, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 44fc2: 4e92 jsr %a2@ <== NOT EXECUTED return 44fc4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44fc6: 4eb9 0004 4ff6 jsr 44ff6 <_Semaphore_Translate_core_semaphore_return_code> <== NOT EXECUTED 44fcc: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 44fd2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 44fd6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44fda: 4e5e unlk %fp <== NOT EXECUTED 44fdc: 4e75 rts <== NOT EXECUTED ... 00045524 : */ void rtems_shutdown_executive( uint32_t result ) { 45524: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED if ( _System_state_Current != SYSTEM_STATE_SHUTDOWN ) { 45528: 7004 moveq #4,%d0 <== NOT EXECUTED 4552a: b0b9 0005 800e cmpl 5800e <_System_state_Current>,%d0 <== NOT EXECUTED 45530: 6718 beqs 4554a <== NOT EXECUTED Context_Control *context_p = &context_area; if ( _System_state_Is_up(_System_state_Get ()) ) context_p = &_Thread_Executing->Registers; _Context_Switch( context_p, &_Thread_BSP_context ); 45532: 4879 0005 7e48 pea 57e48 <_Thread_BSP_context> <== NOT EXECUTED 45538: 486e ffcc pea %fp@(-52) <== NOT EXECUTED 4553c: 23c0 0005 800e movel %d0,5800e <_System_state_Current> <== NOT EXECUTED 45542: 4eb9 0004 7f68 jsr 47f68 <_CPU_Context_switch> <== NOT EXECUTED 45548: 508f addql #8,%sp <== NOT EXECUTED _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); } } 4554a: 4e5e unlk %fp <== NOT EXECUTED 4554c: 4e75 rts <== NOT EXECUTED ... 00045adc : RTEMS_API_Control *api; ASR_Information *asr; /* XXX normalize mode */ executing = _Thread_Executing; api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; 45adc: 2079 0005 9ed2 moveal 59ed2 <_Thread_Executing>,%a0 <== NOT EXECUTED 45ae2: 2039 0005 9e14 movel 59e14 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 45ae8: 4e56 0000 linkw %fp,#0 <== 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 ]; 45aec: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 45af0: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45af4: 5280 addql #1,%d0 <== NOT EXECUTED 45af6: 23c0 0005 9e14 movel %d0,59e14 <_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 ) ) { 45afc: 4a81 tstl %d1 <== NOT EXECUTED 45afe: 670c beqs 45b0c <== NOT EXECUTED asr->mode_set = mode_set; asr->handler = asr_handler; 45b00: 2141 000a movel %d1,%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; 45b04: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED 45b0a: 601a bras 45b26 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = true; 45b0c: 7001 moveq #1,%d0 <== NOT EXECUTED 45b0e: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; information->signals_posted = 0; information->signals_pending = 0; information->nest_level = 0; 45b12: 42a8 001a clrl %a0@(26) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = true; information->handler = NULL; 45b16: 42a8 000a clrl %a0@(10) <== NOT EXECUTED information->mode_set = RTEMS_DEFAULT_MODES; 45b1a: 42a8 000e clrl %a0@(14) <== NOT EXECUTED information->signals_posted = 0; 45b1e: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED information->signals_pending = 0; 45b22: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED asr->handler = asr_handler; } else _ASR_Initialize( asr ); _Thread_Enable_dispatch(); 45b26: 4eb9 0004 7a72 jsr 47a72 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 45b2c: 4e5e unlk %fp <== NOT EXECUTED 45b2e: 4280 clrl %d0 <== NOT EXECUTED 45b30: 4e75 rts <== NOT EXECUTED ... 0004e820 : rtems_status_code rtems_signal_send( Objects_Id id, rtems_signal_set signal_set ) { 4e820: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4e824: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e826: 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 ) 4e82a: 6606 bnes 4e832 <== NOT EXECUTED 4e82c: 700a moveq #10,%d0 <== NOT EXECUTED 4e82e: 6000 0084 braw 4e8b4 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; the_thread = _Thread_Get( id, &location ); 4e832: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e836: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e83a: 4eb9 0005 1fd8 jsr 51fd8 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4e840: 508f addql #8,%sp <== NOT EXECUTED ASR_Information *asr; if ( !signal_set ) return RTEMS_INVALID_NUMBER; the_thread = _Thread_Get( id, &location ); 4e842: 2240 moveal %d0,%a1 <== NOT EXECUTED switch ( location ) { 4e844: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4e848: 6704 beqs 4e84e <== NOT EXECUTED 4e84a: 7004 moveq #4,%d0 <== NOT EXECUTED 4e84c: 6066 bras 4e8b4 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 4e84e: 2069 010c moveal %a1@(268),%a0 <== NOT EXECUTED asr = &api->Signal; if ( ! _ASR_Is_null_handler( asr->handler ) ) { 4e852: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED 4e856: 6754 beqs 4e8ac <== NOT EXECUTED if ( asr->is_enabled ) { 4e858: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED 4e85c: 6732 beqs 4e890 <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 4e85e: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4e864: 40c0 movew %sr,%d0 <== NOT EXECUTED 4e866: 8280 orl %d0,%d1 <== NOT EXECUTED 4e868: 46c1 movew %d1,%sr <== NOT EXECUTED *signal_set |= signals; 4e86a: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED _ISR_Enable( _level ); 4e86e: 46c0 movew %d0,%sr <== NOT EXECUTED _ASR_Post_signals( signal_set, &asr->signals_posted ); the_thread->do_post_task_switch_extension = true; if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 4e870: 2039 0006 dab6 movel 6dab6 <_ISR_Nest_level>,%d0 <== NOT EXECUTED if ( ! _ASR_Is_null_handler( asr->handler ) ) { if ( asr->is_enabled ) { _ASR_Post_signals( signal_set, &asr->signals_posted ); the_thread->do_post_task_switch_extension = true; 4e876: 7201 moveq #1,%d1 <== NOT EXECUTED 4e878: 1341 0075 moveb %d1,%a1@(117) <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 4e87c: 4a80 tstl %d0 <== NOT EXECUTED 4e87e: 6722 beqs 4e8a2 <== NOT EXECUTED 4e880: b3f9 0006 dad6 cmpal 6dad6 <_Thread_Executing>,%a1 <== NOT EXECUTED 4e886: 661a bnes 4e8a2 <== NOT EXECUTED _ISR_Signals_to_thread_executing = TRUE; 4e888: 13c1 0006 db64 moveb %d1,6db64 <_ISR_Signals_to_thread_executing> <== NOT EXECUTED 4e88e: 6012 bras 4e8a2 <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 4e890: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4e896: 40c0 movew %sr,%d0 <== NOT EXECUTED 4e898: 8280 orl %d0,%d1 <== NOT EXECUTED 4e89a: 46c1 movew %d1,%sr <== NOT EXECUTED *signal_set |= signals; 4e89c: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED _ISR_Enable( _level ); 4e8a0: 46c0 movew %d0,%sr <== NOT EXECUTED } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } _Thread_Enable_dispatch(); 4e8a2: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4e8a8: 4280 clrl %d0 <== NOT EXECUTED 4e8aa: 6008 bras 4e8b4 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 4e8ac: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4e8b2: 700b moveq #11,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4e8b4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4e8b8: 4e5e unlk %fp <== NOT EXECUTED 4e8ba: 4e75 rts 0004500c : size_t stack_size, rtems_mode initial_modes, rtems_attribute attribute_set, Objects_Id *id ) { 4500c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 45010: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 45014: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 45018: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4501c: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 45020: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED 45024: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED Priority_Control core_priority; RTEMS_API_Control *api; ASR_Information *asr; if ( !id ) 45028: 4a8c tstl %a4 <== NOT EXECUTED 4502a: 6606 bnes 45032 <== NOT EXECUTED 4502c: 7009 moveq #9,%d0 <== NOT EXECUTED 4502e: 6000 00fc braw 4512c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 45032: 4a8b tstl %a3 <== NOT EXECUTED 45034: 6606 bnes 4503c <== NOT EXECUTED 45036: 7003 moveq #3,%d0 <== NOT EXECUTED 45038: 6000 00f2 braw 4512c <== NOT EXECUTED /* * Validate the RTEMS API priority and convert it to the core priority range. */ if ( !_Attributes_Is_system_task( the_attribute_set ) ) { 4503c: 4a44 tstw %d4 <== NOT EXECUTED 4503e: 6d1e blts 4505e <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 45040: 4a83 tstl %d3 <== NOT EXECUTED 45042: 6714 beqs 45058 <== NOT EXECUTED 45044: 4280 clrl %d0 <== NOT EXECUTED 45046: 1039 0005 62f2 moveb 562f2 ,%d0 <== NOT EXECUTED 4504c: b083 cmpl %d3,%d0 <== NOT EXECUTED 4504e: 54c0 scc %d0 <== NOT EXECUTED 45050: 49c0 extbl %d0 <== NOT EXECUTED 45052: 4480 negl %d0 <== NOT EXECUTED if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) ) 45054: 4a00 tstb %d0 <== NOT EXECUTED 45056: 6606 bnes 4505e <== NOT EXECUTED 45058: 7013 moveq #19,%d0 <== NOT EXECUTED 4505a: 6000 00d0 braw 4512c <== NOT EXECUTED */ /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 4505e: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45064: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED * 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 ); 4506a: 4879 0005 7dec pea 57dec <_RTEMS_tasks_Information> <== NOT EXECUTED 45070: 4eb9 0004 60c8 jsr 460c8 <_Objects_Allocate> <== NOT EXECUTED * the event of an error. */ the_thread = _RTEMS_tasks_Allocate(); if ( !the_thread ) { 45076: 508f addql #8,%sp <== NOT EXECUTED 45078: 2440 moveal %d0,%a2 <== NOT EXECUTED 4507a: 4a80 tstl %d0 <== NOT EXECUTED 4507c: 6614 bnes 45092 <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4507e: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45084: 4eb9 0004 5930 jsr 45930 <_API_Mutex_Unlock> <== NOT EXECUTED 4508a: 588f addql #4,%sp <== NOT EXECUTED 4508c: 7005 moveq #5,%d0 <== NOT EXECUTED 4508e: 6000 009c braw 4512c <== NOT EXECUTED /* * Initialize the core thread for this task. */ status = _Thread_Initialize( 45092: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45094: 7007 moveq #7,%d0 <== NOT EXECUTED 45096: c082 andl %d2,%d0 <== NOT EXECUTED 45098: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4509a: 7a09 moveq #9,%d5 <== NOT EXECUTED 4509c: 2202 movel %d2,%d1 <== NOT EXECUTED 4509e: 42a7 clrl %sp@- <== NOT EXECUTED 450a0: eaa9 lsrl %d5,%d1 <== NOT EXECUTED 450a2: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED 450a6: ca81 andl %d1,%d5 <== NOT EXECUTED 450a8: 2002 movel %d2,%d0 <== NOT EXECUTED 450aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 450ac: 7201 moveq #1,%d1 <== NOT EXECUTED 450ae: e088 lsrl #8,%d0 <== NOT EXECUTED 450b0: b380 eorl %d1,%d0 <== NOT EXECUTED 450b2: 7a01 moveq #1,%d5 <== NOT EXECUTED 450b4: ca80 andl %d0,%d5 <== NOT EXECUTED 450b6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 450b8: 7001 moveq #1,%d0 <== NOT EXECUTED 450ba: c084 andl %d4,%d0 <== NOT EXECUTED 450bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 450be: 47f9 0004 5930 lea 45930 <_API_Mutex_Unlock>,%a3 <== NOT EXECUTED 450c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 450c6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 450ca: 42a7 clrl %sp@- <== NOT EXECUTED 450cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 450ce: 4879 0005 7dec pea 57dec <_RTEMS_tasks_Information> <== NOT EXECUTED 450d4: 4eb9 0004 6dc8 jsr 46dc8 <_Thread_Initialize> <== NOT EXECUTED NULL, /* no budget algorithm callout */ _Modes_Get_interrupt_level(initial_modes), (Objects_Name) name ); if ( !status ) { 450da: dffc 0000 002c addal #44,%sp <== NOT EXECUTED 450e0: 4a00 tstb %d0 <== NOT EXECUTED 450e2: 6626 bnes 4510a <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free ( Thread_Control *the_task ) { _Objects_Free( 450e4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 450e8: 4eb9 0004 644c jsr 4644c <_Objects_Get_information_id> <== NOT EXECUTED 450ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 450f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 450f2: 4eb9 0004 63c8 jsr 463c8 <_Objects_Free> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( is_global ) _Objects_MP_Free_global_object( the_global_object ); #endif _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 450f8: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 450fe: 4e93 jsr %a3@ <== NOT EXECUTED 45100: 700d moveq #13,%d0 <== NOT EXECUTED 45102: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45108: 6022 bras 4512c <== NOT EXECUTED } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true; 4510a: 720a moveq #10,%d1 <== NOT EXECUTED 4510c: 206a 010c moveal %a2@(268),%a0 <== NOT EXECUTED 45110: e2aa lsrl %d1,%d2 <== NOT EXECUTED 45112: 7a01 moveq #1,%d5 <== NOT EXECUTED *id = the_thread->Object.id; 45114: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true; 45118: bb82 eorl %d5,%d2 <== NOT EXECUTED 4511a: c485 andl %d5,%d2 <== NOT EXECUTED 4511c: 1142 0008 moveb %d2,%a0@(8) <== NOT EXECUTED ); } #endif _RTEMS_Unlock_allocator(); 45120: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45126: 4e93 jsr %a3@ <== NOT EXECUTED 45128: 588f addql #4,%sp <== NOT EXECUTED 4512a: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4512c: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 45132: 4e5e unlk %fp <== NOT EXECUTED 45134: 4e75 rts <== NOT EXECUTED ... 00045138 : */ rtems_status_code rtems_task_delete( Objects_Id id ) { 45138: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4513c: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); 45140: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45146: 4eb9 0004 58cc jsr 458cc <_API_Mutex_Lock> <== NOT EXECUTED the_thread = _Thread_Get( id, &location ); 4514c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45150: 49f9 0004 5930 lea 45930 <_API_Mutex_Unlock>,%a4 <== NOT EXECUTED 45156: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4515a: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 45160: dffc 0000 000c addal #12,%sp <== NOT EXECUTED Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); the_thread = _Thread_Get( id, &location ); 45166: 2640 moveal %d0,%a3 <== NOT EXECUTED switch ( location ) { 45168: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4516c: 663e bnes 451ac <== NOT EXECUTED case OBJECTS_LOCAL: the_information = _Objects_Get_information_id( the_thread->Object.id ); 4516e: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 45172: 45f9 0004 644c lea 4644c <_Objects_Get_information_id>,%a2 <== NOT EXECUTED 45178: 4e92 jsr %a2@ <== NOT EXECUTED 0 /* Not used */ ); } #endif _Thread_Close( the_information, the_thread ); 4517a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4517c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4517e: 4eb9 0004 69f4 jsr 469f4 <_Thread_Close> <== NOT EXECUTED 45184: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 45188: 4e92 jsr %a2@ <== NOT EXECUTED 4518a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4518c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4518e: 4eb9 0004 63c8 jsr 463c8 <_Objects_Free> <== NOT EXECUTED _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 45194: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4519a: 4e94 jsr %a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4519c: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED 451a2: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 451a8: 4280 clrl %d0 <== NOT EXECUTED 451aa: 600c bras 451b8 <== NOT EXECUTED case OBJECTS_ERROR: break; } _RTEMS_Unlock_allocator(); 451ac: 2f39 0005 7f32 movel 57f32 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 451b2: 4e94 jsr %a4@ <== NOT EXECUTED 451b4: 588f addql #4,%sp <== NOT EXECUTED 451b6: 7004 moveq #4,%d0 <== NOT EXECUTED return RTEMS_INVALID_ID; } 451b8: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 451be: 4e5e unlk %fp <== NOT EXECUTED 451c0: 4e75 rts <== NOT EXECUTED ... 000466c8 : rtems_status_code rtems_task_get_note( Objects_Id id, uint32_t notepad, uint32_t *note ) { 466c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 466cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 466ce: 2079 0005 b606 moveal 5b606 <_Configuration_Table>,%a0 <== NOT EXECUTED rtems_status_code rtems_task_get_note( Objects_Id id, uint32_t notepad, uint32_t *note ) { 466d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 466d6: 2068 003e moveal %a0@(62),%a0 <== NOT EXECUTED rtems_status_code rtems_task_get_note( Objects_Id id, uint32_t notepad, uint32_t *note ) { 466da: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 466de: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 466e2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 466e6: 4a28 0004 tstb %a0@(4) <== NOT EXECUTED 466ea: 6604 bnes 466f0 <== NOT EXECUTED 466ec: 7016 moveq #22,%d0 <== NOT EXECUTED 466ee: 605c bras 4674c <== NOT EXECUTED return RTEMS_NOT_CONFIGURED; if ( !note ) 466f0: 4a8a tstl %a2 <== NOT EXECUTED 466f2: 6604 bnes 466f8 <== NOT EXECUTED 466f4: 7009 moveq #9,%d0 <== NOT EXECUTED 466f6: 6054 bras 4674c <== 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 ) 466f8: 720f moveq #15,%d1 <== NOT EXECUTED 466fa: b282 cmpl %d2,%d1 <== NOT EXECUTED 466fc: 6404 bccs 46702 <== NOT EXECUTED 466fe: 700a moveq #10,%d0 <== NOT EXECUTED 46700: 604a bras 4674c <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 46702: 4a80 tstl %d0 <== NOT EXECUTED 46704: 670c beqs 46712 <== NOT EXECUTED 46706: 2079 0005 b62a moveal 5b62a <_Thread_Executing>,%a0 <== NOT EXECUTED 4670c: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 46710: 6610 bnes 46722 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 46712: 2079 0005 b62a moveal 5b62a <_Thread_Executing>,%a0 <== NOT EXECUTED 46718: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED 4671c: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED 46720: 6028 bras 4674a <== NOT EXECUTED return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 46722: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46726: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46728: 4eb9 0004 8500 jsr 48500 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4672e: 508f addql #8,%sp <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 46730: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 46732: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46736: 6704 beqs 4673c <== NOT EXECUTED 46738: 7004 moveq #4,%d0 <== NOT EXECUTED 4673a: 6010 bras 4674c <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 4673c: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED 46740: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 46744: 4eb9 0004 84d6 jsr 484d6 <_Thread_Enable_dispatch> <== NOT EXECUTED 4674a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4674c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 46750: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46754: 4e5e unlk %fp <== NOT EXECUTED 46756: 4e75 rts 000451c4 : rtems_status_code rtems_task_ident( rtems_name name, uint32_t node, Objects_Id *id ) { 451c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 451c8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 451cc: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; if ( !id ) 451d0: 4a89 tstl %a1 <== NOT EXECUTED 451d2: 6604 bnes 451d8 <== NOT EXECUTED 451d4: 7009 moveq #9,%d0 <== NOT EXECUTED 451d6: 6034 bras 4520c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( name == OBJECTS_ID_OF_SELF ) { 451d8: 4a80 tstl %d0 <== NOT EXECUTED 451da: 660c bnes 451e8 <== NOT EXECUTED *id = _Thread_Executing->Object.id; 451dc: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 451e2: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED 451e6: 6024 bras 4520c <== NOT EXECUTED return RTEMS_SUCCESSFUL; } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); 451e8: 2f09 movel %a1,%sp@- <== NOT EXECUTED 451ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 451ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED 451f0: 4879 0005 7dec pea 57dec <_RTEMS_tasks_Information> <== NOT EXECUTED 451f6: 4eb9 0004 668c jsr 4668c <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 451fc: 41f9 0005 513a lea 5513a <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED 45202: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 45206: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED } 4520c: 4e5e unlk %fp <== NOT EXECUTED 4520e: 4e75 rts 00045554 : */ rtems_status_code rtems_task_is_suspended( Objects_Id id ) { 45554: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 45558: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4555c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45560: 4eb9 0004 7000 jsr 47000 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 45566: 508f addql #8,%sp <== NOT EXECUTED ) { register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 45568: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 4556a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4556e: 6704 beqs 45574 <== NOT EXECUTED 45570: 7004 moveq #4,%d0 <== NOT EXECUTED 45572: 6018 bras 4558c <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 45574: 7002 moveq #2,%d0 <== NOT EXECUTED 45576: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED 4557a: 41f9 0004 6fd6 lea 46fd6 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 45580: 6606 bnes 45588 <== NOT EXECUTED _Thread_Enable_dispatch(); 45582: 4e90 jsr %a0@ <== NOT EXECUTED 45584: 4280 clrl %d0 <== NOT EXECUTED 45586: 6004 bras 4558c <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 45588: 4e90 jsr %a0@ <== NOT EXECUTED 4558a: 700f moveq #15,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4558c: 4e5e unlk %fp <== NOT EXECUTED 4558e: 4e75 rts 0004b2dc : rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) { 4b2dc: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4b2e0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 4b2e4: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4b2e8: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4b2ec: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED ASR_Information *asr; bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set ) 4b2f0: 4a8c tstl %a4 <== NOT EXECUTED 4b2f2: 6606 bnes 4b2fa <== NOT EXECUTED 4b2f4: 7009 moveq #9,%d0 <== NOT EXECUTED 4b2f6: 6000 00fa braw 4b3f2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; executing = _Thread_Executing; 4b2fa: 2679 0005 7f3a moveal 57f3a <_Thread_Executing>,%a3 <== NOT EXECUTED api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4b300: 246b 010c moveal %a3@(268),%a2 <== NOT EXECUTED asr = &api->Signal; old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; 4b304: 263c 0000 0100 movel #256,%d3 <== NOT EXECUTED 4b30a: 4a2b 0076 tstb %a3@(118) <== NOT EXECUTED 4b30e: 6702 beqs 4b312 <== NOT EXECUTED 4b310: 4283 clrl %d3 <== NOT EXECUTED if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) 4b312: 4aab 007c tstl %a3@(124) <== NOT EXECUTED 4b316: 6704 beqs 4b31c <== NOT EXECUTED old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; 4b318: 08c3 0009 bset #9,%d3 <== NOT EXECUTED old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4b31c: 243c 0000 0400 movel #1024,%d2 <== NOT EXECUTED 4b322: 4a2a 0008 tstb %a2@(8) <== NOT EXECUTED 4b326: 6702 beqs 4b32a <== NOT EXECUTED 4b328: 4282 clrl %d2 <== NOT EXECUTED old_mode |= _ISR_Get_level(); 4b32a: 4eb9 0004 8034 jsr 48034 <_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; 4b330: 8480 orl %d0,%d2 <== NOT EXECUTED old_mode |= _ISR_Get_level(); *previous_mode_set = old_mode; 4b332: 8483 orl %d3,%d2 <== NOT EXECUTED 4b334: 2882 movel %d2,%a4@ <== NOT EXECUTED /* * These are generic thread scheduling characteristics. */ if ( mask & RTEMS_PREEMPT_MASK ) 4b336: 0804 0008 btst #8,%d4 <== NOT EXECUTED 4b33a: 670e beqs 4b34a <== NOT EXECUTED executing->is_preemptible = _Modes_Is_preempt(mode_set) ? TRUE : FALSE; 4b33c: 2005 movel %d5,%d0 <== NOT EXECUTED 4b33e: 7201 moveq #1,%d1 <== NOT EXECUTED 4b340: e088 lsrl #8,%d0 <== NOT EXECUTED 4b342: b380 eorl %d1,%d0 <== NOT EXECUTED 4b344: c081 andl %d1,%d0 <== NOT EXECUTED 4b346: 1740 0076 moveb %d0,%a3@(118) <== NOT EXECUTED if ( mask & RTEMS_TIMESLICE_MASK ) { 4b34a: 0804 0009 btst #9,%d4 <== NOT EXECUTED 4b34e: 671c beqs 4b36c <== NOT EXECUTED if ( _Modes_Is_timeslice(mode_set) ) { 4b350: 0805 0009 btst #9,%d5 <== NOT EXECUTED 4b354: 6712 beqs 4b368 <== NOT EXECUTED executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4b356: 41f9 0005 7e2c lea 57e2c <_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; 4b35c: 7001 moveq #1,%d0 <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4b35e: 2750 0078 movel %a0@,%a3@(120) <== 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; 4b362: 2740 007c movel %d0,%a3@(124) <== NOT EXECUTED 4b366: 6004 bras 4b36c <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; } else executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 4b368: 42ab 007c clrl %a3@(124) <== NOT EXECUTED /* * Set the new interrupt level */ if ( mask & RTEMS_INTERRUPT_MASK ) 4b36c: 7007 moveq #7,%d0 <== NOT EXECUTED 4b36e: c084 andl %d4,%d0 <== NOT EXECUTED 4b370: 6712 beqs 4b384 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( Modes_Control mode_set ) { _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) ); 4b372: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b374: 7007 moveq #7,%d0 <== NOT EXECUTED 4b376: c085 andl %d5,%d0 <== NOT EXECUTED 4b378: e188 lsll #8,%d0 <== NOT EXECUTED 4b37a: 0281 0000 f8ff andil #63743,%d1 <== NOT EXECUTED 4b380: 8280 orl %d0,%d1 <== NOT EXECUTED 4b382: 46c1 movew %d1,%sr <== NOT EXECUTED */ is_asr_enabled = FALSE; needs_asr_dispatching = FALSE; if ( mask & RTEMS_ASR_MASK ) { 4b384: 0804 000a btst #10,%d4 <== NOT EXECUTED 4b388: 6746 beqs 4b3d0 <== NOT EXECUTED 4b38a: 700a moveq #10,%d0 <== NOT EXECUTED 4b38c: 2205 movel %d5,%d1 <== NOT EXECUTED 4b38e: e0a9 lsrl %d0,%d1 <== NOT EXECUTED 4b390: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 4b394: b181 eorl %d0,%d1 <== NOT EXECUTED 4b396: c280 andl %d0,%d1 <== NOT EXECUTED is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true; if ( is_asr_enabled != asr->is_enabled ) { 4b398: 4280 clrl %d0 <== NOT EXECUTED 4b39a: 102a 0008 moveb %a2@(8),%d0 <== NOT EXECUTED 4b39e: b081 cmpl %d1,%d0 <== NOT EXECUTED 4b3a0: 672e beqs 4b3d0 <== NOT EXECUTED asr->is_enabled = is_asr_enabled; 4b3a2: 1541 0008 moveb %d1,%a2@(8) <== NOT EXECUTED ) { rtems_signal_set _signals; ISR_Level _level; _ISR_Disable( _level ); 4b3a6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4b3ac: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b3ae: 8081 orl %d1,%d0 <== NOT EXECUTED 4b3b0: 46c0 movew %d0,%sr <== NOT EXECUTED _signals = information->signals_pending; 4b3b2: 202a 0016 movel %a2@(22),%d0 <== NOT EXECUTED information->signals_pending = information->signals_posted; 4b3b6: 256a 0012 0016 movel %a2@(18),%a2@(22) <== NOT EXECUTED information->signals_posted = _signals; 4b3bc: 2540 0012 movel %d0,%a2@(18) <== NOT EXECUTED _ISR_Enable( _level ); 4b3c0: 46c1 movew %d1,%sr <== NOT EXECUTED _ASR_Swap_signals( asr ); if ( _ASR_Are_signals_pending( asr ) ) { 4b3c2: 4aaa 0012 tstl %a2@(18) <== NOT EXECUTED 4b3c6: 6708 beqs 4b3d0 <== NOT EXECUTED needs_asr_dispatching = true; executing->do_post_task_switch_extension = true; 4b3c8: 7401 moveq #1,%d2 <== NOT EXECUTED 4b3ca: 1742 0075 moveb %d2,%a3@(117) <== NOT EXECUTED 4b3ce: 6002 bras 4b3d2 <== NOT EXECUTED 4b3d0: 4202 clrb %d2 <== NOT EXECUTED } } } if ( _System_state_Is_up(_System_state_Current) ) 4b3d2: 7203 moveq #3,%d1 <== NOT EXECUTED 4b3d4: b2b9 0005 800e cmpl 5800e <_System_state_Current>,%d1 <== NOT EXECUTED 4b3da: 6614 bnes 4b3f0 <== NOT EXECUTED if ( _Thread_Evaluate_mode() || needs_asr_dispatching ) 4b3dc: 4eb9 0004 b5a0 jsr 4b5a0 <_Thread_Evaluate_mode> <== NOT EXECUTED 4b3e2: 4a00 tstb %d0 <== NOT EXECUTED 4b3e4: 6604 bnes 4b3ea <== NOT EXECUTED 4b3e6: 4a02 tstb %d2 <== NOT EXECUTED 4b3e8: 6706 beqs 4b3f0 <== NOT EXECUTED _Thread_Dispatch(); 4b3ea: 4eb9 0004 6bb8 jsr 46bb8 <_Thread_Dispatch> <== NOT EXECUTED 4b3f0: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 4b3f2: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4b3f8: 4e5e unlk %fp <== NOT EXECUTED 4b3fa: 4e75 rts 000459ac : rtems_status_code rtems_task_restart( Objects_Id id, uint32_t argument ) { 459ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 459b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 459b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 459b8: 4eb9 0004 749c jsr 4749c <_Thread_Get> <== NOT EXECUTED switch ( location ) { 459be: 508f addql #8,%sp <== NOT EXECUTED 459c0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 459c4: 6704 beqs 459ca <== NOT EXECUTED 459c6: 7004 moveq #4,%d0 <== NOT EXECUTED 459c8: 6028 bras 459f2 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_Restart( the_thread, NULL, argument ) ) { 459ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 459ce: 42a7 clrl %sp@- <== NOT EXECUTED 459d0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 459d2: 4eb9 0004 7c48 jsr 47c48 <_Thread_Restart> <== NOT EXECUTED 459d8: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 459de: 41f9 0004 7472 lea 47472 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 459e4: 4a00 tstb %d0 <== NOT EXECUTED 459e6: 6706 beqs 459ee <== NOT EXECUTED _Thread_Enable_dispatch(); 459e8: 4e90 jsr %a0@ <== NOT EXECUTED 459ea: 4280 clrl %d0 <== NOT EXECUTED 459ec: 6004 bras 459f2 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 459ee: 4e90 jsr %a0@ <== NOT EXECUTED 459f0: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 459f2: 4e5e unlk %fp <== NOT EXECUTED 459f4: 4e75 rts <== NOT EXECUTED ... 000461c8 : */ rtems_status_code rtems_task_resume( Objects_Id id ) { 461c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 461cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 461ce: 486e fffc pea %fp@(-4) <== NOT EXECUTED 461d2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461d6: 4eb9 0004 7efc jsr 47efc <_Thread_Get> <== NOT EXECUTED switch ( location ) { 461dc: 508f addql #8,%sp <== NOT EXECUTED ) { register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 461de: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 461e0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 461e4: 6704 beqs 461ea <== NOT EXECUTED 461e6: 7004 moveq #4,%d0 <== NOT EXECUTED 461e8: 6026 bras 46210 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _States_Is_suspended( the_thread->current_state ) ) { 461ea: 7002 moveq #2,%d0 <== NOT EXECUTED 461ec: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED 461f0: 45f9 0004 7ea2 lea 47ea2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 461f6: 6714 beqs 4620c <== NOT EXECUTED _Thread_Resume( the_thread, TRUE ); 461f8: 4878 0001 pea 1 <== NOT EXECUTED 461fc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 461fe: 4eb9 0004 86a8 jsr 486a8 <_Thread_Resume> <== NOT EXECUTED _Thread_Enable_dispatch(); 46204: 4e92 jsr %a2@ <== NOT EXECUTED 46206: 508f addql #8,%sp <== NOT EXECUTED 46208: 4280 clrl %d0 <== NOT EXECUTED 4620a: 6004 bras 46210 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 4620c: 4e92 jsr %a2@ <== NOT EXECUTED 4620e: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 46210: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46214: 4e5e unlk %fp <== NOT EXECUTED 46216: 4e75 rts 0005dcdc : #include #include rtems_id rtems_task_self(void) { 5dcdc: 2079 0009 3976 moveal 93976 <_Thread_Executing>,%a0 <== NOT EXECUTED 5dce2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Thread_Executing->Object.id; } 5dce6: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 5dcea: 4e5e unlk %fp <== NOT EXECUTED 5dcec: 4e75 rts <== NOT EXECUTED ... 0004684c : rtems_status_code rtems_task_set_note( Objects_Id id, uint32_t notepad, uint32_t note ) { 4684c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46850: 2f03 movel %d3,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 46852: 2079 0005 b606 moveal 5b606 <_Configuration_Table>,%a0 <== NOT EXECUTED rtems_status_code rtems_task_set_note( Objects_Id id, uint32_t notepad, uint32_t note ) { 46858: 2f02 movel %d2,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 4685a: 2068 003e moveal %a0@(62),%a0 <== NOT EXECUTED rtems_status_code rtems_task_set_note( Objects_Id id, uint32_t notepad, uint32_t note ) { 4685e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46862: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46866: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 4686a: 4a28 0004 tstb %a0@(4) <== NOT EXECUTED 4686e: 6604 bnes 46874 <== NOT EXECUTED 46870: 7016 moveq #22,%d0 <== NOT EXECUTED 46872: 6054 bras 468c8 <== 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 ) 46874: 720f moveq #15,%d1 <== NOT EXECUTED 46876: b282 cmpl %d2,%d1 <== NOT EXECUTED 46878: 6404 bccs 4687e <== NOT EXECUTED 4687a: 700a moveq #10,%d0 <== NOT EXECUTED 4687c: 604a bras 468c8 <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 4687e: 4a80 tstl %d0 <== NOT EXECUTED 46880: 670c beqs 4688e <== NOT EXECUTED 46882: 2079 0005 b62a moveal 5b62a <_Thread_Executing>,%a0 <== NOT EXECUTED 46888: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 4688c: 6610 bnes 4689e <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 4688e: 2079 0005 b62a moveal 5b62a <_Thread_Executing>,%a0 <== NOT EXECUTED 46894: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED 46898: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED 4689c: 6028 bras 468c6 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 4689e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 468a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 468a4: 4eb9 0004 8500 jsr 48500 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 468aa: 508f addql #8,%sp <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 468ac: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 468ae: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 468b2: 6704 beqs 468b8 <== NOT EXECUTED 468b4: 7004 moveq #4,%d0 <== NOT EXECUTED 468b6: 6010 bras 468c8 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 468b8: 2068 010c moveal %a0@(268),%a0 <== NOT EXECUTED 468bc: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 468c0: 4eb9 0004 84d6 jsr 484d6 <_Thread_Enable_dispatch> <== NOT EXECUTED 468c6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 468c8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 468cc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 468d0: 4e5e unlk %fp <== NOT EXECUTED 468d2: 4e75 rts 00048cbc : rtems_status_code rtems_task_set_priority( Objects_Id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) { 48cbc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48cc0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48cc2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 48cc6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48cc8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; if ( new_priority != RTEMS_CURRENT_PRIORITY && 48ccc: 6710 beqs 48cde <== NOT EXECUTED 48cce: 4280 clrl %d0 <== NOT EXECUTED 48cd0: 1039 0006 0f82 moveb 60f82 ,%d0 <== NOT EXECUTED 48cd6: b082 cmpl %d2,%d0 <== NOT EXECUTED 48cd8: 6404 bccs 48cde <== NOT EXECUTED 48cda: 7013 moveq #19,%d0 <== NOT EXECUTED 48cdc: 6056 bras 48d34 <== NOT EXECUTED !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; if ( !old_priority ) 48cde: 4a8a tstl %a2 <== NOT EXECUTED 48ce0: 6604 bnes 48ce6 <== NOT EXECUTED 48ce2: 7009 moveq #9,%d0 <== NOT EXECUTED 48ce4: 604e bras 48d34 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 48ce6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48cea: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48cee: 4eb9 0004 a990 jsr 4a990 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 48cf4: 508f addql #8,%sp <== NOT EXECUTED return RTEMS_INVALID_PRIORITY; if ( !old_priority ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 48cf6: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 48cf8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48cfc: 6704 beqs 48d02 <== NOT EXECUTED 48cfe: 7004 moveq #4,%d0 <== NOT EXECUTED 48d00: 6032 bras 48d34 <== NOT EXECUTED case OBJECTS_LOCAL: /* XXX need helper to "convert" from core priority */ *old_priority = the_thread->current_priority; 48d02: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED if ( new_priority != RTEMS_CURRENT_PRIORITY ) { 48d06: 4a82 tstl %d2 <== NOT EXECUTED 48d08: 6722 beqs 48d2c <== NOT EXECUTED the_thread->real_priority = new_priority; 48d0a: 2142 0018 movel %d2,%a0@(24) <== NOT EXECUTED if ( the_thread->resource_count == 0 || 48d0e: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 48d12: 6706 beqs 48d1a <== NOT EXECUTED 48d14: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 48d18: 6412 bccs 48d2c <== NOT EXECUTED the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, FALSE ); 48d1a: 42a7 clrl %sp@- <== NOT EXECUTED 48d1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48d1e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48d20: 4eb9 0004 a430 jsr 4a430 <_Thread_Change_priority> <== NOT EXECUTED 48d26: dffc 0000 000c addal #12,%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); 48d2c: 4eb9 0004 a936 jsr 4a936 <_Thread_Enable_dispatch> <== NOT EXECUTED 48d32: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 48d34: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 48d38: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d3c: 4e5e unlk %fp <== NOT EXECUTED 48d3e: 4e75 rts 000452a4 : rtems_status_code rtems_task_start( rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument ) { 452a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 452a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 452aa: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; if ( entry_point == NULL ) 452ae: 6604 bnes 452b4 <== NOT EXECUTED 452b0: 7009 moveq #9,%d0 <== NOT EXECUTED 452b2: 6046 bras 452fa <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 452b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 452b8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 452bc: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 452c2: 508f addql #8,%sp <== NOT EXECUTED 452c4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 452c8: 6704 beqs 452ce <== NOT EXECUTED 452ca: 7004 moveq #4,%d0 <== NOT EXECUTED 452cc: 602c bras 452fa <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_Start( 452ce: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 452d2: 42a7 clrl %sp@- <== NOT EXECUTED 452d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 452d6: 42a7 clrl %sp@- <== NOT EXECUTED 452d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 452da: 4eb9 0004 7798 jsr 47798 <_Thread_Start> <== NOT EXECUTED 452e0: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 452e6: 41f9 0004 6d0a lea 46d0a <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 452ec: 4a00 tstb %d0 <== NOT EXECUTED 452ee: 6706 beqs 452f6 <== NOT EXECUTED the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); 452f0: 4e90 jsr %a0@ <== NOT EXECUTED 452f2: 4280 clrl %d0 <== NOT EXECUTED 452f4: 6004 bras 452fa <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 452f6: 4e90 jsr %a0@ <== NOT EXECUTED 452f8: 700e moveq #14,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 452fa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 452fe: 4e5e unlk %fp <== NOT EXECUTED 45300: 4e75 rts <== NOT EXECUTED ... 00045304 : */ rtems_status_code rtems_task_suspend( Objects_Id id ) { 45304: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45308: 2f0a movel %a2,%sp@- <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 4530a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4530e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45312: 4eb9 0004 6d34 jsr 46d34 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 45318: 508f addql #8,%sp <== NOT EXECUTED ) { register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 4531a: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 4531c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45320: 6704 beqs 45326 <== NOT EXECUTED 45322: 7004 moveq #4,%d0 <== NOT EXECUTED 45324: 6022 bras 45348 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 45326: 7002 moveq #2,%d0 <== NOT EXECUTED 45328: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED 4532c: 45f9 0004 6d0a lea 46d0a <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 45332: 6610 bnes 45344 <== NOT EXECUTED _Thread_Suspend( the_thread ); 45334: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45336: 4eb9 0004 77ec jsr 477ec <_Thread_Suspend> <== NOT EXECUTED _Thread_Enable_dispatch(); 4533c: 4e92 jsr %a2@ <== NOT EXECUTED 4533e: 588f addql #4,%sp <== NOT EXECUTED 45340: 4280 clrl %d0 <== NOT EXECUTED 45342: 6004 bras 45348 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } _Thread_Enable_dispatch(); 45344: 4e92 jsr %a2@ <== NOT EXECUTED 45346: 700f moveq #15,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 45348: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4534c: 4e5e unlk %fp <== NOT EXECUTED 4534e: 4e75 rts 0005dee0 : rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) { 5dee0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5dee4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 5dee8: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 5deec: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *new; if ( !ptr ) 5def0: 4a8b tstl %a3 <== NOT EXECUTED 5def2: 6604 bnes 5def8 <== NOT EXECUTED 5def4: 7009 moveq #9,%d0 <== NOT EXECUTED 5def6: 6070 bras 5df68 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 5def8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5defc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5df00: 4eb9 0004 aac4 jsr 4aac4 <_Thread_Get> <== NOT EXECUTED switch (location) { 5df06: 508f addql #8,%sp <== NOT EXECUTED rtems_task_variable_t *tvp, *new; if ( !ptr ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 5df08: 2440 moveal %d0,%a2 <== NOT EXECUTED switch (location) { 5df0a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5df0e: 6704 beqs 5df14 <== NOT EXECUTED 5df10: 7004 moveq #4,%d0 <== NOT EXECUTED 5df12: 6054 bras 5df68 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is already in this task's list. */ tvp = the_thread->task_variables; 5df14: 206a 011c moveal %a2@(284),%a0 <== NOT EXECUTED 5df18: 6014 bras 5df2e <== NOT EXECUTED while (tvp) { if (tvp->ptr == ptr) { 5df1a: b7e8 0004 cmpal %a0@(4),%a3 <== NOT EXECUTED 5df1e: 660c bnes 5df2c <== NOT EXECUTED tvp->dtor = dtor; 5df20: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED _Thread_Enable_dispatch(); 5df24: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5df2a: 603a bras 5df66 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; 5df2c: 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) { 5df2e: 4a88 tstl %a0 <== NOT EXECUTED 5df30: 66e8 bnes 5df1a <== NOT EXECUTED } /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) 5df32: 4878 0014 pea 14 <== NOT EXECUTED 5df36: 4eb9 0004 bc3c jsr 4bc3c <_Workspace_Allocate> <== NOT EXECUTED _Workspace_Allocate(sizeof(rtems_task_variable_t)); if (new == NULL) { 5df3c: 588f addql #4,%sp <== NOT EXECUTED } /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) 5df3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 5df40: 43f9 0004 aa9a lea 4aa9a <_Thread_Enable_dispatch>,%a1 <== NOT EXECUTED _Workspace_Allocate(sizeof(rtems_task_variable_t)); if (new == NULL) { 5df46: 4a80 tstl %d0 <== NOT EXECUTED 5df48: 6606 bnes 5df50 <== NOT EXECUTED _Thread_Enable_dispatch(); 5df4a: 4e91 jsr %a1@ <== NOT EXECUTED 5df4c: 701a moveq #26,%d0 <== NOT EXECUTED 5df4e: 6018 bras 5df68 <== NOT EXECUTED } new->gval = *ptr; new->ptr = ptr; new->dtor = dtor; new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; 5df50: 20aa 011c movel %a2@(284),%a0@ <== NOT EXECUTED _Workspace_Allocate(sizeof(rtems_task_variable_t)); if (new == NULL) { _Thread_Enable_dispatch(); return RTEMS_NO_MEMORY; } new->gval = *ptr; 5df54: 2153 0008 movel %a3@,%a0@(8) <== NOT EXECUTED new->ptr = ptr; new->dtor = dtor; new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; the_thread->task_variables = new; 5df58: 2540 011c movel %d0,%a2@(284) <== NOT EXECUTED if (new == NULL) { _Thread_Enable_dispatch(); return RTEMS_NO_MEMORY; } new->gval = *ptr; new->ptr = ptr; 5df5c: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED new->dtor = dtor; 5df60: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; the_thread->task_variables = new; _Thread_Enable_dispatch(); 5df64: 4e91 jsr %a1@ <== NOT EXECUTED 5df66: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5df68: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 5df6e: 4e5e unlk %fp <== NOT EXECUTED 5df70: 4e75 rts <== NOT EXECUTED ... 0005df74 : rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) { 5df74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5df78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5df7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5df7c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *prev; if ( !ptr ) 5df80: 675a beqs 5dfdc <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; prev = NULL; the_thread = _Thread_Get (tid, &location); 5df82: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5df86: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5df8a: 4eb9 0004 aac4 jsr 4aac4 <_Thread_Get> <== NOT EXECUTED switch (location) { 5df90: 508f addql #8,%sp <== NOT EXECUTED if ( !ptr ) return RTEMS_INVALID_ADDRESS; prev = NULL; the_thread = _Thread_Get (tid, &location); 5df92: 2440 moveal %d0,%a2 <== NOT EXECUTED switch (location) { 5df94: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5df98: 6704 beqs 5df9e <== NOT EXECUTED 5df9a: 7004 moveq #4,%d0 <== NOT EXECUTED 5df9c: 6040 bras 5dfde <== NOT EXECUTED case OBJECTS_LOCAL: tvp = the_thread->task_variables; 5df9e: 206a 011c moveal %a2@(284),%a0 <== NOT EXECUTED 5dfa2: 93c9 subal %a1,%a1 <== NOT EXECUTED 5dfa4: 602c bras 5dfd2 <== NOT EXECUTED while (tvp) { if (tvp->ptr == ptr) { 5dfa6: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 5dfaa: 6622 bnes 5dfce <== NOT EXECUTED if (prev) 5dfac: 4a89 tstl %a1 <== NOT EXECUTED 5dfae: 6704 beqs 5dfb4 <== NOT EXECUTED prev->next = tvp->next; 5dfb0: 2290 movel %a0@,%a1@ <== NOT EXECUTED 5dfb2: 6004 bras 5dfb8 <== NOT EXECUTED else the_thread->task_variables = (rtems_task_variable_t *)tvp->next; 5dfb4: 2550 011c movel %a0@,%a2@(284) <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); 5dfb8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5dfba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5dfbc: 4eb9 0005 e054 jsr 5e054 <_RTEMS_Tasks_Invoke_task_variable_dtor> <== NOT EXECUTED _Thread_Enable_dispatch(); 5dfc2: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5dfc8: 508f addql #8,%sp <== NOT EXECUTED 5dfca: 4280 clrl %d0 <== NOT EXECUTED 5dfcc: 6010 bras 5dfde <== NOT EXECUTED return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; 5dfce: 2248 moveal %a0,%a1 <== NOT EXECUTED 5dfd0: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_thread = _Thread_Get (tid, &location); switch (location) { case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { 5dfd2: 4a88 tstl %a0 <== NOT EXECUTED 5dfd4: 66d0 bnes 5dfa6 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 5dfd6: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5dfdc: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5dfde: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5dfe2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 5dfe6: 4e5e unlk %fp <== NOT EXECUTED 5dfe8: 4e75 rts <== NOT EXECUTED ... 0005dfec : rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) { 5dfec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5dff0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5dff2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 5dff6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5dff8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp; if ( !ptr ) 5dffc: 6746 beqs 5e044 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !result ) 5dffe: 4a8a tstl %a2 <== NOT EXECUTED 5e000: 6742 beqs 5e044 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 5e002: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5e006: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5e00a: 4eb9 0004 aac4 jsr 4aac4 <_Thread_Get> <== NOT EXECUTED switch (location) { 5e010: 508f addql #8,%sp <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !result ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 5e012: 2040 moveal %d0,%a0 <== NOT EXECUTED switch (location) { 5e014: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5e018: 6704 beqs 5e01e <== NOT EXECUTED 5e01a: 7004 moveq #4,%d0 <== NOT EXECUTED 5e01c: 6028 bras 5e046 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is in this task's list. */ tvp = the_thread->task_variables; 5e01e: 2068 011c moveal %a0@(284),%a0 <== NOT EXECUTED 5e022: 6016 bras 5e03a <== NOT EXECUTED while (tvp) { if (tvp->ptr == ptr) { 5e024: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 5e028: 660e bnes 5e038 <== NOT EXECUTED /* * Should this return the current (i.e not the * saved) value if `tid' is the current task? */ *result = tvp->tval; 5e02a: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 5e02e: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED 5e034: 4280 clrl %d0 <== NOT EXECUTED 5e036: 600e bras 5e046 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; 5e038: 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) { 5e03a: 4a88 tstl %a0 <== NOT EXECUTED 5e03c: 66e6 bnes 5e024 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 5e03e: 4eb9 0004 aa9a jsr 4aa9a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; 5e044: 7009 moveq #9,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 5e046: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5e04a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 5e04e: 4e5e unlk %fp <== NOT EXECUTED 5e050: 4e75 rts <== NOT EXECUTED ... 00045350 : */ rtems_status_code rtems_task_wake_after( rtems_interval ticks ) { 45350: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45354: 2039 0005 7e7c movel 57e7c <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4535a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4535c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45360: 5280 addql #1,%d0 <== NOT EXECUTED 45362: 23c0 0005 7e7c movel %d0,57e7c <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); if ( ticks == 0 ) { 45368: 4a82 tstl %d2 <== NOT EXECUTED 4536a: 6608 bnes 45374 <== NOT EXECUTED _Thread_Yield_processor(); 4536c: 4eb9 0004 794c jsr 4794c <_Thread_Yield_processor> <== NOT EXECUTED 45372: 604a bras 453be <== NOT EXECUTED } else { _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); 45374: 4878 0008 pea 8 <== NOT EXECUTED 45378: 2f39 0005 7f3a movel 57f3a <_Thread_Executing>,%sp@- <== NOT EXECUTED 4537e: 4eb9 0004 754c jsr 4754c <_Thread_Set_state> <== NOT EXECUTED _Watchdog_Initialize( 45384: 2079 0005 7f3a moveal 57f3a <_Thread_Executing>,%a0 <== NOT EXECUTED 4538a: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4538e: 223c 0004 6b7c movel #289660,%d1 <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45394: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45398: 2141 0064 movel %d1,%a0@(100) <== NOT EXECUTED the_watchdog->id = id; 4539c: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 453a0: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 453a4: 42a8 006c clrl %a0@(108) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 453a8: 4868 0048 pea %a0@(72) <== NOT EXECUTED 453ac: 4879 0005 7f58 pea 57f58 <_Watchdog_Ticks_chain> <== NOT EXECUTED 453b2: 4eb9 0004 7c80 jsr 47c80 <_Watchdog_Insert> <== NOT EXECUTED 453b8: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); } _Thread_Enable_dispatch(); 453be: 4eb9 0004 6d0a jsr 46d0a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 453c4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 453c8: 4e5e unlk %fp <== NOT EXECUTED 453ca: 4280 clrl %d0 <== NOT EXECUTED 453cc: 4e75 rts <== NOT EXECUTED ... 00045e78 : */ rtems_status_code rtems_task_wake_when( rtems_time_of_day *time_buffer ) { 45e78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45e7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45e7e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Watchdog_Interval seconds; if ( !_TOD_Is_set ) 45e82: 4a39 0005 9ad0 tstb 59ad0 <_TOD_Is_set> <== NOT EXECUTED 45e88: 6606 bnes 45e90 <== NOT EXECUTED 45e8a: 700b moveq #11,%d0 <== NOT EXECUTED 45e8c: 6000 009c braw 45f2a <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !time_buffer ) 45e90: 4a8a tstl %a2 <== NOT EXECUTED 45e92: 6606 bnes 45e9a <== NOT EXECUTED 45e94: 7009 moveq #9,%d0 <== NOT EXECUTED 45e96: 6000 0092 braw 45f2a <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; time_buffer->ticks = 0; 45e9a: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED if ( !_TOD_Validate( time_buffer ) ) 45e9e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45ea0: 4eb9 0004 52f0 jsr 452f0 <_TOD_Validate> <== NOT EXECUTED 45ea6: 588f addql #4,%sp <== NOT EXECUTED 45ea8: 4a00 tstb %d0 <== NOT EXECUTED 45eaa: 677c beqs 45f28 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); 45eac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45eae: 4eb9 0004 523c jsr 4523c <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 45eb4: 588f addql #4,%sp <== NOT EXECUTED time_buffer->ticks = 0; if ( !_TOD_Validate( time_buffer ) ) return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); 45eb6: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 45eb8: b0b9 0005 9b4e cmpl 59b4e <_TOD_Now>,%d0 <== NOT EXECUTED 45ebe: 6368 blss 45f28 <== NOT EXECUTED 45ec0: 2039 0005 9abc movel 59abc <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45ec6: 5280 addql #1,%d0 <== NOT EXECUTED 45ec8: 23c0 0005 9abc movel %d0,59abc <_Thread_Dispatch_disable_level> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); 45ece: 4878 0010 pea 10 <== NOT EXECUTED 45ed2: 2f39 0005 9b7a movel 59b7a <_Thread_Executing>,%sp@- <== NOT EXECUTED 45ed8: 4eb9 0004 80ac jsr 480ac <_Thread_Set_state> <== NOT EXECUTED _Watchdog_Initialize( 45ede: 2079 0005 9b7a moveal 59b7a <_Thread_Executing>,%a0 <== NOT EXECUTED 45ee4: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 45ee8: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45eec: 95f9 0005 9b4e subal 59b4e <_TOD_Now>,%a2 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45ef2: 203c 0004 76dc movel #292572,%d0 <== NOT EXECUTED 45ef8: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45efc: 214a 0054 movel %a2,%a0@(84) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45f00: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 45f04: 42a8 006c clrl %a0@(108) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 45f08: 4868 0048 pea %a0@(72) <== NOT EXECUTED 45f0c: 4879 0005 9b8c pea 59b8c <_Watchdog_Seconds_chain> <== NOT EXECUTED 45f12: 4eb9 0004 8864 jsr 48864 <_Watchdog_Insert> <== NOT EXECUTED ); _Watchdog_Insert_seconds( &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch ); _Thread_Enable_dispatch(); 45f18: 4eb9 0004 786a jsr 4786a <_Thread_Enable_dispatch> <== NOT EXECUTED 45f1e: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45f24: 4280 clrl %d0 <== NOT EXECUTED 45f26: 6002 bras 45f2a <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45f28: 7014 moveq #20,%d0 <== NOT EXECUTED } 45f2a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45f2e: 4e5e unlk %fp <== NOT EXECUTED 45f30: 4e75 rts <== NOT EXECUTED ... 0004ef74 : */ rtems_status_code rtems_timer_cancel( Objects_Id id ) { 4ef74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get ( Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) 4ef78: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ef80: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4ef86: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4ef8c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4ef92: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef94: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef98: 6704 beqs 4ef9e <== NOT EXECUTED 4ef9a: 7004 moveq #4,%d0 <== NOT EXECUTED 4ef9c: 601c bras 4efba <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Timer_Is_dormant_class( the_timer->the_class ) ) 4ef9e: 7004 moveq #4,%d0 <== NOT EXECUTED 4efa0: b0a8 0038 cmpl %a0@(56),%d0 <== NOT EXECUTED 4efa4: 670c beqs 4efb2 <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 4efa6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4efaa: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED 4efb0: 588f addql #4,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 4efb2: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4efb8: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4efba: 4e5e unlk %fp <== NOT EXECUTED 4efbc: 4e75 rts <== NOT EXECUTED ... 00045ef8 : rtems_status_code rtems_timer_create( rtems_name name, Objects_Id *id ) { 45ef8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 45efc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 45f00: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45f04: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED Timer_Control *the_timer; if ( !rtems_is_name_valid( name ) ) 45f08: 6604 bnes 45f0e <== NOT EXECUTED 45f0a: 7003 moveq #3,%d0 <== NOT EXECUTED 45f0c: 6068 bras 45f76 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 45f0e: 4a8b tstl %a3 <== NOT EXECUTED 45f10: 6604 bnes 45f16 <== NOT EXECUTED 45f12: 7009 moveq #9,%d0 <== NOT EXECUTED 45f14: 6060 bras 45f76 <== NOT EXECUTED 45f16: 2039 0005 a978 movel 5a978 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45f1c: 5280 addql #1,%d0 <== NOT EXECUTED 45f1e: 23c0 0005 a978 movel %d0,5a978 <_Thread_Dispatch_disable_level> <== NOT EXECUTED * 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 ); 45f24: 4879 0005 ae86 pea 5ae86 <_Timer_Information> <== NOT EXECUTED 45f2a: 4eb9 0004 6dd8 jsr 46dd8 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_timer = _Timer_Allocate(); if ( !the_timer ) { 45f30: 588f addql #4,%sp <== NOT EXECUTED 45f32: 2240 moveal %d0,%a1 <== NOT EXECUTED 45f34: 45f9 0004 79aa lea 479aa <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 45f3a: 4a80 tstl %d0 <== NOT EXECUTED 45f3c: 6606 bnes 45f44 <== NOT EXECUTED _Thread_Enable_dispatch(); 45f3e: 4e92 jsr %a2@ <== NOT EXECUTED 45f40: 7005 moveq #5,%d0 <== NOT EXECUTED 45f42: 6032 bras 45f76 <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 45f44: 2342 000c movel %d2,%a1@(12) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45f48: 2079 0005 aea0 moveal 5aea0 <_Timer_Information+0x1a>,%a0 <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 45f4e: 42a9 0030 clrl %a1@(48) <== NOT EXECUTED 45f52: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_TOO_MANY; } the_timer->the_class = TIMER_DORMANT; 45f54: 7204 moveq #4,%d1 <== NOT EXECUTED 45f56: 3029 000a movew %a1@(10),%d0 <== NOT EXECUTED &_Timer_Information, &the_timer->Object, (Objects_Name) name ); *id = the_timer->Object.id; 45f5a: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 45f5e: 2189 0c00 movel %a1,%a0@(00000000,%d0:l:4) <== NOT EXECUTED if ( !the_timer ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_timer->the_class = TIMER_DORMANT; 45f62: 2341 0038 movel %d1,%a1@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45f66: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED the_watchdog->routine = routine; 45f6a: 42a9 002c clrl %a1@(44) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 45f6e: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED &the_timer->Object, (Objects_Name) name ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); 45f72: 4e92 jsr %a2@ <== NOT EXECUTED 45f74: 4280 clrl %d0 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 45f76: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 45f7c: 4e5e unlk %fp <== NOT EXECUTED 45f7e: 4e75 rts 0004f048 : */ rtems_status_code rtems_timer_delete( Objects_Id id ) { 4f048: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f04c: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get ( Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) 4f04e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f052: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f056: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f05c: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f062: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f068: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f06a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f06e: 6704 beqs 4f074 <== NOT EXECUTED 4f070: 7004 moveq #4,%d0 <== NOT EXECUTED 4f072: 6034 bras 4f0a8 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Timer_Information, &the_timer->Object ); 4f074: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f076: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f07c: 4eb9 0005 13bc jsr 513bc <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 4f082: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4f086: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Timer_Free ( Timer_Control *the_timer ) { _Objects_Free( &_Timer_Information, &the_timer->Object ); 4f08c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f08e: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f094: 4eb9 0005 1634 jsr 51634 <_Objects_Free> <== NOT EXECUTED _Timer_Free( the_timer ); _Thread_Enable_dispatch(); 4f09a: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f0a0: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 4f0a6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f0a8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f0ac: 4e5e unlk %fp <== NOT EXECUTED 4f0ae: 4e75 rts 00045f80 : Objects_Id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 45f80: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 45f84: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 45f88: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 45f8c: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 45f90: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( ticks == 0 ) 45f94: 4a85 tstl %d5 <== NOT EXECUTED 45f96: 6606 bnes 45f9e <== NOT EXECUTED 45f98: 700a moveq #10,%d0 <== NOT EXECUTED 45f9a: 6000 0090 braw 4602c <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( !routine ) 45f9e: 4a83 tstl %d3 <== NOT EXECUTED 45fa0: 6606 bnes 45fa8 <== NOT EXECUTED 45fa2: 7009 moveq #9,%d0 <== NOT EXECUTED 45fa4: 6000 0086 braw 4602c <== NOT EXECUTED RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get ( Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) 45fa8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45fac: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45fae: 4879 0005 ae86 pea 5ae86 <_Timer_Information> <== NOT EXECUTED 45fb4: 4eb9 0004 7238 jsr 47238 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 45fba: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45fc0: 2440 moveal %d0,%a2 <== NOT EXECUTED 45fc2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45fc6: 6704 beqs 45fcc <== NOT EXECUTED 45fc8: 7004 moveq #4,%d0 <== NOT EXECUTED 45fca: 6060 bras 4602c <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 45fcc: 2400 movel %d0,%d2 <== NOT EXECUTED 45fce: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 45fd4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45fd6: 4eb9 0004 8ac0 jsr 48ac0 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 45fdc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45fe2: 40c1 movew %sr,%d1 <== NOT EXECUTED 45fe4: 8081 orl %d1,%d0 <== NOT EXECUTED 45fe6: 46c0 movew %d0,%sr <== NOT EXECUTED 45fe8: 47f9 0004 79aa lea 479aa <_Thread_Enable_dispatch>,%a3 <== 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 ) { 45fee: 588f addql #4,%sp <== NOT EXECUTED 45ff0: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 45ff4: 6706 beqs 45ffc <== NOT EXECUTED _ISR_Enable( level ); 45ff6: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 45ff8: 4e93 jsr %a3@ <== NOT EXECUTED 45ffa: 602e bras 4602a <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45ffc: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 46000: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 46004: 256e 0014 0034 movel %fp@(20),%a2@(52) <== 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; 4600a: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4600e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _ISR_Enable( level ); 46012: 46c1 movew %d1,%sr <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46014: 2545 001c movel %d5,%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 46018: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4601a: 4879 0005 aa54 pea 5aa54 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46020: 4eb9 0004 89a4 jsr 489a4 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_timer->Ticker, ticks ); _Thread_Enable_dispatch(); 46026: 4e93 jsr %a3@ <== NOT EXECUTED 46028: 508f addql #8,%sp <== NOT EXECUTED 4602a: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4602c: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46032: 4e5e unlk %fp <== NOT EXECUTED 46034: 4e75 rts <== NOT EXECUTED ... 0004f168 : Objects_Id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 4f168: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4f16c: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 4f170: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 4f174: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4f178: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; if ( !_TOD_Is_set ) 4f17c: 4a39 0006 da2c tstb 6da2c <_TOD_Is_set> <== NOT EXECUTED 4f182: 6606 bnes 4f18a <== NOT EXECUTED 4f184: 700b moveq #11,%d0 <== NOT EXECUTED 4f186: 6000 00a6 braw 4f22e <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !_TOD_Validate( wall_time ) ) 4f18a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f18c: 4eb9 0004 c9e4 jsr 4c9e4 <_TOD_Validate> <== NOT EXECUTED 4f192: 588f addql #4,%sp <== NOT EXECUTED 4f194: 4a00 tstb %d0 <== NOT EXECUTED 4f196: 6700 0094 beqw 4f22c <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) 4f19a: 4a85 tstl %d5 <== NOT EXECUTED 4f19c: 6606 bnes 4f1a4 <== NOT EXECUTED 4f19e: 7009 moveq #9,%d0 <== NOT EXECUTED 4f1a0: 6000 008c braw 4f22e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 4f1a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f1a6: 4eb9 0004 c930 jsr 4c930 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 4f1ac: 588f addql #4,%sp <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 4f1ae: 2600 movel %d0,%d3 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 4f1b0: b0b9 0006 daaa cmpl 6daaa <_TOD_Now>,%d0 <== NOT EXECUTED 4f1b6: 6374 blss 4f22c <== NOT EXECUTED 4f1b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f1bc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4f1be: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f1c4: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f1ca: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f1d0: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f1d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f1d6: 6704 beqs 4f1dc <== NOT EXECUTED 4f1d8: 7004 moveq #4,%d0 <== NOT EXECUTED 4f1da: 6052 bras 4f22e <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 4f1dc: 2400 movel %d0,%d2 <== NOT EXECUTED 4f1de: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 4f1e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f1e6: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 4f1ec: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4f1f0: 96b9 0006 daaa subl 6daaa <_TOD_Now>,%d3 <== NOT EXECUTED the_timer->the_class = TIMER_TIME_OF_DAY; 4f1f6: 7002 moveq #2,%d0 <== NOT EXECUTED ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 4f1f8: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED 4f1fe: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4f202: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4f206: 2545 002c movel %d5,%a2@(44) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4f20a: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 4f20e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f210: 4879 0006 dae8 pea 6dae8 <_Watchdog_Seconds_chain> <== NOT EXECUTED 4f216: 4eb9 0005 3230 jsr 53230 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _Watchdog_Insert_seconds( &the_timer->Ticker, seconds - _TOD_Seconds_since_epoch ); _Thread_Enable_dispatch(); 4f21c: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f222: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f228: 4280 clrl %d0 <== NOT EXECUTED 4f22a: 6002 bras 4f22e <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f22c: 7014 moveq #20,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f22e: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4f234: 4e5e unlk %fp <== NOT EXECUTED 4f236: 4e75 rts 0004f238 : rtems_status_code rtems_timer_get_information( Objects_Id id, rtems_timer_information *the_info ) { 4f238: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f23c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f23e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; if ( !the_info ) 4f242: 4a8a tstl %a2 <== NOT EXECUTED 4f244: 6604 bnes 4f24a <== NOT EXECUTED 4f246: 7009 moveq #9,%d0 <== NOT EXECUTED 4f248: 6044 bras 4f28e <== NOT EXECUTED 4f24a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f24e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f252: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f258: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f25e: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f264: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f266: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f26a: 6704 beqs 4f270 <== NOT EXECUTED 4f26c: 7004 moveq #4,%d0 <== NOT EXECUTED 4f26e: 601e bras 4f28e <== NOT EXECUTED case OBJECTS_LOCAL: the_info->the_class = the_timer->the_class; 4f270: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED the_info->initial = the_timer->Ticker.initial; 4f274: 2568 001c 0004 movel %a0@(28),%a2@(4) <== NOT EXECUTED the_info->start_time = the_timer->Ticker.start_time; 4f27a: 2568 0024 0008 movel %a0@(36),%a2@(8) <== NOT EXECUTED the_info->stop_time = the_timer->Ticker.stop_time; 4f280: 2568 0028 000c movel %a0@(40),%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 4f286: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f28c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f28e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f292: 4e5e unlk %fp <== NOT EXECUTED 4f294: 4e75 rts <== NOT EXECUTED ... 0004f298 : rtems_status_code rtems_timer_ident( rtems_name name, Objects_Id *id ) { 4f298: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4f29c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f2a0: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4f2a6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f2aa: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f2b0: 4eb9 0005 1930 jsr 51930 <_Objects_Name_to_id_u32> <== NOT EXECUTED 4f2b6: 41f9 0006 6922 lea 66922 <_Status_Object_name_errors_to_status>,%a0 <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 4f2bc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4f2c0: 4e5e unlk %fp <== NOT EXECUTED 4f2c2: 4e75 rts 0004f504 : rtems_status_code rtems_timer_initiate_server( uint32_t priority, uint32_t stack_size, rtems_attribute attribute_set ) { 4f504: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f508: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f50a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4f50e: 2f02 movel %d2,%sp@- <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 4f510: 4a81 tstl %d1 <== NOT EXECUTED 4f512: 671e beqs 4f532 <== NOT EXECUTED 4f514: 4280 clrl %d0 <== NOT EXECUTED 4f516: 1039 0006 7b42 moveb 67b42 ,%d0 <== NOT EXECUTED 4f51c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4f51e: 54c0 scc %d0 <== NOT EXECUTED 4f520: 49c0 extbl %d0 <== NOT EXECUTED 4f522: 4480 negl %d0 <== NOT EXECUTED * Make sure the requested priority is valid. The if is * 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 ) ) { 4f524: 4a00 tstb %d0 <== NOT EXECUTED 4f526: 6704 beqs 4f52c <== NOT EXECUTED 4f528: 2601 movel %d1,%d3 <== NOT EXECUTED 4f52a: 600e bras 4f53a <== NOT EXECUTED if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) 4f52c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4f52e: b081 cmpl %d1,%d0 <== NOT EXECUTED 4f530: 6706 beqs 4f538 <== NOT EXECUTED 4f532: 7013 moveq #19,%d0 <== NOT EXECUTED 4f534: 6000 0144 braw 4f67a <== NOT EXECUTED 4f538: 4283 clrl %d3 <== NOT EXECUTED 4f53a: 2039 0006 da18 movel 6da18 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4f540: 5280 addql #1,%d0 <== NOT EXECUTED 4f542: 23c0 0006 da18 movel %d0,6da18 <_Thread_Dispatch_disable_level> <== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; 4f548: 1439 0006 8e98 moveb 68e98 ,%d2 <== NOT EXECUTED initialized = true; 4f54e: 7201 moveq #1,%d1 <== NOT EXECUTED 4f550: 13c1 0006 8e98 moveb %d1,68e98 <== NOT EXECUTED _Thread_Enable_dispatch(); 4f556: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED if ( tmpInitialized ) 4f55c: 4a02 tstb %d2 <== NOT EXECUTED 4f55e: 6706 beqs 4f566 <== NOT EXECUTED 4f560: 700e moveq #14,%d0 <== NOT EXECUTED 4f562: 6000 0116 braw 4f67a <== 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( 4f566: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f56a: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4f56e: 08c0 000f bset #15,%d0 <== NOT EXECUTED 4f572: 2f00 movel %d0,%sp@- <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f574: 223c 0006 d994 movel #448916,%d1 <== NOT EXECUTED 4f57a: 4878 0100 pea 100 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4f57e: 203c 0006 d990 movel #448912,%d0 <== NOT EXECUTED 4f584: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f588: 2f03 movel %d3,%sp@- <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f58a: 23c1 0006 d990 movel %d1,6d990 <_Timer_To_be_inserted> <== NOT EXECUTED 4f590: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4f596: 23c0 0006 d998 movel %d0,6d998 <_Timer_To_be_inserted+0x8> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4f59c: 42b9 0006 d994 clrl 6d994 <_Timer_To_be_inserted+0x4> <== NOT EXECUTED 4f5a2: 4eb9 0004 e8bc jsr 4e8bc <== 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) { 4f5a8: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 4f5ae: 4a80 tstl %d0 <== NOT EXECUTED 4f5b0: 6600 00c0 bnew 4f672 <== NOT EXECUTED * to a TCB pointer from here out. * * NOTE: Setting the pointer to the Timer Server TCB to a value other than * NULL indicates that task-based timer support is initialized. */ _Timer_Server = (Thread_Control *)_Objects_Get_local_object( 4f5b4: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( Objects_Information *information, uint16_t index ) { if ( index > information->maximum ) 4f5b8: 4280 clrl %d0 <== NOT EXECUTED 4f5ba: 4281 clrl %d1 <== NOT EXECUTED 4f5bc: 3039 0006 d942 movew 6d942 <_RTEMS_tasks_Information+0xe>,%d0 <== NOT EXECUTED 4f5c2: 3209 movew %a1,%d1 <== NOT EXECUTED 4f5c4: b081 cmpl %d1,%d0 <== NOT EXECUTED 4f5c6: 6404 bccs 4f5cc <== NOT EXECUTED 4f5c8: 91c8 subal %a0,%a0 <== NOT EXECUTED 4f5ca: 600a bras 4f5d6 <== NOT EXECUTED return NULL; return information->local_table[ index ]; 4f5cc: 2079 0006 d94e moveal 6d94e <_RTEMS_tasks_Information+0x1a>,%a0 <== NOT EXECUTED 4f5d2: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 4f5d6: 42a8 006c clrl %a0@(108) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4f5da: 203c 0005 1e20 movel #335392,%d0 <== NOT EXECUTED 4f5e0: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f5e4: 223c 0006 d974 movel #448884,%d1 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4f5ea: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 4f5ee: 2149 0068 movel %a1,%a0@(104) <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4f5f2: 203c 0006 d970 movel #448880,%d0 <== NOT EXECUTED _Timer_Server_schedule_operation = _Timer_Server_schedule_operation_method; /* * Start the timer server */ status = rtems_task_start( 4f5f8: 42a7 clrl %sp@- <== NOT EXECUTED 4f5fa: 4879 0004 f72a pea 4f72a <_Timer_Server_body> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f600: 23c1 0006 d970 movel %d1,6d970 <_Timer_Ticks_chain> <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4f606: 223c 0006 d988 movel #448904,%d1 <== NOT EXECUTED 4f60c: 23c0 0006 d978 movel %d0,6d978 <_Timer_Ticks_chain+0x8> <== NOT EXECUTED 4f612: 203c 0006 d984 movel #448900,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); 4f618: 23c1 0006 d984 movel %d1,6d984 <_Timer_Seconds_chain> <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4f61e: 223c 0005 1e20 movel #335392,%d1 <== NOT EXECUTED the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain); 4f624: 23c0 0006 d98c movel %d0,6d98c <_Timer_Seconds_chain+0x8> <== NOT EXECUTED /* * Initialize the pointer to the timer reset method so applications * that do not use the Timer Server do not have to pull it in. */ _Timer_Server_schedule_operation = _Timer_Server_schedule_operation_method; 4f62a: 203c 0004 f686 movel #325254,%d0 <== NOT EXECUTED /* * Start the timer server */ status = rtems_task_start( 4f630: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4f632: 23c1 0006 d9b8 movel %d1,6d9b8 <_Timer_Seconds_timer+0x1c> <== NOT EXECUTED /* * Initialize the pointer to the timer reset method so applications * that do not use the Timer Server do not have to pull it in. */ _Timer_Server_schedule_operation = _Timer_Server_schedule_operation_method; 4f638: 23c0 0006 e2f6 movel %d0,6e2f6 <_Timer_Server_schedule_operation> <== NOT EXECUTED * to a TCB pointer from here out. * * NOTE: Setting the pointer to the Timer Server TCB to a value other than * NULL indicates that task-based timer support is initialized. */ _Timer_Server = (Thread_Control *)_Objects_Get_local_object( 4f63e: 23c8 0006 e2fa movel %a0,6e2fa <_Timer_Server> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4f644: 42b9 0006 d974 clrl 6d974 <_Timer_Ticks_chain+0x4> <== NOT EXECUTED 4f64a: 42b9 0006 d988 clrl 6d988 <_Timer_Seconds_chain+0x4> <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4f650: 42b9 0006 d9a4 clrl 6d9a4 <_Timer_Seconds_timer+0x8> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 4f656: 23c9 0006 d9bc movel %a1,6d9bc <_Timer_Seconds_timer+0x20> <== NOT EXECUTED the_watchdog->user_data = user_data; 4f65c: 42b9 0006 d9c0 clrl 6d9c0 <_Timer_Seconds_timer+0x24> <== NOT EXECUTED _Timer_Server_schedule_operation = _Timer_Server_schedule_operation_method; /* * Start the timer server */ status = rtems_task_start( 4f662: 4eb9 0004 ed8c jsr 4ed8c <== NOT EXECUTED id, /* the id from create */ (rtems_task_entry) _Timer_Server_body, /* the timer server entry point */ 0 /* there is no argument */ ); if (status) { 4f668: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f66e: 4a80 tstl %d0 <== NOT EXECUTED 4f670: 6708 beqs 4f67a <== NOT EXECUTED * but there is actually no way (in normal circumstances) that the * start can fail. The id and starting address are known to be * be good. If this service fails, something is weirdly wrong on the * target such as a stray write in an ISR or incorrect memory layout. */ initialized = false; 4f672: 4201 clrb %d1 <== NOT EXECUTED 4f674: 13c1 0006 8e98 moveb %d1,68e98 <== NOT EXECUTED } return status; } 4f67a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4f67e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4f682: 4e5e unlk %fp <== NOT EXECUTED 4f684: 4e75 rts 0004f2c4 : */ rtems_status_code rtems_timer_reset( Objects_Id id ) { 4f2c4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f2c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f2ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f2cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f2d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f2d4: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f2da: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f2e0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f2e6: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f2e8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f2ec: 6704 beqs 4f2f2 <== NOT EXECUTED 4f2ee: 7004 moveq #4,%d0 <== NOT EXECUTED 4f2f0: 6078 bras 4f36a <== NOT EXECUTED case OBJECTS_LOCAL: switch ( the_timer->the_class ) { 4f2f2: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 4f2f6: 7201 moveq #1,%d1 <== NOT EXECUTED 4f2f8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4f2fa: 6732 beqs 4f32e <== NOT EXECUTED 4f2fc: 620a bhis 4f308 <== NOT EXECUTED 4f2fe: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 4f302: b280 cmpl %d0,%d1 <== NOT EXECUTED 4f304: 655c bcss 4f362 <== NOT EXECUTED 4f306: 6050 bras 4f358 <== NOT EXECUTED case TIMER_INTERVAL: _Watchdog_Remove( &the_timer->Ticker ); 4f308: 240a movel %a2,%d2 <== NOT EXECUTED 4f30a: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 4f310: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f312: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); 4f318: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f31a: 4879 0006 daf4 pea 6daf4 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4f320: 4eb9 0005 3230 jsr 53230 <_Watchdog_Insert> <== NOT EXECUTED 4f326: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f32c: 6034 bras 4f362 <== NOT EXECUTED break; case TIMER_INTERVAL_ON_TASK: if ( !_Timer_Server_schedule_operation ) { 4f32e: 4ab9 0006 e2f6 tstl 6e2f6 <_Timer_Server_schedule_operation> <== NOT EXECUTED 4f334: 660a bnes 4f340 <== NOT EXECUTED _Thread_Enable_dispatch(); 4f336: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f33c: 700e moveq #14,%d0 <== NOT EXECUTED 4f33e: 602a bras 4f36a <== NOT EXECUTED return RTEMS_INCORRECT_STATE; } _Watchdog_Remove( &the_timer->Ticker ); 4f340: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4f344: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED (*_Timer_Server_schedule_operation)( the_timer ); 4f34a: 2079 0006 e2f6 moveal 6e2f6 <_Timer_Server_schedule_operation>,%a0 <== NOT EXECUTED 4f350: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f352: 4e90 jsr %a0@ <== NOT EXECUTED 4f354: 508f addql #8,%sp <== NOT EXECUTED 4f356: 600a bras 4f362 <== NOT EXECUTED break; case TIMER_TIME_OF_DAY: case TIMER_TIME_OF_DAY_ON_TASK: case TIMER_DORMANT: _Thread_Enable_dispatch(); 4f358: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f35e: 700b moveq #11,%d0 <== NOT EXECUTED 4f360: 6008 bras 4f36a <== NOT EXECUTED return RTEMS_NOT_DEFINED; } _Thread_Enable_dispatch(); 4f362: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f368: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f36a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4f36e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f372: 4e5e unlk %fp <== NOT EXECUTED 4f374: 4e75 rts <== NOT EXECUTED ... 0004f378 : Objects_Id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 4f378: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4f37c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4f380: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4f384: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4f388: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( !_Timer_Server ) 4f38c: 4ab9 0006 e2fa tstl 6e2fa <_Timer_Server> <== NOT EXECUTED 4f392: 6606 bnes 4f39a <== NOT EXECUTED 4f394: 700e moveq #14,%d0 <== NOT EXECUTED 4f396: 6000 0090 braw 4f428 <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !routine ) 4f39a: 4a82 tstl %d2 <== NOT EXECUTED 4f39c: 6606 bnes 4f3a4 <== NOT EXECUTED 4f39e: 7009 moveq #9,%d0 <== NOT EXECUTED 4f3a0: 6000 0086 braw 4f428 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( ticks == 0 ) 4f3a4: 4a84 tstl %d4 <== NOT EXECUTED 4f3a6: 6604 bnes 4f3ac <== NOT EXECUTED 4f3a8: 700a moveq #10,%d0 <== NOT EXECUTED 4f3aa: 607c bras 4f428 <== NOT EXECUTED 4f3ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f3b0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f3b2: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f3b8: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_NUMBER; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f3be: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f3c4: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f3c6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f3ca: 6704 beqs 4f3d0 <== NOT EXECUTED 4f3cc: 7004 moveq #4,%d0 <== NOT EXECUTED 4f3ce: 6058 bras 4f428 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 4f3d0: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4f3d4: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 4f3da: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4f3e0: 40c1 movew %sr,%d1 <== NOT EXECUTED 4f3e2: 8081 orl %d1,%d0 <== NOT EXECUTED 4f3e4: 46c0 movew %d0,%sr <== NOT EXECUTED 4f3e6: 47f9 0005 1fae lea 51fae <_Thread_Enable_dispatch>,%a3 <== 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 ) { 4f3ec: 588f addql #4,%sp <== NOT EXECUTED 4f3ee: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 4f3f2: 6706 beqs 4f3fa <== NOT EXECUTED _ISR_Enable( level ); 4f3f4: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 4f3f6: 4e93 jsr %a3@ <== NOT EXECUTED 4f3f8: 602c bras 4f426 <== 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; 4f3fa: 7001 moveq #1,%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4f3fc: 2542 002c movel %d2,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 4f400: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED 4f406: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 4f40a: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = ticks; 4f40e: 2544 001c movel %d4,%a2@(28) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4f412: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED _ISR_Enable( level ); 4f416: 46c1 movew %d1,%sr <== NOT EXECUTED /* * _Timer_Server_schedule_operation != NULL because we checked that * _Timer_Server was != NULL above. Both are set at the same time. */ (*_Timer_Server_schedule_operation)( the_timer ); 4f418: 2079 0006 e2f6 moveal 6e2f6 <_Timer_Server_schedule_operation>,%a0 <== NOT EXECUTED 4f41e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f420: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4f422: 4e93 jsr %a3@ <== NOT EXECUTED 4f424: 588f addql #4,%sp <== NOT EXECUTED 4f426: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f428: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4f42e: 4e5e unlk %fp <== NOT EXECUTED 4f430: 4e75 rts <== NOT EXECUTED ... 0004f434 : Objects_Id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 4f434: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4f438: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4f43c: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4f440: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4f444: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; if ( !_Timer_Server ) 4f448: 4ab9 0006 e2fa tstl 6e2fa <_Timer_Server> <== NOT EXECUTED 4f44e: 6606 bnes 4f456 <== NOT EXECUTED 4f450: 700e moveq #14,%d0 <== NOT EXECUTED 4f452: 6000 00a4 braw 4f4f8 <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !_TOD_Is_set ) 4f456: 4a39 0006 da2c tstb 6da2c <_TOD_Is_set> <== NOT EXECUTED 4f45c: 6606 bnes 4f464 <== NOT EXECUTED 4f45e: 700b moveq #11,%d0 <== NOT EXECUTED 4f460: 6000 0096 braw 4f4f8 <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !routine ) 4f464: 4a84 tstl %d4 <== NOT EXECUTED 4f466: 6606 bnes 4f46e <== NOT EXECUTED 4f468: 7009 moveq #9,%d0 <== NOT EXECUTED 4f46a: 6000 008c braw 4f4f8 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Validate( wall_time ) ) 4f46e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f470: 4eb9 0004 c9e4 jsr 4c9e4 <_TOD_Validate> <== NOT EXECUTED 4f476: 588f addql #4,%sp <== NOT EXECUTED 4f478: 4a00 tstb %d0 <== NOT EXECUTED 4f47a: 677a beqs 4f4f6 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); 4f47c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f47e: 4eb9 0004 c930 jsr 4c930 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 4f484: 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 ); 4f486: 2400 movel %d0,%d2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch ) 4f488: b0b9 0006 daaa cmpl 6daaa <_TOD_Now>,%d0 <== NOT EXECUTED 4f48e: 6366 blss 4f4f6 <== NOT EXECUTED 4f490: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f494: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f496: 4879 0006 e2ba pea 6e2ba <_Timer_Information> <== NOT EXECUTED 4f49c: 4eb9 0005 17cc jsr 517cc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 4f4a2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4f4a8: 2440 moveal %d0,%a2 <== NOT EXECUTED 4f4aa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f4ae: 6704 beqs 4f4b4 <== NOT EXECUTED 4f4b0: 7004 moveq #4,%d0 <== NOT EXECUTED 4f4b2: 6044 bras 4f4f8 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 4f4b4: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4f4b8: 4eb9 0005 334c jsr 5334c <_Watchdog_Remove> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 4f4be: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK; _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch; 4f4c2: 94b9 0006 daaa subl 6daaa <_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; 4f4c8: 7003 moveq #3,%d0 <== NOT EXECUTED the_watchdog->user_data = user_data; 4f4ca: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED /* * _Timer_Server_schedule_operation != NULL because we checked that * _Timer_Server was != NULL above. Both are set at the same time. */ (*_Timer_Server_schedule_operation)( the_timer ); 4f4d0: 2079 0006 e2f6 moveal 6e2f6 <_Timer_Server_schedule_operation>,%a0 <== 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; 4f4d6: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4f4da: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch; 4f4de: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4f4e2: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED /* * _Timer_Server_schedule_operation != NULL because we checked that * _Timer_Server was != NULL above. Both are set at the same time. */ (*_Timer_Server_schedule_operation)( the_timer ); 4f4e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f4e8: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4f4ea: 4eb9 0005 1fae jsr 51fae <_Thread_Enable_dispatch> <== NOT EXECUTED 4f4f0: 508f addql #8,%sp <== NOT EXECUTED 4f4f2: 4280 clrl %d0 <== NOT EXECUTED 4f4f4: 6002 bras 4f4f8 <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f4f6: 7014 moveq #20,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; } 4f4f8: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 4f4fe: 4e5e unlk %fp <== NOT EXECUTED 4f500: 4e75 rts <== NOT EXECUTED ... 000459a0 : */ bool rtems_workspace_allocate( uintptr_t bytes, void **pointer ) { 459a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 459a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 459a6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 459aa: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED void *ptr; /* * check the arguments */ if ( !pointer ) 459ae: 4a8a tstl %a2 <== NOT EXECUTED 459b0: 671e beqs 459d0 <== NOT EXECUTED return false; if ( !bytes ) 459b2: 4a80 tstl %d0 <== NOT EXECUTED 459b4: 671a beqs 459d0 <== NOT EXECUTED return false; /* * Allocate the memory */ ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); 459b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 459b8: 4879 0005 a666 pea 5a666 <_Workspace_Area> <== NOT EXECUTED 459be: 4eb9 0004 6dd8 jsr 46dd8 <_Protected_heap_Allocate> <== NOT EXECUTED if (!ptr) 459c4: 508f addql #8,%sp <== NOT EXECUTED 459c6: 4a80 tstl %d0 <== NOT EXECUTED 459c8: 6706 beqs 459d0 <== NOT EXECUTED return false; *pointer = ptr; 459ca: 2480 movel %d0,%a2@ <== NOT EXECUTED 459cc: 7001 moveq #1,%d0 <== NOT EXECUTED 459ce: 6002 bras 459d2 <== NOT EXECUTED return true; 459d0: 4200 clrb %d0 <== NOT EXECUTED } 459d2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 459d6: 4e5e unlk %fp <== NOT EXECUTED 459d8: 4e75 rts 00045988 : * _Workspace_Allocate */ bool rtems_workspace_free( void *pointer ) { 45988: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Protected_heap_Free( &_Workspace_Area, pointer ); 4598c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45990: 4879 0005 a666 pea 5a666 <_Workspace_Area> <== NOT EXECUTED 45996: 4eb9 0004 6e10 jsr 46e10 <_Protected_heap_Free> <== NOT EXECUTED } 4599c: 4e5e unlk %fp <== NOT EXECUTED 4599e: 4e75 rts 000459da : #include /* for memset */ bool rtems_workspace_get_information( Heap_Information_block *the_info ) { 459da: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 459de: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !the_info ) 459e2: 6710 beqs 459f4 <== NOT EXECUTED return false; return _Protected_heap_Get_information( &_Workspace_Area, the_info ); 459e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 459e6: 4879 0005 a666 pea 5a666 <_Workspace_Area> <== NOT EXECUTED 459ec: 4eb9 0004 6e48 jsr 46e48 <_Protected_heap_Get_information> <== NOT EXECUTED 459f2: 508f addql #8,%sp <== NOT EXECUTED } 459f4: 4e5e unlk %fp <== NOT EXECUTED 459f6: 4e75 rts 00045f74 : #include int sched_get_priority_max( int policy ) { 45f74: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED switch ( policy ) { 45f78: 203c 0000 00fe movel #254,%d0 <== NOT EXECUTED 45f7e: 7203 moveq #3,%d1 <== NOT EXECUTED 45f80: b2ae 0008 cmpl %fp@(8),%d1 <== NOT EXECUTED 45f84: 640e bccs 45f94 <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 45f86: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 45f8c: 2040 moveal %d0,%a0 <== NOT EXECUTED 45f8e: 7216 moveq #22,%d1 <== NOT EXECUTED 45f90: 70ff moveq #-1,%d0 <== NOT EXECUTED 45f92: 2081 movel %d1,%a0@ <== NOT EXECUTED } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; } 45f94: 4e5e unlk %fp <== NOT EXECUTED 45f96: 4e75 rts 00045f98 : #include int sched_get_priority_min( int policy ) { 45f98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED switch ( policy ) { 45f9c: 7003 moveq #3,%d0 <== NOT EXECUTED 45f9e: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 45fa2: 6506 bcss 45faa <== NOT EXECUTED 45fa4: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 45fa8: 600e bras 45fb8 <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 45faa: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 45fb0: 2040 moveal %d0,%a0 <== NOT EXECUTED 45fb2: 7216 moveq #22,%d1 <== NOT EXECUTED 45fb4: 70ff moveq #-1,%d0 <== NOT EXECUTED 45fb6: 2081 movel %d1,%a0@ <== NOT EXECUTED } return POSIX_SCHEDULER_MINIMUM_PRIORITY; } 45fb8: 4e5e unlk %fp <== NOT EXECUTED 45fba: 4e75 rts 00044f9c : int sched_getparam( pid_t pid, const struct sched_param *param ) { 44f9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44fa0: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44fa6: 2040 moveal %d0,%a0 <== NOT EXECUTED 44fa8: 7058 moveq #88,%d0 <== NOT EXECUTED 44faa: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44fac: 4e5e unlk %fp <== NOT EXECUTED 44fae: 70ff moveq #-1,%d0 <== NOT EXECUTED 44fb0: 4e75 rts <== NOT EXECUTED ... 00044fb4 : #include int sched_getscheduler( pid_t pid ) { 44fb4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44fb8: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44fbe: 2040 moveal %d0,%a0 <== NOT EXECUTED 44fc0: 7058 moveq #88,%d0 <== NOT EXECUTED 44fc2: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44fc4: 4e5e unlk %fp <== NOT EXECUTED 44fc6: 70ff moveq #-1,%d0 <== NOT EXECUTED 44fc8: 4e75 rts <== NOT EXECUTED ... 00045fbc : int sched_rr_get_interval( pid_t pid, struct timespec *interval ) { 45fbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45fc0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45fc2: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 45fc6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45fc8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED /* * Only supported for the "calling process" (i.e. this node). */ if ( pid && pid != getpid() ) 45fcc: 6718 beqs 45fe6 <== NOT EXECUTED 45fce: 4eb9 0004 30f4 jsr 430f4 <== NOT EXECUTED 45fd4: b082 cmpl %d2,%d0 <== NOT EXECUTED 45fd6: 670e beqs 45fe6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 45fd8: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 45fde: 7203 moveq #3,%d1 <== NOT EXECUTED 45fe0: 2040 moveal %d0,%a0 <== NOT EXECUTED 45fe2: 2081 movel %d1,%a0@ <== NOT EXECUTED 45fe4: 6010 bras 45ff6 <== NOT EXECUTED if ( !interval ) 45fe6: 4a83 tstl %d3 <== NOT EXECUTED 45fe8: 6610 bnes 45ffa <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45fea: 4eb9 0004 cf8c jsr 4cf8c <__errno> <== NOT EXECUTED 45ff0: 2040 moveal %d0,%a0 <== NOT EXECUTED 45ff2: 7016 moveq #22,%d0 <== NOT EXECUTED 45ff4: 2080 movel %d0,%a0@ <== NOT EXECUTED 45ff6: 70ff moveq #-1,%d0 <== NOT EXECUTED 45ff8: 6012 bras 4600c <== NOT EXECUTED _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); 45ffa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45ffc: 2f39 0005 b520 movel 5b520 <_Thread_Ticks_per_timeslice>,%sp@- <== NOT EXECUTED 46002: 4eb9 0004 9560 jsr 49560 <_Timespec_From_ticks> <== NOT EXECUTED 46008: 508f addql #8,%sp <== NOT EXECUTED 4600a: 4280 clrl %d0 <== NOT EXECUTED return 0; } 4600c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46010: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46014: 4e5e unlk %fp <== NOT EXECUTED 46016: 4e75 rts 00044fcc : int sched_setparam( pid_t pid, const struct sched_param *param ) { 44fcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44fd0: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44fd6: 2040 moveal %d0,%a0 <== NOT EXECUTED 44fd8: 7058 moveq #88,%d0 <== NOT EXECUTED 44fda: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44fdc: 4e5e unlk %fp <== NOT EXECUTED 44fde: 70ff moveq #-1,%d0 <== NOT EXECUTED 44fe0: 4e75 rts <== NOT EXECUTED ... 00044fe4 : int sched_setscheduler( pid_t pid, int policy, const struct sched_param *param ) { 44fe4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 44fe8: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 44fee: 2040 moveal %d0,%a0 <== NOT EXECUTED 44ff0: 7058 moveq #88,%d0 <== NOT EXECUTED 44ff2: 2080 movel %d0,%a0@ <== NOT EXECUTED } 44ff4: 4e5e unlk %fp <== NOT EXECUTED 44ff6: 70ff moveq #-1,%d0 <== NOT EXECUTED 44ff8: 4e75 rts <== NOT EXECUTED ... 00046018 : 46018: 2039 0005 b570 movel 5b570 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 4601e: 5280 addql #1,%d0 <== NOT EXECUTED #include #include #include int sched_yield( void ) { 46020: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46024: 23c0 0005 b570 movel %d0,5b570 <_Thread_Dispatch_disable_level> <== NOT EXECUTED _Thread_Disable_dispatch(); _Thread_Yield_processor(); 4602a: 4eb9 0004 94ac jsr 494ac <_Thread_Yield_processor> <== NOT EXECUTED _Thread_Enable_dispatch(); 46030: 4eb9 0004 883a jsr 4883a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 46036: 4e5e unlk %fp <== NOT EXECUTED 46038: 4280 clrl %d0 <== NOT EXECUTED 4603a: 4e75 rts 000472e8 : */ int sem_close( sem_t *sem ) { 472e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get ( sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) 472ec: 486e fffc pea %fp@(-4) <== NOT EXECUTED 472f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 472f4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 472f6: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 472fc: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 47302: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 47308: 2040 moveal %d0,%a0 <== NOT EXECUTED 4730a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4730e: 6618 bnes 47328 <== NOT EXECUTED case OBJECTS_LOCAL: the_semaphore->open_count -= 1; 47310: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Semaphore_Delete( the_semaphore ); 47314: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47316: 4eb9 0004 d004 jsr 4d004 <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4731c: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED 47322: 588f addql #4,%sp <== NOT EXECUTED 47324: 4280 clrl %d0 <== NOT EXECUTED 47326: 600e bras 47336 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47328: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4732e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47330: 7216 moveq #22,%d1 <== NOT EXECUTED 47332: 70ff moveq #-1,%d0 <== NOT EXECUTED 47334: 2081 movel %d1,%a0@ <== NOT EXECUTED } 47336: 4e5e unlk %fp <== NOT EXECUTED 47338: 4e75 rts <== NOT EXECUTED ... 0004733c : */ int sem_destroy( sem_t *sem ) { 4733c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47340: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47342: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47346: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4734a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4734c: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 47352: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 47358: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4735e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47360: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47364: 662e bnes 47394 <== NOT EXECUTED 47366: 45f9 0004 9bfa lea 49bfa <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Undefined operation on a named semaphore. */ if ( the_semaphore->named == TRUE ) { 4736c: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED 47370: 6712 beqs 47384 <== NOT EXECUTED _Thread_Enable_dispatch(); 47372: 4e92 jsr %a2@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47374: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4737a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4737c: 7016 moveq #22,%d0 <== NOT EXECUTED 4737e: 2080 movel %d0,%a0@ <== NOT EXECUTED 47380: 70ff moveq #-1,%d0 <== NOT EXECUTED 47382: 601e bras 473a2 <== NOT EXECUTED } _POSIX_Semaphore_Delete( the_semaphore ); 47384: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47386: 4eb9 0004 d004 jsr 4d004 <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4738c: 4e92 jsr %a2@ <== NOT EXECUTED 4738e: 588f addql #4,%sp <== NOT EXECUTED 47390: 4280 clrl %d0 <== NOT EXECUTED 47392: 600e bras 473a2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47394: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4739a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4739c: 7216 moveq #22,%d1 <== NOT EXECUTED 4739e: 70ff moveq #-1,%d0 <== NOT EXECUTED 473a0: 2081 movel %d1,%a0@ <== NOT EXECUTED } 473a2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 473a6: 4e5e unlk %fp <== NOT EXECUTED 473a8: 4e75 rts <== NOT EXECUTED ... 000473ac : int sem_getvalue( sem_t *sem, int *sval ) { 473ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 473b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 473b4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 473b8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 473ba: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 473c0: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 473c6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 473cc: 2240 moveal %d0,%a1 <== NOT EXECUTED 473ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 473d2: 6612 bnes 473e6 <== NOT EXECUTED case OBJECTS_LOCAL: *sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore ); 473d4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 473d8: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 473dc: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED 473e2: 4280 clrl %d0 <== NOT EXECUTED 473e4: 600e bras 473f4 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 473e6: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 473ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 473ee: 7216 moveq #22,%d1 <== NOT EXECUTED 473f0: 70ff moveq #-1,%d0 <== NOT EXECUTED 473f2: 2081 movel %d1,%a0@ <== NOT EXECUTED } 473f4: 4e5e unlk %fp <== NOT EXECUTED 473f6: 4e75 rts 000473f8 : int sem_init( sem_t *sem, int pshared, unsigned int value ) { 473f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 473fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 473fe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) 47402: 4a8a tstl %a2 <== NOT EXECUTED 47404: 6610 bnes 47416 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47406: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4740c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4740e: 7016 moveq #22,%d0 <== NOT EXECUTED 47410: 2080 movel %d0,%a0@ <== NOT EXECUTED 47412: 70ff moveq #-1,%d0 <== NOT EXECUTED 47414: 6028 bras 4743e <== NOT EXECUTED status = _POSIX_Semaphore_Create_support( 47416: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4741a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4741e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47422: 42a7 clrl %sp@- <== NOT EXECUTED 47424: 4eb9 0004 cf0c jsr 4cf0c <_POSIX_Semaphore_Create_support> <== NOT EXECUTED pshared, value, &the_semaphore ); if ( status != -1 ) 4742a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 47430: 72ff moveq #-1,%d1 <== NOT EXECUTED 47432: b280 cmpl %d0,%d1 <== NOT EXECUTED 47434: 6708 beqs 4743e <== NOT EXECUTED *sem = the_semaphore->Object.id; 47436: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4743a: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return status; } 4743e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47442: 4e5e unlk %fp <== NOT EXECUTED 47444: 4e75 rts <== NOT EXECUTED ... 00047448 : rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 47448: 2039 0005 cdf0 movel 5cdf0 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) { 4744e: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 47452: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 47456: 5280 addql #1,%d0 <== NOT EXECUTED 47458: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4745c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 47460: 23c0 0005 cdf0 movel %d0,5cdf0 <_Thread_Dispatch_disable_level> <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 47466: 2803 movel %d3,%d4 <== NOT EXECUTED 47468: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 4746e: 6604 bnes 47474 <== NOT EXECUTED 47470: 95ca subal %a2,%a2 <== NOT EXECUTED 47472: 6004 bras 47478 <== NOT EXECUTED va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); value = va_arg( arg, unsigned int ); 47474: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED va_end(arg); } status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id ); 47478: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4747c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4747e: 4eb9 0004 d054 jsr 4d054 <_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 ) { 47484: 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 ); 47486: 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 ) { 47488: 671c beqs 474a6 <== 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) ) ) { 4748a: 7002 moveq #2,%d0 <== NOT EXECUTED 4748c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4748e: 6604 bnes 47494 <== NOT EXECUTED 47490: 4a84 tstl %d4 <== NOT EXECUTED 47492: 6662 bnes 474f6 <== NOT EXECUTED _Thread_Enable_dispatch(); 47494: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, sem_t * ); 4749a: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 474a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 474a2: 2082 movel %d2,%a0@ <== NOT EXECUTED 474a4: 6022 bras 474c8 <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 474a6: 0283 0000 0a00 andil #2560,%d3 <== NOT EXECUTED 474ac: 45f9 0004 9bfa lea 49bfa <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 474b2: 0c83 0000 0a00 cmpil #2560,%d3 <== NOT EXECUTED 474b8: 6612 bnes 474cc <== NOT EXECUTED _Thread_Enable_dispatch(); 474ba: 4e92 jsr %a2@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); 474bc: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 474c2: 2040 moveal %d0,%a0 <== NOT EXECUTED 474c4: 7011 moveq #17,%d0 <== NOT EXECUTED 474c6: 2080 movel %d0,%a0@ <== NOT EXECUTED 474c8: 70ff moveq #-1,%d0 <== NOT EXECUTED 474ca: 6054 bras 47520 <== NOT EXECUTED 474cc: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 474d0: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 474d4: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 474da: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED 474e0: 2040 moveal %d0,%a0 <== NOT EXECUTED } the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location ); the_semaphore->open_count += 1; 474e2: 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 ); 474e6: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED the_semaphore->open_count += 1; _Thread_Enable_dispatch(); 474ea: 4e92 jsr %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 474ec: 4e92 jsr %a2@ <== NOT EXECUTED id = &the_semaphore->Object.id; return (sem_t *)id; 474ee: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 474f4: 6024 bras 4751a <== 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( 474f6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 474fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474fc: 42a7 clrl %sp@- <== NOT EXECUTED 474fe: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47500: 4eb9 0004 cf0c jsr 4cf0c <_POSIX_Semaphore_Create_support> <== NOT EXECUTED 47506: 2400 movel %d0,%d2 <== NOT EXECUTED /* * errno was set by Create_support, so don't set it again. */ _Thread_Enable_dispatch(); 47508: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED if ( status == -1 ) 4750e: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 47514: 70ff moveq #-1,%d0 <== NOT EXECUTED 47516: b082 cmpl %d2,%d0 <== NOT EXECUTED 47518: 6706 beqs 47520 <== NOT EXECUTED return SEM_FAILED; id = &the_semaphore->Object.id; return (sem_t *)id; 4751a: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4751e: 5080 addql #8,%d0 <== NOT EXECUTED } 47520: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 47526: 4e5e unlk %fp <== NOT EXECUTED 47528: 4e75 rts <== NOT EXECUTED ... 0004752c : */ int sem_post( sem_t *sem ) { 4752c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47530: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47534: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47538: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4753a: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 47540: 4eb9 0004 9488 jsr 49488 <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 47546: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4754c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4754e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47552: 6620 bnes 47574 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_semaphore_Surrender( 47554: 42a7 clrl %sp@- <== NOT EXECUTED 47556: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4755a: 4868 001a pea %a0@(26) <== NOT EXECUTED 4755e: 4eb9 0004 8c24 jsr 48c24 <_CORE_semaphore_Surrender> <== NOT EXECUTED NULL /* XXX need to define a routine to handle this case */ #else NULL #endif ); _Thread_Enable_dispatch(); 47564: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED 4756a: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 47570: 4280 clrl %d0 <== NOT EXECUTED 47572: 600e bras 47582 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 47574: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4757a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4757c: 7216 moveq #22,%d1 <== NOT EXECUTED 4757e: 70ff moveq #-1,%d0 <== NOT EXECUTED 47580: 2081 movel %d1,%a0@ <== NOT EXECUTED } 47582: 4e5e unlk %fp <== NOT EXECUTED 47584: 4e75 rts <== NOT EXECUTED ... 00047588 : int sem_timedwait( sem_t *sem, const struct timespec *abstime ) { 47588: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * So we check the abstime provided, and hold on to whether it * 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. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4758c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47590: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47594: 4eb9 0004 c668 jsr 4c668 <_POSIX_Absolute_timeout_to_ticks> <== NOT EXECUTED switch ( status ) { 4759a: 508f addql #8,%sp <== NOT EXECUTED 4759c: 7202 moveq #2,%d1 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: do_wait = true; break; } lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 4759e: 2f2e fffc movel %fp@(-4),%sp@- <== 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. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); switch ( status ) { 475a2: b280 cmpl %d0,%d1 <== NOT EXECUTED 475a4: 55c0 scs %d0 <== NOT EXECUTED 475a6: 4480 negl %d0 <== NOT EXECUTED case POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE: do_wait = true; break; } lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 475a8: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 475ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 475b0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 475b4: 4eb9 0004 d0c4 jsr 4d0c4 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED break; } } return lock_status; } 475ba: 4e5e unlk %fp <== NOT EXECUTED 475bc: 4e75 rts <== NOT EXECUTED ... 000475c0 : */ int sem_trywait( sem_t *sem ) { 475c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support(sem, FALSE, THREAD_QUEUE_WAIT_FOREVER); 475c4: 42a7 clrl %sp@- <== NOT EXECUTED 475c6: 42a7 clrl %sp@- <== NOT EXECUTED 475c8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 475cc: 4eb9 0004 d0c4 jsr 4d0c4 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 475d2: 4e5e unlk %fp <== NOT EXECUTED 475d4: 4e75 rts <== NOT EXECUTED ... 000475d8 : 475d8: 2039 0005 cdf0 movel 5cdf0 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED */ int sem_unlink( const char *name ) { 475de: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 475e2: 5280 addql #1,%d0 <== NOT EXECUTED 475e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475e6: 23c0 0005 cdf0 movel %d0,5cdf0 <_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 ); 475ec: 486e fffc pea %fp@(-4) <== NOT EXECUTED 475f0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 475f4: 4eb9 0004 d054 jsr 4d054 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 475fa: 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 ); 475fc: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( status != 0 ) { 475fe: 4a80 tstl %d0 <== NOT EXECUTED 47600: 6714 beqs 47616 <== NOT EXECUTED _Thread_Enable_dispatch(); 47602: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 47608: 4eb9 0004 ed40 jsr 4ed40 <__errno> <== NOT EXECUTED 4760e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47610: 208a movel %a2,%a0@ <== NOT EXECUTED 47612: 70ff moveq #-1,%d0 <== NOT EXECUTED 47614: 604a bras 47660 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( Objects_Information *information, uint16_t index ) { if ( index > information->maximum ) 47616: 4281 clrl %d1 <== NOT EXECUTED 47618: 4280 clrl %d0 <== NOT EXECUTED 4761a: 322e fffe movew %fp@(-2),%d1 <== NOT EXECUTED 4761e: 3039 0005 d068 movew 5d068 <_POSIX_Semaphore_Information+0xe>,%d0 <== NOT EXECUTED 47624: b081 cmpl %d1,%d0 <== NOT EXECUTED 47626: 6404 bccs 4762c <== NOT EXECUTED 47628: 95ca subal %a2,%a2 <== NOT EXECUTED 4762a: 600a bras 47636 <== NOT EXECUTED return NULL; return information->local_table[ index ]; 4762c: 2079 0005 d074 moveal 5d074 <_POSIX_Semaphore_Information+0x1a>,%a0 <== NOT EXECUTED 47632: 2470 1c00 moveal %a0@(00000000,%d1:l:4),%a2 <== NOT EXECUTED the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object( &_POSIX_Semaphore_Information, _Objects_Get_index( the_semaphore_id ) ); the_semaphore->linked = FALSE; 47636: 4200 clrb %d0 <== NOT EXECUTED 47638: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove ( POSIX_Semaphore_Control *the_semaphore ) { _Objects_Namespace_remove( 4763c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4763e: 4879 0005 d05a pea 5d05a <_POSIX_Semaphore_Information> <== NOT EXECUTED 47644: 4eb9 0004 95bc jsr 495bc <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); 4764a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4764c: 4eb9 0004 d004 jsr 4d004 <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 47652: 4eb9 0004 9bfa jsr 49bfa <_Thread_Enable_dispatch> <== NOT EXECUTED 47658: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4765e: 4280 clrl %d0 <== NOT EXECUTED return 0; } 47660: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47664: 4e5e unlk %fp <== NOT EXECUTED 47666: 4e75 rts 00047668 : */ int sem_wait( sem_t *sem ) { 47668: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support( sem, TRUE, THREAD_QUEUE_WAIT_FOREVER ); 4766c: 42a7 clrl %sp@- <== NOT EXECUTED 4766e: 4878 0001 pea 1 <== NOT EXECUTED 47672: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47676: 4eb9 0004 d0c4 jsr 4d0c4 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 4767c: 4e5e unlk %fp <== NOT EXECUTED 4767e: 4e75 rts 0004546c : int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) { 4546c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45470: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 45474: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45478: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4547c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED ISR_Level level; if ( oact ) 45480: 4a88 tstl %a0 <== NOT EXECUTED 45482: 6724 beqs 454a8 <== NOT EXECUTED *oact = _POSIX_signals_Vectors[ sig ]; 45484: 4878 000c pea c <== NOT EXECUTED 45488: 2202 movel %d2,%d1 <== NOT EXECUTED 4548a: 2002 movel %d2,%d0 <== NOT EXECUTED 4548c: e589 lsll #2,%d1 <== NOT EXECUTED 4548e: e988 lsll #4,%d0 <== NOT EXECUTED 45490: 9081 subl %d1,%d0 <== NOT EXECUTED 45492: 0680 0005 a892 addil #370834,%d0 <== NOT EXECUTED 45498: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4549a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4549c: 4eb9 0004 ce58 jsr 4ce58 <== NOT EXECUTED 454a2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED if ( !sig ) 454a8: 4a82 tstl %d2 <== NOT EXECUTED 454aa: 6710 beqs 454bc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 454ac: 2202 movel %d2,%d1 <== NOT EXECUTED 454ae: 5381 subql #1,%d1 <== NOT EXECUTED 454b0: 701f moveq #31,%d0 <== NOT EXECUTED 454b2: b081 cmpl %d1,%d0 <== NOT EXECUTED 454b4: 6506 bcss 454bc <== NOT EXECUTED * * NOTE: Solaris documentation claims to "silently enforce" this which * contradicts the POSIX specification. */ if ( sig == SIGKILL ) 454b6: 7009 moveq #9,%d0 <== NOT EXECUTED 454b8: b082 cmpl %d2,%d0 <== NOT EXECUTED 454ba: 6610 bnes 454cc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 454bc: 4eb9 0004 c648 jsr 4c648 <__errno> <== NOT EXECUTED 454c2: 2040 moveal %d0,%a0 <== NOT EXECUTED 454c4: 7016 moveq #22,%d0 <== NOT EXECUTED 454c6: 2080 movel %d0,%a0@ <== NOT EXECUTED 454c8: 70ff moveq #-1,%d0 <== NOT EXECUTED 454ca: 6068 bras 45534 <== NOT EXECUTED /* * Evaluate the new action structure and set the global signal vector * appropriately. */ if ( act ) { 454cc: 4a8a tstl %a2 <== NOT EXECUTED 454ce: 6762 beqs 45532 <== 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 ); 454d0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 454d6: 40c3 movew %sr,%d3 <== NOT EXECUTED 454d8: 8083 orl %d3,%d0 <== NOT EXECUTED 454da: 46c0 movew %d0,%sr <== NOT EXECUTED 454dc: 700c moveq #12,%d0 <== NOT EXECUTED 454de: 47f9 0004 ce58 lea 4ce58 ,%a3 <== NOT EXECUTED 454e4: 4c00 2800 mulsl %d0,%d2 <== NOT EXECUTED if ( act->sa_handler == SIG_DFL ) { 454e8: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 454ec: 6620 bnes 4550e <== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; 454ee: 4878 000c pea c <== NOT EXECUTED 454f2: 2002 movel %d2,%d0 <== NOT EXECUTED 454f4: 0680 0005 78f8 addil #358648,%d0 <== NOT EXECUTED 454fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 454fc: 0682 0005 a892 addil #370834,%d2 <== NOT EXECUTED 45502: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45504: 4e93 jsr %a3@ <== NOT EXECUTED 45506: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4550c: 6022 bras 45530 <== NOT EXECUTED } else { _POSIX_signals_Clear_process_signals( signo_to_mask(sig) ); 4550e: 7001 moveq #1,%d0 <== NOT EXECUTED 45510: e3a8 lsll %d1,%d0 <== NOT EXECUTED 45512: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45514: 4eb9 0004 a960 jsr 4a960 <_POSIX_signals_Clear_process_signals> <== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = *act; 4551a: 4878 000c pea c <== NOT EXECUTED 4551e: 0682 0005 a892 addil #370834,%d2 <== NOT EXECUTED 45524: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45526: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45528: 4e93 jsr %a3@ <== NOT EXECUTED 4552a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED } _ISR_Enable( level ); 45530: 46c3 movew %d3,%sr <== NOT EXECUTED 45532: 4280 clrl %d0 <== NOT EXECUTED * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; } 45534: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4553a: 4e5e unlk %fp <== NOT EXECUTED 4553c: 4e75 rts <== NOT EXECUTED ... 00045540 : int sigaddset( sigset_t *set, int signo ) { 45540: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45544: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45548: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !set ) 4554c: 4a88 tstl %a0 <== NOT EXECUTED 4554e: 670e beqs 4555e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 45550: 4a80 tstl %d0 <== NOT EXECUTED 45552: 670a beqs 4555e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) 45554: 2200 movel %d0,%d1 <== NOT EXECUTED 45556: 5381 subql #1,%d1 <== NOT EXECUTED 45558: 701f moveq #31,%d0 <== NOT EXECUTED 4555a: b081 cmpl %d1,%d0 <== NOT EXECUTED 4555c: 6410 bccs 4556e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4555e: 4eb9 0004 c648 jsr 4c648 <__errno> <== NOT EXECUTED 45564: 2040 moveal %d0,%a0 <== NOT EXECUTED 45566: 7016 moveq #22,%d0 <== NOT EXECUTED 45568: 2080 movel %d0,%a0@ <== NOT EXECUTED 4556a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4556c: 6008 bras 45576 <== NOT EXECUTED *set |= signo_to_mask(signo); 4556e: 7001 moveq #1,%d0 <== NOT EXECUTED 45570: e3a8 lsll %d1,%d0 <== NOT EXECUTED 45572: 8190 orl %d0,%a0@ <== NOT EXECUTED 45574: 4280 clrl %d0 <== NOT EXECUTED return 0; } 45576: 4e5e unlk %fp <== NOT EXECUTED 45578: 4e75 rts <== NOT EXECUTED ... 0004712c : int sigdelset( sigset_t *set, int signo ) { 4712c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47130: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47134: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !set ) 47138: 4a88 tstl %a0 <== NOT EXECUTED 4713a: 670e beqs 4714a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 4713c: 4a80 tstl %d0 <== NOT EXECUTED 4713e: 6724 beqs 47164 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 47140: 2200 movel %d0,%d1 <== NOT EXECUTED 47142: 5381 subql #1,%d1 <== NOT EXECUTED 47144: 701f moveq #31,%d0 <== NOT EXECUTED 47146: b081 cmpl %d1,%d0 <== NOT EXECUTED 47148: 6410 bccs 4715a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4714a: 4eb9 0004 e75c jsr 4e75c <__errno> <== NOT EXECUTED 47150: 2040 moveal %d0,%a0 <== NOT EXECUTED 47152: 7016 moveq #22,%d0 <== NOT EXECUTED 47154: 2080 movel %d0,%a0@ <== NOT EXECUTED 47156: 70ff moveq #-1,%d0 <== NOT EXECUTED 47158: 600a bras 47164 <== NOT EXECUTED *set &= ~signo_to_mask(signo); 4715a: 7001 moveq #1,%d0 <== NOT EXECUTED 4715c: e3a8 lsll %d1,%d0 <== NOT EXECUTED 4715e: 4680 notl %d0 <== NOT EXECUTED 47160: c190 andl %d0,%a0@ <== NOT EXECUTED 47162: 4280 clrl %d0 <== NOT EXECUTED return 0; } 47164: 4e5e unlk %fp <== NOT EXECUTED 47166: 4e75 rts 00049d24 : #include int sigemptyset( sigset_t *set ) { 49d24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49d28: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !set ) 49d2c: 4a88 tstl %a0 <== NOT EXECUTED 49d2e: 6610 bnes 49d40 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 49d30: 4eb9 0004 b794 jsr 4b794 <__errno> <== NOT EXECUTED 49d36: 2040 moveal %d0,%a0 <== NOT EXECUTED 49d38: 7016 moveq #22,%d0 <== NOT EXECUTED 49d3a: 2080 movel %d0,%a0@ <== NOT EXECUTED 49d3c: 70ff moveq #-1,%d0 <== NOT EXECUTED 49d3e: 6004 bras 49d44 <== NOT EXECUTED *set = 0; 49d40: 4280 clrl %d0 <== NOT EXECUTED 49d42: 4290 clrl %a0@ <== NOT EXECUTED return 0; } 49d44: 4e5e unlk %fp <== NOT EXECUTED 49d46: 4e75 rts 0004718c : #include int sigfillset( sigset_t *set ) { 4718c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47190: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !set ) 47194: 4a88 tstl %a0 <== NOT EXECUTED 47196: 6610 bnes 471a8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47198: 4eb9 0004 e75c jsr 4e75c <__errno> <== NOT EXECUTED 4719e: 2040 moveal %d0,%a0 <== NOT EXECUTED 471a0: 7016 moveq #22,%d0 <== NOT EXECUTED 471a2: 2080 movel %d0,%a0@ <== NOT EXECUTED 471a4: 70ff moveq #-1,%d0 <== NOT EXECUTED 471a6: 6006 bras 471ae <== NOT EXECUTED *set = SIGNAL_ALL_MASK; 471a8: 72ff moveq #-1,%d1 <== NOT EXECUTED 471aa: 4280 clrl %d0 <== NOT EXECUTED 471ac: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 471ae: 4e5e unlk %fp <== NOT EXECUTED 471b0: 4e75 rts <== NOT EXECUTED ... 000471b4 : int sigismember( const sigset_t *set, int signo ) { 471b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 471b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 471bc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !set ) 471c0: 4a88 tstl %a0 <== NOT EXECUTED 471c2: 670e beqs 471d2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 471c4: 4a80 tstl %d0 <== NOT EXECUTED 471c6: 6726 beqs 471ee <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 471c8: 2200 movel %d0,%d1 <== NOT EXECUTED 471ca: 5381 subql #1,%d1 <== NOT EXECUTED 471cc: 701f moveq #31,%d0 <== NOT EXECUTED 471ce: b081 cmpl %d1,%d0 <== NOT EXECUTED 471d0: 6410 bccs 471e2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 471d2: 4eb9 0004 e75c jsr 4e75c <__errno> <== NOT EXECUTED 471d8: 2040 moveal %d0,%a0 <== NOT EXECUTED 471da: 7016 moveq #22,%d0 <== NOT EXECUTED 471dc: 2080 movel %d0,%a0@ <== NOT EXECUTED 471de: 70ff moveq #-1,%d0 <== NOT EXECUTED 471e0: 600c bras 471ee <== NOT EXECUTED 471e2: 7001 moveq #1,%d0 <== NOT EXECUTED 471e4: e3a8 lsll %d1,%d0 <== NOT EXECUTED 471e6: c090 andl %a0@,%d0 <== NOT EXECUTED 471e8: 56c0 sne %d0 <== NOT EXECUTED 471ea: 49c0 extbl %d0 <== NOT EXECUTED 471ec: 4480 negl %d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 471ee: 4e5e unlk %fp <== NOT EXECUTED 471f0: 4e75 rts <== NOT EXECUTED ... 000451e4 : sighandler_t signal( int signum, sighandler_t handler ) { 451e4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED struct sigaction s; struct sigaction old; s.sa_handler = handler ; sigemptyset(&s.sa_mask); 451e8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED ) { struct sigaction s; struct sigaction old; s.sa_handler = handler ; 451ec: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED sigemptyset(&s.sa_mask); 451f2: 4eb9 0004 51c0 jsr 451c0 <== NOT EXECUTED s.sa_flags = SA_RESTART; #else s.sa_flags = 0; #endif sigaction( signum, &s, &old ); 451f8: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 451fc: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 45200: 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; 45204: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED #endif sigaction( signum, &s, &old ); 45208: 4eb9 0004 50b0 jsr 450b0 <== NOT EXECUTED return (sighandler_t) old.sa_handler; } 4520e: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 45212: 4e5e unlk %fp <== NOT EXECUTED 45214: 4e75 rts <== NOT EXECUTED ... 000455a0 : #include int sigpending( sigset_t *set ) { 455a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 455a4: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED POSIX_API_Control *api; if ( !set ) 455a8: 4a89 tstl %a1 <== NOT EXECUTED 455aa: 6610 bnes 455bc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 455ac: 4eb9 0004 c648 jsr 4c648 <__errno> <== NOT EXECUTED 455b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 455b4: 7016 moveq #22,%d0 <== NOT EXECUTED 455b6: 2080 movel %d0,%a0@ <== NOT EXECUTED 455b8: 70ff moveq #-1,%d0 <== NOT EXECUTED 455ba: 6018 bras 455d4 <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; *set = api->signals_pending | _POSIX_signals_Pending; 455bc: 2079 0005 a446 moveal 5a446 <_Thread_Executing>,%a0 <== NOT EXECUTED 455c2: 2039 0005 aa5e movel 5aa5e <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 455c8: 2068 0110 moveal %a0@(272),%a0 <== NOT EXECUTED 455cc: 80a8 00c8 orl %a0@(200),%d0 <== NOT EXECUTED 455d0: 2280 movel %d0,%a1@ <== NOT EXECUTED 455d2: 4280 clrl %d0 <== NOT EXECUTED return 0; } 455d4: 4e5e unlk %fp <== NOT EXECUTED 455d6: 4e75 rts 000455d8 : int sigprocmask( int how, const sigset_t *set, sigset_t *oset ) { 455d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. */ return pthread_sigmask( how, set, oset ); } 455dc: 4e5e unlk %fp <== NOT EXECUTED { /* * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. */ return pthread_sigmask( how, set, oset ); 455de: 4ef9 0004 ad78 jmp 4ad78 <== NOT EXECUTED 00047238 : int sigqueue( pid_t pid, int signo, const union sigval value ) { 47238: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, signo, &value ); 4723c: 486e 0010 pea %fp@(16) <== NOT EXECUTED 47240: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47244: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47248: 4eb9 0004 c6a8 jsr 4c6a8 <== NOT EXECUTED } 4724e: 4e5e unlk %fp <== NOT EXECUTED 47250: 4e75 rts <== NOT EXECUTED ... 00047254 : #include int sigsuspend( const sigset_t *sigmask ) { 47254: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47258: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED int status; POSIX_API_Control *api; api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 4725c: 260e movel %fp,%d3 <== NOT EXECUTED 4725e: 5983 subql #4,%d3 <== NOT EXECUTED 47260: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47262: 45f9 0004 722c lea 4722c ,%a2 <== NOT EXECUTED 47268: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED (void) sigfillset( &all_signals ); 4726c: 240e movel %fp,%d2 <== NOT EXECUTED int status; POSIX_API_Control *api; api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 4726e: 4878 0001 pea 1 <== NOT EXECUTED 47272: 4e92 jsr %a2@ <== NOT EXECUTED (void) sigfillset( &all_signals ); 47274: 5182 subql #8,%d2 <== NOT EXECUTED 47276: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47278: 4eb9 0004 718c jsr 4718c <== NOT EXECUTED status = sigtimedwait( &all_signals, NULL, NULL ); 4727e: 42a7 clrl %sp@- <== NOT EXECUTED 47280: 42a7 clrl %sp@- <== NOT EXECUTED 47282: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47284: 4eb9 0004 7308 jsr 47308 <== NOT EXECUTED (void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL ); 4728a: 42a7 clrl %sp@- <== NOT EXECUTED status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); (void) sigfillset( &all_signals ); status = sigtimedwait( &all_signals, NULL, NULL ); 4728c: 2400 movel %d0,%d2 <== NOT EXECUTED (void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL ); 4728e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47290: 42a7 clrl %sp@- <== NOT EXECUTED 47292: 4e92 jsr %a2@ <== NOT EXECUTED /* * sigtimedwait() returns the signal number while sigsuspend() * is supposed to return -1 and EINTR when a signal is caught. */ if ( status != -1 ) 47294: dffc 0000 0028 addal #40,%sp <== NOT EXECUTED 4729a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4729c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4729e: 670c beqs 472ac <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); 472a0: 4eb9 0004 e75c jsr 4e75c <__errno> <== NOT EXECUTED 472a6: 2040 moveal %d0,%a0 <== NOT EXECUTED 472a8: 7004 moveq #4,%d0 <== NOT EXECUTED 472aa: 2080 movel %d0,%a0@ <== NOT EXECUTED return status; } 472ac: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 472b2: 4e5e unlk %fp <== NOT EXECUTED 472b4: 70ff moveq #-1,%d0 <== NOT EXECUTED 472b6: 4e75 rts 0004588c : int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) { 4588c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 45890: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 45894: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED 45898: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4589c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED * NOTE: This is very specifically a RELATIVE not ABSOLUTE time * in the Open Group specification. */ interval = 0; if ( timeout ) { 458a0: 6730 beqs 458d2 <== NOT EXECUTED if ( !_Timespec_Is_valid( timeout ) ) 458a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 458a4: 4eb9 0004 8d30 jsr 48d30 <_Timespec_Is_valid> <== NOT EXECUTED 458aa: 588f addql #4,%sp <== NOT EXECUTED 458ac: 4a00 tstb %d0 <== NOT EXECUTED 458ae: 6710 beqs 458c0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); interval = _Timespec_To_ticks( timeout ); 458b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 458b2: 4eb9 0004 8da8 jsr 48da8 <_Timespec_To_ticks> <== NOT EXECUTED if ( !interval ) 458b8: 588f addql #4,%sp <== NOT EXECUTED if ( timeout ) { if ( !_Timespec_Is_valid( timeout ) ) rtems_set_errno_and_return_minus_one( EINVAL ); interval = _Timespec_To_ticks( timeout ); 458ba: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !interval ) 458bc: 4a80 tstl %d0 <== NOT EXECUTED 458be: 6614 bnes 458d4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 458c0: 4eb9 0004 cbd0 jsr 4cbd0 <__errno> <== NOT EXECUTED 458c6: 7216 moveq #22,%d1 <== NOT EXECUTED 458c8: 2040 moveal %d0,%a0 <== NOT EXECUTED 458ca: 2081 movel %d1,%a0@ <== NOT EXECUTED 458cc: 74ff moveq #-1,%d2 <== NOT EXECUTED 458ce: 6000 0116 braw 459e6 <== NOT EXECUTED 458d2: 93c9 subal %a1,%a1 <== NOT EXECUTED /* * Initialize local variables. */ the_info = ( info ) ? info : &signal_information; 458d4: 4a83 tstl %d3 <== NOT EXECUTED 458d6: 6704 beqs 458dc <== NOT EXECUTED 458d8: 2443 moveal %d3,%a2 <== NOT EXECUTED 458da: 6004 bras 458e0 <== NOT EXECUTED 458dc: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED the_thread = _Thread_Executing; 458e0: 2079 0005 a826 moveal 5a826 <_Thread_Executing>,%a0 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 458e6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED the_info = ( info ) ? info : &signal_information; the_thread = _Thread_Executing; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 458ec: 2668 0110 moveal %a0@(272),%a3 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 458f0: 40c3 movew %sr,%d3 <== NOT EXECUTED 458f2: 8083 orl %d3,%d0 <== NOT EXECUTED 458f4: 46c0 movew %d0,%sr <== NOT EXECUTED if ( *set & api->signals_pending ) { 458f6: 2215 movel %a5@,%d1 <== NOT EXECUTED 458f8: 242b 00c8 movel %a3@(200),%d2 <== NOT EXECUTED 458fc: 2001 movel %d1,%d0 <== NOT EXECUTED 458fe: c082 andl %d2,%d0 <== NOT EXECUTED 45900: 6732 beqs 45934 <== NOT EXECUTED /* XXX real info later */ the_info->si_signo = _POSIX_signals_Get_highest( api->signals_pending ); 45902: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45904: 4eb9 0004 583c jsr 4583c <_POSIX_signals_Get_highest> <== NOT EXECUTED 4590a: 2480 movel %d0,%a2@ <== NOT EXECUTED _POSIX_signals_Clear_signals( 4590c: 42a7 clrl %sp@- <== NOT EXECUTED 4590e: 42a7 clrl %sp@- <== NOT EXECUTED 45910: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45912: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45914: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45916: 4eb9 0004 af78 jsr 4af78 <_POSIX_signals_Clear_signals> <== NOT EXECUTED the_info->si_signo, the_info, false, false ); _ISR_Enable( level ); 4591c: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_code = SI_USER; 4591e: 7001 moveq #1,%d0 <== NOT EXECUTED the_info->si_value.sival_int = 0; 45920: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED return the_info->si_signo; 45924: 2412 movel %a2@,%d2 <== NOT EXECUTED false, false ); _ISR_Enable( level ); the_info->si_code = SI_USER; 45926: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED the_info->si_value.sival_int = 0; return the_info->si_signo; 4592a: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED 45930: 6000 00b4 braw 459e6 <== NOT EXECUTED } /* Process pending signals? */ if ( *set & _POSIX_signals_Pending ) { 45934: 2039 0005 ae3e movel 5ae3e <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4593a: 49f9 0004 af78 lea 4af78 <_POSIX_signals_Clear_signals>,%a4 <== NOT EXECUTED 45940: c280 andl %d0,%d1 <== NOT EXECUTED 45942: 672e beqs 45972 <== NOT EXECUTED signo = _POSIX_signals_Get_highest( _POSIX_signals_Pending ); 45944: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45946: 4eb9 0004 583c jsr 4583c <_POSIX_signals_Get_highest> <== NOT EXECUTED _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); 4594c: 42a7 clrl %sp@- <== NOT EXECUTED } /* Process pending signals? */ if ( *set & _POSIX_signals_Pending ) { signo = _POSIX_signals_Get_highest( _POSIX_signals_Pending ); 4594e: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); 45950: 4878 0001 pea 1 <== NOT EXECUTED 45954: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45956: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45958: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4595a: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Enable( level ); 4595c: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; 4595e: 7001 moveq #1,%d0 <== NOT EXECUTED the_info->si_value.sival_int = 0; 45960: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 45964: dffc 0000 0018 addal #24,%sp <== NOT EXECUTED signo = _POSIX_signals_Get_highest( _POSIX_signals_Pending ); _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); _ISR_Enable( level ); the_info->si_signo = signo; the_info->si_code = SI_USER; 4596a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED if ( *set & _POSIX_signals_Pending ) { signo = _POSIX_signals_Get_highest( _POSIX_signals_Pending ); _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); _ISR_Enable( level ); the_info->si_signo = signo; 4596e: 2482 movel %d2,%a2@ <== NOT EXECUTED 45970: 6074 bras 459e6 <== NOT EXECUTED 45972: 2039 0005 a768 movel 5a768 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 45978: 5280 addql #1,%d0 <== NOT EXECUTED 4597a: 23c0 0005 a768 movel %d0,5a768 <_Thread_Dispatch_disable_level> <== NOT EXECUTED the_info->si_code = SI_USER; the_info->si_value.sival_int = 0; return signo; } the_info->si_signo = -1; 45980: 70ff moveq #-1,%d0 <== NOT EXECUTED 45982: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; the_thread->Wait.return_code = EINTR; 45984: 7004 moveq #4,%d0 <== NOT EXECUTED 45986: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED } the_info->si_signo = -1; _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; 4598a: 203c 0005 adfe movel #372222,%d0 <== NOT EXECUTED 45990: 2140 0044 movel %d0,%a0@(68) <== 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; 45994: 7001 moveq #1,%d0 <== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_thread->Wait.option = *set; 45996: 2155 0030 movel %a5@,%a0@(48) <== NOT EXECUTED 4599a: 23c0 0005 ae2e movel %d0,5ae2e <_POSIX_signals_Wait_queue+0x30> <== NOT EXECUTED the_thread->Wait.return_argument = the_info; 459a0: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue ); _ISR_Enable( level ); 459a4: 46c3 movew %d3,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval ); 459a6: 4879 0004 87d8 pea 487d8 <_Thread_queue_Timeout> <== NOT EXECUTED 459ac: 2f09 movel %a1,%sp@- <== NOT EXECUTED 459ae: 4879 0005 adfe pea 5adfe <_POSIX_signals_Wait_queue> <== NOT EXECUTED 459b4: 4eb9 0004 84a0 jsr 484a0 <_Thread_queue_Enqueue_with_handler> <== NOT EXECUTED _Thread_Enable_dispatch(); 459ba: 4eb9 0004 803a jsr 4803a <_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 ); 459c0: 42a7 clrl %sp@- <== NOT EXECUTED 459c2: 42a7 clrl %sp@- <== NOT EXECUTED 459c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 459c6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 459c8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 459ca: 4e94 jsr %a4@ <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; 459cc: dffc 0000 0020 addal #32,%sp <== NOT EXECUTED 459d2: 4eb9 0004 cbd0 jsr 4cbd0 <__errno> <== NOT EXECUTED 459d8: 2079 0005 a826 moveal 5a826 <_Thread_Executing>,%a0 <== NOT EXECUTED 459de: 2240 moveal %d0,%a1 <== NOT EXECUTED 459e0: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED return the_info->si_signo; 459e4: 2412 movel %a2@,%d2 <== NOT EXECUTED } 459e6: 2002 movel %d2,%d0 <== NOT EXECUTED 459e8: 4cee 3c0c ffdc moveml %fp@(-36),%d2-%d3/%a2-%a5 <== NOT EXECUTED 459ee: 4e5e unlk %fp <== NOT EXECUTED 459f0: 4e75 rts <== NOT EXECUTED ... 00047488 : int sigwait( const sigset_t *set, int *sig ) { 47488: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4748c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4748e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED int status; status = sigtimedwait( set, NULL, NULL ); 47492: 42a7 clrl %sp@- <== NOT EXECUTED 47494: 42a7 clrl %sp@- <== NOT EXECUTED 47496: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4749a: 4eb9 0004 7308 jsr 47308 <== NOT EXECUTED if ( status != -1 ) { 474a0: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 474a6: 72ff moveq #-1,%d1 <== NOT EXECUTED 474a8: b280 cmpl %d0,%d1 <== NOT EXECUTED 474aa: 670a beqs 474b6 <== NOT EXECUTED if ( sig ) 474ac: 4a8a tstl %a2 <== NOT EXECUTED 474ae: 6702 beqs 474b2 <== NOT EXECUTED *sig = status; 474b0: 2480 movel %d0,%a2@ <== NOT EXECUTED 474b2: 4280 clrl %d0 <== NOT EXECUTED 474b4: 600a bras 474c0 <== NOT EXECUTED return 0; } return errno; 474b6: 4eb9 0004 e75c jsr 4e75c <__errno> <== NOT EXECUTED 474bc: 2040 moveal %d0,%a0 <== NOT EXECUTED 474be: 2010 movel %a0@,%d0 <== NOT EXECUTED } 474c0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 474c4: 4e5e unlk %fp <== NOT EXECUTED 474c6: 4e75 rts 00047470 : int sigwaitinfo( const sigset_t *set, siginfo_t *info ) { 47470: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return sigtimedwait( set, info, NULL ); 47474: 42a7 clrl %sp@- <== NOT EXECUTED 47476: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4747a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4747e: 4eb9 0004 7308 jsr 47308 <== NOT EXECUTED } 47484: 4e5e unlk %fp <== NOT EXECUTED 47486: 4e75 rts 0004480c : unsigned int sleep( unsigned int seconds ) { 4480c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED struct timespec tm; tp.tv_sec = seconds; tp.tv_nsec = 0; nanosleep( &tp, &tm ); 44810: 486e fff0 pea %fp@(-16) <== NOT EXECUTED ) { struct timespec tp; struct timespec tm; tp.tv_sec = seconds; 44814: 2d6e 0008 fff8 movel %fp@(8),%fp@(-8) <== NOT EXECUTED tp.tv_nsec = 0; nanosleep( &tp, &tm ); 4481a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED { struct timespec tp; struct timespec tm; tp.tv_sec = seconds; tp.tv_nsec = 0; 4481e: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED nanosleep( &tp, &tm ); 44822: 4eb9 0004 9c00 jsr 49c00 <== NOT EXECUTED return tm.tv_sec; /* seconds remaining */ } 44828: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 4482c: 4e5e unlk %fp <== NOT EXECUTED 4482e: 4e75 rts 00044860 : */ long sysconf( int name ) { 44860: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44864: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44868: 2f02 movel %d2,%sp@- <== NOT EXECUTED switch (name) { 4486a: 7004 moveq #4,%d0 <== NOT EXECUTED 4486c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4486e: 6736 beqs 448a6 <== NOT EXECUTED 44870: 6d08 blts 4487a <== NOT EXECUTED 44872: 7402 moveq #2,%d2 <== NOT EXECUTED 44874: b481 cmpl %d1,%d2 <== NOT EXECUTED 44876: 6636 bnes 448ae <== NOT EXECUTED 44878: 601a bras 44894 <== NOT EXECUTED 4487a: 203c 0000 1000 movel #4096,%d0 <== NOT EXECUTED 44880: 7408 moveq #8,%d2 <== NOT EXECUTED 44882: b481 cmpl %d1,%d2 <== NOT EXECUTED 44884: 6736 beqs 448bc <== NOT EXECUTED 44886: 303c 0400 movew #1024,%d0 <== NOT EXECUTED 4488a: 143c 0033 moveb #51,%d2 <== NOT EXECUTED 4488e: b481 cmpl %d1,%d2 <== NOT EXECUTED 44890: 661c bnes 448ae <== NOT EXECUTED 44892: 6028 bras 448bc <== NOT EXECUTED case _SC_CLK_TCK: return (TOD_MICROSECONDS_PER_SECOND / _TOD_Microseconds_per_tick); 44894: 41f9 0005 93b6 lea 593b6 <_TOD_Microseconds_per_tick>,%a0 <== NOT EXECUTED 4489a: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 448a0: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED 448a4: 6016 bras 448bc <== NOT EXECUTED case _SC_OPEN_MAX: { return rtems_libio_number_iops; 448a6: 2039 0005 7608 movel 57608 ,%d0 <== NOT EXECUTED 448ac: 600e bras 448bc <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 448ae: 4eb9 0004 bbd4 jsr 4bbd4 <__errno> <== NOT EXECUTED 448b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 448b6: 7216 moveq #22,%d1 <== NOT EXECUTED 448b8: 70ff moveq #-1,%d0 <== NOT EXECUTED 448ba: 2081 movel %d1,%a0@ <== NOT EXECUTED } 448bc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 448c0: 4e5e unlk %fp <== NOT EXECUTED 448c2: 4e75 rts 00049990 : int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) { 49990: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49994: 2f0b movel %a3,%sp@- <== NOT EXECUTED 49996: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 4999a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4999c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Timer_Control *ptimer; if ( clock_id != CLOCK_REALTIME ) 499a0: 7001 moveq #1,%d0 <== NOT EXECUTED 499a2: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 499a6: 6620 bnes 499c8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !timerid ) 499a8: 4a8b tstl %a3 <== NOT EXECUTED 499aa: 671c beqs 499c8 <== NOT EXECUTED /* * The data of the structure evp are checked in order to verify if they * are coherent. */ if (evp != NULL) { 499ac: 4a8a tstl %a2 <== NOT EXECUTED 499ae: 6726 beqs 499d6 <== NOT EXECUTED /* The structure has data */ if ( ( evp->sigev_notify != SIGEV_NONE ) && 499b0: 2012 movel %a2@,%d0 <== NOT EXECUTED 499b2: 7201 moveq #1,%d1 <== NOT EXECUTED 499b4: 5380 subql #1,%d0 <== NOT EXECUTED 499b6: b280 cmpl %d0,%d1 <== NOT EXECUTED 499b8: 650e bcss 499c8 <== 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 ) 499ba: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 499be: 6708 beqs 499c8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) 499c0: 5380 subql #1,%d0 <== NOT EXECUTED 499c2: 721f moveq #31,%d1 <== NOT EXECUTED 499c4: b280 cmpl %d0,%d1 <== NOT EXECUTED 499c6: 640e bccs 499d6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 499c8: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 499ce: 7216 moveq #22,%d1 <== NOT EXECUTED 499d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 499d2: 2081 movel %d1,%a0@ <== NOT EXECUTED 499d4: 6034 bras 49a0a <== NOT EXECUTED 499d6: 2039 0006 0168 movel 60168 <_Thread_Dispatch_disable_level>,%d0 <== NOT EXECUTED 499dc: 5280 addql #1,%d0 <== NOT EXECUTED 499de: 23c0 0006 0168 movel %d0,60168 <_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 ); 499e4: 4879 0006 040e pea 6040e <_POSIX_Timer_Information> <== NOT EXECUTED 499ea: 4eb9 0004 b7f0 jsr 4b7f0 <_Objects_Allocate> <== NOT EXECUTED /* * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { 499f0: 588f addql #4,%sp <== NOT EXECUTED 499f2: 2240 moveal %d0,%a1 <== NOT EXECUTED 499f4: 4a80 tstl %d0 <== NOT EXECUTED 499f6: 6616 bnes 49a0e <== NOT EXECUTED _Thread_Enable_dispatch(); 499f8: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 499fe: 4eb9 0005 13c4 jsr 513c4 <__errno> <== NOT EXECUTED 49a04: 2040 moveal %d0,%a0 <== NOT EXECUTED 49a06: 700b moveq #11,%d0 <== NOT EXECUTED 49a08: 2080 movel %d0,%a0@ <== NOT EXECUTED 49a0a: 70ff moveq #-1,%d0 <== NOT EXECUTED 49a0c: 606a bras 49a78 <== NOT EXECUTED } /* The data of the created timer are stored to use them later */ ptimer->state = POSIX_TIMER_STATE_CREATE_NEW; 49a0e: 7002 moveq #2,%d0 <== NOT EXECUTED 49a10: 1340 003c moveb %d0,%a1@(60) <== NOT EXECUTED ptimer->thread_id = _Thread_Executing->Object.id; 49a14: 2079 0006 0226 moveal 60226 <_Thread_Executing>,%a0 <== NOT EXECUTED 49a1a: 2368 0008 0038 movel %a0@(8),%a1@(56) <== NOT EXECUTED if ( evp != NULL ) { 49a20: 4a8a tstl %a2 <== NOT EXECUTED 49a22: 6710 beqs 49a34 <== NOT EXECUTED ptimer->inf.sigev_notify = evp->sigev_notify; 49a24: 2352 003e movel %a2@,%a1@(62) <== NOT EXECUTED ptimer->inf.sigev_signo = evp->sigev_signo; ptimer->inf.sigev_value = evp->sigev_value; 49a28: 236a 0008 0046 movel %a2@(8),%a1@(70) <== NOT EXECUTED ptimer->state = POSIX_TIMER_STATE_CREATE_NEW; ptimer->thread_id = _Thread_Executing->Object.id; if ( evp != NULL ) { ptimer->inf.sigev_notify = evp->sigev_notify; ptimer->inf.sigev_signo = evp->sigev_signo; 49a2e: 236a 0004 0042 movel %a2@(4),%a1@(66) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49a34: 2079 0006 0428 moveal 60428 <_POSIX_Timer_Information+0x1a>,%a0 <== NOT EXECUTED 49a3a: 4280 clrl %d0 <== NOT EXECUTED 49a3c: 3029 000a movew %a1@(10),%d0 <== NOT EXECUTED 49a40: 2189 0c00 movel %a1,%a0@(00000000,%d0:l:4) <== NOT EXECUTED ptimer->inf.sigev_value = evp->sigev_value; } ptimer->overrun = 0; 49a44: 42a9 0066 clrl %a1@(102) <== NOT EXECUTED ptimer->timer_data.it_value.tv_sec = 0; 49a48: 42a9 005a clrl %a1@(90) <== NOT EXECUTED ptimer->timer_data.it_value.tv_nsec = 0; 49a4c: 42a9 005e clrl %a1@(94) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_sec = 0; 49a50: 42a9 0052 clrl %a1@(82) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_nsec = 0; 49a54: 42a9 0056 clrl %a1@(86) <== NOT EXECUTED void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; 49a58: 42a9 0030 clrl %a1@(48) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == FALSE */ the_object->name.name_u32 = name; 49a5c: 42a9 000c clrl %a1@(12) <== NOT EXECUTED _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL ); _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; 49a60: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 49a64: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED the_watchdog->routine = routine; 49a68: 42a9 002c clrl %a1@(44) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 49a6c: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _Thread_Enable_dispatch(); 49a70: 4eb9 0004 c48a jsr 4c48a <_Thread_Enable_dispatch> <== NOT EXECUTED 49a76: 4280 clrl %d0 <== NOT EXECUTED return 0; } 49a78: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 49a7c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 49a80: 4e5e unlk %fp <== NOT EXECUTED 49a82: 4e75 rts 00044fd8 : int timer_delete( timer_t timerid ) { 44fd8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44fdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Timer_Control *) 44fde: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44fe2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44fe6: 4879 0005 a28e pea 5a28e <_POSIX_Timer_Information> <== NOT EXECUTED 44fec: 4eb9 0004 7174 jsr 47174 <_Objects_Get> <== NOT EXECUTED */ POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 44ff2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 44ff8: 2440 moveal %d0,%a2 <== NOT EXECUTED 44ffa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 44ffe: 663c bnes 4503c <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Timer_Information, &ptimer->Object ); 45000: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45002: 4879 0005 a28e pea 5a28e <_POSIX_Timer_Information> <== NOT EXECUTED 45008: 4eb9 0004 6d9c jsr 46d9c <_Objects_Close> <== NOT EXECUTED ptimer->state = POSIX_TIMER_STATE_FREE; 4500e: 7001 moveq #1,%d0 <== NOT EXECUTED 45010: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED (void) _Watchdog_Remove( &ptimer->Timer ); 45014: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45018: 4eb9 0004 8a3c jsr 48a3c <_Watchdog_Remove> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free ( POSIX_Timer_Control *the_timer ) { _Objects_Free( &_POSIX_Timer_Information, &the_timer->Object ); 4501e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45020: 4879 0005 a28e pea 5a28e <_POSIX_Timer_Information> <== NOT EXECUTED 45026: 4eb9 0004 7014 jsr 47014 <_Objects_Free> <== NOT EXECUTED _POSIX_Timer_Free( ptimer ); _Thread_Enable_dispatch(); 4502c: 4eb9 0004 78e6 jsr 478e6 <_Thread_Enable_dispatch> <== NOT EXECUTED 45032: dffc 0000 0014 addal #20,%sp <== NOT EXECUTED 45038: 4280 clrl %d0 <== NOT EXECUTED 4503a: 600e bras 4504a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4503c: 4eb9 0004 c920 jsr 4c920 <__errno> <== NOT EXECUTED 45042: 2040 moveal %d0,%a0 <== NOT EXECUTED 45044: 7216 moveq #22,%d1 <== NOT EXECUTED 45046: 70ff moveq #-1,%d0 <== NOT EXECUTED 45048: 2081 movel %d1,%a0@ <== NOT EXECUTED } 4504a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4504e: 4e5e unlk %fp <== NOT EXECUTED 45050: 4e75 rts <== NOT EXECUTED ... 00045e0c : * its execution, _POSIX_Timer_TSR will have to set this counter to 0. */ int timer_getoverrun( timer_t timerid ) { 45e0c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45e10: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get ( Objects_Id id, Objects_Locations *location ) { return (POSIX_Timer_Control *) 45e12: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45e16: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45e1a: 4879 0005 b45a pea 5b45a <_POSIX_Timer_Information> <== NOT EXECUTED 45e20: 4eb9 0004 7f2c jsr 47f2c <_Objects_Get> <== NOT EXECUTED int overrun; POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 45e26: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45e2c: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e2e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45e32: 6610 bnes 45e44 <== NOT EXECUTED case OBJECTS_LOCAL: overrun = ptimer->overrun; 45e34: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED ptimer->overrun = 0; 45e38: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED _Thread_Enable_dispatch(); 45e3c: 4eb9 0004 869e jsr 4869e <_Thread_Enable_dispatch> <== NOT EXECUTED 45e42: 600e bras 45e52 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 45e44: 4eb9 0004 d3bc jsr 4d3bc <__errno> <== NOT EXECUTED 45e4a: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e4c: 7016 moveq #22,%d0 <== NOT EXECUTED 45e4e: 74ff moveq #-1,%d2 <== NOT EXECUTED 45e50: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45e52: 2002 movel %d2,%d0 <== NOT EXECUTED 45e54: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45e58: 4e5e unlk %fp <== NOT EXECUTED 45e5a: 4e75 rts 00045e5c : int timer_gettime( timer_t timerid, struct itimerspec *value ) { 45e5c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 45e60: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45e62: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Timer_Control *ptimer; Objects_Locations location; struct timespec current_time; Watchdog_Interval left; if ( !value ) 45e68: 4a8b tstl %a3 <== NOT EXECUTED 45e6a: 6610 bnes 45e7c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45e6c: 4eb9 0004 d3bc jsr 4d3bc <__errno> <== NOT EXECUTED 45e72: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e74: 7016 moveq #22,%d0 <== NOT EXECUTED 45e76: 2080 movel %d0,%a0@ <== NOT EXECUTED 45e78: 70ff moveq #-1,%d0 <== NOT EXECUTED 45e7a: 606e bras 45eea <== NOT EXECUTED /* Reads the current time */ _TOD_Get( ¤t_time ); 45e7c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 45e80: 4eb9 0004 7718 jsr 47718 <_TOD_Get> <== NOT EXECUTED 45e86: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45e8a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45e8e: 4879 0005 b45a pea 5b45a <_POSIX_Timer_Information> <== NOT EXECUTED 45e94: 4eb9 0004 7f2c jsr 47f2c <_Objects_Get> <== NOT EXECUTED ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 45e9a: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 45ea0: 2440 moveal %d0,%a2 <== NOT EXECUTED 45ea2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45ea6: 6634 bnes 45edc <== NOT EXECUTED left = (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 45ea8: 486b 0008 pea %a3@(8) <== NOT EXECUTED 45eac: 202a 001c movel %a2@(28),%d0 <== NOT EXECUTED 45eb0: d0aa 0024 addl %a2@(36),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: /* Calculates the time left before the timer finishes */ left = 45eb4: 2239 0005 b2fc movel 5b2fc <_Watchdog_Ticks_since_boot>,%d1 <== NOT EXECUTED (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 45eba: 9081 subl %d1,%d0 <== NOT EXECUTED 45ebc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45ebe: 4eb9 0004 9394 jsr 49394 <_Timespec_From_ticks> <== NOT EXECUTED value->it_interval = ptimer->timer_data.it_interval; 45ec4: 202a 0052 movel %a2@(82),%d0 <== NOT EXECUTED 45ec8: 276a 0056 0004 movel %a2@(86),%a3@(4) <== NOT EXECUTED 45ece: 2680 movel %d0,%a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 45ed0: 4eb9 0004 869e jsr 4869e <_Thread_Enable_dispatch> <== NOT EXECUTED 45ed6: 508f addql #8,%sp <== NOT EXECUTED 45ed8: 4280 clrl %d0 <== NOT EXECUTED 45eda: 600e bras 45eea <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 45edc: 4eb9 0004 d3bc jsr 4d3bc <__errno> <== NOT EXECUTED 45ee2: 2040 moveal %d0,%a0 <== NOT EXECUTED 45ee4: 7216 moveq #22,%d1 <== NOT EXECUTED 45ee6: 70ff moveq #-1,%d0 <== NOT EXECUTED 45ee8: 2081 movel %d1,%a0@ <== NOT EXECUTED } 45eea: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED 45eee: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 45ef2: 4e5e unlk %fp <== NOT EXECUTED 45ef4: 4e75 rts <== NOT EXECUTED ... 00045ef8 : timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) { 45ef8: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 45efc: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 45f00: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 45f04: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED 45f08: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED Objects_Locations location; bool activated; uint32_t initial_period; struct itimerspec normalize; if ( !value ) 45f0c: 4a8c tstl %a4 <== NOT EXECUTED 45f0e: 675a beqs 45f6a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* First, it verifies if the structure "value" is correct */ if ( ( value->it_value.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) || 45f10: 203c 3b9a c9ff movel #999999999,%d0 <== NOT EXECUTED 45f16: b0ac 000c cmpl %a4@(12),%d0 <== NOT EXECUTED 45f1a: 654e bcss 45f6a <== NOT EXECUTED 45f1c: 202c 0004 movel %a4@(4),%d0 <== NOT EXECUTED 45f20: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 45f26: 6242 bhis 45f6a <== NOT EXECUTED 45f28: 4a80 tstl %d0 <== NOT EXECUTED 45f2a: 6d3e blts 45f6a <== NOT EXECUTED ( value->it_interval.tv_nsec < 0 )) { /* The number of nanoseconds is not correct */ rtems_set_errno_and_return_minus_one( EINVAL ); } if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { 45f2c: 7004 moveq #4,%d0 <== NOT EXECUTED 45f2e: b08a cmpl %a2,%d0 <== NOT EXECUTED 45f30: 6704 beqs 45f36 <== NOT EXECUTED 45f32: 4a8a tstl %a2 <== NOT EXECUTED 45f34: 6634 bnes 45f6a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 45f36: 4878 0010 pea 10 <== NOT EXECUTED 45f3a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 45f3c: 486e ffec pea %fp@(-20) <== NOT EXECUTED 45f40: 4eb9 0004 dbec jsr 4dbec <== NOT EXECUTED /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { 45f46: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45f4c: 7004 moveq #4,%d0 <== NOT EXECUTED 45f4e: b08a cmpl %a2,%d0 <== NOT EXECUTED 45f50: 6640 bnes 45f92 <== NOT EXECUTED /* Check for seconds in the past */ if ( _Timespec_Greater_than( &_TOD_Now, &normalize.it_value ) ) 45f52: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED 45f56: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45f58: 4879 0005 b246 pea 5b246 <_TOD_Now> <== NOT EXECUTED 45f5e: 4eb9 0004 93d4 jsr 493d4 <_Timespec_Greater_than> <== NOT EXECUTED 45f64: 508f addql #8,%sp <== NOT EXECUTED 45f66: 4a00 tstb %d0 <== NOT EXECUTED 45f68: 6712 beqs 45f7c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45f6a: 4eb9 0004 d3bc jsr 4d3bc <__errno> <== NOT EXECUTED 45f70: 7416 moveq #22,%d2 <== NOT EXECUTED 45f72: 2040 moveal %d0,%a0 <== NOT EXECUTED 45f74: 2082 movel %d2,%a0@ <== NOT EXECUTED 45f76: 70ff moveq #-1,%d0 <== NOT EXECUTED 45f78: 6000 012e braw 460a8 <== NOT EXECUTED _Timespec_Subtract( &_TOD_Now, &normalize.it_value, &normalize.it_value ); 45f7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45f7e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45f80: 4879 0005 b246 pea 5b246 <_TOD_Now> <== NOT EXECUTED 45f86: 4eb9 0004 9404 jsr 49404 <_Timespec_Subtract> <== NOT EXECUTED 45f8c: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45f92: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45f96: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45f9a: 4879 0005 b45a pea 5b45a <_POSIX_Timer_Information> <== NOT EXECUTED 45fa0: 4eb9 0004 7f2c jsr 47f2c <_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 ) { 45fa6: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 45fac: 2640 moveal %d0,%a3 <== NOT EXECUTED 45fae: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45fb2: 6600 00e6 bnew 4609a <== 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 ) { 45fb6: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED 45fba: 6654 bnes 46010 <== NOT EXECUTED 45fbc: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 45fc0: 664e bnes 46010 <== NOT EXECUTED /* Stop the timer */ (void) _Watchdog_Remove( &ptimer->Timer ); 45fc2: 486b 0010 pea %a3@(16) <== NOT EXECUTED 45fc6: 4eb9 0004 9838 jsr 49838 <_Watchdog_Remove> <== NOT EXECUTED /* The old data of the timer are returned */ if ( ovalue ) 45fcc: 588f addql #4,%sp <== NOT EXECUTED 45fce: 4a82 tstl %d2 <== NOT EXECUTED 45fd0: 6716 beqs 45fe8 <== NOT EXECUTED *ovalue = ptimer->timer_data; 45fd2: 4878 0010 pea 10 <== NOT EXECUTED 45fd6: 486b 0052 pea %a3@(82) <== NOT EXECUTED 45fda: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45fdc: 4eb9 0004 dbec jsr 4dbec <== NOT EXECUTED 45fe2: dffc 0000 000c addal #12,%sp <== NOT EXECUTED /* The new data are set */ ptimer->timer_data = normalize; 45fe8: 4878 0010 pea 10 <== NOT EXECUTED 45fec: 486e ffec pea %fp@(-20) <== NOT EXECUTED 45ff0: 486b 0052 pea %a3@(82) <== NOT EXECUTED 45ff4: 4eb9 0004 dbec jsr 4dbec <== NOT EXECUTED /* Indicates that the timer is created and stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 45ffa: 7004 moveq #4,%d0 <== NOT EXECUTED 45ffc: 1740 003c moveb %d0,%a3@(60) <== NOT EXECUTED /* Returns with success */ _Thread_Enable_dispatch(); 46000: 4eb9 0004 869e jsr 4869e <_Thread_Enable_dispatch> <== NOT EXECUTED 46006: dffc 0000 000c addal #12,%sp <== NOT EXECUTED 4600c: 6000 0088 braw 46096 <== NOT EXECUTED return 0; } /* Convert from seconds and nanoseconds to ticks */ ptimer->ticks = _Timespec_To_ticks( &value->it_interval ); 46010: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46012: 45f9 0004 9454 lea 49454 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED 46018: 4e92 jsr %a2@ <== NOT EXECUTED 4601a: 2740 0062 movel %d0,%a3@(98) <== NOT EXECUTED initial_period = _Timespec_To_ticks( &normalize.it_value ); 4601e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 46022: 4e92 jsr %a2@ <== NOT EXECUTED activated = _POSIX_Timer_Insert_helper( 46024: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46026: 4879 0004 60b4 pea 460b4 <_POSIX_Timer_TSR> <== NOT EXECUTED 4602c: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 46030: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46032: 486b 0010 pea %a3@(16) <== NOT EXECUTED 46036: 4eb9 0004 b9cc jsr 4b9cc <_POSIX_Timer_Insert_helper> <== NOT EXECUTED initial_period, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) { 4603c: dffc 0000 001c addal #28,%sp <== NOT EXECUTED 46042: 4a00 tstb %d0 <== NOT EXECUTED 46044: 6608 bnes 4604e <== NOT EXECUTED _Thread_Enable_dispatch(); 46046: 4eb9 0004 869e jsr 4869e <_Thread_Enable_dispatch> <== NOT EXECUTED 4604c: 6048 bras 46096 <== NOT EXECUTED /* * The timer has been started and is running. So we return the * old ones in "ovalue" */ if ( ovalue ) 4604e: 4a82 tstl %d2 <== NOT EXECUTED 46050: 6716 beqs 46068 <== NOT EXECUTED *ovalue = ptimer->timer_data; 46052: 4878 0010 pea 10 <== NOT EXECUTED 46056: 486b 0052 pea %a3@(82) <== NOT EXECUTED 4605a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4605c: 4eb9 0004 dbec jsr 4dbec <== NOT EXECUTED 46062: dffc 0000 000c addal #12,%sp <== NOT EXECUTED ptimer->timer_data = normalize; 46068: 4878 0010 pea 10 <== NOT EXECUTED 4606c: 486e ffec pea %fp@(-20) <== NOT EXECUTED 46070: 486b 0052 pea %a3@(82) <== NOT EXECUTED 46074: 4eb9 0004 dbec jsr 4dbec <== NOT EXECUTED /* Indicate that the time is running */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 4607a: 7003 moveq #3,%d0 <== NOT EXECUTED 4607c: 1740 003c moveb %d0,%a3@(60) <== NOT EXECUTED _TOD_Get( &ptimer->time ); 46080: 486b 006a pea %a3@(106) <== NOT EXECUTED 46084: 4eb9 0004 7718 jsr 47718 <_TOD_Get> <== NOT EXECUTED _Thread_Enable_dispatch(); 4608a: 4eb9 0004 869e jsr 4869e <_Thread_Enable_dispatch> <== NOT EXECUTED 46090: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED 46096: 4280 clrl %d0 <== NOT EXECUTED 46098: 600e bras 460a8 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4609a: 4eb9 0004 d3bc jsr 4d3bc <__errno> <== NOT EXECUTED 460a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 460a2: 7216 moveq #22,%d1 <== NOT EXECUTED 460a4: 70ff moveq #-1,%d0 <== NOT EXECUTED 460a6: 2081 movel %d1,%a0@ <== NOT EXECUTED } 460a8: 4cee 1c04 ffdc moveml %fp@(-36),%d2/%a2-%a4 <== NOT EXECUTED 460ae: 4e5e unlk %fp <== NOT EXECUTED 460b0: 4e75 rts <== NOT EXECUTED ... 00044b3c : useconds_t ualarm( useconds_t useconds, useconds_t interval ) { 44b3c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 44b40: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 44b44: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 44b48: 4ab9 0005 9dd8 tstl 59dd8 <_POSIX_signals_Ualarm_timer+0x1c> <== NOT EXECUTED 44b4e: 6622 bnes 44b72 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 44b50: 42b9 0005 9dc4 clrl 59dc4 <_POSIX_signals_Ualarm_timer+0x8> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 44b56: 4283 clrl %d3 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 44b58: 203c 0004 4c3a movel #281658,%d0 <== NOT EXECUTED 44b5e: 23c0 0005 9dd8 movel %d0,59dd8 <_POSIX_signals_Ualarm_timer+0x1c> <== NOT EXECUTED the_watchdog->id = id; 44b64: 42b9 0005 9ddc clrl 59ddc <_POSIX_signals_Ualarm_timer+0x20> <== NOT EXECUTED the_watchdog->user_data = user_data; 44b6a: 42b9 0005 9de0 clrl 59de0 <_POSIX_signals_Ualarm_timer+0x24> <== NOT EXECUTED 44b70: 6064 bras 44bd6 <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL ); } else { switch ( _Watchdog_Remove( the_timer ) ) { 44b72: 4879 0005 9dbc pea 59dbc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 44b78: 4eb9 0004 8410 jsr 48410 <_Watchdog_Remove> <== NOT EXECUTED 44b7e: 588f addql #4,%sp <== NOT EXECUTED 44b80: 5580 subql #2,%d0 <== NOT EXECUTED 44b82: 7201 moveq #1,%d1 <== NOT EXECUTED 44b84: b280 cmpl %d0,%d1 <== NOT EXECUTED 44b86: 6404 bccs 44b8c <== NOT EXECUTED 44b88: 4283 clrl %d3 <== NOT EXECUTED 44b8a: 604a bras 44bd6 <== 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); 44b8c: 2039 0005 9dd0 movel 59dd0 <_POSIX_signals_Ualarm_timer+0x14>,%d0 <== NOT EXECUTED 44b92: d0b9 0005 9dc8 addl 59dc8 <_POSIX_signals_Ualarm_timer+0xc>,%d0 <== NOT EXECUTED /* remaining is now in ticks */ _Timespec_From_ticks( ticks, &tp ); 44b98: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 44b9c: 90b9 0005 9dd4 subl 59dd4 <_POSIX_signals_Ualarm_timer+0x18>,%d0 <== NOT EXECUTED 44ba2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44ba4: 4eb9 0004 7f5c jsr 47f5c <_Timespec_From_ticks> <== NOT EXECUTED remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 44baa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44bae: 2002 movel %d2,%d0 <== NOT EXECUTED 44bb0: 2202 movel %d2,%d1 <== NOT EXECUTED 44bb2: e788 lsll #3,%d0 <== NOT EXECUTED 44bb4: e189 lsll #8,%d1 <== NOT EXECUTED 44bb6: 9280 subl %d0,%d1 <== NOT EXECUTED 44bb8: 2001 movel %d1,%d0 <== NOT EXECUTED 44bba: ed88 lsll #6,%d0 <== NOT EXECUTED 44bbc: 9081 subl %d1,%d0 <== NOT EXECUTED remaining += tp.tv_nsec / 1000; 44bbe: 222e fffc movel %fp@(-4),%d1 <== 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 ); remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 44bc2: d082 addl %d2,%d0 <== NOT EXECUTED remaining += tp.tv_nsec / 1000; 44bc4: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED 44bca: 4c43 1801 remsl %d3,%d1,%d1 <== 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 ); remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 44bce: ed88 lsll #6,%d0 <== NOT EXECUTED remaining += tp.tv_nsec / 1000; 44bd0: 2601 movel %d1,%d3 <== NOT EXECUTED 44bd2: d680 addl %d0,%d3 <== NOT EXECUTED 44bd4: 508f addql #8,%sp <== 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 ) { 44bd6: 4a84 tstl %d4 <== NOT EXECUTED 44bd8: 6754 beqs 44c2e <== NOT EXECUTED 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 ); 44bda: 45f9 0004 7fec lea 47fec <_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; 44be0: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 44be6: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED 44bea: 4c40 4004 remul %d0,%d4,%d4 <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 44bee: 2401 movel %d1,%d2 <== NOT EXECUTED 44bf0: 2001 movel %d1,%d0 <== NOT EXECUTED 44bf2: e58a lsll #2,%d2 <== NOT EXECUTED 44bf4: ef88 lsll #7,%d0 <== NOT EXECUTED 44bf6: 9082 subl %d2,%d0 <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 44bf8: 240e movel %fp,%d2 <== NOT EXECUTED */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 44bfa: d081 addl %d1,%d0 <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 44bfc: 5182 subql #8,%d2 <== NOT EXECUTED 44bfe: 2f02 movel %d2,%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; 44c00: e788 lsll #3,%d0 <== 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; 44c02: 2d44 fff8 movel %d4,%fp@(-8) <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 44c06: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 44c0a: 4e92 jsr %a2@ <== NOT EXECUTED if ( ticks == 0 ) ticks = 1; _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) ); 44c0c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44c0e: 4e92 jsr %a2@ <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 44c10: 4879 0005 9dbc pea 59dbc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 44c16: 4879 0005 9f8c pea 59f8c <_Watchdog_Ticks_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 44c1c: 23c0 0005 9dc8 movel %d0,59dc8 <_POSIX_signals_Ualarm_timer+0xc> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 44c22: 4eb9 0004 82f4 jsr 482f4 <_Watchdog_Insert> <== NOT EXECUTED 44c28: dffc 0000 0010 addal #16,%sp <== NOT EXECUTED } return remaining; } 44c2e: 2003 movel %d3,%d0 <== NOT EXECUTED 44c30: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 44c36: 4e5e unlk %fp <== NOT EXECUTED 44c38: 4e75 rts 00047ec4 : int usleep( useconds_t useconds ) { 47ec4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47ec8: 2f03 movel %d3,%sp@- <== NOT EXECUTED struct timespec tp; struct timespec tm; unsigned remaining; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; 47eca: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED int usleep( useconds_t useconds ) { 47ece: 2f02 movel %d2,%sp@- <== NOT EXECUTED struct timespec tp; struct timespec tm; unsigned remaining; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; 47ed0: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 47ed6: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 47eda: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED 47ede: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 47ee2: 2401 movel %d1,%d2 <== NOT EXECUTED 47ee4: 2001 movel %d1,%d0 <== NOT EXECUTED 47ee6: e58a lsll #2,%d2 <== NOT EXECUTED 47ee8: ef88 lsll #7,%d0 <== NOT EXECUTED 47eea: 9082 subl %d2,%d0 <== NOT EXECUTED nanosleep( &tp, &tm ); 47eec: 486e fff0 pea %fp@(-16) <== NOT EXECUTED struct timespec tp; struct timespec tm; unsigned remaining; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 47ef0: d081 addl %d1,%d0 <== NOT EXECUTED 47ef2: e788 lsll #3,%d0 <== NOT EXECUTED 47ef4: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED nanosleep( &tp, &tm ); remaining = tm.tv_sec * TOD_MICROSECONDS_PER_SECOND; 47ef8: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED unsigned remaining; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; nanosleep( &tp, &tm ); 47efe: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 47f02: 4eb9 0004 ee40 jsr 4ee40 <== NOT EXECUTED remaining = tm.tv_sec * TOD_MICROSECONDS_PER_SECOND; 47f08: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47f0c: 2002 movel %d2,%d0 <== NOT EXECUTED 47f0e: 2202 movel %d2,%d1 <== NOT EXECUTED 47f10: e788 lsll #3,%d0 <== NOT EXECUTED 47f12: e189 lsll #8,%d1 <== NOT EXECUTED 47f14: 9280 subl %d0,%d1 <== NOT EXECUTED 47f16: 2001 movel %d1,%d0 <== NOT EXECUTED 47f18: ed88 lsll #6,%d0 <== NOT EXECUTED 47f1a: 9081 subl %d1,%d0 <== NOT EXECUTED 47f1c: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 47f20: d082 addl %d2,%d0 <== NOT EXECUTED 47f22: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED remaining += tm.tv_nsec / 1000; return remaining; /* seconds remaining */ } 47f26: 242e ffe8 movel %fp@(-24),%d2 <== NOT EXECUTED 47f2a: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; nanosleep( &tp, &tm ); remaining = tm.tv_sec * TOD_MICROSECONDS_PER_SECOND; 47f2e: ed88 lsll #6,%d0 <== NOT EXECUTED remaining += tm.tv_nsec / 1000; return remaining; /* seconds remaining */ } 47f30: 4e5e unlk %fp <== NOT EXECUTED 47f32: d081 addl %d1,%d0 <== NOT EXECUTED 47f34: 4e75 rts <== NOT EXECUTED ... 00044ffc : #include int wait( int *stat_loc ) { 44ffc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45000: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 45006: 2040 moveal %d0,%a0 <== NOT EXECUTED 45008: 7058 moveq #88,%d0 <== NOT EXECUTED 4500a: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4500c: 4e5e unlk %fp <== NOT EXECUTED 4500e: 70ff moveq #-1,%d0 <== NOT EXECUTED 45010: 4e75 rts <== NOT EXECUTED ... 00045014 : int waitpid( pid_t pid, int *stat_loc, int options ) { 45014: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45018: 4eb9 0004 c42c jsr 4c42c <__errno> <== NOT EXECUTED 4501e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45020: 7058 moveq #88,%d0 <== NOT EXECUTED 45022: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45024: 4e5e unlk %fp <== NOT EXECUTED 45026: 70ff moveq #-1,%d0 <== NOT EXECUTED 45028: 4e75 rts <== NOT EXECUTED ...